Projet

Général

Profil

0001-Use-xstatic-packages-instead-of-shipping-common-libr.patch

Frédéric Péters, 20 août 2014 12:04

Télécharger (1,45 Mo)

Voir les différences:

Subject: [PATCH] Use xstatic packages instead of shipping common libraries
 copies (#5181)

 README.txt                                         |    27 +
 gadjo/finders.py                                   |    78 +
 gadjo/static/css/fontawesome-webfont.eot           |   Bin 38708 -> 0 bytes
 gadjo/static/css/fontawesome-webfont.svg           |   255 -
 gadjo/static/css/fontawesome-webfont.ttf           |   Bin 68476 -> 0 bytes
 gadjo/static/css/fontawesome-webfont.woff          |   Bin 41752 -> 0 bytes
 gadjo/static/css/gadjo.css                         |     4 +-
 .../css/smoothness/images/animated-overlay.gif     |   Bin 1738 -> 0 bytes
 .../images/ui-bg_flat_0_aaaaaa_40x100.png          |   Bin 212 -> 0 bytes
 .../images/ui-bg_flat_75_ffffff_40x100.png         |   Bin 208 -> 0 bytes
 .../images/ui-bg_glass_55_fbf9ee_1x400.png         |   Bin 335 -> 0 bytes
 .../images/ui-bg_glass_65_ffffff_1x400.png         |   Bin 207 -> 0 bytes
 .../images/ui-bg_glass_75_dadada_1x400.png         |   Bin 262 -> 0 bytes
 .../images/ui-bg_glass_75_e6e6e6_1x400.png         |   Bin 262 -> 0 bytes
 .../images/ui-bg_glass_95_fef1ec_1x400.png         |   Bin 332 -> 0 bytes
 .../ui-bg_highlight-soft_75_cccccc_1x100.png       |   Bin 280 -> 0 bytes
 .../smoothness/images/ui-icons_222222_256x240.png  |   Bin 6922 -> 0 bytes
 .../smoothness/images/ui-icons_2e83ff_256x240.png  |   Bin 4549 -> 0 bytes
 .../smoothness/images/ui-icons_454545_256x240.png  |   Bin 6992 -> 0 bytes
 .../smoothness/images/ui-icons_888888_256x240.png  |   Bin 6999 -> 0 bytes
 .../smoothness/images/ui-icons_cd0a0a_256x240.png  |   Bin 4549 -> 0 bytes
 .../css/smoothness/jquery-ui-1.10.4.custom.css     |  1178 --
 .../css/smoothness/jquery-ui-1.10.4.custom.min.css |     7 -
 .../css/smoothness/jquery-ui-1.8.21.custom.css     |   565 -
 gadjo/static/js/jquery-1.11.0.js                   | 10337 -------------
 gadjo/static/js/jquery-1.11.0.min.js               |     4 -
 gadjo/static/js/jquery-ui-1.10.4.custom.js         | 15008 -------------------
 gadjo/static/js/jquery-ui-1.10.4.custom.min.js     |     7 -
 gadjo/templates/gadjo/base.html                    |     8 +-
 gadjo/templatetags/__init__.py                     |     0
 gadjo/templatetags/gadjo.py                        |    36 +
 31 files changed, 147 insertions(+), 27367 deletions(-)
 create mode 100644 README.txt
 create mode 100644 gadjo/finders.py
 delete mode 100644 gadjo/static/css/fontawesome-webfont.eot
 delete mode 100644 gadjo/static/css/fontawesome-webfont.svg
 delete mode 100644 gadjo/static/css/fontawesome-webfont.ttf
 delete mode 100644 gadjo/static/css/fontawesome-webfont.woff
 delete mode 100644 gadjo/static/css/smoothness/images/animated-overlay.gif
 delete mode 100644 gadjo/static/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-icons_222222_256x240.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-icons_2e83ff_256x240.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-icons_454545_256x240.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-icons_888888_256x240.png
 delete mode 100644 gadjo/static/css/smoothness/images/ui-icons_cd0a0a_256x240.png
 delete mode 100644 gadjo/static/css/smoothness/jquery-ui-1.10.4.custom.css
 delete mode 100644 gadjo/static/css/smoothness/jquery-ui-1.10.4.custom.min.css
 delete mode 100644 gadjo/static/css/smoothness/jquery-ui-1.8.21.custom.css
 delete mode 100644 gadjo/static/js/jquery-1.11.0.js
 delete mode 100644 gadjo/static/js/jquery-1.11.0.min.js
 delete mode 100644 gadjo/static/js/jquery-ui-1.10.4.custom.js
 delete mode 100644 gadjo/static/js/jquery-ui-1.10.4.custom.min.js
 create mode 100644 gadjo/templatetags/__init__.py
 create mode 100644 gadjo/templatetags/gadjo.py
README.txt
1
Configuration
2
=============
3

  
4
You should add gadjo.finders.XStaticFinder to STATICFILES_FINDERS,
5

  
6
  STATICFILES_FINDERS = (
7
    "django.contrib.staticfiles.finders.FileSystemFinder",
8
    "django.contrib.staticfiles.finders.AppDirectoriesFinder",
9
    "gadjo.finders.XStaticFinder",
10
  )
11

  
12
There is a CDNS settings, that can contain a list of (cdn name, protocol)
13
tuples; for example:
14

  
15
  CDNS = [('google', 'https')]
16

  
17

  
18
Usage
19
=====
20

  
21
Make your application base template {% extends "gadjo/base.html" %}.
22

  
23
Additional static files libraries can be added via INSTALLED_APPS,
24
for example 'xstatic.pkg.jquery_tablesorter'; its static files can
25
then be referred in a template using the xstatic template tag:
26

  
27
  {% xstatic 'jquery_tablesorter' 'jquery.tablesorter.js' %}
gadjo/finders.py
1
# this file derives from django-xstatic:
2
#   Author: Gautier Hayoun
3
#   Author-email: ghayoun@gmail.com
4
#   License: MIT license
5
#   Home-page: http://github.com/gautier/django-xstatic
6

  
7
import os
8

  
9
from django.conf import settings
10
from django.contrib.staticfiles import utils
11
from django.contrib.staticfiles.finders import BaseFinder
12
from django.core.exceptions import ImproperlyConfigured
13
from django.core.files.storage import FileSystemStorage
14
from django.utils.importlib import import_module
15

  
16

  
17
class XStaticStorage(FileSystemStorage):
18
    """
19
    A file system storage backend that takes an xstatic package module and works
20
    for the data contained in it.
21
    """
22
    prefix = 'xstatic'
23

  
24
    def __init__(self, package, *args, **kwargs):
25
        """
26
        Returns a static file storage if available in the given xstatic package
27
        """
28
        try:
29
            package = import_module(package)
30
        except ImportError:
31
            raise ImproperlyConfigured('Cannot import module "%s"' % package)
32
        location = package.BASE_DIR
33
        super(XStaticStorage, self).__init__(location, *args, **kwargs)
34

  
35

  
36
class XStaticFinder(BaseFinder):
37
    storage_class = XStaticStorage
38

  
39
    gadjo_deps = ['jquery', 'jquery_ui', 'font_awesome']
40

  
41
    def __init__(self, apps=None, *args, **kwargs):
42
        # The list of apps that are handled
43
        self.apps = []
44
        # Mapping of app module paths to storage instances
45
        self.storages = {}
46
        if apps is None:
47
            apps = settings.INSTALLED_APPS
48
        apps = list(apps)
49
        for dep in self.gadjo_deps:
50
            apps.append('xstatic.pkg.%s' % dep)
51
        for app in apps:
52
            if app.lower().startswith('xstatic.'):
53
                app_storage = self.storage_class(app)
54
                if os.path.isdir(app_storage.location):
55
                    self.storages[app] = app_storage
56
                    if app not in self.apps:
57
                        self.apps.append(app)
58
        super(XStaticFinder, self).__init__(*args, **kwargs)
59

  
60
    def find(self, path, all=False):
61
        """Look for files in the registered xstatic.* packages"""
62
        if path.startswith(self.storage_class.prefix + '/'):
63
            path = path[len(self.storage_class.prefix)+1:]
64
        matches = []
65
        for app, storage in self.storages.items():
66
            if storage.exists(path):
67
                matched_path = storage.path(path)
68
                if matched_path:
69
                    if not all:
70
                        return matched_path
71
                    matches.append(matched_path)
72
        return matches
73

  
74
    def list(self, ignore_patterns=[]):
75
        """List all files in registered xstatic.* packages"""
76
        for app, storage in self.storages.items():
77
            for path in utils.get_files(storage, ignore_patterns):
78
                yield path, storage
gadjo/static/css/fontawesome-webfont.svg
1
<?xml version="1.0" standalone="no"?>
2
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
3
<svg xmlns="http://www.w3.org/2000/svg">
4
<metadata></metadata>
5
<defs>
6
<font id="FontAwesomeRegular" horiz-adv-x="1843" >
7
<font-face units-per-em="2048" ascent="1536" descent="-512" />
8
<missing-glyph horiz-adv-x="512" />
9
<glyph horiz-adv-x="0" />
10
<glyph horiz-adv-x="0" />
11
<glyph unicode="&#xd;" horiz-adv-x="512" />
12
<glyph unicode=" "  horiz-adv-x="512" />
13
<glyph unicode="&#x09;" horiz-adv-x="512" />
14
<glyph unicode="&#xa0;" horiz-adv-x="512" />
15
<glyph unicode="o" horiz-adv-x="1591" />
16
<glyph unicode="&#xa8;" horiz-adv-x="2048" />
17
<glyph unicode="&#xa9;" horiz-adv-x="2048" />
18
<glyph unicode="&#xae;" horiz-adv-x="2048" />
19
<glyph unicode="&#xb4;" horiz-adv-x="2048" />
20
<glyph unicode="&#xc6;" horiz-adv-x="2048" />
21
<glyph unicode="&#xcd;" horiz-adv-x="2048" />
22
<glyph unicode="&#x2000;" horiz-adv-x="784" />
23
<glyph unicode="&#x2001;" horiz-adv-x="1569" />
24
<glyph unicode="&#x2002;" horiz-adv-x="784" />
25
<glyph unicode="&#x2003;" horiz-adv-x="1569" />
26
<glyph unicode="&#x2004;" horiz-adv-x="523" />
27
<glyph unicode="&#x2005;" horiz-adv-x="392" />
28
<glyph unicode="&#x2006;" horiz-adv-x="261" />
29
<glyph unicode="&#x2007;" horiz-adv-x="261" />
30
<glyph unicode="&#x2008;" horiz-adv-x="196" />
31
<glyph unicode="&#x2009;" horiz-adv-x="313" />
32
<glyph unicode="&#x200a;" horiz-adv-x="87" />
33
<glyph unicode="&#x202f;" horiz-adv-x="313" />
34
<glyph unicode="&#x203a;" horiz-adv-x="2048" />
35
<glyph unicode="&#x205f;" horiz-adv-x="392" />
36
<glyph unicode="&#x2122;" horiz-adv-x="2048" />
37
<glyph unicode="&#x221e;" horiz-adv-x="2048" />
38
<glyph unicode="&#xe000;" horiz-adv-x="1024" d="M0 0z" />
39
<glyph unicode="&#xf000;" horiz-adv-x="1536" d="M6 1489q20 47 70 47h1382q51 0 72 -47q20 -47 -17 -84l-610 -610v-641h248q33 0 55.5 -22.5t22.5 -53.5q0 -33 -22.5 -55.5t-55.5 -22.5h-768q-31 0 -53.5 22.5t-22.5 55.5q0 31 22.5 53.5t53.5 22.5h250v641l-610 610q-37 37 -17 84z" />
40
<glyph unicode="&#xf001;" horiz-adv-x="1488" d="M0 213q0 57 27.5 103t72.5 77t98.5 47.5t106.5 16.5q25 0 50.5 -4t50.5 -11v779q0 27 16 48t43 29q23 6 99.5 29t178 52.5t215 62.5t211 60.5t164 46t74.5 18.5q35 0 58.5 -23.5t23.5 -58.5v-1028q0 -59 -27.5 -104.5t-73 -76t-99.5 -47t-105 -16.5t-105.5 16.5t-98.5 47 t-71.5 75.5t-27.5 105q0 57 27.5 103t71.5 77t98.5 47t105.5 16q27 0 52.5 -4t49.5 -10v537l-678 -195v-815q0 -59 -27.5 -104.5t-71.5 -76t-98.5 -47t-105.5 -16.5q-53 0 -106.5 16.5t-98.5 47t-72.5 76t-27.5 104.5z" />
41
<glyph unicode="&#xf002;" horiz-adv-x="1597" d="M0 901q0 137 52 258t143.5 212t212 143.5t258.5 52.5q137 0 257.5 -52.5t212 -143.5t143.5 -212t52 -258q0 -98 -28.5 -191.5t-81.5 -174.5l358 -359q18 -18 18 -47q0 -16 -18 -43t-45 -53.5t-53.5 -45t-42.5 -18.5q-29 0 -47 19l-359 358q-82 -53 -175 -81.5t-191 -28.5 q-137 0 -258 52t-212.5 143t-143.5 212t-52 258zM266 901q0 -84 32 -156.5t86 -126t127 -85t155 -31.5t154.5 31.5t126.5 85t86 126t32 156.5q0 82 -32 154.5t-86 127t-126.5 86t-154.5 31.5t-155 -31.5t-127 -86t-86 -127t-32 -154.5zM414 901q0 51 19.5 97t54 81t80 54.5 t98.5 19.5q20 0 34.5 -14.5t14.5 -36.5q0 -20 -14.5 -34.5t-34.5 -14.5q-63 0 -107.5 -44t-44.5 -108q0 -20 -14.5 -34.5t-34.5 -14.5q-23 0 -37 14.5t-14 34.5z" />
42
<glyph unicode="&#xf003;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h1536v852q-31 -31 -58 -50q-106 -80 -212.5 -159.5t-211.5 -163.5q-61 -49 -131.5 -94t-156.5 -45q-82 0 -153 45t-132 94 q-104 84 -211 164t-213 159q-27 18 -57 50v-852zM154 1317q0 -31 14 -65.5t35.5 -66.5t47 -59.5t50.5 -46.5q100 -76 199.5 -150.5t199.5 -152.5q20 -16 48 -37.5t58 -42t59.5 -35t54.5 -14.5h2h2q25 0 54.5 14.5t59 35t57 42t48.5 37.5q100 78 199.5 153t199.5 150 q25 18 50.5 46t47 60t36 66.5t14.5 65.5v65h-1536v-65z" />
43
<glyph unicode="&#xf004;" horiz-adv-x="1802" d="M0 1073q0 113 34 205t97.5 155.5t153.5 98.5t202 35q59 0 117 -18.5t110 -48.5t99 -68.5t88 -77.5q39 39 87 77.5t100.5 68.5t109 48.5t115.5 18.5q113 0 204 -35t154.5 -98.5t97 -155.5t33.5 -205q0 -66 -18.5 -130t-51 -124.5t-74.5 -115t-87 -99.5l-615 -612 q-23 -23 -55 -23q-31 0 -57 23l-615 614q-45 45 -87 99.5t-73.5 114t-50 124t-18.5 129.5z" />
44
<glyph unicode="&#xf005;" horiz-adv-x="1675" d="M1 959.5q9 27.5 54 33.5l506 74l227 459q20 41 49 41t50 -41l227 -459l506 -74q45 -6 54 -33.5t-23 -60.5l-367 -356l86 -504q8 -45 -15.5 -62.5t-64.5 5.5l-452 237l-453 -237q-41 -23 -64.5 -5.5t-15.5 62.5l86 504l-364 356q-35 33 -26 60.5z" />
45
<glyph unicode="&#xf006;" horiz-adv-x="1675" d="M0 948q0 23 18.5 32t36.5 13l506 74l227 459q6 14 20 27.5t30 13.5q18 0 30.5 -13.5t18.5 -27.5l227 -459l506 -74q18 -4 36.5 -13t18.5 -32q0 -14 -7 -26.5t-17 -22.5l-367 -356l86 -504q0 -4 1 -9t1 -12q0 -20 -9 -34.5t-32 -14.5t-41 13l-452 237l-453 -237 q-18 -12 -39 -13q-23 0 -33 14.5t-10 34.5q0 6 1 11.5t1 9.5l86 504l-364 356q-10 10 -18.5 22.5t-8.5 26.5zM289 866l274 -268l-65 -377l340 178l340 -178l-66 377l274 268l-378 56l-170 344l-170 -344z" />
46
<glyph unicode="&#xf007;" horiz-adv-x="1566" d="M0 57v387q0 37 18.5 82t48 86t65.5 74t71 43q18 6 66 13.5t102.5 14.5t104.5 13t77 10q-92 59 -144.5 153.5t-52.5 205.5q0 88 34 165.5t91.5 136t135 92.5t165.5 34t166 -34t136.5 -92.5t92 -136t33.5 -165.5q0 -109 -52 -204.5t-144 -154.5q27 -4 77 -10t104 -13 t101 -14.5t68 -13.5q35 -10 70.5 -42t65.5 -74t48.5 -87t18.5 -82v-387q-10 -4 -22.5 -14t-27 -19.5t-27.5 -16.5t-22 -7h-1370q-35 0 -53 21.5t-45 35.5z" />
47
<glyph unicode="&#xf008;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM115 154q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11t11.5 28v153q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11t-11.5 -28v-153zM115 512 q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11.5t11.5 27.5v154q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11.5t-11.5 -27.5v-154zM115 870q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11.5t11.5 27.5v154q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11.5t-11.5 -27.5v-154z M115 1229q0 -16 11 -27.5t28 -11.5h153q16 0 27.5 11t11.5 28v153q0 16 -11 27.5t-28 11.5h-153q-16 0 -27.5 -11t-11.5 -28v-153zM461 154q0 -16 11 -27.5t28 -11.5h843q16 0 27.5 11t11.5 28v512q0 16 -11 27.5t-28 11.5h-843q-16 0 -27.5 -11.5t-11.5 -27.5v-512z M461 870q0 -16 11 -27.5t28 -11.5h843q16 0 27.5 11.5t11.5 27.5v512q0 16 -11 27.5t-28 11.5h-843q-16 0 -27.5 -11t-11.5 -28v-512zM1497 154q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11t11.5 28v153q0 16 -11.5 27.5t-27.5 11.5h-154q-16 0 -27.5 -11t-11.5 -28v-153 zM1497 512q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11.5t11.5 27.5v154q0 16 -11.5 27.5t-27.5 11.5h-154q-16 0 -27.5 -11.5t-11.5 -27.5v-154zM1497 870q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11.5t11.5 27.5v154q0 16 -11.5 27.5t-27.5 11.5h-154 q-16 0 -27.5 -11.5t-11.5 -27.5v-154zM1497 1229q0 -16 11.5 -27.5t27.5 -11.5h154q16 0 27.5 11t11.5 28v153q0 16 -11.5 27.5t-27.5 11.5h-154q-16 0 -27.5 -11t-11.5 -28v-153z" />
48
<glyph unicode="&#xf009;" d="M0 78v536q0 33 22.5 55.5t55.5 22.5h690q33 0 55.5 -22.5t22.5 -55.5v-536q0 -33 -22.5 -55.5t-55.5 -22.5h-690q-33 0 -55.5 22.5t-22.5 55.5zM0 922v538q0 31 22.5 53.5t55.5 22.5h690q33 0 55.5 -22.5t22.5 -53.5v-538q0 -33 -22.5 -54.5t-55.5 -21.5h-690 q-33 0 -55.5 21.5t-22.5 54.5zM999 78v536q0 33 21.5 55.5t54.5 22.5h692q31 0 53.5 -22.5t22.5 -55.5v-536q0 -33 -22.5 -55.5t-53.5 -22.5h-692q-33 0 -54.5 22.5t-21.5 55.5zM999 922v538q0 31 21.5 53.5t54.5 22.5h692q31 0 53.5 -22.5t22.5 -53.5v-538 q0 -33 -22.5 -54.5t-53.5 -21.5h-692q-33 0 -54.5 21.5t-21.5 54.5z" />
49
<glyph unicode="&#xf00a;" d="M0 78v270q0 33 22.5 54.5t55.5 21.5h358q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5zM0 655v226q0 33 22.5 54t55.5 21h358q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-358q-33 0 -55.5 22.5 t-22.5 54.5zM0 1188v272q0 31 22.5 53.5t55.5 22.5h358q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5zM666 78v270q0 33 22.5 54.5t54.5 21.5h359q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5 h-359q-33 0 -55 22.5t-22 55.5zM666 655v226q0 33 22.5 54t54.5 21h359q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-359q-33 0 -55 22.5t-22 54.5zM666 1188v272q0 31 22.5 53.5t54.5 22.5h359q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5 t-53.5 -22.5h-359q-33 0 -55 22.5t-22 55.5zM1331 78v270q0 33 22.5 54.5t55.5 21.5h358q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5zM1331 655v226q0 33 22.5 54t55.5 21h358q31 0 53.5 -21.5t22.5 -53.5v-226 q0 -33 -22.5 -55t-53.5 -22h-358q-33 0 -55.5 22.5t-22.5 54.5zM1331 1188v272q0 31 22.5 53.5t55.5 22.5h358q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5t-53.5 -22.5h-358q-33 0 -55.5 22.5t-22.5 55.5z" />
50
<glyph unicode="&#xf00b;" d="M0 78v270q0 33 22.5 54.5t55.5 21.5h297q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5h-297q-33 0 -55.5 22.5t-22.5 55.5zM0 655v226q0 33 22.5 54t55.5 21h297q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-297q-33 0 -55.5 22.5 t-22.5 54.5zM0 1188v272q0 31 22.5 53.5t55.5 22.5h297q31 0 53.5 -22.5t22.5 -53.5v-272q0 -33 -22.5 -55.5t-53.5 -22.5h-297q-33 0 -55.5 22.5t-22.5 55.5zM604 78v270q0 33 22.5 54.5t55.5 21.5h1085q31 0 53.5 -21.5t22.5 -54.5v-270q0 -33 -22.5 -55.5t-53.5 -22.5 h-1085q-33 0 -55.5 22.5t-22.5 55.5zM604 655v226q0 33 22.5 54t55.5 21h1085q31 0 53.5 -21.5t22.5 -53.5v-226q0 -33 -22.5 -55t-53.5 -22h-1085q-33 0 -55.5 22.5t-22.5 54.5zM604 1188v272q0 31 22.5 53.5t55.5 22.5h1085q31 0 53.5 -22.5t22.5 -53.5v-272 q0 -33 -22.5 -55.5t-53.5 -22.5h-1085q-33 0 -55.5 22.5t-22.5 55.5z" />
51
<glyph unicode="&#xf00c;" d="M0 732.5q0 33.5 23 55.5l174 175q23 23 56.5 22.5t55.5 -22.5l365 -365q23 -23 56.5 -23t55.5 23l746 745q23 23 56.5 23t56.5 -23l174 -174q23 -23 22.5 -56.5t-22.5 -55.5l-910 -910q-23 -23 -62.5 -39t-72.5 -16h-88q-35 0 -75 16.5t-62 38.5l-526 529 q-23 23 -23 56.5z" />
52
<glyph unicode="&#xf00d;" horiz-adv-x="1536" d="M0 192.5q0 38.5 29 67.5l508 510l-508 500q-29 29 -29 67.5t29 67.5l100 100q29 29 68 29t67 -29l504 -504l504 504q29 29 67.5 29t67.5 -29l100 -100q29 -29 29 -68t-29 -67l-508 -510l508 -500q29 -29 29 -66.5t-29 -66.5l-100 -102q-29 -29 -68 -29t-67 29l-504 505 l-506 -505q-29 -29 -66.5 -29t-66.5 29l-100 100q-29 29 -29 67.5z" />
53
<glyph unicode="&#xf00e;" horiz-adv-x="1597" d="M0 901q0 137 52 258t143.5 212t212 143.5t258.5 52.5q137 0 259 -52.5t212 -143.5t142 -212t52 -258q0 -102 -28.5 -195.5t-81.5 -170.5l358 -359q18 -18 18 -46t-18 -48l-94 -94q-20 -18 -48 -18.5t-46 18.5l-359 358q-78 -53 -171 -81.5t-195 -28.5q-137 0 -258 52 t-212.5 142t-143.5 211t-52 260zM266 901q0 -84 32 -156.5t86 -126t127 -85t155 -31.5t155.5 31.5t126.5 85t85 126t32 156.5q0 82 -32 154.5t-85 127t-126.5 86t-155.5 31.5t-155 -31.5t-127 -86t-86 -127t-32 -154.5zM399 868v66q0 33 33 33h168v168q0 33 33 32h65 q14 0 24.5 -9t10.5 -23v-168h166q33 0 33 -33v-66q0 -14 -9.5 -24t-23.5 -10h-166v-166q0 -14 -10 -23.5t-25 -9.5h-65q-33 0 -33 33v166h-168q-14 0 -23.5 10t-9.5 24z" />
54
<glyph unicode="&#xf010;" horiz-adv-x="1597" d="M0 901q0 137 52 258t143.5 212t212 143.5t258.5 52.5q137 0 259 -52.5t212 -143.5t142 -212t52 -258q0 -102 -28.5 -195.5t-81.5 -170.5l358 -359q18 -18 18 -46t-18 -48l-94 -94q-20 -18 -48 -18.5t-46 18.5l-359 358q-78 -53 -171 -81.5t-195 -28.5q-137 0 -258 52 t-212.5 142t-143.5 211t-52 260zM266 901q0 -84 32 -156.5t86 -126t127 -85t155 -31.5t155.5 31.5t126.5 85t85 126t32 156.5q0 82 -32 154.5t-85 127t-126.5 86t-155.5 31.5t-155 -31.5t-127 -86t-86 -127t-32 -154.5zM399 868v66q0 33 33 33h467q33 0 33 -33v-66 q0 -14 -9.5 -24t-23.5 -10h-467q-14 0 -23.5 10t-9.5 24z" />
55
<glyph unicode="&#xf011;" horiz-adv-x="1488" d="M0 713q0 186 86 349t240 267q12 10 28 6q18 -4 25 -16l90 -131q10 -12 6 -27.5t-16 -25.5q-106 -72 -164.5 -182.5t-58.5 -239.5q0 -104 39.5 -197.5t108.5 -162t162 -108.5t197 -40t197.5 40t163.5 108.5t109.5 161.5t39.5 198q0 129 -59 239.5t-164 182.5 q-14 10 -16 24q-4 16 6 29l88 131q10 12 25.5 15t29.5 -5q154 -104 240 -267t86 -349q0 -154 -58.5 -289t-160 -236.5t-237.5 -160t-290 -58.5t-289 58.5t-236 160t-159.5 236.5t-58.5 289zM627 793v704q0 16 11 27.5t28 11.5h157q16 0 27.5 -11.5t11.5 -27.5v-704 q0 -16 -11 -27.5t-28 -11.5h-157q-16 0 -27.5 11t-11.5 28z" />
56
<glyph unicode="&#xf012;" d="M0 39v260q0 16 11.5 27.5t27.5 11.5h192q16 0 26.5 -11.5t10.5 -27.5v-260q0 -16 -10 -27.5t-27 -11.5h-192q-39 0 -39 39zM393 39v434q0 16 11.5 27.5t27.5 11.5h193q16 0 26.5 -11.5t10.5 -27.5v-434q0 -16 -10.5 -27.5t-26.5 -11.5h-193q-16 0 -27.5 11.5t-11.5 27.5z M786 39v676q0 16 11.5 27.5t27.5 11.5h193q16 0 27.5 -11.5t11.5 -27.5v-676q0 -16 -11.5 -27.5t-27.5 -11.5h-193q-16 0 -27.5 11.5t-11.5 27.5zM1182 39v995q0 16 10 27.5t27 11.5h192q16 0 27.5 -11t11.5 -28v-995q0 -16 -11.5 -27.5t-27.5 -11.5h-192q-16 0 -26.5 11.5 t-10.5 27.5zM1575 39v1458q0 39 39 39h190q39 0 39 -39v-1458q0 -39 -39 -39h-190q-39 0 -39 39z" />
57
<glyph unicode="&#xf013;" horiz-adv-x="1593" d="M0 651v236q0 12 30.5 21.5t68.5 15.5t74 9t48 5q18 61 49 117q-55 82 -120 157l-7 15q0 8 28 38.5t62.5 65.5t66.5 62.5t40 27.5q2 0 26.5 -18.5t54.5 -41t56.5 -43t32.5 -24.5q29 16 58.5 26.5t60.5 20.5q0 12 3 49t9 75t15.5 69t21.5 31h237q14 0 19 -15 q12 -49 17 -103t14 -106q31 -8 59.5 -19t56.5 -28q8 6 34 26.5t55.5 43t53 40t29.5 17.5t37 -27.5t65 -62.5t61.5 -65.5t27.5 -38.5q0 -4 -17.5 -28.5t-39 -53.5t-42 -55.5t-24.5 -32.5q33 -55 51 -123q49 -10 103.5 -13t101.5 -20q16 -4 16 -18v-236q0 -12 -29.5 -21.5 t-68.5 -15.5t-76 -9t-49 -5q-14 -57 -47 -117q55 -82 121 -157l6 -15q0 -8 -27.5 -38.5t-62.5 -65.5t-66.5 -62.5t-40.5 -27.5q-2 0 -26.5 18.5t-54 41t-56 43t-33.5 24.5q-29 -16 -58.5 -27.5t-59.5 -19.5q-2 -12 -5.5 -49.5t-9.5 -76t-14 -69.5t-21 -31h-237q-14 0 -19 17 q-14 49 -19 103t-11 103q-61 18 -117 50q-41 -31 -81 -60.5t-79 -62.5l-12 -4q-6 0 -37 27.5t-64.5 62.5t-61 65.5t-27.5 38.5q0 2 16 26.5t37.5 53.5t42 55.5t26.5 34.5q-33 55 -51 123q-51 10 -104.5 13t-100.5 20q-16 4 -16 18zM557 768q0 -49 18.5 -93t51 -77t77 -52.5 t93.5 -19.5t93 19.5t75.5 52.5t51 77t19.5 93t-19.5 92t-51 76t-75.5 51.5t-93 18.5t-93.5 -18.5t-77 -51.5t-51 -76t-18.5 -92z" />
58
<glyph unicode="&#xf014;" horiz-adv-x="1304" d="M0 1175.5v34.5v36t2 36q25 14 71 23.5t98 15.5t102.5 9t78.5 5q-8 82 11.5 128t59.5 68.5t98.5 29t131.5 6.5q55 0 109.5 -3t97.5 -20.5t68.5 -54.5t25.5 -105v-24t-2 -25q29 -2 79 -5t102.5 -9t99.5 -15.5t72 -23.5v-72v-69q-37 -20 -123 -32.5t-185.5 -19t-193.5 -7.5 t-150 -1q-55 0 -150 1t-194.5 7.5t-184.5 18.5t-122 33q-2 16 -2 34.5zM133 154v837q123 -16 244 -21t244 -5h32q129 2 258 6t258 20v-837q0 -63 -44 -108.5t-107 -45.5h-731q-63 0 -108.5 45t-45.5 109zM303 199q0 -16 10.5 -26.5t26.5 -10.5h39q16 0 27.5 10t11.5 27v614 q0 16 -11.5 27.5t-27.5 11.5h-39q-16 0 -26.5 -11.5t-10.5 -27.5v-614zM504 1384q0 -10 1 -22t3 -23q144 2 291 0q0 12 2 23.5t0 21.5v15q-35 10 -74 11t-74 1q-37 0 -75.5 -1t-73.5 -11v-15zM596 199q0 -16 10 -26.5t27 -10.5h39q16 0 27.5 10t11.5 27v614q0 16 -11.5 27.5 t-27.5 11.5h-39q-16 0 -26.5 -11.5t-10.5 -27.5v-614zM887 199q0 -16 11 -26.5t28 -10.5h39q16 0 27.5 10t11.5 27v614q0 16 -11.5 27.5t-27.5 11.5h-39q-16 0 -27.5 -11.5t-11.5 -27.5v-614z" />
59
<glyph unicode="&#xf015;" horiz-adv-x="1880" d="M0 809.5q2 15.5 14 26.5l867 710q27 20 59 21q33 0 59 -21l240 -196v102q0 16 11.5 27.5t27.5 11.5h223q16 0 26.5 -11.5t10.5 -27.5v-348l328 -268q12 -10 14 -25.5t-8 -28.5l-45 -53q-10 -14 -29 -14h-65q-16 0 -25 8l-743 608q-25 20 -50 0l-743 -608q-8 -8 -25 -8 h-65q-18 0 -29 14l-45 53q-10 12 -8 27.5zM266 76v622l674 553l674 -553v-622q0 -33 -21.5 -54.5t-54.5 -21.5h-422v498h-352v-498h-422q-33 0 -54.5 21.5t-21.5 54.5z" />
60
<glyph unicode="&#xf016;" horiz-adv-x="1228" d="M0 78v1382q0 31 22.5 53.5t55.5 22.5h614q33 0 71 -16.5t60 -38.5l351 -351q23 -23 39 -60.5t16 -70.5v-921q0 -33 -22.5 -55.5t-53.5 -22.5h-1075q-33 0 -55.5 22.5t-22.5 55.5zM154 154h921v692h-459q-31 0 -53 22.5t-22 55.5v458h-387v-1228zM268 326v116h693v-116 h-693zM268 596v115h693v-115h-693zM694 999h381q0 4 -4 13.5t-6 11.5l-350 348q-2 4 -9.5 6t-11.5 4v-383z" />
61
<glyph unicode="&#xf017;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM635 608v465q0 33 23.5 56.5t56.5 23.5h80q35 0 57 -23.5t22 -56.5v-305h201q33 0 56.5 -23.5t23.5 -56.5v-80q0 -33 -23.5 -56.5t-56.5 -23.5h-360q-33 0 -56.5 23.5 t-23.5 56.5z" />
62
<glyph unicode="&#xf018;" d="M2 35l594 1466q6 14 21.5 24.5t31.5 10.5h195l-8 -170h172l-9 170h195q16 0 31.5 -10t21.5 -25l594 -1466q6 -14 -1 -24.5t-23 -10.5h-740l-26 512h-258l-27 -512h-739q-16 0 -23.5 10t-1.5 25zM807 797h229l-20 413h-189z" />
63
<glyph unicode="&#xf019;" d="M0 39v614q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-346h1229v346q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-614q0 -39 -39 -39h-1765q-39 0 -39 39zM345.5 944.5q6.5 16.5 39.5 16.5h307v499q0 31 21.5 53.5t54.5 22.5h307q33 0 55.5 -22.5 t22.5 -53.5v-499h307q31 0 37 -16.5t-16 -39.5l-504 -506q-23 -23 -55.5 -22.5t-55.5 22.5l-504 506q-23 23 -16.5 39.5z" />
64
<glyph unicode="&#xf01a;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM414 743q10 25 37 25h208v358q0 16 11.5 28.5t27.5 12.5h201q16 0 27.5 -12t11.5 -29v-358h209q27 0 37 -25t-10 -43l-347 -346q-14 -10 -28 -10t-29 10l-346 346 q-20 18 -10 43z" />
65
<glyph unicode="&#xf01b;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177 120t-218 44t-218.5 -44t-177 -120t-119.5 -177t-44 -218zM414 793q-10 25 10 43l346 346q14 10 29 10q14 0 28 -10l347 -346q20 -18 10 -43t-37 -25h-209v-360q0 -16 -11.5 -27.5t-27.5 -11.5h-201q-16 0 -27.5 11t-11.5 28v360h-208 q-27 0 -37 25z" />
66
<glyph unicode="&#xf01c;" d="M0 78v577q0 33 9 76t22 72l284 663q12 29 44 49.5t63 20.5h999q31 0 63 -20.5t44 -49.5l284 -663q12 -29 21.5 -72t9.5 -76v-577q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM238 694h387l114 -231h383l117 231h367q-2 4 -2 9.5t-2 9.5l-256 594 h-848l-256 -596q-2 -2 -2 -7.5t-2 -9.5z" />
67
<glyph unicode="&#xf01d;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM582 453v628q0 18 16 29q20 8 31 0l545 -315q16 -6 16 -27q0 -20 -16 -27l-545 -315q-8 -4 -15 -4q-8 0 -16 4q-16 10 -16 27z" />
68
<glyph unicode="&#xf01e;" horiz-adv-x="1591" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5q141 0 271 -48.5t239 -140.5l161 162q35 35 58.5 24.5t23.5 -57.5v-463q0 -33 -22 -55q-10 -10 -23.5 -16t-29.5 -6h-463q-47 0 -58.5 23.5t23.5 58.5l160 159q-72 57 -159 88t-181 31q-117 0 -218.5 -44t-177 -120 t-119.5 -177t-44 -218t44 -218t119.5 -177t177 -120t218.5 -44q104 0 198.5 37t169 101.5t123.5 153.5t64 191q0 16 14 27q14 10 31 8l157 -20q16 -4 26.5 -16.5t8.5 -28.5q-20 -147 -89.5 -274.5t-176 -220.5t-242 -145.5t-284.5 -52.5q-166 0 -311.5 62.5t-254 171 t-171 254t-62.5 311.5z" />
69
<glyph unicode="&#xf021;" horiz-adv-x="1916" d="M6 311l150 437q10 33 39 45t59 4l438 -150q45 -16 46 -40.5t-42 -47.5l-202 -100q53 -78 123.5 -134.5t160.5 -86.5q111 -37 221.5 -28t207 56t170 129t110.5 193q6 16 20.5 22t30.5 2l152 -51q16 -6 23 -20.5t1 -30.5q-53 -158 -159.5 -274.5t-243.5 -184t-296 -81 t-315 39.5q-135 47 -241.5 134t-179.5 208l-205 -100q-43 -23 -63.5 -5.5t-4.5 64.5zM203 1024q53 156 159.5 273.5t243.5 185t295 81t316 -39.5q133 -47 240.5 -134t180.5 -208l205 100q43 23 63.5 5.5t4.5 -62.5l-150 -439q-10 -33 -39 -45t-59 -4l-438 150 q-45 16 -46 40.5t40 47.5l202 100q-51 78 -122.5 134.5t-159.5 86.5q-111 37 -221.5 28t-207 -56t-170 -129t-110.5 -193q-6 -16 -20.5 -22t-30.5 -2l-152 51q-16 6 -23 20.5t-1 30.5z" />
70
<glyph unicode="&#xf022;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h1536v1075h-1536v-1075zM307 346v76q0 39 39 39h154q16 0 27.5 -11.5t11.5 -27.5v-76q0 -16 -11.5 -27.5t-27.5 -11.5h-154q-39 0 -39 39 zM307 653v76q0 39 39 39h154q16 0 27.5 -11.5t11.5 -27.5v-76q0 -16 -11.5 -27.5t-27.5 -11.5h-154q-39 0 -39 39zM307 961v75q0 39 39 39h154q16 0 27.5 -11t11.5 -28v-75q0 -16 -11.5 -27.5t-27.5 -11.5h-154q-39 0 -39 39zM692 346v76q0 16 10.5 27.5t26.5 11.5h768 q39 0 39 -39v-76q0 -39 -39 -39h-768q-16 0 -26.5 11.5t-10.5 27.5zM692 653v76q0 16 10.5 27.5t26.5 11.5h768q39 0 39 -39v-76q0 -39 -39 -39h-768q-16 0 -26.5 11.5t-10.5 27.5zM692 961v75q0 16 10.5 27.5t26.5 11.5h768q39 0 39 -39v-75q0 -39 -39 -39h-768 q-16 0 -26.5 11t-10.5 28z" />
71
<glyph unicode="&#xf023;" horiz-adv-x="1253" d="M0 117v626q0 39 21.5 69t56.5 42v164q0 113 43 213t117.5 175t175 118t213.5 43t213 -43t175 -118t118 -175.5t43 -212.5v-164q35 -12 56 -42t21 -69v-626q0 -47 -34.5 -82t-81.5 -35h-1020q-47 0 -82 35t-35 82zM313 862h627v156q0 66 -24.5 123t-67.5 99t-100.5 66.5 t-120.5 24.5q-66 0 -122 -24.5t-99.5 -66.5t-68 -99.5t-24.5 -122.5v-156zM494 164h266l-66 285q29 18 47.5 48.5t18.5 65.5q0 55 -39 95t-94 40t-94 -40t-39 -95q0 -35 18 -65.5t47 -46.5z" />
72
<glyph unicode="&#xf024;" d="M0 1382q0 63 45 108.5t109 45.5q63 0 108 -45.5t45 -108.5q0 -41 -20.5 -74.5t-55.5 -56.5v-1212q0 -16 -11 -27.5t-27 -11.5h-78q-16 0 -26.5 11.5t-10.5 27.5v1212q-35 23 -56.5 56.5t-21.5 74.5zM307 416v745q0 33 19.5 66t48.5 49q104 55 188 86t144 45q70 16 124 18 q68 0 124.5 -11t107.5 -29.5t99 -43t100 -51.5q63 -29 145 -33q70 -4 164 15.5t207 87.5q29 16 47 6t18 -43v-748q0 -31 -18.5 -64.5t-46.5 -49.5q-113 -68 -207 -87.5t-164 -15.5q-82 4 -145 33q-51 27 -99.5 51.5t-99.5 43t-107.5 29.5t-124.5 11q-55 -2 -124 -18 q-59 -14 -143.5 -45t-188.5 -88q-29 -16 -48.5 -4t-19.5 45z" />
73
<glyph unicode="&#xf025;" horiz-adv-x="1916" d="M0 729q0 172 85 324.5t221 266.5t307 180.5t345 66.5t345.5 -66.5t307.5 -180.5t221 -266.5t85 -326.5q0 -182 -78 -350l-27 -60l-174 -26q-27 -104 -110.5 -173t-196.5 -69v-41q0 -16 -12 -27.5t-29 -11.5h-80q-16 0 -27.5 11.5t-11.5 27.5v719q0 16 11.5 28.5 t27.5 12.5h80q16 0 28.5 -12.5t12.5 -28.5v-39q88 0 161 -44t114 -116l39 7q33 90 32 192q0 125 -65.5 233.5t-170 190.5t-232.5 129t-251 47t-250.5 -47t-232 -128t-170 -190.5t-65.5 -232.5q0 -104 32 -194l39 -7q41 72 114 116t161 44v39q0 16 12 28.5t29 12.5h80 q16 0 27 -12.5t11 -28.5v-719q0 -16 -11 -27.5t-27 -11.5h-80q-16 0 -28.5 11.5t-12.5 27.5v41q-55 0 -106.5 18.5t-91.5 50.5t-68.5 76t-40.5 97l-175 26l-26 60q-78 168 -78 352z" />
74
<glyph unicode="&#xf026;" horiz-adv-x="905" d="M0 578v380q0 16 11.5 27.5t27.5 11.5h420l325 326q49 51 84 37t35 -86v-1012q0 -72 -34.5 -86t-84.5 37l-325 326h-420q-16 0 -27.5 11t-11.5 28z" />
75
<glyph unicode="&#xf027;" horiz-adv-x="1277" d="M0 578v380q0 16 11.5 27.5t27.5 11.5h420l325 326q49 51 84 37t35 -86v-1012q0 -72 -34.5 -86t-84.5 37l-325 326h-420q-16 0 -27.5 11t-11.5 28zM1027 406q-9 32 7 61q84 145 84 301t-84 301q-16 29 -7 61t38 48t60.5 8t48.5 -37q104 -182 104 -381q0 -201 -104 -381 q-23 -41 -70 -41q-20 0 -39 12q-29 16 -38 48z" />
76
<glyph unicode="&#xf028;" horiz-adv-x="1916" d="M0 578v380q0 16 11.5 27.5t27.5 11.5h420l325 326q49 51 84 37t35 -86v-1012q0 -72 -34.5 -86t-84.5 37l-325 326h-420q-16 0 -27.5 11t-11.5 28zM1027 406q-9 32 7 61q84 145 84 301t-84 301q-16 29 -7 61t38 48t60.5 8t48.5 -37q104 -182 104 -381q0 -201 -104 -381 q-23 -41 -70 -41q-20 0 -39 12q-29 16 -38 48zM1285 219q-7 33 11 62q141 225 142 487q0 262 -142 487q-18 29 -11 62t36 49q29 18 61 11t50 -36q82 -131 123.5 -275t41.5 -298q0 -309 -167 -573q-10 -18 -29 -27.5t-37 -9.5q-25 0 -43 12q-29 16 -36 49zM1540 33 q-6 33 12 59q100 154 152.5 325t52.5 351t-52 351t-153 323q-18 29 -12 61.5t35 50.5q29 16 61 10.5t50 -32.5q115 -174 173 -366.5t58 -397.5t-58.5 -397.5t-172.5 -364.5q-10 -18 -29 -27.5t-37 -9.5q-25 0 -45 13q-29 18 -35 51z" />
77
<glyph unicode="&#xf029;" horiz-adv-x="1536" d="M0 0v698h698v-698h-698zM0 838v698h698v-698h-698zM139 139h420v420h-420v-420zM139 977h420v420h-420v-420zM279 279v141h141v-141h-141zM279 1116v139h141v-139h-141zM838 0v698h417v-139h142v139h139v-419h-420v139h-139v-418h-139zM838 838v698h698v-698h-698z M977 977h420v420h-420v-420zM1116 0v139h139v-139h-139zM1116 1116v139h139v-139h-139zM1397 0v139h139v-139h-139z" />
78
<glyph unicode="&#xf02a;" d="M0 0v1536h154v-1536h-154zM227 0v1536h37v-1536h-37zM356 0v1536h117v-1536h-117zM545 0v1536h78v-1536h-78zM715 0v1536h76v-1536h-76zM903 0v1536h37v-1536h-37zM1014 0v1536h153v-1536h-153zM1221 0v1536h77v-1536h-77zM1409 0v1536h39v-1536h-39zM1579 0v1536h37 v-1536h-37zM1690 0v1536h153v-1536h-153z" />
79
<glyph unicode="&#xf02b;" horiz-adv-x="1488" d="M0 961v454q0 49 35 85t86 36h454q51 0 113 -24.5t94 -61.5l672 -748q33 -39 34 -88t-34 -84l-526 -526q-35 -35 -86 -36t-86 36l-670 750q-35 37 -60.5 96t-25.5 111zM197 1223q0 -49 33.5 -83t82.5 -34t83 34t34 83t-34 82.5t-83 33.5t-82.5 -33.5t-33.5 -82.5z" />
80
<glyph unicode="&#xf02c;" horiz-adv-x="1875" d="M0 961v454q0 49 35 85t86 36h454q25 0 53.5 -6t57.5 -18.5t54.5 -28t41.5 -33.5l670 -748q33 -37 34 -86t-34 -84l-526 -524q-35 -35 -86.5 -37t-83.5 37l-670 746q-35 39 -60.5 98t-25.5 109zM195 1223q0 -47 34.5 -82t83.5 -35q47 0 82 35t35 82q0 49 -35 83.5 t-82 34.5q-49 0 -83.5 -34.5t-34.5 -83.5zM791 1534h174q51 0 112.5 -24.5t93.5 -61.5l670 -748q35 -37 35 -87t-35 -85l-524 -524q-35 -35 -86 -36t-86 36l-12 14l514 514q35 35 34.5 84.5t-34.5 85.5l-670 748q-31 35 -84 56.5t-102 27.5z" />
81
<glyph unicode="&#xf02d;" horiz-adv-x="1710" d="M10 311q2 16 4 31.5t4 34.5q0 10 -4 20.5t-2 20.5q2 16 15.5 31.5t25.5 35.5q23 37 45.5 90.5t32.5 92.5q4 16 -1 30.5t-1 26.5q4 16 16.5 27.5t20.5 23.5q10 18 21.5 42t21.5 49.5t16 50t8 40.5t-2 33t0 29q6 16 20.5 26.5t24.5 24.5q10 12 21.5 34.5t23 49.5t19.5 52.5 t10 45.5q2 12 -4 24.5t-2 27.5q4 14 18.5 29.5t26.5 31.5q16 25 28.5 58.5t30 61t46 43t77.5 1.5l-2 -4q31 10 54 10h780q78 0 119 -57q41 -53 18 -129l-283 -906q-18 -63 -77.5 -107t-126.5 -44h-893q-10 0 -20.5 -2t-18.5 -12q-12 -20 0 -56q16 -43 60 -75.5t87 -32.5h946 q29 0 57.5 21.5t37.5 47.5l309 987q4 16 5 29.5t-1 28.5q41 -14 61 -43q41 -53 19 -129l-283 -905q-18 -66 -77.5 -109t-127.5 -43h-946q-41 0 -79.5 14.5t-73.5 39t-61.5 58t-41.5 72.5q-25 68 -2 127zM500 961q-10 -39 26 -39h615q16 0 30.5 11t18.5 28l24 75 q4 16 -3 27.5t-23 11.5h-615q-16 0 -31.5 -11t-19.5 -28zM569 1190q-4 -16 3.5 -26.5t23.5 -10.5h614q16 0 30.5 10.5t21.5 26.5l22 78q4 16 -3 27.5t-24 11.5h-614q-16 0 -30.5 -11.5t-20.5 -27.5z" />
82
<glyph unicode="&#xf02e;" horiz-adv-x="1253" d="M0 84v1337q0 47 34 81t81 34h1024q47 0 80.5 -34t33.5 -81v-1337q0 -47 -33.5 -81t-80.5 -34t-80 33l-432 432l-432 -432q-33 -33 -80 -33t-81 34t-34 81z" />
83
<glyph unicode="&#xf02f;" d="M0 39v346q0 47 18.5 89t50 73t73.5 49t89 18h1383q47 0 89 -18t72.5 -49t49 -73t18.5 -89v-346q0 -39 -39 -39h-1765q-39 0 -39 39zM268 193q0 -16 11.5 -26.5t27.5 -10.5h1229q16 0 27.5 10t11.5 27v38q0 16 -11.5 27.5t-27.5 11.5h-1229q-16 0 -27.5 -11t-11.5 -28v-38 zM307 729v731q0 31 22.5 53.5t55.5 22.5h651v-383q0 -49 34 -83t81 -34h385v-307h-1229zM1151 1153v383l385 -383h-385z" />
84
<glyph unicode="&#xf030;" d="M0 115v1075q0 47 34 82t81 35h366l58 125q18 43 66 73.5t95 30.5h443q47 0 95 -30.5t67 -73.5l57 -125h367q47 0 80.5 -35t33.5 -82v-1075q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM442 653q0 -100 38 -187t102.5 -152.5t153 -103.5t186.5 -38t186 38 t152.5 103.5t102.5 152.5t38 187q0 98 -38 186.5t-102.5 153t-152.5 102.5t-186 38t-186.5 -38t-153 -102.5t-102.5 -152.5t-38 -187zM596 653q0 68 25.5 127.5t69.5 103.5t103.5 69.5t127.5 25.5t127 -25.5t103 -69.5t69.5 -103.5t25.5 -127.5t-25.5 -127t-69.5 -104 t-103.5 -70.5t-126.5 -25.5q-68 0 -127.5 25.5t-103.5 70.5t-69.5 104.5t-25.5 126.5z" />
85
<glyph unicode="&#xf031;" horiz-adv-x="1644" d="M0 0l2 80q10 4 29.5 8t48.5 8q92 18 108 33q16 10 50 68l233 614l277 725h73h53l11 -20l202 -482q33 -78 64 -151.5t59 -145.5q29 -72 52.5 -130t42.5 -103q12 -29 28.5 -70t36.5 -94q23 -66 64 -150q25 -49 34 -57q20 -18 68 -24q25 -2 49.5 -9.5t52.5 -17.5 q6 -37 7 -55v-10.5t-3 -16.5q-43 0 -90 2t-98 6q-53 4 -99 6t-87 2h-80t-53 -2l-199 -10l-57 -2q0 20 1 39.5t3 38.5l129 26q57 14 67 25q12 8 13 27q0 14 -7 30l-47 115l-90 227l-446 2q-12 -29 -37 -96t-66 -178q-23 -63 -22 -84q0 -27 16 -43q14 -10 40 -17.5t63 -13.5 q14 -4 84 -12v-59q0 -16 -2 -27q-35 0 -121 5t-224 16l-49 -9q-43 -8 -83 -11t-81 -3h-20zM549 655q135 -2 216 -4t105 0l29 2q-18 51 -40.5 111.5t-51.5 130.5t-51.5 122t-38.5 87z" />
86
<glyph unicode="&#xf032;" horiz-adv-x="1419" d="M0 0l2 94q27 6 68 12q39 6 69.5 13.5t55.5 17.5q8 14 13 26.5t7 24.5q6 33 8 81t2 112l-2 498q-2 39 -3 139t-5 266q-4 88 -12 109q-4 8 -13 10q-20 14 -69 16q-23 0 -115 13l-4 84l262 6l383 12h45q8 2 15.5 2h13.5t21.5 -1t39.5 -1h76q92 0 193 -27q18 -4 42.5 -13 t53.5 -26q63 -31 104 -75q45 -47 66 -105q10 -29 15 -58.5t5 -62.5q0 -72 -32 -129q-31 -57 -95 -104q-16 -12 -54 -30.5t-97 -47.5q178 -41 268 -145q92 -104 92 -236q0 -72 -28 -162q-23 -66 -72 -116q-66 -72 -141 -109q-78 -35 -205 -59q-70 -12 -199 -11l-199 5 q-63 2 -138 -2.5t-163 -10.5q-25 -2 -93 -4t-181 -6zM537 1419q0 -12 1 -31.5t3 -44.5q2 -51 4 -119.5t0 -158.5v-98v-78q25 -4 52.5 -6t57.5 -2q176 0 267 65q90 66 90 225q0 113 -86 187q-84 76 -258 76q-53 0 -131 -15zM545 457l4 -271q0 -16 10 -43q74 -33 141 -32 q131 0 220 41q82 39 122 112q18 37 28.5 82t10.5 100q0 113 -43 181q-59 94 -141 125q-80 33 -250 32q-37 0 -61.5 -3t-40.5 -7v-143v-174z" />
87
<glyph unicode="&#xf033;" horiz-adv-x="1054" d="M0 0l18 84q12 4 32 9t46 11q41 10 71 19.5t50 19.5q29 39 41 103l29 137l57 268l12 64q23 119 41.5 178t18.5 63l30 156l17 64l22 135l9 49v39q-45 23 -148 28q-14 0 -23.5 1.5t-17.5 1.5l21 104l325 -14q31 -2 49.5 -2h26.5q35 0 89 2t132 6q41 4 68.5 6t38.5 2 q-2 -10 -3 -19.5t-3 -19.5q-4 -10 -7.5 -22.5t-7.5 -28.5q-49 -16 -110 -31q-66 -16 -105 -31q-12 -33 -24 -88q-6 -25 -9.5 -45t-5.5 -37q-23 -100 -40 -175.5t-27 -129.5l-64 -311l-39 -158l-43 -235l-14 -45v-10.5t2 -16.5q35 -8 64.5 -13t58.5 -9q4 0 21.5 -2.5 l45.5 -6.5q-2 -18 -3 -32.5t-3 -26.5q-2 -6 -4 -16.5t-6 -22.5q-8 0 -14 -1t-10 -1q-18 -2 -28.5 -2h-14.5h-11.5t-17.5 4q-8 0 -45 4t-105 12l-202 2q-61 0 -181 -12q-39 -4 -63.5 -6t-36.5 -2z" />
88
<glyph unicode="&#xf034;" d="M0 1151q14 37 34.5 110.5t45.5 184.5q8 33 13 54.5t9 31.5h58q4 -6 6 -10t4 -9q29 -57 41 -71q16 -4 129 -4q35 0 66.5 1t60.5 1l20 2l113 2l213 -2h289l55 10q10 8 27 53q2 6 4 12.5t6 16.5l43 2h10.5t16.5 -2q2 -39 1 -97.5t1 -138.5v-100v-57q0 -14 -1 -27.5t-3 -23.5 q-20 -8 -37 -11.5t-31 -7.5q-27 51 -53 129q-29 82 -37 92q-12 14 -27 21q-10 4 -60 4h-138h-31t-35 -4q-6 -43 -6 -72l2 -151v-334l2 -359v-147q0 -72 10 -117q8 -4 21.5 -8t34.5 -8q4 0 21 -4t50 -13q27 -10 49 -18q4 -20 4 -33.5v-17.5v-11.5t-2 -17.5h-34q-47 0 -88 2 t-76 6t-95.5 6t-148.5 2q-16 0 -57 -4t-109 -10q-29 -2 -45 -3t-24 -1q0 10 -1.5 16.5t-1.5 10.5l-2 24v10q18 31 80 50q94 27 135 49q4 10 6.5 25.5t4.5 31.5q4 68 6 176.5t0 255.5l-4 428q-2 90 -2 142.5t-4 72.5q0 8 -7 15q-4 6 -12 6q-16 4 -63 4h-127q-90 0 -119 -21 q-41 -29 -121 -153q-23 -35 -35 -35q-23 12 -36 23.5t-19 19.5zM1383 1305.5q-5 13.5 14 33.5l184 185q14 12 33 12q14 0 31 -12l184 -185q18 -20 13 -33.5t-34 -13.5h-118v-1048h118q29 0 34 -13.5t-13 -31.5l-184 -187q-16 -12 -33 -12q-16 0 -31 12l-184 187 q-18 18 -13 31.5t31 13.5h121v1048h-121q-27 0 -32 13.5z" />
89
<glyph unicode="&#xf035;" horiz-adv-x="1536" d="M0 233q0 18 12 31l187 185q18 20 31.5 14t13.5 -33v-121h1048v121q0 27 13.5 33t33.5 -14l185 -185q12 -12 12 -31q0 -18 -12 -30l-185 -187q-20 -18 -33.5 -13t-13.5 34v119h-1048v-119q0 -29 -13.5 -34t-31.5 13l-187 187q-12 12 -12 30zM0 1233q14 29 33.5 87 t44.5 146q6 27 11 43.5t9 26.5h56q8 -12 10 -14q27 -47 37 -58q2 0 35.5 -1t77.5 -1h90.5h74.5h123l19 2h108h203h416l53 6q12 10 24 46l4.5 9l6.5 13h39h28v-188v-80v-45q0 -12 -1 -21.5t-3 -19.5q-33 -10 -63 -15q-25 37 -52 103q-27 59 -34 74q-12 10 -27 14q-6 2 -42 3 t-85 1h-103.5h-97.5h-28.5t-34.5 -2q-2 -18 -3 -32.5t-1 -24.5l4 -445l-2 -119q0 -61 12 -92q12 -6 53 -12q4 0 20.5 -4t45.5 -10q14 -4 26.5 -7.5t22.5 -7.5q2 -16 3 -25.5t1 -13.5t-1 -10t-1 -14h-33q-94 0 -157 6q-66 6 -236 6q-14 0 -53 -3t-105 -7q-27 -2 -43 -3 t-24 -1q0 16 -2 20v21v8q20 27 73 39q90 20 132 41q4 8 6 19t4 26q0 18 1 70.5t1 120t-1 142t-2 139t-2 107.5t-1 47q0 8 -6 13q-2 2 -13 6q-14 2 -59 2h-123q-20 0 -62 -1t-85 -2t-78 -4t-41 -7q-41 -25 -117 -123q-20 -29 -33 -29q-23 10 -35 19.5t-18 15.5z" />
90
<glyph unicode="&#xf036;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t55.5 22.5h1075q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1075 q-33 0 -55.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t55.5 22.5h1536q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1536q-33 0 -55.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t55.5 22.5h921q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-921q-33 0 -55.5 22.5t-22.5 52.5z" />
91
<glyph unicode="&#xf037;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM78 922v114q0 33 21.5 55.5t54.5 22.5h1536q33 0 55 -22.5t22 -55.5v-114q0 -33 -22.5 -54.5t-54.5 -21.5h-1536 q-33 0 -54.5 21.5t-21.5 54.5zM307 500v114q0 33 22.5 55.5t55.5 22.5h1075q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1075q-33 0 -55.5 22.5t-22.5 55.5zM385 1343v117q0 31 21.5 53.5t54.5 22.5h921q33 0 55.5 -22.5t22.5 -53.5v-117 q0 -31 -22.5 -53t-55.5 -22h-921q-33 0 -54.5 22.5t-21.5 52.5z" />
92
<glyph unicode="&#xf038;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM154 922v114q0 33 22.5 55.5t54.5 22.5h1536q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1536 q-33 0 -55 21.5t-22 54.5zM614 500v114q0 33 22.5 55.5t55.5 22.5h1075q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1075q-33 0 -55.5 22.5t-22.5 55.5zM768 1343v117q0 31 22.5 53.5t55.5 22.5h921q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-921q-33 0 -55.5 22.5t-22.5 52.5z" />
93
<glyph unicode="&#xf039;" d="M0 78v115q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1689 q-33 0 -55.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1689q-33 0 -55.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-117 q0 -31 -22.5 -53t-53.5 -22h-1689q-33 0 -55.5 22.5t-22.5 52.5z" />
94
<glyph unicode="&#xf03a;" d="M0 78v115q0 31 22.5 53t55.5 22h153q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-153q-33 0 -55.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t55.5 22.5h153q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-153 q-33 0 -55.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t55.5 22.5h153q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-153q-33 0 -55.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t55.5 22.5h153q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-153q-33 0 -55.5 22.5t-22.5 52.5zM461 78v115q0 31 22.5 53t55.5 22h1228q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-1228q-33 0 -55.5 22.5t-22.5 55.5zM461 500v114q0 33 22.5 55.5t55.5 22.5h1228q31 0 53.5 -22.5t22.5 -55.5v-114 q0 -33 -22.5 -55.5t-53.5 -22.5h-1228q-33 0 -55.5 22.5t-22.5 55.5zM461 922v114q0 33 22.5 55.5t55.5 22.5h1228q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1228q-33 0 -55.5 21.5t-22.5 54.5zM461 1343v117q0 31 22.5 53.5t55.5 22.5h1228 q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53t-53.5 -22h-1228q-33 0 -55.5 22.5t-22.5 52.5z" />
95
<glyph unicode="&#xf03b;" d="M0 756v75q0 39 39 39h213v154q0 31 16.5 37t38.5 -17l215 -215q16 -16 17 -36q0 -18 -17 -35l-215 -215q-23 -23 -39 -17t-16 39v152h-213q-39 0 -39 39zM614 39v1458q0 39 39 39h76q39 0 39 -39v-1458q0 -39 -39 -39h-76q-39 0 -39 39zM922 78v115q0 31 22.5 53t54.5 22 h768q31 0 53.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-53.5 -22.5h-768q-33 0 -55 22.5t-22 55.5zM922 500v114q0 33 22.5 55.5t54.5 22.5h615q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-615q-33 0 -55 22.5t-22 55.5zM922 922v114 q0 33 22.5 55.5t54.5 22.5h691q33 0 55 -22.5t22 -55.5v-114q0 -33 -22.5 -54.5t-54.5 -21.5h-691q-33 0 -55 21.5t-22 54.5zM922 1343v117q0 31 22.5 53.5t54.5 22.5h537q33 0 55.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53t-55.5 -22h-537q-33 0 -55 22.5t-22 52.5z" />
96
<glyph unicode="&#xf03c;" d="M0 78v115q0 31 22.5 53t53.5 22h768q33 0 55.5 -22.5t22.5 -52.5v-115q0 -33 -22.5 -55.5t-55.5 -22.5h-768q-31 0 -53.5 22.5t-22.5 55.5zM0 500v114q0 33 22.5 55.5t53.5 22.5h614q33 0 55.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-55.5 -22.5h-614 q-31 0 -53.5 22.5t-22.5 55.5zM0 922v114q0 33 22.5 55.5t53.5 22.5h692q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-692q-31 0 -53.5 21.5t-22.5 54.5zM0 1343v117q0 31 22.5 53.5t53.5 22.5h538q31 0 53.5 -22.5t22.5 -53.5v-117q0 -31 -22.5 -53 t-53.5 -22h-538q-31 0 -53.5 22.5t-22.5 52.5zM1075 39v1458q0 39 39 39h76q16 0 27.5 -11.5t11.5 -27.5v-1458q0 -16 -11.5 -27.5t-27.5 -11.5h-76q-39 0 -39 39zM1305 743q0 16 14 35l217 215q23 23 38 17t15 -39v-152h215q16 0 27.5 -11t11.5 -28v-75q0 -16 -11 -27.5 t-28 -11.5h-215v-154q0 -31 -15 -38t-38 15l-217 218q-14 18 -14 36z" />
97
<glyph unicode="&#xf03d;" d="M0 324v768q0 47 18.5 89t50 72.5t73.5 49t89 18.5h768q47 0 89 -18.5t73 -49t49.5 -72.5t18.5 -89v-240l483 471q23 23 55 23q13 -1 29 -7q47 -20 47 -69v-1127q0 -49 -47 -69q-16 -6 -29 -6q-33 0 -55 22l-483 471v-237q0 -47 -18.5 -89t-49.5 -74t-72.5 -50.5 t-89.5 -18.5h-768q-47 0 -89 18.5t-73.5 50.5t-50 73.5t-18.5 89.5z" />
98
<glyph unicode="&#xf03e;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h1536v1228h-1536v-1228zM307 307v105l277 360l188 -156l354 537l410 -424v-422h-1229zM307 1073q0 66 45 111t111 45q63 0 108 -45 t45 -111q0 -63 -45 -108t-108 -45q-66 0 -111 45t-45 108z" />
99
<glyph unicode="&#xf040;" horiz-adv-x="1536" d="M0 0l137 418l867 866l280 -280l-866 -867zM287 407.5q0 -12.5 10 -22.5q8 -8 22 -8q12 0 21 8l690 690q20 20 0 43q-10 10 -22.5 10t-20.5 -10l-690 -688q-10 -10 -10 -22.5zM1102 1382l119 119q35 35 84 35t84 -35l57 -55l55 -57q35 -35 35 -84.5t-35 -83.5l-119 -119z " />
100
<glyph unicode="&#xf041;" horiz-adv-x="1128" d="M0 1001q0 117 44 220.5t121 180.5t180.5 121t219.5 44q117 0 219.5 -44t179 -121t120.5 -180.5t44 -220.5q0 -84 -24.5 -159.5t-65.5 -143.5l-379 -661q-41 -68 -95 -68t-93 68l-381 663q-41 68 -65.5 143t-24.5 158zM285 1001q0 -57 21.5 -108t60.5 -89t89 -59.5 t109 -21.5q57 0 108.5 21.5t89.5 59.5t59.5 89t21.5 108t-21.5 108.5t-59.5 90.5t-89 60.5t-109 21.5q-59 0 -109 -21.5t-89 -60.5t-60.5 -90t-21.5 -109z" />
101
<glyph unicode="&#xf042;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44v1118q-117 0 -218.5 -44 t-177 -120t-119.5 -177t-44 -218z" />
102
<glyph unicode="&#xf043;" horiz-adv-x="1130" d="M0 535q0 86 23.5 161.5t66.5 141.5q20 33 69.5 99.5t108 154.5t113.5 193.5t90 217.5q10 35 37 51.5t57 12.5q31 4 57.5 -12.5t36.5 -51.5q33 -113 89.5 -218t115 -193t107.5 -154.5t69 -99.5q43 -66 66.5 -141.5t23.5 -161.5q0 -117 -44 -220.5t-120.5 -180.5t-180 -121 t-220.5 -44t-220 44t-180 121t-121 180.5t-44 220.5zM248 410q0 -59 41 -100.5t100 -41.5t100 41t41 101q0 43 -22 75q-6 8 -18.5 24.5t-26.5 39t-28.5 48.5t-22.5 54q-4 20 -23 17q-18 4 -24 -17q-8 -29 -21.5 -54.5t-28 -48t-27 -38.5t-18.5 -25q-23 -33 -22 -75z" />
103
<glyph unicode="&#xf044;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h1075q4 0 10.5 -1t10.5 -1l-191 -191h-905q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v445l193 192v-637q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5 h-1075q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM631 324l108 329l652 652l221 -222l-651 -651zM866 629q6 -8 17 -8q10 0 16 8l512 510q18 18 0 35q-18 16 -35 0l-510 -510q-18 -18 0 -35zM1501 1415l92 94q29 29 68 29t65 -29l46 -45l45 -45 q27 -29 27.5 -66.5t-27.5 -66.5l-95 -92z" />
104
<glyph unicode="&#xf045;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h836q-6 -31 -6 -63v-52q-164 -20 -310 -78h-520q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v111q16 10 31.5 21.5t32.5 27.5l129 127v-287q0 -63 -25 -118.5 t-67 -97.5t-97 -66.5t-119 -24.5h-1075q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM385 388.5v37.5q0 166 56.5 312.5t173 256t293.5 173t419 65.5v231q0 57 28.5 69.5t69.5 -28.5l392 -391q27 -25 26 -65q0 -39 -26 -64l-392 -391q-41 -41 -69.5 -28.5 t-28.5 69.5v260q-207 0 -364.5 -43t-266 -116.5t-170 -174t-77.5 -215.5q-4 -27 -31 -27q-25 0 -29 27q-4 23 -4 42.5z" />
105
<glyph unicode="&#xf046;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h1075q27 0 52 -6l-187 -187h-940q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v326l193 192v-518q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5h-1075 q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM385 966.5q0 32.5 23 55.5l98 98q23 23 55.5 23t54.5 -23l340 -340l654 656q23 23 56.5 22.5t55.5 -22.5l99 -99q23 -23 22.5 -55.5t-22.5 -54.5l-711 -711l-98 -98q-23 -23 -55.5 -23t-55.5 23l-100 98l-393 395 q-23 23 -23 55.5z" />
106
<glyph unicode="&#xf047;" horiz-adv-x="1597" d="M0 768q0 25 18 43l256 256q27 27 45.5 19.5t18.5 -46.5v-170h360v359h-172q-37 0 -45 18.5t19 44.5l256 256q18 18 43 19q25 0 43 -19l256 -256q27 -27 19.5 -45t-46.5 -18h-172v-359h361v170q0 39 18 46.5t45 -19.5l256 -256q18 -18 18 -43t-18 -43l-256 -256 q-27 -27 -45 -19.5t-18 46.5v176h-361v-365h172q39 0 47 -18.5t-20 -44.5l-256 -256q-18 -18 -43 -19q-25 0 -43 19l-256 256q-27 27 -20 45t46 18h172v365h-360v-176q0 -39 -18.5 -46.5t-45.5 19.5l-256 256q-18 18 -18 43z" />
107
<glyph unicode="&#xf048;" horiz-adv-x="1075" d="M0 76q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5v-1382zM307.5 768q-0.5 27 16.5 43l653 707q14 18 41 18q6 0 22 -4q35 -18 35 -59v-1412q0 -41 -35 -57q-39 -14 -63 14l-653 705 q-16 18 -16.5 45z" />
108
<glyph unicode="&#xf049;" d="M0 76q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5v-1382zM307.5 768q-0.5 27 16.5 43l653 707q14 18 41 18q6 0 22 -4q35 -18 35 -59v-1412q0 -41 -35 -57q-39 -14 -63 14l-653 705 q-16 18 -16.5 45zM1075.5 768q-0.5 27 16.5 43l653 707q14 18 41 18q6 0 22 -4q35 -18 35 -59v-1412q0 -41 -35 -57q-39 -14 -63 14l-653 705q-16 18 -16.5 45z" />
109
<glyph unicode="&#xf04a;" horiz-adv-x="1536" d="M0 767q0 26 16 44l654 707q14 18 41 18q10 0 22 -6q35 -14 35 -57v-1412q0 -41 -35 -57q-37 -16 -63 14l-654 705q-16 18 -16 44zM768 767q0 26 16 44l654 707q14 18 41 18q10 0 22 -6q35 -14 35 -57v-1412q0 -41 -35 -57q-37 -16 -63 14l-654 705q-16 18 -16 44z" />
110
<glyph unicode="&#xf04b;" horiz-adv-x="1349" d="M0 70v1396q0 39 35 60q37 23 69 0l1211 -697q35 -25 35 -61q0 -37 -35 -61l-1211 -697q-16 -10 -34 -10t-35 10q-35 20 -35 60z" />
111
<glyph unicode="&#xf04c;" horiz-adv-x="1536" d="M0 70v1396q0 29 20.5 49.5t49.5 20.5h489q29 0 49.5 -20.5t20.5 -49.5v-1396q0 -29 -20.5 -49.5t-49.5 -20.5h-489q-29 0 -49.5 20.5t-20.5 49.5zM907 70v1396q0 29 20.5 49.5t49.5 20.5h489q29 0 49.5 -20.5t20.5 -49.5v-1396q0 -29 -20.5 -49.5t-49.5 -20.5h-489 q-29 0 -49.5 20.5t-20.5 49.5z" />
112
<glyph unicode="&#xf04d;" horiz-adv-x="1536" d="M0 70v1396q0 29 20.5 49.5t49.5 20.5h1396q29 0 49.5 -20.5t20.5 -49.5v-1396q0 -29 -20.5 -49.5t-49.5 -20.5h-1396q-29 0 -49.5 20.5t-20.5 49.5z" />
113
<glyph unicode="&#xf04e;" horiz-adv-x="1536" d="M0 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM768 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57z" />
114
<glyph unicode="&#xf050;" d="M0 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM768 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM1536 76 q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5v-1382z" />
115
<glyph unicode="&#xf051;" horiz-adv-x="1075" d="M0 61v1414q0 39 35 57q39 14 63 -14l654 -705q16 -18 16 -45t-16 -45l-654 -705q-16 -18 -41 -18q-6 0 -22 4q-35 16 -35 57zM768 76q0 -31 22.5 -53.5t53.5 -22.5h153q33 0 55.5 22.5t22.5 53.5v1382q0 33 -22.5 55.5t-55.5 22.5h-153q-31 0 -53.5 -22.5t-22.5 -55.5 v-1382z" />
116
<glyph unicode="&#xf052;" horiz-adv-x="1536" d="M0 70v198q0 29 20.5 49.5t49.5 20.5h1396q29 0 49.5 -20.5t20.5 -49.5v-198q0 -29 -20.5 -49.5t-49.5 -20.5h-1396q-29 0 -49.5 20.5t-20.5 49.5zM6 594q-18 43 14 76l699 698q20 20 49 20.5t49 -20.5l699 -698q33 -33 14 -76q-16 -43 -64 -43h-1396q-47 0 -64 43z" />
117
<glyph unicode="&#xf053;" horiz-adv-x="964" d="M0 765q0 38 29 66l671 674q29 29 68 29t68 -29l100 -100q29 -29 29 -68t-29 -67l-508 -510l508 -500q29 -29 29 -66.5t-29 -66.5l-100 -102q-29 -29 -68 -29t-68 29l-671 673q-29 29 -29 67z" />
118
<glyph unicode="&#xf054;" horiz-adv-x="964" d="M0 194.5q0 38.5 29 67.5l508 508l-508 502q-29 29 -29 66.5t29 66.5l100 102q29 29 68 29t67 -29l672 -673q29 -29 29 -68t-29 -68l-672 -671q-29 -29 -67.5 -29t-67.5 29l-100 100q-29 29 -29 67.5z" />
119
<glyph unicode="&#xf055;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM338 688q0 -33 33 -33h313v-344q0 -33 33 -32h164q33 0 32 32v344h314 q12 0 22.5 9.5t10.5 23.5v158q0 14 -10.5 23.5t-22.5 9.5h-314v346q0 33 -32 32h-164q-33 0 -33 -32v-346h-313q-33 0 -33 -33v-158z" />
120
<glyph unicode="&#xf056;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM338 688q0 -33 33 -33h856q12 0 22.5 9.5t10.5 23.5v158q0 14 -10.5 23.5 t-22.5 9.5h-856q-33 0 -33 -33v-158z" />
121
<glyph unicode="&#xf057;" horiz-adv-x="1597" d="M0 770q0 154 58.5 301.5t174.5 263.5q117 117 264.5 175.5t301 58.5t301 -58.5t264.5 -175.5t175 -264t58 -301t-58 -301t-175 -264t-264.5 -175.5t-301 -58.5t-301 58.5t-264.5 175.5t-175 264t-58 301zM385 505q0 -13 10 -24l115 -116q10 -10 23.5 -10.5t23.5 10.5 l244 243l219 -221q10 -10 23.5 -10t23.5 10l113 113q23 23 0 47l-222 219l246 246q23 23 0 47l-117 115q-25 25 -47 0l-243 -244l-222 221q-10 10 -23 10t-24 -10l-110 -113q-25 -23 0 -47l219 -219l-242 -244q-10 -10 -10 -23z" />
122
<glyph unicode="&#xf058;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 718q0 -20 14 -34l319 -319q14 -14 38 -24.5t44 -10.5h56q20 0 43.5 10 t38.5 25l550 550q14 14 14.5 34t-14.5 34l-104 107q-16 14 -35.5 14t-34.5 -14l-452 -453q-14 -14 -33.5 -14t-34.5 14l-221 221q-14 14 -33.5 14t-36.5 -14l-104 -106q-14 -14 -14 -34z" />
123
<glyph unicode="&#xf059;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM532 1100l95 -115q4 -8 20 -12q12 0 23 6l10 8t27.5 17.5t39 16.5t46.5 7 q41 0 69.5 -22.5t28.5 -57.5q0 -37 -24.5 -64.5t-61.5 -60.5q-23 -18 -46.5 -40.5t-43 -51.5t-31.5 -63.5t-12 -79.5v-64q0 -12 9 -21t21 -9h164q12 0 20.5 9t8.5 21v51q0 39 25.5 66.5t62.5 60.5q25 20 49.5 46t46 57t34.5 69.5t13 90.5q0 68 -27.5 121t-73.5 87.5 t-103.5 53t-114.5 18.5q-63 0 -113.5 -16.5t-85.5 -35.5t-53 -35.5t-20 -18.5q-16 -16 -3 -39zM672 252q0 -12 9 -21.5t21 -9.5h164q12 0 20.5 9.5t8.5 21.5v156q0 12 -8 21t-21 9h-164q-12 0 -21 -9t-9 -21v-156z" />
124
<glyph unicode="&#xf05a;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM573 858q0 -29 29 -29h86v-409h-78q-12 0 -21 -8.5t-9 -20.5v-139q0 -12 9 -21.5 t21 -9.5h402q12 0 20 9.5t8 21.5v139q0 29 -28 29h-78v577q0 12 -8 21.5t-21 9.5h-303q-12 0 -20.5 -9t-8.5 -22v-139zM686 1151q0 -12 9.5 -21.5t21.5 -9.5h188q12 0 20.5 9.5t8.5 21.5v166q0 29 -29 29h-188q-12 0 -21.5 -8.5t-9.5 -20.5v-166z" />
125
<glyph unicode="&#xf05b;" horiz-adv-x="1536" d="M0 692v154q0 16 11.5 26.5t27.5 10.5h164q18 84 59 158.5t99.5 133t133 99.5t158.5 59v164q0 39 39 39h154q16 0 26.5 -11.5t10.5 -27.5v-164q84 -18 158.5 -59t133 -99.5t99.5 -133t59 -158.5h164q16 0 27.5 -10.5t11.5 -26.5v-154q0 -39 -39 -39h-164 q-18 -84 -59 -158.5t-99.5 -133t-133 -99.5t-158.5 -59v-164q0 -16 -10.5 -27.5t-26.5 -11.5h-154q-39 0 -39 39v164q-84 18 -158.5 59t-133 99.5t-99.5 133t-59 158.5h-164q-39 0 -39 39zM365 653q29 -106 105.5 -183t182.5 -105v174q0 16 11.5 26t27.5 10h154 q16 0 26.5 -10t10.5 -26v-174q106 29 183 105.5t105 182.5h-172q-39 0 -38 39v154q0 16 11 26.5t27 10.5h172q-29 106 -105.5 183t-182.5 105v-172q0 -16 -10.5 -27t-26.5 -11h-154q-39 0 -39 38v172q-106 -29 -183 -105.5t-105 -182.5h174q16 0 26 -10.5t10 -26.5v-154 q0 -16 -10 -27.5t-26 -11.5h-174z" />
126
<glyph unicode="&#xf05c;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM451 573.5q0 16.5 12 28.5l166 166l-166 166q-12 12 -12 28.5t12 28.5l112 113q29 29 58 0l166 -166l166 166q29 29 57 0l113 -113q29 -29 0 -57l-166 -166l166 -166 q29 -29 0 -57l-113 -113q-12 -12 -28.5 -12t-28.5 12l-166 166l-166 -166q-12 -12 -28.5 -12t-29.5 12l-112 113q-12 12 -12 28.5z" />
127
<glyph unicode="&#xf05d;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -117 44 -218t119.5 -177t177 -120t218.5 -44t218 44t177 120t120 177 t44 218t-44 218t-120 177t-177.5 120t-217.5 44q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM332 717.5q0 17.5 10 27.5l115 115q10 10 27.5 10t27.5 -10l178 -180q29 -25 58 0l337 340q10 10 27.5 10t28.5 -10l114 -115q10 -10 10.5 -27.5t-10.5 -27.5l-409 -410 q-12 -12 -32.5 -20t-37.5 -8h-114q-16 0 -37 8t-33 20l-250 250q-10 10 -10 27.5z" />
128
<glyph unicode="&#xf05e;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -84 23.5 -160t66.5 -141l770 770q-66 43 -141.5 66.5t-159.5 23.5 q-117 0 -218.5 -44t-177 -120t-119.5 -177t-44 -218zM498 297q66 -41 141.5 -64.5t159.5 -23.5q117 0 218 44t177 120t120 177t44 218q0 84 -23.5 160t-64.5 141z" />
129
<glyph unicode="&#xf060;" horiz-adv-x="1536" d="M0 768q0 39 29 68l671 673q29 29 68 29t68 -29l100 -100q29 -29 29 -67.5t-29 -67.5l-338 -338h842q41 0 68.5 -27.5t27.5 -68.5v-144q0 -39 -27.5 -66.5t-66.5 -27.5h-844l338 -338q29 -29 29 -67.5t-29 -67.5l-100 -100q-29 -29 -68 -29t-68 29l-671 671q-29 29 -29 68 z" />
130
<glyph unicode="&#xf061;" horiz-adv-x="1536" d="M0 698v144q0 39 27.5 66.5t66.5 27.5h844l-338 338q-29 29 -29 67.5t29 67.5l100 100q29 29 68 29t68 -29l671 -673q29 -29 29 -67t-29 -67l-671 -673q-29 -29 -68 -29t-68 29l-100 100q-29 29 -29 68t29 67l338 338h-844q-39 0 -66.5 27.5t-27.5 68.5z" />
131
<glyph unicode="&#xf062;" horiz-adv-x="1536" d="M-1 768q-1 39 28 68l673 671q29 29 68 29t68 -29l671 -671q29 -29 29 -68t-29 -68l-100 -100q-29 -29 -66.5 -29t-66.5 29l-340 338v-844q0 -39 -27.5 -66.5t-66.5 -27.5h-144q-41 0 -67.5 27.5t-26.5 66.5v844l-338 -338q-29 -29 -67.5 -29t-67.5 29l-100 100 q-29 29 -30 68z" />
132
<glyph unicode="&#xf063;" horiz-adv-x="1536" d="M0 766q0 39 29 68l100 100q29 29 68 29t67 -29l338 -338v844q0 39 27.5 66.5t66.5 27.5h144q41 0 67.5 -27.5t26.5 -66.5v-844l340 338q29 29 66.5 29t66.5 -29l102 -100q29 -29 29 -68t-29 -68l-673 -671q-29 -29 -68 -29t-68 29l-671 671q-29 29 -29 68z" />
133
<glyph unicode="&#xf064;" d="M0 135q0 209 71.5 393.5t218 322.5t371 219t531.5 83v293q0 72 36 87t89 -36l491 -493q35 -33 35 -82q0 -47 -35 -82l-491 -494q-51 -51 -88 -35.5t-37 86.5v330q-262 -2 -461 -56.5t-336 -147.5t-215 -219t-98 -271q-4 -33 -37 -33h-2q-33 0 -37 33q-6 51 -6 102z" />
134
<glyph unicode="&#xf065;" horiz-adv-x="1536" d="M0 86v522q0 53 26.5 64.5t65.5 -25.5l166 -166l274 275q12 12 31 12t33 -12l160 -160q12 -14 12 -32.5t-12 -31.5l-275 -274l166 -166q39 -39 27 -65.5t-66 -26.5h-520q-37 0 -61 25q-27 27 -27 61zM768 972.5q0 18.5 12 31.5l275 274l-166 166q-39 39 -27 65.5t66 26.5 h520q37 0 61 -25q27 -27 27 -61v-522q0 -53 -26.5 -64.5t-65.5 25.5l-166 166l-274 -273q-12 -14 -31 -14t-33 14l-160 158q-12 14 -12 32.5z" />
135
<glyph unicode="&#xf066;" horiz-adv-x="1536" d="M0 202.5q0 18.5 12 33.5l275 272l-166 166q-39 39 -27 65.5t66 26.5h520q38 0 61 -25q27 -27 27 -61v-522q0 -53 -26.5 -64.5t-65.5 27.5l-166 166l-274 -275q-12 -14 -31 -14t-33 14l-160 160q-12 12 -12 30.5zM768 854v522q0 53 26.5 64.5t65.5 -27.5l166 -166l274 275 q12 14 31 14t33 -14l160 -160q12 -12 12 -30.5t-12 -33.5l-275 -272l166 -166q39 -39 27 -65.5t-66 -26.5h-520q-41 0 -61 25q-27 27 -27 61z" />
136
<glyph unicode="&#xf067;" horiz-adv-x="1536" d="M0 696v144q0 39 27.5 66.5t66.5 27.5h508v506q0 41 26.5 68.5t67.5 27.5h144q39 0 66.5 -27.5t27.5 -66.5v-508h508q39 0 66.5 -27.5t27.5 -66.5v-144q0 -39 -27.5 -66.5t-66.5 -27.5h-508v-506q0 -41 -27.5 -68.5t-66.5 -27.5h-144q-39 0 -66.5 27.5t-27.5 66.5v508 h-506q-41 0 -68.5 26.5t-27.5 67.5z" />
137
<glyph unicode="&#xf068;" horiz-adv-x="1536" d="M0 696v144q0 39 27.5 66.5t66.5 27.5h1348q39 0 66.5 -27.5t27.5 -66.5v-144q0 -39 -27.5 -66.5t-66.5 -27.5h-1346q-41 0 -68.5 26.5t-27.5 67.5z" />
138
<glyph unicode="&#xf069;" horiz-adv-x="1427" d="M2 1018q-10 37 10 72l72 124q20 35 58 44.5t73 -9.5l332 -192v383q0 41 27.5 68.5t68.5 27.5h141q41 0 69 -27.5t28 -66.5v-385l331 192q35 18 73 9t58 -44l70 -124q20 -35 11 -72t-44 -57l-333 -193l333 -193q35 -20 44.5 -57t-9.5 -72l-72 -124q-20 -35 -58 -44.5 t-73 9.5l-331 192v-383q0 -41 -28 -68.5t-69 -27.5h-141q-41 0 -68.5 27.5t-27.5 66.5v385l-332 -192q-35 -20 -73 -10t-58 45l-72 124q-18 35 -9 72t44 57l334 193l-334 193q-35 20 -45 57z" />
139
<glyph unicode="&#xf06a;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM672 1274l14 -739q4 -29 31 -29h162q12 0 21 8t9 21l17 739q0 10 -8 22q-8 8 -23 9 h-193q-14 0 -22 -9q-8 -12 -8 -22zM680 236q0 -12 8 -21.5t21 -9.5h180q12 0 21.5 9t9.5 22v174q0 12 -9.5 21t-21.5 9h-180q-12 0 -20.5 -9t-8.5 -21v-174z" />
140
<glyph unicode="&#xf06b;" horiz-adv-x="1880" d="M0 588v391q0 16 11.5 27.5t27.5 11.5h539q-57 0 -107.5 21.5t-87.5 58.5t-58.5 87t-21.5 107t21.5 107.5t58.5 87.5t87 58.5t108 21.5q61 0 115.5 -24.5t88.5 -69.5l158 -203l158 203q35 45 89 69.5t116 24.5q57 0 107 -21.5t87 -58.5t58.5 -87t21.5 -108 q0 -57 -21.5 -107t-58.5 -87t-87 -58.5t-107 -21.5h538q16 0 27.5 -11.5t11.5 -27.5v-391q0 -16 -11 -27.5t-28 -11.5h-117v-432q0 -47 -34.5 -82t-83.5 -35h-1332q-49 0 -82.5 35t-33.5 82v432h-119q-16 0 -27.5 11t-11.5 28zM461 1292q0 -49 33.5 -82.5t83.5 -33.5h237 l-151 196q-10 10 -32 24.5t-54 14.5q-49 0 -83 -35t-34 -84zM743 221q0 -33 24 -56.5t56 -23.5h234q33 0 56.5 23.5t23.5 56.5v797h-394v-797zM1065 1176h238q49 0 82.5 33.5t33.5 82.5t-33.5 84t-82.5 35q-33 0 -54.5 -14.5t-31.5 -24.5z" />
141
<glyph unicode="&#xf06c;" horiz-adv-x="1916" d="M6 135q20 53 56 89t71 65q29 23 50.5 43t27.5 43q2 6 0 12t-10 25q-6 12 -11.5 27.5t-9.5 35.5q-25 160 13 295t120 242.5t195 185.5t235 121q82 29 179.5 34t203.5 7q61 0 127 2t127.5 11t113.5 28.5t85 54.5q20 20 38.5 41t38 36t43 24.5t58.5 9.5q23 0 42.5 -11.5 t29.5 -31.5q66 -133 83 -281.5t-18 -322.5q-90 -487 -579 -740q-231 -123 -467 -123q-154 0 -307 54q-23 8 -45.5 20t-44.5 25q-29 16 -57.5 30.5t-49.5 14.5q-10 -2 -23.5 -17.5t-27.5 -35t-26.5 -41t-20.5 -33.5q-14 -23 -26.5 -41.5t-22.5 -32.5q-25 -31 -64 -31h-4 q-29 2 -49.5 12.5t-33.5 24.5t-20.5 28.5t-9.5 22.5q-27 37 -10 78zM401 507.5q2 -32.5 29 -54.5q20 -18 51 -19q37 0 62 27q90 102 181 175t191.5 117t212 62t242.5 14q33 -4 57.5 19.5t26.5 56.5q2 35 -20.5 58.5t-57.5 25.5q-147 6 -277 -16.5t-247 -73.5t-223.5 -133 t-206.5 -199q-23 -27 -21 -59.5z" />
142
<glyph unicode="&#xf06d;" horiz-adv-x="1445" d="M0 442q0 123 63.5 254t174.5 238q10 16 33.5 13t31.5 -21q4 -16 0 -29q-8 -35 -14 -84t-4 -101.5t13 -101.5t38 -84q31 -37 78 -49q-49 154 -40 293t49 259t101.5 217t118.5 167t98 106.5t43 39.5q25 18 47 0q10 -8 13.5 -21.5t-0.5 -24.5q0 -2 -15.5 -42.5t-21.5 -102 t7 -134.5t71 -136q37 -43 67.5 -85t52 -93.5t34 -120t12.5 -162.5q0 -33 -31 -39q-12 -2 -24.5 4t-16.5 19q-14 31 -42 49t-63 18q-47 0 -79.5 -33.5t-32.5 -81.5q0 -121 156 -120q98 0 153 63q37 43 53.5 101.5t20.5 114.5t2 102.5t-4 62.5q-6 12 0 29q8 18 31.5 21 t35.5 -13q111 -106 173.5 -237.5t62.5 -254.5q0 -109 -51.5 -195.5t-145.5 -148t-228 -95.5t-298 -34t-298 34t-228.5 95.5t-145.5 148.5t-51 195z" />
143
<glyph unicode="&#xf06e;" d="M0 722q0 44 25 83q78 125 178 224t216 168t242.5 104.5t260.5 35.5q135 0 262 -35.5t241.5 -103.5t215 -167t180.5 -226q23 -39 22.5 -83t-22.5 -81q-80 -127 -180.5 -226.5t-215 -167t-241.5 -103t-262 -35.5q-133 0 -260 35.5t-243 104t-216.5 168t-177.5 224.5 q-25 37 -25 81zM154 723q66 -104 149.5 -190.5t182 -145.5t208 -92t228.5 -33t228.5 33t207.5 92t182 145t150 191q-80 129 -187.5 226.5t-236.5 156.5q51 -59 79.5 -133t28.5 -160q0 -96 -35.5 -179t-99 -146.5t-147.5 -99.5t-179 -36q-96 0 -179 36t-146.5 99.5t-99 146.5 t-35.5 179q0 78 25.5 148.5t68.5 128.5q-117 -59 -217.5 -152.5t-175.5 -214.5zM614 813q0 -23 16.5 -40t41.5 -17t41 17.5t16 39.5q0 78 53.5 131t130.5 53q25 0 41.5 17.5t16.5 40.5q0 25 -16.5 41t-41.5 16q-61 0 -116.5 -23.5t-95 -63.5t-63.5 -95.5t-24 -116.5z" />
144
<glyph unicode="&#xf070;" d="M0 767q0 44 25 83q78 125 178 224.5t216 168t242.5 104t260.5 35.5q53 0 105 -7t103 -17l89 158q8 14 24 18q12 6 29 -2l133 -76q14 -8 19.5 -23.5t-3.5 -29.5l-774 -1383q-6 -14 -22 -18q-4 -2 -11 -2q-6 0 -18 4l-135 76q-14 8 -18.5 23.5t3.5 29.5l66 115 q-145 68 -269 178.5t-218 259.5q-25 37 -25 81zM154 768q82 -131 191.5 -229.5t240.5 -157.5l57 104q-86 63 -138 159.5t-52 213.5q0 78 25.5 148.5t68.5 130.5q-117 -61 -217.5 -153.5t-175.5 -215.5zM614 858q0 -23 16.5 -40t41.5 -17t41 17.5t16 39.5q0 78 53.5 131 t130.5 53q25 0 41.5 17.5t16.5 40.5q0 25 -16.5 41t-41.5 16q-61 0 -116.5 -23.5t-95 -63.5t-63.5 -95.5t-24 -116.5zM928 154l88 159q209 25 382 145t292 310q-109 170 -263 283l76 137q92 -66 172 -150t146 -188q23 -39 22.5 -83t-22.5 -81q-160 -254 -392.5 -392 t-500.5 -140zM1081 430l285 510q4 -20 6 -39.5t2 -42.5q0 -74 -21.5 -140.5t-60.5 -121.5t-93 -98t-118 -68z" />
145
<glyph unicode="&#xf071;" horiz-adv-x="1775" d="M0 92q0 20 6 39t17 35l768 1331q16 27 39.5 48.5t56.5 21.5t56.5 -21.5t39.5 -48.5l770 -1331q10 -16 16.5 -34.5t6.5 -39.5q0 -49 -38 -70.5t-81 -21.5h-1538q-43 0 -81 21.5t-38 70.5zM770 1114l12 -633q0 -14 10.5 -24.5t24.5 -10.5h139q14 0 24.5 10.5t10.5 24.5 l15 633q0 14 -10.5 24.5t-24.5 10.5h-166q-16 0 -25.5 -10.5t-9.5 -24.5zM776 168q0 -16 10.5 -25.5t24.5 -9.5h154q35 0 34 35v147q0 16 -9 26.5t-25 10.5h-154q-14 0 -24.5 -10t-10.5 -27v-147z" />
146
<glyph unicode="&#xf072;" horiz-adv-x="1597" d="M0 541v4q0 31 23 57l30 29q20 25 56 24q8 0 10 -2l280 -32q39 63 93.5 134.5t125.5 151.5l-583 457q-31 25 -31 59v4q0 31 23 58l57 57q27 23 57 23h13.5t13.5 -4l803 -293l151 149q70 70 161 110t167 40q72 0 109 -37q20 -18 28 -46t8 -63q0 -76 -38.5 -167t-110.5 -160 l-150 -152l293 -803q6 -12 6 -26q0 -33 -24 -58l-58 -57q-23 -25 -57 -25h-4q-35 4 -59 31l-455 586q-82 -72 -153.5 -126t-135.5 -93l35 -281v-10q0 -33 -22 -55l-31 -31q-23 -23 -58 -23h-4q-39 4 -59 31l-205 272l-274 207q-29 25 -31 60z" />
147
<glyph unicode="&#xf073;" horiz-adv-x="1566" d="M0 117v1147q0 47 35 81.5t82 34.5h39v13q0 31 10 62.5t32.5 56t59.5 40t90 15.5t90 -15.5t59.5 -40t33 -56.5t10.5 -62v-13h49v13q0 31 10 62.5t32.5 56t59.5 40t90 15.5t90 -15.5t60.5 -40t34 -56.5t10.5 -62v-13h49v13q0 31 10.5 62.5t33 56t59 40t90.5 15.5 q53 0 90 -15.5t59.5 -40t32.5 -56.5t10 -62v-13h39q47 0 82 -34.5t35 -81.5v-1147q0 -47 -35 -82t-82 -35h-1333q-47 0 -82 35t-35 82zM158 158h282v250h-282v-250zM158 446h282v252h-282v-252zM158 737h282v252h-282v-252zM272 1165q0 -57 76 -57t76 57v228q0 57 -76 57 t-76 -57v-228zM479 158h285v250h-285v-250zM479 446h285v252h-285v-252zM479 737h285v252h-285v-252zM709 1165q0 -31 16 -44t57 -13t58.5 13.5t17.5 43.5v228q0 29 -17.5 43t-58.5 14t-57 -14.5t-16 -42.5v-228zM803 158h284v250h-284v-250zM803 446h284v252h-284v-252z M803 737h284v252h-284v-252zM1126 158h283v250h-283v-250zM1126 446h283v252h-283v-252zM1126 737h283v252h-283v-252zM1143 1165q0 -57 76 -57t75 57v228q0 57 -75 57q-76 0 -76 -57v-228z" />
148
<glyph unicode="&#xf074;" d="M0 252v154q0 16 11.5 27t27.5 11h219q51 0 99.5 31t93.5 83t90 119.5t90 139.5q55 88 114.5 175t127 156t147.5 110.5t180 41.5h203v185q0 41 24.5 49t59.5 -21l334 -278q23 -18 22 -45q0 -29 -22 -47l-334 -277q-35 -29 -59.5 -20.5t-24.5 49.5v174h-203 q-53 0 -100 -31.5t-93 -84t-91.5 -120t-90.5 -139.5q-55 -88 -113.5 -174t-126 -154.5t-148.5 -110.5t-179 -42h-219q-16 0 -27.5 11.5t-11.5 27.5zM0 1108v154q0 39 39 38h219q68 0 127 -20t111.5 -56t97.5 -84t88 -104q-61 -90 -117 -178q-4 -8 -9 -14t-9 -15 q-70 102 -139.5 172t-149.5 70h-219q-16 0 -27.5 10.5t-11.5 26.5zM778 481q29 41 56.5 85t56.5 87q4 10 10 17.5t10 17.5q70 -102 139.5 -170.5t149.5 -68.5h203v190q0 41 24.5 49t59.5 -20l334 -277q23 -18 22 -47q0 -27 -22 -45l-334 -279q-35 -29 -59.5 -20.5 t-24.5 49.5v168h-203q-68 0 -127 20.5t-110.5 56.5t-97.5 84t-87 103z" />
149
<glyph unicode="&#xf075;" horiz-adv-x="1916" d="M0 866q0 145 76 272.5t206 222.5t303.5 150.5t372.5 55.5t373 -55.5t304 -150.5t206 -222t76 -273q0 -145 -76 -272t-206 -222.5t-304 -150.5t-373 -55q-92 0 -180 12q-176 -139 -411 -192q-25 -4 -50.5 -8.5t-54.5 -8.5q-16 -2 -27.5 6.5t-15.5 24.5t5 26.5t20 20.5 q23 23 43 44.5t36.5 51t30 69.5t23.5 97q-174 98 -275.5 241.5t-101.5 315.5z" />
150
<glyph unicode="&#xf076;" horiz-adv-x="1566" d="M0 621v288q0 16 11.5 27.5t27.5 11.5h391q16 0 28.5 -11t12.5 -28v-288q0 -29 22.5 -60t63.5 -58.5t98.5 -45t128.5 -17.5q70 0 128.5 17.5t99.5 45t63.5 58.5t22.5 60v288q0 39 39 39h391q16 0 27.5 -11t11.5 -28v-288q0 -135 -61.5 -254t-168 -207t-249 -139.5 t-304.5 -51.5q-164 0 -306 51.5t-248.5 139.5t-168 206.5t-61.5 254.5zM0 1106v391q0 16 11.5 27.5t27.5 11.5h391q16 0 28.5 -11.5t12.5 -27.5v-391q0 -16 -12.5 -27.5t-28.5 -11.5h-391q-16 0 -27.5 11.5t-11.5 27.5zM1098 1106v391q0 16 11 27.5t28 11.5h391 q16 0 27.5 -11.5t11.5 -27.5v-391q0 -16 -11.5 -27.5t-27.5 -11.5h-391q-39 0 -39 39z" />
151
<glyph unicode="&#xf077;" horiz-adv-x="1536" d="M-1 355.5q-1 37.5 28 66.5l673 674q29 29 68 28.5t68 -28.5l671 -674q29 -29 29 -67t-29 -66l-100 -103q-29 -29 -68 -28.5t-67 28.5l-508 510l-500 -510q-29 -29 -67.5 -28.5t-67.5 28.5l-100 103q-29 29 -30 66.5z" />
152
<glyph unicode="&#xf078;" horiz-adv-x="1536" d="M0 918.5q0 37.5 29 66.5l100 102q29 29 68 29t67 -29l508 -509l500 509q29 29 67.5 29t67.5 -29l100 -102q29 -29 30 -66.5t-28 -66.5l-673 -674q-29 -29 -68 -28.5t-68 28.5l-671 674q-29 29 -29 66.5z" />
153
<glyph unicode="&#xf079;" horiz-adv-x="1916" d="M2.5 1038.5q-12.5 30.5 28.5 75.5l385 424q25 29 63 29q39 0 64 -29l385 -424q41 -45 28.5 -75.5t-67.5 -30.5h-250v-680h174q6 -10 12 -19.5t17 -19.5l252 -281h-695q-33 0 -56.5 23.5t-23.5 56.5v920h-249q-55 0 -67.5 30.5zM823 1526h695q33 0 56 -22.5t23 -57.5v-918 h250q55 0 67.5 -30.5t-28.5 -75.5l-385 -424q-25 -29 -63 -29q-39 0 -64 29l-385 424q-41 45 -28.5 75.5t67.5 30.5h250v678h-174q-6 10 -12.5 20.5t-14.5 20.5z" />
154
<glyph unicode="&#xf07a;" d="M0 1421v76q0 39 39 39h231q16 0 38 -4t36 -8q6 -4 14.5 -14.5t15.5 -23.5t12 -26.5t7 -21.5l27 -125h1347q35 0 58 -27t16 -59l-108 -578q-6 -25 -26.5 -42t-49.5 -17h-1084l35 -168q4 -16 17.5 -26.5t29.5 -10.5h856q16 0 27.5 -11.5t11.5 -27.5v-78q0 -16 -11 -26.5 t-28 -10.5h-163h-652h-104q-16 0 -36.5 3.5t-35.5 9.5q-6 2 -14 13t-15.5 24.5t-12.5 27t-7 21.5l-215 1016q-4 16 -17.5 26t-29.5 10h-170q-39 0 -39 39zM582 115q0 47 33.5 81.5t80.5 34.5q49 0 83 -34.5t34 -81.5t-34 -81t-83 -34q-47 0 -80.5 34t-33.5 81zM1233 115 q0 47 33.5 81.5t81.5 34.5q47 0 80.5 -34.5t33.5 -81.5t-33.5 -81t-80.5 -34t-81 34t-34 81z" />
155
<glyph unicode="&#xf07b;" d="M0 115v1306q0 47 34 81t81 34h692q47 0 81 -34t34 -81t33.5 -80.5t80.5 -33.5h693q47 0 80.5 -35t33.5 -82v-1075q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81z" />
156
<glyph unicode="&#xf07c;" d="M0 379v1042q0 47 34 81t81 34h692q47 0 81 -34t34 -81t33.5 -80.5t80.5 -33.5h443q47 0 80.5 -35t33.5 -82v-221h-1228q-37 0 -72 -12.5t-65.5 -34t-53 -51t-35.5 -64.5zM43 0l246 760q6 23 30.5 39t47.5 16h1476l-260 -758q-6 -23 -30.5 -40t-47.5 -17h-1462z" />
157
<glyph unicode="&#xf07d;" horiz-adv-x="798" d="M2 368.5q10 22.5 57 22.5h203v754h-203q-47 0 -57 22.5t25 57.5l319 319q23 23 53 23q31 0 54 -23l321 -319q33 -35 22.5 -57.5t-57.5 -22.5h-202v-754h202q47 0 57.5 -22.5t-24.5 -57.5l-319 -319q-23 -23 -54 -23t-53 23l-321 319q-33 35 -23 57.5z" />
158
<glyph unicode="&#xf07e;" horiz-adv-x="1597" d="M0 729q0 31 23 53l319 322q35 33 57.5 23.5t22.5 -56.5v-205h754v203q0 47 22.5 57.5t56.5 -22.5l320 -322q23 -23 22 -53q0 -31 -22 -53l-320 -322q-35 -33 -57 -22.5t-22 57.5v203h-754v-203q0 -47 -22.5 -57t-57.5 24l-319 320q-23 23 -23 53z" />
159
<glyph unicode="&#xf080;" d="M0 115v1306q0 47 35 81t82 34h1612q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1612q-47 0 -82 34t-35 81zM154 154h1536v1228h-1536v-1228zM307 264v363h203v-363h-203zM649 264v776h201v-776h-201zM993 264v592h203v-592h-203zM1333 264v922h203v-922 h-203z" />
160
<glyph unicode="&#xf081;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t73 15.5h1153q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1153q-39 0 -73.5 15.5t-60 41t-41 60.5t-15.5 76zM201 559q80 -111 198.5 -169t259.5 -58q96 0 184.5 26.5t160 73.5 t124 112.5t76.5 143.5q82 6 129 57q14 14 4 33q-8 18 -30 15h-4q23 23 30 45q8 20 -8 32q-14 14 -33 2q-8 -4 -29.5 -10t-45.5 -6q-4 0 -7.5 1t-7.5 1q0 2 -1 4t-1 4q-16 61 -57 110.5t-94 72.5q4 4 6 8t6 8q6 16 0 33q-2 6 -12.5 16t-34.5 8q-2 4 -6 8q-12 12 -25 9 q-25 -4 -49 -13l-2 2q-14 8 -31 -2q-59 -37 -98 -100t-68 -135q-35 31 -57 41q-61 35 -129 63.5t-154 61.5q-14 4 -24 -4q-10 -6 -15 -21q-2 -27 8.5 -58.5t38.5 -62.5q-25 -6 -20 -32q12 -68 68 -101l-13 -12q-14 -14 -4 -33q4 -12 26.5 -37.5t65.5 -38.5q-6 -12 -6 -22 t2 -14q6 -33 39 -50q-37 -25 -79 -34t-85 -5.5t-83 20.5t-70 46q-8 8 -19.5 8t-19.5 -8q-23 -18 -4 -39z" />
161
<glyph unicode="&#xf082;" horiz-adv-x="1536" d="M2 193v1150q0 39 15.5 75t41 61.5t60.5 41t74 15.5h1153q80 0 136 -56.5t56 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-74 -15.5h-486v643h172q12 0 21.5 8t9.5 21l12 168q0 14 -8 24q-10 10 -23 10h-184v74q0 41 10.5 54.5t53.5 13.5q25 0 55.5 -4t58.5 -11 q6 0 13.5 1.5t11.5 5.5q10 6 14 22l23 162q4 29 -25 35q-90 25 -188 24q-301 0 -301 -293v-84h-103q-33 0 -32 -32v-168q0 -12 9 -21.5t23 -9.5h103v-643h-393q-39 0 -74 15.5t-60.5 41t-41 60.5t-15.5 76z" />
162
<glyph unicode="&#xf083;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 160h1536v114h-1536v-114zM154 1145h1536v231h-957l-14 -92h-565v-139zM266 1341h316v93h-316v-93zM557 709q0 -76 28.5 -142.5t78 -116 t116 -78t142.5 -28.5t142 28.5t115.5 78t78 116t28.5 142.5t-28.5 142.5t-78 115.5t-116 77.5t-141.5 28.5q-76 0 -142.5 -28.5t-116 -77.5t-78 -115.5t-28.5 -142.5zM672 709q0 51 19.5 97t53 80t79.5 53t98 19q51 0 97 -19t80 -53t53 -80t19 -97t-19 -97.5t-53 -80 t-80 -53t-97 -19.5t-97.5 19.5t-80 53t-53 79.5t-19.5 98zM743 709q0 -16 12.5 -28.5t28.5 -12.5q18 0 30.5 12.5t12.5 28.5q0 41 28 67.5t67 26.5v2q18 0 30.5 12t12.5 29q0 18 -12.5 30.5t-30.5 12.5q-74 0 -126.5 -53.5t-52.5 -126.5z" />
163
<glyph unicode="&#xf084;" horiz-adv-x="1916" d="M0 803.5q-6 111.5 30 230.5t113 228q78 109 179.5 180t209 102t213 17.5t191.5 -74.5q76 -53 121 -134t59 -176.5t-4 -199t-68 -203.5l414 -297l101 139l-105 74q-14 10 -17 27.5t7 32.5l51 69q10 14 26.5 17.5t32.5 -7.5l344 -247q16 -10 18.5 -27.5t-7.5 -32.5l-49 -69 q-10 -14 -27.5 -17.5t-32.5 6.5l-102 76l-101 -139l248 -178q43 -31 52.5 -83t-21.5 -95q-33 -43 -84 -51.5t-94 22.5l-803 573q-78 -80 -170 -130t-186.5 -68.5t-185.5 -2t-167 71.5q-86 61 -133 157.5t-53 208zM230.5 766q7.5 -41 30 -78t58.5 -63q37 -27 79 -36t83 -2 t78 29.5t64 59.5q39 53 41 114.5t-27 114.5q59 -10 116.5 11.5t96.5 74.5q27 37 36 79t2 84t-29.5 79t-59.5 63q-37 27 -79 36t-84 2t-79 -29.5t-63 -59.5q-37 -53 -39 -114.5t26 -114.5q-59 10 -116.5 -12.5t-96.5 -75.5q-27 -37 -36 -79t-1.5 -83z" />
164
<glyph unicode="&#xf085;" horiz-adv-x="1916" d="M0 801v180q0 8 22.5 15.5t52 11.5t56.5 7t37 3q12 49 37 88q-23 31 -45.5 61.5t-46.5 59.5l-4 10q0 6 20.5 29.5t47 50t50 47t29.5 20.5q2 0 20.5 -13t41 -30.5t43 -34t24.5 -20.5q43 25 90 37q0 8 3 37t7 57.5t10.5 52t16.5 23.5h178q8 0 15.5 -23.5t11.5 -52t7 -57.5 t5 -37q45 -12 86 -35q31 23 62.5 45.5t60.5 46.5l8 4q4 0 27.5 -21.5t49.5 -47t47.5 -49t21.5 -29.5q0 -4 -13.5 -22.5t-30 -40t-32 -41t-19.5 -25.5q23 -39 39 -92q10 -2 37 -5t55.5 -8.5t51 -11.5t22.5 -14v-178q0 -10 -22.5 -16.5t-51 -11.5t-56.5 -7t-36 -4 q-14 -43 -37 -88q23 -31 44.5 -60.5t48.5 -58.5l2 -10q0 -6 -20.5 -30t-47.5 -50.5t-50.5 -47t-29.5 -20.5q-2 0 -20.5 13.5t-41 31t-42 32.5t-25.5 20q-45 -23 -88 -37q0 -10 -3 -37t-8 -56.5t-12.5 -52t-15.5 -22.5h-178q-8 0 -15.5 22.5t-11.5 52t-7 56t-3 37.5 q-45 12 -88 37q-31 -23 -61.5 -46.5t-59.5 -48.5l-10 -2q-4 0 -27.5 20.5t-49 47t-46 50.5t-20.5 30q0 2 13 20.5t29.5 40t31 41t18.5 25.5q-23 43 -39 94q-10 2 -37 5t-55.5 7t-51 10.5t-22.5 14.5zM420 889q0 -37 14.5 -70t39 -57.5t58 -38.5t70.5 -14t70 14t57.5 38.5 t38.5 57.5t14 70t-14 70.5t-38.5 58t-57.5 39t-70 14.5q-76 0 -129 -53t-53 -129zM1114 373q0 6 13.5 13t31 14.5t33.5 12.5t22 7q4 23 9.5 39t15.5 37q-4 4 -13 17t-18.5 27.5t-16.5 28t-7 17.5t18.5 23.5t43 41t47 40t28.5 24.5l8 4q4 0 16.5 -8.5t25.5 -19.5t25.5 -21.5 t16.5 -14.5q35 12 76 19q2 6 9 21.5t16.5 30.5t17.5 27.5t14 12.5q4 0 34 -7t63.5 -18.5t60.5 -23.5t27 -23q0 -23 -5.5 -47t-9.5 -47q16 -12 28.5 -26.5t22.5 -30.5q25 2 49.5 3t47.5 1q8 0 18 -26.5t17.5 -60.5t12.5 -64.5t5 -39.5q0 -6 -13.5 -13t-29.5 -13t-32.5 -12.5 t-22.5 -8.5q-9 -38 -23 -71q2 -6 11.5 -18.5t18.5 -27t16 -27.5t7 -18q0 -4 -18.5 -23.5t-43 -41t-47 -40.5t-28.5 -26l-8 -4q-4 0 -16.5 8.5t-25.5 19.5t-25.5 21.5t-16.5 14.5q-37 -12 -78 -19q-2 -6 -9 -21.5t-15.5 -30.5t-16.5 -27.5t-14 -12.5t-35 7.5t-62.5 18.5 t-60 23.5t-26.5 22.5q0 23 5 47.5t9 46.5q-16 12 -28.5 26.5t-22.5 30.5q-23 -2 -45.5 -3t-44.5 -1h-14.5t-8.5 11q-2 8 -8 35.5t-13.5 58t-12.5 55.5t-5 29zM1192 1264q0 6 12.5 12t29.5 10t33.5 6t22.5 4q10 33 31 64q-2 4 -8 17.5t-12.5 27.5t-11.5 25.5t-5 15.5 q0 6 21.5 22.5t49 35t51.5 32.5t28 14t13 -9t20.5 -21.5t20.5 -23.5t13 -15q14 4 28.5 6t29.5 0h14q2 4 11 16.5t18.5 25.5t17.5 23.5t12 10.5t30 -11.5t55.5 -26t53 -28.5t23.5 -20q0 -4 -4 -15.5t-8 -26t-8.5 -27.5t-6.5 -17q20 -25 39 -60q51 -4 74 -7t29 -18.5t5 -52 t3 -106.5q0 -6 -12.5 -12.5t-28.5 -10.5t-32.5 -6t-22.5 -4q-13 -36 -31 -63q2 -4 8 -16.5t13.5 -27t12.5 -26.5t5 -14q0 -6 -22.5 -23.5t-50 -36t-51.5 -33t-26 -14.5q-4 0 -14 9.5t-21.5 21.5t-20.5 23.5t-13 15.5q-14 -4 -28.5 -6t-29.5 0h-14q-4 -4 -12 -16.5t-17.5 -26 t-18.5 -23.5t-13 -10t-30 11t-54.5 25.5t-52 29t-23.5 20.5q0 2 3 14.5t8 26.5t9 27.5t6 17.5q-23 23 -38 59q-53 2 -75 5t-29 18.5t-5 52.5t-4 109zM1397 367q0 -49 34.5 -85t84.5 -36q49 0 84.5 34.5t35.5 86.5q0 49 -34.5 83.5t-85.5 34.5q-49 0 -84 -34.5t-35 -83.5z M1446 1206q0 -47 31.5 -78.5t76.5 -31.5q47 0 79 31.5t32 76.5q0 47 -31.5 79t-77.5 32q-47 0 -78.5 -32t-31.5 -77z" />
165
<glyph unicode="&#xf086;" horiz-adv-x="1916" d="M0 997q0 119 61.5 222.5t167 180.5t246.5 122t303 45t303.5 -45t247 -122t166.5 -180.5t61 -222.5q0 -117 -61 -221t-166.5 -181t-247 -122t-303.5 -45q-37 0 -73.5 3t-71.5 7q-147 -113 -336 -155q-20 -4 -40.5 -7.5t-43.5 -7.5q-12 -2 -21.5 6.5t-13.5 18.5v2 q-4 12 3 19.5t18 17.5q18 18 34.5 36.5t29.5 42t24.5 55.5t19.5 79q-141 78 -224 195.5t-83 256.5zM649 258q6 4 13.5 8t13.5 8q51 -6 102 -6q197 0 369 56.5t298 155t198.5 231.5t72.5 286q0 41 -6 84q96 -78 151.5 -175t55.5 -208q0 -139 -83 -256.5t-224 -195.5 q8 -47 19 -79t25.5 -55.5t30 -42t33.5 -36.5q10 -10 17.5 -18.5t3.5 -18.5v-2q-2 -12 -12.5 -19.5t-22.5 -5.5q-23 4 -43.5 7.5t-40.5 7.5q-96 20 -180 60t-156 95q-35 -4 -71.5 -7t-73.5 -3q-141 0 -265 35t-225 94z" />
166
<glyph unicode="&#xf087;" horiz-adv-x="1597" d="M0 193v643q0 49 35 83.5t84 34.5h348q27 14 43 30.5t35 39.5q16 20 32.5 38.5t34.5 37.5q33 35 76 68.5t66 74.5q16 29 23 64.5t12.5 71.5t12.5 70t23.5 60.5t47 42t81.5 15.5q61 0 111.5 -25.5t85.5 -68.5t54.5 -98.5t19.5 -112.5q0 -59 -17.5 -112.5t-42.5 -107.5 q35 2 70 4.5t70 2.5q55 0 107 -10.5t93 -35t66.5 -67.5t25.5 -109q0 -29 -5 -57t-15 -57q18 -43 18 -90q0 -78 -41 -142q10 -59 -7 -118.5t-58 -104.5q-4 -84 -45 -139.5t-102.5 -89t-135 -47t-143.5 -13.5q-72 0 -144.5 10.5t-142.5 28.5q-70 20 -139.5 43t-142.5 23h-375 q-49 0 -84 34.5t-35 84.5zM236 276q0 -35 22 -57t57 -22q33 0 56.5 22.5t23.5 56.5q0 33 -23.5 56.5t-56.5 23.5q-35 0 -57 -23.5t-22 -56.5zM492 193q70 0 136 -16.5t133.5 -35t141.5 -35t160 -16.5q45 0 98 6t99.5 26.5t78 56.5t31.5 95q0 10 -1 18.5t-3 18.5 q35 16 53.5 53t18.5 74q0 39 -21 68q60 49 60 123q0 23 -12.5 43t-26.5 35q16 29 28.5 57.5t12.5 62.5q0 35 -17.5 55.5t-43 31t-56.5 12.5t-57 2q-45 0 -90.5 -3t-90.5 -3q-31 0 -61.5 3t-58.5 15q0 41 16 78t35.5 74.5t35 78.5t15.5 91q0 33 -10.5 65.5t-29.5 59t-47 44 t-65 17.5h-11t-11 -2q-8 -4 -9 -8t-3 -13q-12 -59 -22.5 -123.5t-39.5 -117.5q-29 -51 -74 -88t-86 -78q-29 -31 -49 -56.5t-41.5 -48t-48.5 -42t-65 -35.5h-2v-643z" />
167
<glyph unicode="&#xf088;" horiz-adv-x="1597" d="M0 309q0 29 5 57.5t15 57.5q-18 43 -18 90q0 78 41 141q-10 59 7.5 119t58.5 105q4 84 45 139t102 89t135 47t144 13q72 0 144.5 -10t141.5 -29q70 -20 139.5 -42.5t143.5 -22.5h375q49 0 83.5 -35t34.5 -84v-643q0 -49 -34.5 -84t-83.5 -35h-349q-27 -14 -43 -30.5 t-34 -38.5q-16 -20 -32.5 -39t-35.5 -37q-33 -35 -76 -69t-65 -74q-25 -43 -31 -99.5t-18.5 -106.5t-44 -84t-107.5 -34q-61 0 -111.5 25.5t-85 68.5t-54 98.5t-19.5 112.5q0 59 17.5 112.5t41.5 106.5q-35 -2 -69.5 -4t-69.5 -2q-55 0 -107.5 10.5t-93.5 35t-66.5 67.5 t-25.5 108zM119 309q0 -35 17.5 -55.5t43 -30.5t56 -12t57.5 -2q47 0 91 3t89 3q31 0 61.5 -3t59.5 -15q0 -41 -16.5 -78t-36 -75t-34.5 -79t-15 -90q0 -33 10 -65.5t29.5 -59t47 -43t64.5 -16.5q4 0 11.5 -1t11.5 1q8 4 9 8l3 12q12 59 22.5 124t38.5 118q29 51 74 88 t86 78q29 31 49.5 56.5t42 48t47 42t66.5 35.5h2v643q-72 0 -137.5 16.5t-133 36t-141 36t-159.5 16.5q-45 0 -98.5 -7.5t-99.5 -27t-78 -56t-32 -96.5q0 -10 1 -18t3 -19q-35 -16 -53 -53t-18 -74q0 -39 20 -67q-59 -49 -59 -123q0 -23 12 -43.5t27 -34.5 q-16 -29 -28.5 -57.5t-12.5 -63.5zM1202 860q0 -33 23.5 -56.5t56.5 -23.5q35 0 57.5 23.5t22.5 56.5q0 35 -22.5 57.5t-57.5 22.5q-33 0 -56.5 -22.5t-23.5 -57.5z" />
168
<glyph unicode="&#xf089;" horiz-adv-x="837" d="M1 959.5q9 27.5 54 33.5l506 74l227 459q23 41 50 41v-1348l-453 -237q-41 -23 -64.5 -6.5t-15.5 63.5l86 504l-364 356q-35 33 -26 60.5z" />
169
<glyph unicode="&#xf08a;" horiz-adv-x="1802" d="M0 1073q0 137 43 231.5t112.5 153t156.5 84t177 25.5q63 0 125 -21.5t115 -53.5t97 -70t75 -68q31 31 76 68.5t98 69.5t113.5 53.5t126.5 21.5q88 0 175 -25.5t156.5 -84t112.5 -153t43 -231.5q0 -94 -34.5 -177t-76.5 -146.5t-79 -102.5t-39 -43l-615 -612 q-26 -23 -57 -23q-33 0 -55 23l-617 614q-4 2 -39.5 41t-77.5 102.5t-77 146.5t-35 177zM160 1073q0 -68 27.5 -131t61.5 -112.5t63 -79.5l28 -29l561 -559l561 559l29 29q29 30 62.5 79.5t61 113t27.5 130.5q0 104 -29.5 169t-77.5 101.5t-106.5 50t-113.5 13.5 q-53 0 -107.5 -25.5t-102.5 -61.5t-86 -74t-56 -60q-25 -31 -62 -31t-61 31q-18 23 -56.5 60.5t-86.5 73.5t-102.5 61.5t-105.5 25.5q-57 0 -115.5 -13.5t-106.5 -50t-77.5 -101t-29.5 -169.5z" />
170
<glyph unicode="&#xf08b;" horiz-adv-x="1689" d="M0 307v922q0 63 24.5 118.5t66.5 97.5t97.5 66.5t118.5 24.5h461v-193h-461q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h461v-193h-461q-63 0 -118.5 24.5t-97.5 66.5t-66.5 97.5t-24.5 118.5zM508 584v368q0 33 22.5 54.5t55.5 21.5h428v293 q0 41 39 57q39 14 65 -14l553 -553q18 -18 18.5 -44t-18.5 -42l-553 -553q-18 -18 -43 -18q-10 0 -22 4q-39 16 -39 57v291h-428q-33 0 -55.5 22.5t-22.5 55.5z" />
171
<glyph unicode="&#xf08c;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1150q-80 0 -136.5 56.5t-56.5 136.5zM207 1192q0 -57 40 -97t95 -40q57 0 97 40t40 97q0 55 -40 95t-97 40q-55 0 -95 -40 t-40 -95zM213 240q0 -10 9 -19.5t20 -9.5h200q12 0 20.5 9t8.5 20v706q0 29 -29 29h-200q-10 0 -19.5 -8.5t-9.5 -20.5v-706zM580 240q0 -10 9 -19.5t19 -9.5h201q12 0 20.5 9t8.5 20v383q0 68 26.5 113.5t102.5 45.5q59 0 79.5 -28.5t20.5 -81.5v-432q0 -10 8 -19.5 t21 -9.5h204q10 0 19.5 9t9.5 20v477q0 141 -81 208.5t-216 67.5q-55 0 -107.5 -15t-93.5 -56q0 16 -3 34.5t-25 18.5h-195q-10 0 -19 -8.5t-9 -20.5v-706z" />
172
<glyph unicode="&#xf08d;" horiz-adv-x="1916" d="M2 950q8 82 45 172t100 176t139 147.5t152 92.5t145.5 30t121.5 -40q53 -41 73.5 -107.5t12.5 -148.5l301 -225q111 63 215 73t180 -47q55 -41 80.5 -108.5t23.5 -150.5t-30.5 -177t-83.5 -188l428 -410q25 -25 4 -53q-12 -16 -33 -17q-10 0 -18 6l-517 293 q-74 -80 -155.5 -135t-161.5 -80.5t-151.5 -19.5t-127.5 47q-76 55 -95 158.5t9 228.5l-303 223q-76 -33 -145.5 -32t-122.5 40q-51 39 -72.5 104.5t-13.5 147.5zM171 858.5q3 -16.5 15 -27.5q21 -14 50 -14q31 0 65.5 17.5t71.5 46t72.5 66.5t66.5 79q10 14 7 30.5 t-15 26.5q-14 10 -30.5 8.5t-27.5 -16.5q-78 -104 -138 -143t-72 -35q-14 10 -31 7t-27 -15q-10 -14 -7 -30.5zM465 754l364 -271q8 -8 23 -8q20 0 33 17q10 14 8 29.5t-16 25.5l-347 258q-16 -14 -32.5 -27.5t-32.5 -23.5zM829.5 239.5q1.5 -16.5 16.5 -26.5q29 -23 69 -23 q41 0 88.5 21.5t95.5 57.5t94 84.5t87 101.5q10 12 8 28.5t-16 26.5q-12 10 -28.5 8t-26.5 -16q-51 -68 -102.5 -116t-95.5 -75.5t-78 -36t-48 4.5q-14 10 -29.5 7t-25.5 -18q-10 -12 -8.5 -28.5z" />
173
<glyph unicode="&#xf08e;" d="M0 307v922q0 63 24.5 119.5t65.5 97.5t97.5 65.5t119.5 24.5h582q-2 -14 -4 -27.5t-2 -29.5v-88q0 -23 6 -48h-582q-47 0 -80.5 -33.5t-33.5 -80.5v-922q0 -47 33.5 -80.5t80.5 -33.5h1075q47 0 81 33.5t34 80.5v340q41 -31 90 -49t103 -20v-271q0 -63 -25 -118.5 t-67 -97.5t-97 -66.5t-119 -24.5h-1075q-63 0 -119.5 24.5t-97.5 66.5t-65.5 97.5t-24.5 118.5zM692.5 522q-0.5 25 16.5 41l770 772h-269q-25 0 -41 16.5t-16 41.5v86q-2 23 15.5 40t41.5 17h576q23 0 40 -17.5t17 -39.5v-86v-490q0 -25 -17.5 -42t-39.5 -15h-86 q-25 0 -41.5 16.5t-16.5 40.5v268l-772 -770q-16 -16 -40.5 -16t-41.5 16l-79 80q-16 16 -16.5 41z" />
174
<glyph unicode="&#xf090;" horiz-adv-x="1689" d="M0 584v368q0 33 22.5 54.5t55.5 21.5h428v293q0 41 37 57q39 14 67 -14l553 -553q16 -18 16.5 -44t-16.5 -42l-553 -553q-18 -18 -43 -18q-8 0 -24 4q-37 16 -37 57v291h-428q-33 0 -55.5 22.5t-22.5 55.5zM922 0v193h460q47 0 81 33.5t34 80.5v922q0 47 -33.5 80.5 t-81.5 33.5h-460v193h460q63 0 118.5 -24.5t97.5 -65.5t67 -97.5t25 -119.5v-922q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5h-460z" />
175
<glyph unicode="&#xf091;" horiz-adv-x="1689" d="M0 1042v187q0 33 22.5 54.5t55.5 21.5h323q-2 12 -2 25v24v4q0 53 4.5 88t15.5 54.5t31.5 27.5t55.5 8h678q33 0 54.5 -8t32.5 -27.5t15 -54.5t4 -88v-25.5t-2 -27.5h324q33 0 55.5 -21.5t22.5 -54.5v-187q0 -63 -45.5 -130.5t-122 -128t-180 -106.5t-222.5 -65 q-51 -10 -91 -41.5t-40 -70.5q0 -35 17.5 -51.5t39 -31t40 -31.5t22.5 -52q4 -23 -2 -47q-4 -14 23.5 -23.5t67.5 -18.5t82 -22.5t64 -34.5q12 -10 19.5 -39.5t9.5 -64.5q2 -33 -6 -58.5t-29 -25.5h-985q-20 0 -28.5 25.5t-6.5 58.5q2 35 9.5 64.5t19.5 39.5q23 20 64 34 t80.5 23t68.5 18t25 24q-4 14 -4 25.5v21.5q2 35 21.5 52t42 31.5t39.5 31t17 51.5q0 39 -39.5 70.5t-93.5 41.5q-117 20 -220 66.5t-180 106t-122 127t-45 130.5zM154 1042q0 -20 23.5 -54t67.5 -70.5t106.5 -71.5t140.5 -60q-25 80 -44.5 175.5t-33.5 189.5h-260v-109z M1198 786q78 25 140.5 60t106.5 71.5t67.5 70.5t23.5 54v109h-262q-12 -94 -31.5 -189.5t-44.5 -175.5z" />
176
<glyph unicode="&#xf092;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-337v25q0 39 2 97t-3.5 115.5t-24.5 104.5t-65 66q188 20 290 110t102 287q0 66 -22.5 128t-67.5 114q6 23 8 45t2 45 q0 41 -9.5 91t-31.5 85h-12q-43 2 -79 -8.5t-68 -27.5t-62.5 -37.5t-65.5 -39.5q-33 4 -65.5 6t-65.5 2t-65.5 -2t-65.5 -6q-35 18 -65.5 39t-62.5 38t-67.5 27.5t-79.5 8.5h-12q-23 -35 -32 -85t-9 -91q0 -23 2 -45.5t8 -44.5q-45 -51 -66.5 -114t-21.5 -128 q0 -193 95.5 -283t281.5 -112q-39 -16 -59.5 -50t-32.5 -75q-27 -8 -49.5 -15.5t-50.5 -7.5q-55 0 -88 28.5t-59.5 62.5t-56.5 62.5t-79 28.5q-4 0 -20.5 -2t-16.5 -12q0 -23 19.5 -32t31.5 -19q39 -31 56.5 -71t39 -76.5t62.5 -62.5t127 -26q35 0 80 11q0 -10 -1 -18.5 t-1 -16.5q0 -29 2 -59.5t-2 -59.5h-317q-80 0 -136.5 56.5t-56.5 136.5z" />
177
<glyph unicode="&#xf093;" d="M0 39v614q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-346h1229v346q0 16 11.5 27.5t27.5 11.5h229q16 0 27.5 -11t11.5 -28v-614q0 -39 -39 -39h-1765q-39 0 -39 39zM346 969.5q-6 15.5 16 38.5l504 505q23 23 55.5 23t55.5 -23l506 -505q23 -23 15.5 -38.5 t-38.5 -15.5h-307v-499q0 -33 -22.5 -55.5t-55.5 -22.5h-307q-33 0 -54.5 22.5t-21.5 55.5v499h-307q-33 0 -39 15.5z" />
178
<glyph unicode="&#xf094;" horiz-adv-x="1609" d="M2 514q-2 35 1 68.5t7 74.5q4 35 7 72t10 66q14 66 30.5 128t44.5 117q20 41 45 81t54 79q10 14 21 24.5t24 20.5q23 23 45 45.5t49 42.5t57.5 36.5t65.5 33.5q33 16 67.5 29.5t71.5 27.5q70 29 156 51l2 2q45 12 85 17.5t79 5.5q59 0 112.5 -9t106.5 -20q41 -8 85 -15 t93 -7h2q29 0 62.5 5t66.5 5q25 0 45.5 -6t32.5 -25q23 -31 26 -71.5t-2 -75.5q-4 -35 -8 -71t2 -72q4 -23 11.5 -39.5t15.5 -36.5q8 -18 11 -40t7 -42q18 -104 15.5 -195.5t-23 -170.5t-56.5 -148.5t-81 -132.5q-37 -49 -79 -97.5t-92 -91.5t-110.5 -77.5t-134.5 -59.5 q-76 -27 -158.5 -34t-158.5 -11h-31q-104 0 -194.5 16.5t-192.5 16.5h-4q-35 0 -77 -10.5t-83 -12.5h-2q-37 0 -65.5 17.5t-42.5 42.5q-20 35 -17.5 72.5t12.5 68.5t10.5 66.5t-5 75.5t-12.5 81t-9 82z" />
179
<glyph unicode="&#xf095;" horiz-adv-x="1597" d="M0 1169q0 55 14.5 114.5t43 114t68.5 98.5t93 69q12 -2 26.5 0t26.5 2q10 0 30 -1l40 -2t38.5 -4.5t27.5 -7.5q8 -6 15 -18t12 -26.5t9.5 -30t8.5 -25.5q6 -18 23.5 -65.5t35.5 -97.5t32.5 -93t14.5 -53q0 -37 -24.5 -68t-54 -57.5t-54.5 -50t-25 -45.5q0 -20 16.5 -49 t26.5 -46q84 -145 188.5 -248.5t252.5 -187.5q18 -10 45.5 -27.5t50.5 -17.5t52.5 32t60 70.5t62 70.5t58.5 32q10 0 51.5 -22.5t89.5 -50t93 -55.5t61 -36q16 -10 46 -25.5t40 -35.5q2 -6 2 -23q0 -16 -3 -36.5t-8 -43t-12 -43t-13 -35.5q-18 -39 -59.5 -71.5t-92.5 -55 t-104.5 -36t-92.5 -13.5q-80 0 -153.5 25.5t-145.5 54.5q-123 45 -232.5 118t-203.5 164t-175 196.5t-144 215.5q-25 41 -52.5 95.5t-51 112t-39 113.5t-15.5 105z" />
180
<glyph unicode="&#xf096;" d="M0 307v922q0 63 24.5 118.5t66.5 97.5t97.5 66.5t118.5 24.5h1075q63 0 118.5 -24.5t97.5 -66.5t67 -97.5t25 -118.5v-922q0 -63 -25 -118.5t-67 -97.5t-97 -66.5t-119 -24.5h-1075q-63 0 -118.5 24.5t-97.5 66.5t-66.5 97.5t-24.5 118.5zM193 307q0 -47 33.5 -80.5 t80.5 -33.5h1075q47 0 81 33.5t34 80.5v922q0 47 -34 80.5t-81 33.5h-1075q-47 0 -80.5 -33.5t-33.5 -80.5v-922z" />
181
<glyph unicode="&#xf097;" horiz-adv-x="1253" d="M0 84v1337q0 47 34 81t81 34h1024q47 0 80.5 -34t33.5 -81v-1337q0 -47 -33.5 -81t-80.5 -34t-80 33l-432 432l-432 -432q-33 -33 -80 -33t-81 34t-34 81zM158 186l469 471l469 -471v1194h-938v-1194z" />
182
<glyph unicode="&#xf098;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1150q-80 0 -136.5 56.5t-56.5 136.5zM193 1040q2 -35 15 -76.5t30 -78.5q16 -37 33.5 -72t33.5 -63q74 -129 176.5 -241 t225.5 -190q31 -18 67.5 -36.5t75.5 -32.5q41 -16 83 -31.5t81 -21.5q63 -10 112.5 2t90.5 34q27 12 57.5 33.5t44.5 52.5q4 8 9 27t9 38t6.5 37.5t-2.5 29.5q-4 12 -24.5 22t-36.5 21q-43 25 -71.5 41t-67.5 38q-16 10 -36 23.5t-38 13.5q-23 0 -46.5 -27.5t-37.5 -43.5 q-12 -14 -36.5 -43t-47.5 -31q-14 -2 -32.5 10t-37.5 23q-106 59 -182 136t-135 177q-10 16 -21.5 37.5t-7.5 38.5q2 18 24.5 33.5t35.5 29.5q14 16 31.5 37t19.5 43q4 16 -5 38t-16 42q-16 43 -28.5 76t-26.5 76q-6 16 -12 40.5t-21 30.5q-8 4 -26.5 7t-39 4.5t-37.5 0 t-24 -1.5h-8q-33 -16 -62.5 -45.5t-51 -69.5t-34 -88t-9.5 -100z" />
183
<glyph unicode="&#xf099;" d="M0 399q0 20 13.5 33.5t33.5 13.5q14 0 31 -12q123 -109 287 -108q59 0 117.5 15t107.5 48q-29 16 -47.5 42t-18.5 58q0 23 8 39q-18 6 -44.5 20.5t-51 34t-41 43t-16.5 46.5q0 16 10 28.5t25 22.5q-41 25 -76 74t-35 98q0 33 33 43q-35 35 -55.5 81t-20.5 95 q0 23 9.5 41.5t37.5 18.5q18 0 84 -27t142.5 -60.5t146.5 -67.5t98 -48q25 -14 47.5 -31.5t44.5 -36.5q20 51 47 106.5t60 106.5t73 96t89 74q8 6 24 6q18 0 27 -8q16 6 41.5 13.5t42.5 7.5q29 0 43 -27q31 0 56.5 -15.5t25.5 -50.5q0 -31 -27 -53q96 -43 159.5 -125 t90.5 -182q6 -2 23 -2q47 0 88 16.5t57 16.5q18 0 31.5 -14.5t13.5 -32.5q0 -23 -19.5 -48.5t-33.5 -39.5q23 4 42 -7.5t19 -38.5q0 -29 -26.5 -50t-61.5 -37.5t-72.5 -25.5t-58.5 -11q-43 -139 -133 -246t-210 -178.5t-258 -109.5t-275 -38q-219 0 -415 93.5t-325 273.5 q-8 16 -8 26z" />
184
<glyph unicode="&#xf09a;" horiz-adv-x="790" d="M0 862v203q0 16 11.5 28.5t27.5 12.5h125v102q0 358 366 359q123 0 232 -31q33 -10 29 -43l-27 -199q-4 -16 -16 -26q-16 -10 -31 -6q-35 8 -72.5 12t-66.5 4q-53 0 -65.5 -16.5t-12.5 -67.5v-88h223q14 0 29 -14q10 -10 10 -29l-17 -205q0 -16 -11 -25.5t-27 -9.5h-207 v-784q0 -16 -11.5 -27.5t-27.5 -11.5h-258q-16 0 -27.5 11.5t-11.5 27.5v784h-125q-16 0 -27.5 11.5t-11.5 27.5z" />
185
<glyph unicode="&#xf09b;" horiz-adv-x="1847" d="M0 743q0 115 37 222.5t113 193.5l-3 4l3 2q-16 39 -21.5 81t-5.5 85q0 25 2 56.5t8 65.5t15.5 63.5t23.5 50.5h8q61 0 110.5 -12.5t94.5 -35t87 -52t91 -60.5q86 25 178.5 33t182.5 8t182 -8t180 -33q47 31 90 60.5t87 52t93.5 35t110.5 12.5h10q12 -20 21.5 -50 t15.5 -64t9 -65.5t3 -56.5q0 -43 -6 -85t-20 -81v-2l-2 -4q76 -86 112.5 -193.5t36.5 -222.5q0 -233 -66.5 -383.5t-188.5 -236.5t-292 -120t-376 -34q-207 0 -378 34t-292 120t-187.5 236.5t-66.5 383.5zM250 483q0 -145 64.5 -224t165 -116t219 -43t227.5 -6q74 0 152.5 2 t153.5 12.5t142.5 34t117.5 67.5t80 111.5t30 165.5q0 84 -27 147.5t-75 106.5t-114.5 64.5t-146.5 21.5q-78 0 -156.5 -7t-156.5 -7t-157 7t-157 7q-162 0 -262 -87t-100 -257zM494 524q0 66 26.5 113t65.5 47t66.5 -47t27.5 -113t-27.5 -112.5t-66.5 -46.5t-65.5 46.5 t-26.5 112.5zM795 258q-6 16 12 25q16 6 24 -13q27 -76 93 -75q31 0 56.5 20.5t35.5 54.5q8 20 26 13q16 -6 13 -25q-16 -47 -51 -75.5t-80 -28.5q-43 0 -78 28.5t-51 75.5zM864 369q0 -12 17.5 -21.5t42.5 -9.5t42 9.5t17 21.5t-17.5 21t-41.5 9q-25 0 -42.5 -9t-17.5 -21z M1167 524q0 -66 28 -112.5t67 -46.5t65.5 46.5t26.5 112.5t-27 113t-65 47q-39 0 -67 -47t-28 -113z" />
186
<glyph unicode="&#xf09c;" horiz-adv-x="1880" d="M0 117v626q0 49 35 84t82 35h665v156q0 113 43 213t118 175t175 118t213 43t213.5 -43t175 -118t117.5 -175.5t43 -212.5v-152q0 -33 -22.5 -55.5t-55.5 -22.5h-80q-33 0 -55 23t-22 55v152q0 66 -25 123t-67 99t-99 66.5t-123 24.5t-122 -24.5t-99 -66.5t-67.5 -99.5 t-24.5 -122.5v-156h119q47 0 81.5 -34.5t34.5 -84.5v-626q0 -47 -34.5 -82t-81.5 -35h-1020q-47 0 -82 35t-35 82zM494 164h266l-66 285q29 18 47.5 48.5t18.5 65.5q0 55 -39 95t-94 40t-94 -40t-39 -95q0 -35 18 -65.5t47 -46.5z" />
187
<glyph unicode="&#xf09d;" d="M0 154v1228q0 63 45 108.5t109 45.5h1536q63 0 108 -45t45 -109v-1228q0 -63 -45 -108.5t-108 -45.5h-1536q-63 0 -108.5 45t-45.5 109zM154 154h1536v575h-1536v-575zM154 1114h1536v268h-1536v-268zM260 250v115h307v-115h-307zM676 250v115h446v-115h-446z" />
188
<glyph unicode="&#xf09e;" horiz-adv-x="1566" d="M0 236q0 49 18.5 91t50 74.5t75 51t92.5 18.5t91 -18.5t74.5 -51t51 -74.5t18.5 -91t-18.5 -92.5t-51 -75t-74.5 -50t-91 -18.5t-92.5 18.5t-75 50t-50 74.5t-18.5 93zM0 819v158q0 35 25 57q23 23 53 23q2 0 3 -1t3 -1q193 -14 362.5 -95t301 -212.5t212 -301.5 t95.5 -362q4 -35 -21 -59q-23 -25 -57 -25h-158q-29 0 -51.5 20.5t-26.5 51.5q-12 133 -68.5 249.5t-145.5 205.5t-205.5 145.5t-249.5 68.5q-31 4 -51.5 27t-20.5 51zM0 1331v158q0 33 25 55q23 23 53 23h4q301 -16 565 -137t463 -320t319.5 -463t137.5 -565q4 -31 -23 -57 q-23 -25 -55 -25h-158q-31 0 -53.5 21.5t-24.5 52.5q-14 238 -110 446.5t-255 367.5t-368 255t-446 110q-31 2 -52.5 24.5t-21.5 53.5z" />
189
<glyph unicode="&#xf0a0;" d="M0 193v382q0 23 6 45.5t12 45.5l238 727q20 63 75.5 103t121.5 40h938q66 0 121 -40t75 -103l238 -727q6 -23 12 -45.5t6 -45.5v-382q0 -41 -15.5 -76t-41 -60.5t-61 -41t-74.5 -15.5h-1458q-80 0 -136.5 56.5t-56.5 136.5zM154 193q0 -16 11 -27.5t28 -11.5h1458 q16 0 27.5 11t11.5 28v382q0 16 -11.5 27.5t-27.5 11.5h-1458q-16 0 -27.5 -11t-11.5 -28v-382zM213 768h1417l-188 578q-4 16 -19.5 26t-31.5 10h-938q-16 0 -31.5 -10t-20.5 -26zM1057 385q0 39 27.5 66.5t68.5 27.5q39 0 66.5 -27.5t27.5 -66.5q0 -41 -27.5 -68.5 t-66.5 -27.5q-41 0 -68.5 27.5t-27.5 68.5zM1364 385q0 39 27.5 66.5t68.5 27.5q39 0 66.5 -27.5t27.5 -66.5q0 -41 -27.5 -68.5t-66.5 -27.5q-41 0 -68.5 27.5t-27.5 68.5z" />
190
<glyph unicode="&#xf0a1;" d="M0 754v229q0 63 45 108.5t109 45.5h499q115 0 245 33.5t255 90t235.5 128t186.5 147.5q63 0 108.5 -45t45.5 -109v-368q49 -12 81.5 -52.5t32.5 -93.5t-32.5 -93t-81.5 -52v-369q0 -63 -45.5 -108t-108.5 -45q-68 68 -164 132t-206.5 117.5t-227.5 91.5t-227 50 q-43 -12 -70 -40t-37 -62.5t-2 -70.5t37 -65q-25 -41 -23 -75.5t20.5 -66.5t49.5 -61.5t66 -58.5q-20 -43 -69.5 -65.5t-106 -25.5t-110.5 10.5t-85 43.5q-18 61 -40 125t-36 130.5t-14 138t24 151.5h-200q-63 0 -108.5 45t-45.5 109zM807 741q102 -16 206.5 -49t205 -78 t191.5 -99t165 -112v930q-76 -59 -166 -113.5t-190.5 -98.5t-205 -77.5t-206.5 -48.5v-254z" />
191
<glyph unicode="&#xf0a2;" horiz-adv-x="1759" d="M0 317q104 78 172 172.5t109 201t60 224t28 240.5q6 84 56 159t126 131t163 89t167 33q74 0 163 -33t165.5 -88t129 -129t52.5 -158q6 -121 27.5 -239.5t63.5 -227t109.5 -204t167.5 -171.5q-4 -70 -56 -114.5t-120 -44.5h-469q-18 -82 -82.5 -135.5t-150.5 -53.5 t-151.5 53.5t-84.5 135.5h-469q-68 0 -120 45t-56 114zM238 317h1284q-78 86 -129.5 183.5t-84 202t-50 214t-25.5 222.5q-4 55 -41 104t-89 86t-111.5 57.5t-110.5 20.5q-47 0 -107.5 -21.5t-114 -56.5t-91.5 -83t-40 -99q-6 -111 -23.5 -222.5t-51 -218t-87 -205 t-128.5 -184.5zM713 209q0 -70 49 -119t119 -49q18 0 18 20t-18 21q-53 0 -91 37t-38 90q0 20 -19 20q-20 0 -20 -20z" />
192
<glyph unicode="&#xf0a3;" horiz-adv-x="1597" d="M0 573q0 33 23 56l143 139l-143 139q-23 23 -23 56q0 25 16.5 45t40.5 26l195 49q-6 18 -15.5 48t-18.5 61t-16 59.5t-7 46.5q0 31 21.5 52.5t51.5 21.5q18 0 47 -7t60 -16.5t60.5 -18.5t47.5 -15l49 194q6 25 27 41.5t45 16.5q35 0 53 -23l142 -143l139 143q23 23 53 23 q27 0 47.5 -15.5t26.5 -42.5l49 -194q18 6 48 15t60.5 18.5t59.5 16.5t47 7q29 0 51.5 -21.5t22.5 -52.5q0 -18 -7 -46.5t-16.5 -59.5t-18.5 -60.5t-15 -48.5l194 -49q25 -6 41 -26.5t16 -44.5q0 -33 -22 -56l-145 -139l145 -139q23 -23 22 -56q0 -25 -16 -45t-41 -26 l-194 -49q6 -18 15 -48t18.5 -61t16.5 -59.5t7 -46.5q0 -29 -21.5 -51.5t-52.5 -22.5q-18 0 -47 7t-59.5 16.5t-60 18.5t-48.5 15l-49 -194q-6 -25 -26.5 -41.5t-45.5 -16.5q-33 0 -55 23l-139 143l-142 -143q-18 -23 -53 -23q-25 0 -45 16.5t-27 41.5l-49 194 q-18 -6 -47.5 -15t-60.5 -18.5t-59.5 -16.5t-47.5 -7q-31 0 -52 22.5t-21 51.5q0 18 7 46.5t16 59.5t18.5 60.5t15.5 48.5l-195 49q-25 6 -41 26.5t-16 44.5z" />
193
<glyph unicode="&#xf0a4;" horiz-adv-x="1916" d="M0 193v643q0 49 35 83.5t84 34.5h348q27 14 42 30.5t34 39.5q16 20 33.5 38.5t33.5 37.5q35 35 77 68.5t65 74.5q25 43 29.5 99.5t17 106.5t44 84t109.5 34q61 0 111.5 -25.5t85.5 -68.5t54.5 -98.5t19.5 -112.5q0 -53 -15.5 -104.5t-38.5 -98.5h134l376 -2 q49 0 93.5 -17.5t76 -49.5t50 -75t18.5 -94q0 -49 -18.5 -92t-50 -74.5t-75.5 -49t-94 -17.5h-200q-10 -59 -39 -107q10 -59 -7.5 -117.5t-56.5 -103.5q0 -76 -28.5 -131t-75.5 -90t-109.5 -52.5t-132.5 -17.5q-78 0 -148.5 16.5t-136 36t-128 36t-123.5 16.5h-375 q-49 0 -84 34.5t-35 84.5zM233 276q0 -35 22.5 -57t57.5 -22q33 0 56.5 22.5t23.5 56.5q0 33 -23.5 56.5t-56.5 23.5q-35 0 -57.5 -23.5t-22.5 -56.5zM489 193q70 0 136.5 -16.5t133 -35t133 -35t138.5 -16.5q43 0 84 8t72 27.5t50 52.5t19 82q0 14 -1 26.5t-3 24.5 q35 16 53.5 53t18.5 74q0 39 -20 68q59 49 59 123q0 23 -12.5 43.5t-26.5 34.5q90 0 178 1t178 1q51 0 84 30.5t33 81.5q0 53 -32.5 85t-84.5 32q-172 0 -340 1t-338 1q0 41 16.5 78t35 74.5t34 78.5t15.5 91q0 33 -10.5 65.5t-29 59t-46 44t-64.5 17.5h-11t-11 -2 q-8 -4 -9 -8t-3 -13q-12 -59 -22.5 -123.5t-39.5 -117.5q-29 -51 -73 -88t-85 -78q-29 -31 -49 -56.5t-41.5 -48t-48.5 -42t-65 -35.5h-5v-643z" />
194
<glyph unicode="&#xf0a5;" horiz-adv-x="1916" d="M0 821q0 51 18.5 94t50 75t75.5 49.5t94 17.5l376 2h134q-23 47 -38.5 98t-15.5 105q0 57 19.5 112.5t54.5 98.5t85 68.5t112 25.5q78 0 109.5 -34t43.5 -84t17.5 -106.5t29.5 -99.5q23 -41 65 -74.5t77 -68.5q16 -18 33.5 -37t33.5 -39q18 -23 33.5 -39t42.5 -31h348 q49 0 84 -34.5t35 -83.5v-643q0 -49 -35 -84t-84 -35h-375q-61 0 -123.5 -16.5t-128 -36t-136 -36t-148.5 -16.5q-70 0 -132.5 17.5t-109.5 52.5t-75.5 90t-28.5 131q-39 45 -56.5 103.5t-7.5 117.5q-29 47 -39 107h-200q-49 0 -93.5 17.5t-76 49t-50 74.5t-18.5 92z M121 821q0 -51 32.5 -81.5t84.5 -30.5q90 0 178 -1t178 -1q-14 -14 -26.5 -35t-12.5 -43q0 -74 59 -123q-20 -29 -20 -68q0 -37 18.5 -73.5t53.5 -53.5q-2 -12 -3 -24.5t-1 -26.5q0 -49 19 -82t50 -52.5t72 -27.5t84 -8q70 0 137.5 16.5t134 35t133 35t135.5 16.5v643h-4 q-41 16 -66.5 35.5t-47 42t-42 48t-48.5 56.5q-41 41 -85 78t-73 88q-29 53 -39 117.5t-23 123.5q-2 8 -3 12.5t-9 8.5q-4 2 -11 2h-11q-37 0 -65 -17.5t-46 -44t-28.5 -59.5t-10.5 -65q0 -49 15.5 -90.5t34 -79t34.5 -74.5t16 -78q-170 0 -337.5 -1t-339.5 -1 q-51 0 -84 -32t-33 -85zM1524 276q0 -35 23.5 -57t56.5 -22q35 0 57 22.5t22 56.5q0 33 -22.5 56.5t-56.5 23.5q-33 0 -56.5 -23.5t-23.5 -56.5z" />
195
<glyph unicode="&#xf0a6;" horiz-adv-x="1597" d="M0 602q0 61 25.5 111.5t68.5 85.5t98.5 54t112.5 19q53 0 104.5 -15t98.5 -38v133l2 377q0 49 17.5 93t49 76t74.5 50.5t94 18.5q49 0 92.5 -18.5t75 -50.5t49 -76t17.5 -93v-201q59 -10 106 -38q59 10 118 -7.5t104 -56.5q76 0 131 -28.5t90 -76t52 -109.5t17 -132 q0 -78 -16 -148.5t-35.5 -136t-36 -128t-16.5 -124.5v-374q0 -49 -35 -84t-84 -35h-643q-49 0 -84 34.5t-35 84.5v348q-14 27 -30.5 42t-38.5 34q-20 16 -39 33.5t-37 33.5q-35 35 -68.5 77t-74.5 64q-43 25 -99.5 30t-106.5 17.5t-84 44t-34 109.5zM120 591q-1 -7 1 -11 q4 -8 8 -9.5t12 -3.5q59 -12 124 -22t118 -39q51 -29 88 -73t78 -85q31 -29 56.5 -49t48 -41.5t42 -48.5t35.5 -66v-4h643q0 70 16.5 136.5t35 133t35 133t16.5 138.5q0 43 -8.5 84t-28 71.5t-52 50t-81.5 19.5q-14 0 -26.5 -1t-25.5 -3q-16 35 -53 53.5t-74 18.5 q-39 0 -67 -21q-49 59 -123 60q-23 0 -43.5 -12.5t-34.5 -26.5q0 90 -1 178t-1 178q0 51 -30.5 84t-82.5 33q-53 0 -84.5 -33t-31.5 -84q0 -172 -1 -340t-1 -338q-41 0 -78 16.5t-75 35t-79 34t-90 15.5q-33 0 -65.5 -10.5t-59 -29t-43 -46t-16.5 -64.5q0 -4 -1 -11z M1210 -37q0 -35 23.5 -57.5t56.5 -22.5q35 0 57.5 22.5t22.5 57.5q0 33 -22.5 56.5t-57.5 23.5q-33 0 -56.5 -23.5t-23.5 -56.5z" />
196
<glyph unicode="&#xf0a7;" horiz-adv-x="1597" d="M0 584q0 78 34 109.5t84 44t106.5 17.5t99.5 29q41 23 74.5 65t68.5 77q18 16 36.5 33.5t39.5 33.5q23 18 39 33.5t30 42.5v348q0 49 35 84t84 35h643q49 0 84 -35t35 -84v-375q0 -61 16.5 -123.5t36 -128t35.5 -136t16 -148.5q0 -70 -17 -132.5t-52 -109.5t-90.5 -75.5 t-130.5 -28.5q-45 -39 -103.5 -56.5t-118.5 -7.5q-47 -29 -106 -39v-200q0 -49 -17.5 -93.5t-49 -76t-74.5 -50t-93 -18.5q-51 0 -94 18.5t-74.5 50t-49 75.5t-17.5 94l-2 376v134q-47 -23 -98.5 -38.5t-104.5 -15.5q-57 0 -112.5 19.5t-98.5 54.5t-68.5 85t-25.5 112z M120 595q1 -7 1 -11q0 -37 16.5 -64.5t43 -46t59 -29t65.5 -10.5q49 0 90 15.5t79 34t75 35t78 16.5q0 -170 1 -338t1 -340q0 -51 31.5 -84t84.5 -33q51 0 82 32.5t31 84.5q0 90 1 178t1 178q14 -14 34.5 -26.5t43.5 -12.5q74 0 123 59q29 -20 67 -20q37 0 74 18.5t53 53.5 q12 -2 24.5 -3t27.5 -1q49 0 81.5 19t52 50t28 72t8.5 84q0 70 -16.5 137.5t-35 134t-35 133t-16.5 136.5h-643v-5q-16 -41 -35.5 -66.5t-42 -47t-48 -42t-56.5 -48.5q-41 -41 -78 -85t-88 -73q-53 -29 -117.5 -39t-124.5 -23l-12 -3t-8 -9q-2 -4 -1 -11zM1210 1223 q0 -33 23.5 -56.5t56.5 -23.5q35 0 57.5 23.5t22.5 56.5q0 35 -22.5 57.5t-57.5 22.5q-33 0 -56.5 -23t-23.5 -57z" />
197
<glyph unicode="&#xf0a8;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -29 20 -49l490 -490q20 -20 48.5 -20t49.5 20l74 74q20 20 20 48 t-20 50l-246 246h612q29 0 49.5 19.5t20.5 48.5v104q0 29 -20.5 49.5t-49.5 20.5h-612l246 246q20 20 20 48.5t-20 49.5l-74 74q-20 20 -48 20t-50 -20l-490 -490q-20 -20 -20 -49z" />
198
<glyph unicode="&#xf0a9;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 717q0 -29 20.5 -49.5t48.5 -20.5h613l-246 -246q-20 -20 -20.5 -48.5 t20.5 -49.5l74 -74q20 -20 47.5 -20t50.5 20l489 490q20 20 20.5 49t-20.5 49l-489 490q-20 20 -49 20t-49 -20l-74 -74q-20 -20 -20.5 -48t20.5 -50l246 -246h-613q-29 0 -49 -19.5t-20 -48.5v-104z" />
199
<glyph unicode="&#xf0aa;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 768q0 -29 20 -49l74 -74q20 -20 48 -20t50 20l246 246v-612q0 -29 19.5 -49.5 t47.5 -20.5h105q29 0 49.5 20.5t20.5 49.5v612l245 -246q20 -20 49 -20t50 20l73 74q20 20 20.5 48t-20.5 50l-489 490q-20 20 -49 20t-49 -20l-490 -490q-20 -20 -20 -49z" />
200
<glyph unicode="&#xf0ab;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5t-311.5 62.5t-254 171t-171 254t-62.5 311.5zM240 769q0 -28 20 -50l490 -490q20 -20 48.5 -20t49.5 20l489 490q20 20 20.5 49 t-20.5 49l-73 74q-20 20 -48 20t-51 -20l-245 -246v612q0 29 -19.5 49.5t-48.5 20.5h-104q-29 0 -49.5 -20.5t-20.5 -49.5v-612l-246 246q-20 20 -49 20t-49 -20l-74 -74q-20 -20 -20 -48z" />
201
<glyph unicode="&#xf0ac;" horiz-adv-x="1597" d="M0 768q0 162 63.5 307.5t173 255t254 173t308.5 63.5q162 0 307 -63.5t254.5 -173t173 -255t63.5 -307.5q0 -164 -63.5 -308.5t-173 -254t-254.5 -173t-307 -63.5q-164 0 -308.5 63.5t-254 173t-173 254t-63.5 308.5zM186 1141h4q4 0 12.5 3t8.5 -9q0 -4 -3 -10.5 t11 -6.5q4 0 5 6t3 0l4 -16v-2q0 -4 -5 -6t-3 -6q4 -4 9.5 -4h9.5l4 2l2 2q0 -6 6 -8.5t10 -2.5h2q0 -2 -4 -4t0 -6l23 -4v-2l14 -29q0 -4 -3 -10t-7 -6t-3 3t1 7t-2 7t-15 3q-2 0 -5 -1t-1 -5l12 -26l3 -2l2 -2q-10 0 -13.5 -24t-3.5 -34l4 -18l2 -6v-4l-4 -19l29 -43h6 q2 -4 -2 -8t-2 -8l8 -8q0 -10 4 -14.5t13 -12.5q-2 -12 20.5 -22.5t28.5 -14.5q8 -23 20 -45.5t29 -38.5l2 -14q0 -2 -5 -4t-1 -6l16 -7q4 4 10.5 -8t10.5 -16l-2 -6l12 -17l6 -2l4 8q-4 10 -14 26.5t-20.5 32t-17.5 28t-7 14.5t-2 16t-4 17q6 -4 15 -7.5t15 -7.5 q4 -25 19.5 -40t27.5 -34q-4 -4 0 -5t7 -1q4 -4 4 -14q14 -16 36.5 -44t22.5 -44v-2l-4 -14q6 -16 20.5 -25.5t28.5 -15.5h4q20 -10 41 -21.5t43 -19.5l23 14q8 -2 17 -10t20.5 -18.5t27 -19.5t35.5 -11q14 10 14 -5v-4l25 -30l4 -15q10 -6 20.5 -15t16.5 -20h4 q10 0 16.5 -9t16.5 -9q6 0 6 6q0 14 2 18.5t5 5.5t6 1t3 4l-4 6q-4 0 -6 -5t-6 -1l-14 -8l-17 4l-24 41l8 57q2 4 -7.5 9t-5.5 10q-14 8 -34 8q-4 0 -20.5 -3t-16.5 3t3 16t7 21.5t6 19.5t2 10l13 27l-3 4l-16 4q-4 0 -13 -6t-17.5 -14.5t-14.5 -16.5t-6 -14l-45 -10 q-14 0 -23 12q-4 16 -17 35.5t-13 34.5q0 23 8 43t-6 43q2 0 5 2t1 6l12 14l2 2l2 -2q14 10 37 7t29 14l16 -13q4 -2 9 4.5t5 10.5l-8 4l39 10l2 -6l19 2l22 -14q4 0 8 5t9 1l20 -21q-4 -8 -1 -12t3 -8q0 -6 10.5 -27.5t18.5 -21.5q10 0 9 13t-1 17q0 20 -8 39t-15 39v6 q0 10 12.5 17.5t12.5 9.5q10 8 22.5 16t18.5 19l8 16v10h6t4 6q0 2 -3 3.5t-7 5.5q-4 2 -8 6l6 4q4 6 6 15t-2 16l15 8q-2 -6 4 -8t10 0l10 16q-4 10 -5 7t5 7q10 4 19.5 9.5t19.5 5.5q2 -2 4 -2q6 0 6 2q0 10 -4 12l12 25q14 0 21 12l18 2q6 2 6 8v2l35 10l4 11l-10 14 q2 0 2 4t-4 6t-7 4t-7 4l-4 -2l4 2h6h13t9 9q0 12 -14 12q-18 0 -41.5 -8.5t-32.5 -28.5l-14 -8l18 18l3 6q0 4 -9.5 5.5t-5.5 1.5q18 0 27.5 4t15.5 9t12.5 10t18.5 9q23 -4 44 -2t44 2q6 4 12 8.5t8 10.5l23 4q4 -4 12 2t8 10q0 10 -11 13t-11 14q0 2 1 6t-3 4 q-6 0 -19.5 -6t-19.5 -10q-4 -2 -5 1t-1 7l2 -2l8 4l23 8l4 4q0 6 -7.5 8t-11.5 2t-12 -3t-8 3l2 4q-12 10 -21.5 22.5t-9.5 16.5t1 8.5t-5 4.5q-4 0 -7 -1t-3 5q0 4 -5 17t-14 13l-8 -8q0 -6 -6 -9t-6 -7h-4l-21 -12q-2 4 -5 2t-7 -2h-2l-2 -2q8 0 7 9t-7 9l-16 -4 q-4 0 -4.5 1t2 4t4.5 7t0 8t-6.5 1t-4.5 1h6l5 5q2 2 -1.5 7t-5.5 7l-22 4l-14 12q-2 -2 -7.5 3t-9.5 7l-16 -6l-39 9q-4 0 -8 -2.5t-4 -6.5t4 -6t4 -6t3 -21.5t-5 -13.5l-10 -14q2 -4 7 -7t10 -7.5t9 -10.5t2 -18l-45 -31v-4q0 -8 4 -15t8 -18q10 -4 9.5 -7t-7 -6t-12.5 -6 t-6 -5t-4 -2h-8h-4q0 2 2 3t2 5l-19 12v-2l-8 16q4 10 1 14.5t-3 10.5q0 16 -14.5 16t-30.5 -4q4 2 -1 6.5t-7 4.5q-16 0 -38 14t-36 14q-6 0 -14 -2t-15 -4q4 2 5 10l-13 23l-2 2q-6 0 -14 -5t-8 9q0 2 2 4t0 4q-2 12 5 20.5t11 18.5q4 4 4 8t4 4q8 0 15.5 4.5t17.5 6.5 l2 6q0 4 -21.5 7t-21.5 7l2 2q20 -6 30.5 -7t17.5 2t16.5 8t29.5 14q0 4 -21.5 8t-27.5 8h12q4 0 10.5 -2t10.5 -4q0 -4 6 -5t10 -1l15 10v6l-4 6l22 4q-2 2 1 4t5 2q6 0 12.5 -6t8.5 -6l20 8q-2 2 5.5 3t4.5 6l-14 16q-2 0 -3 3t1 3q10 0 6 10q-8 4 -17 9.5t-20 5.5 q-4 0 -9 -2t-5 -7q0 -4 5 -4t7 -4q4 -4 -2 -4t-6 -2q-8 0 -15 -12t-18 -17q-4 0 -3 2.5t-1 4.5q-2 4 -7 5t-5 5t5 13t-13 9q-8 0 -11.5 -6t-7.5 -12l-22 25l-17 2q0 8 3.5 14t-9.5 16q-6 4 -11 7.5t-11 3.5q-2 0 -9.5 -4.5t-13.5 -8.5t-6 -8t10 -4h-2q-6 0 -6 -8 q0 -2 9.5 -5t13.5 -3q4 2 6 -1.5t6 -3.5l8 3v-5q-2 -2 -2 -4l2 -8l-20 -10q-2 -2 -4 -2t-5 -2q0 -6 5.5 -12.5t-11.5 -6.5l-6 4q0 8 -16.5 13.5t-40 7.5t-47 3t-35.5 1l-33 -10l8 -19q-4 0 -5 -3t3 -5q-4 4 -15 14.5t-15 10.5l-17 4q-35 -2 -78 -33t-84 -72t-75.5 -84 t-53.5 -71zM471 674h2h-2zM487 1413q14 2 25.5 8t24.5 6l6 -4q6 -2 11 -2t9 -4q8 2 17 -2l6 4v8l-2 5l6 -2q6 0 12 10l-2 4q-4 2 -10 4t-10 2t-16.5 -5t-28 -11.5t-29.5 -12.5t-19 -8zM918 86q0 -4 3 -9t3 -9q0 -5 -2 -7q115 20 217 74.5t182 140.5h-2q-8 -4 -14 0l-5 -4 l-12 4h-4l-4 -8l2 8q-6 8 -14 15l-4 2q-4 0 -4 -8q2 16 -8.5 27.5t-26.5 11.5q0 -2 -2 -2h-4l-5 4h7l4 12l-11 8l-2 -2q-14 2 -20 16l-4 2l-2 -2l-4 -2q-12 -4 -21 -8q-12 4 -18 10l-27 -2q0 6 -4 12.5t-12 6.5q-10 0 -20.5 -2t-14.5 -13q0 -4 2 -8t4 -6v-8l-2 -6l-4 -2h-2 l-6 16l6 10q-2 4 -2 10.5t-2 10.5l-2 4h-6l-15 -10h-8l-4 -4q-2 -2 -2 -4t-2 -3l-2 3h-8q-8 -8 -9 -19l3 -4l-9 -6l-2 -4l-6 -4q0 -2 -1 -2t-1 -2v-2v-9l-2 -2v4l-2 2q-2 12 -23 21h-6v-4q2 -6 8.5 -10.5t10.5 -8.5q-2 2 -5 1t-3 -3v-4l14 -20v-39l4 -10q-4 -16 -16 -27v2 l-4 -2l-3 -2l-2 -10l2 -2v-2l-4 4l-2 -13l-12 -4q-6 -4 -5 -11t-5 -11l2 -4l-6 -6q0 -4 -1 -6.5t-1 -6.5l2 -14l6 -4l4 4l2 6l2 -12q0 -4 -4 -8q-6 -4 -12 -9.5t-6 -15.5z" />
202
<glyph unicode="&#xf0ad;" horiz-adv-x="1593" d="M8 242q0 33 12.5 62.5t34.5 51.5l609 609q-16 66 -17 122q0 98 38 186.5t102.5 153t151.5 102.5t185 38q94 0 181.5 -36t154.5 -101l-442 -162l-43 -236l184 -153l443 159q-10 -92 -50.5 -171t-104 -137t-145 -91t-174.5 -33q-61 0 -127 17l-606 -607q-47 -47 -112 -47 q-68 0 -115 47q-23 23 -50.5 47.5t-52 52t-41 58.5t-16.5 68zM203 242q0 -33 22.5 -56.5t57.5 -23.5q33 0 56 23.5t23 56.5q0 35 -23.5 57.5t-55.5 22.5q-35 0 -57.5 -23t-22.5 -57z" />
203
<glyph unicode="&#xf0ae;" d="M0 76v217q0 31 22.5 53.5t53.5 22.5h1689q33 0 55.5 -22.5t22.5 -53.5v-217q0 -31 -22.5 -53.5t-55.5 -22.5h-1689q-31 0 -53.5 22.5t-22.5 53.5zM0 662v215q0 31 22.5 53t53.5 22h1689q33 0 55.5 -22.5t22.5 -52.5v-215q0 -33 -22.5 -55.5t-55.5 -22.5h-1689 q-31 0 -53.5 22.5t-22.5 55.5zM0 1243v217q0 31 22.5 53.5t53.5 22.5h1689q33 0 55.5 -22.5t22.5 -53.5v-217q0 -31 -22.5 -53.5t-55.5 -22.5h-1689q-31 0 -53.5 22.5t-22.5 53.5zM752 692h999v154h-999v-154zM1059 109h692v153h-692v-153zM1366 1274h385v153h-385v-153z " />
204
<glyph unicode="&#xf0b0;" horiz-adv-x="1566" d="M0 1458q0 33 22.5 55.5t55.5 22.5h1411q33 0 55.5 -22.5t22.5 -55.5t-23 -55l-565 -565v-791q0 -33 -22.5 -55.5t-55.5 -22.5t-55 23l-236 235q-23 23 -22 56v555l-565 565q-23 23 -23 55z" />
205
<glyph unicode="&#xf0b1;" d="M0 115v512h713q-2 -6 -2 -19v-153q0 -55 38.5 -95.5t96.5 -40.5h153q55 0 94.5 40t39.5 96v153q0 12 -3 19h713v-512q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM0 743v371q0 47 34 81t81 34h424v231q0 31 21.5 53.5t53.5 22.5h615q33 0 55.5 -22.5 t22.5 -53.5v-231h422q47 0 80.5 -34t33.5 -81v-371h-1843zM692 1229h461v153h-461v-153zM825 455v153q0 18 21 19h153q18 0 19 -19v-153q0 -18 -19 -19h-153q-20 0 -21 19z" />
206
<glyph unicode="&#xf0b2;" horiz-adv-x="1536" d="M0 80v477q0 51 24.5 61.5t59.5 -24.5l162 -162l340 338l-338 338l-164 -164q-35 -35 -59.5 -25.5t-24.5 60.5v477q0 31 23 57q27 23 57 23h477q51 0 61.5 -24.5t-24.5 -59.5l-160 -158l338 -338l332 334l-162 162q-35 35 -24.5 59.5t61.5 24.5h477q33 0 55 -23 q25 -25 25 -57v-477q0 -51 -24.5 -61.5t-59.5 24.5l-162 162l-334 -334l338 -336l158 160q35 35 59.5 24.5t24.5 -61.5v-477q0 -35 -25 -55q-23 -25 -55 -25h-477q-51 0 -61.5 24.5t24.5 59.5l166 166l-336 336l-340 -340l162 -162q35 -35 24.5 -59.5t-61.5 -24.5h-477 q-31 0 -55 25q-25 20 -25 55z" />
207
<glyph unicode="&#xf0c0;" horiz-adv-x="1880" d="M0 852v152q0 18 1 47.5t10 56.5t29.5 46.5t57.5 19.5q-45 29 -71.5 75.5t-26.5 104.5q0 43 16.5 82t46 68.5t68.5 46t82 16.5q45 0 84 -16.5t67.5 -46t46 -68.5t17.5 -82q0 -57 -27.5 -104t-72.5 -76q37 0 57.5 -19.5t29.5 -46.5t11 -56.5t2 -47.5v-152 q-14 -8 -23.5 -18.5t-27.5 -10.5h-328q-16 0 -26.5 10.5t-22.5 18.5zM158 57v387q0 78 45 138.5t98 109.5q10 10 25.5 21.5t33.5 15.5q18 6 41 7t45 5q61 10 130 19.5t135 19.5q-90 57 -144.5 151.5t-54.5 207.5q0 88 34 166.5t92 136t136 91.5t166 34t166 -34t136 -91.5 t92 -136t34 -166.5q0 -113 -54 -207t-145 -152q66 -10 134.5 -19t130.5 -20q23 -4 45 -5t41 -7q18 -4 33.5 -15.5t27.5 -21.5q66 -59 103.5 -116.5t37.5 -131.5v-387q-12 -6 -20 -13t-18.5 -14t-23.5 -14.5t-36 -15.5h-1368q-35 0 -54.5 22.5t-43.5 34.5zM1452 852v152 q0 18 2 47.5t11.5 56.5t30 46.5t56.5 19.5q-45 29 -72.5 75.5t-27.5 104.5q0 43 16.5 82t46 68.5t68.5 46t84 16.5q43 0 82 -16.5t68.5 -46t46 -68.5t16.5 -82q0 -57 -26.5 -104t-71.5 -76q37 0 56.5 -19.5t28.5 -46.5t11 -56.5t2 -47.5v-152q-12 -8 -22.5 -18.5 t-26.5 -10.5h-328q-18 0 -27.5 10.5t-23.5 18.5z" />
208
<glyph unicode="&#xf0c1;" horiz-adv-x="1597" d="M0 1137q0 88 34 166.5t92 137t136 92.5t168 34q86 0 166 -33t139 -92q8 -8 21.5 -20.5t26 -25t21.5 -25.5t9 -25q0 -18 -12 -31q-6 -8 -25 -12q-47 -10 -88 -22.5t-86 -31.5q-4 -4 -16 -4t-25.5 10.5t-31 21.5t-42 21.5t-57.5 10.5q-35 0 -66.5 -13.5t-54 -37t-36 -54 t-13.5 -67.5q0 -41 17.5 -75t43 -63.5t56.5 -56.5t57 -53l180 -178q23 -25 54.5 -37t66.5 -12q43 0 73 16t46 16q12 0 39 -21.5t55.5 -49t50 -55t21.5 -42.5q0 -29 -36 -51t-83 -38.5t-94 -26t-72 -9.5q-86 0 -164.5 33t-140.5 92l-303 305q-61 59 -94 139.5t-33 166.5z M578 1010q0 29 35.5 51t82.5 38.5t94 26t72 9.5q86 0 166 -33t139 -92l303 -305q61 -59 94 -139.5t33 -166.5q0 -90 -33.5 -167.5t-92 -136t-137.5 -92.5t-167 -34q-86 0 -165.5 34t-139.5 93q-8 8 -21.5 19.5t-25.5 25t-21.5 26.5t-9.5 26q0 18 13 28q6 8 24 12 q47 10 88 22.5t86 33.5q12 4 17 4q12 0 25.5 -10.5t30.5 -21.5t41 -21.5t58 -10.5q72 0 121 49.5t49 120.5q0 41 -17 76t-44 63.5t-56.5 55.5t-56.5 53l-178 180q-53 49 -123 50q-43 0 -72.5 -17.5t-46.5 -17.5q-12 0 -38.5 21.5t-55 49t-50 56t-21.5 41.5z" />
209
<glyph unicode="&#xf0c2;" horiz-adv-x="1880" d="M0 391q0 70 23.5 132.5t64.5 113.5t96.5 86t120.5 51q-33 41 -51 90t-18 105q0 66 24.5 123t66.5 99t99 66.5t123 24.5q113 0 196 -72q18 76 61.5 141.5t103 113.5t133 75t157.5 27q96 0 182 -37t149.5 -100.5t100.5 -149.5t37 -182q0 -57 -13 -109.5t-36 -99.5 q117 -59 188.5 -170t71.5 -248q0 -98 -37 -183t-101.5 -149.5t-149.5 -101.5t-183 -37h-1018q-80 0 -151.5 30.5t-125 84t-84 125t-30.5 151.5z" />
210
<glyph unicode="&#xf0c3;" horiz-adv-x="1536" d="M16 72q-39 72 7 141l516 803v366h-78q-33 0 -54.5 22.5t-21.5 55.5q0 31 21.5 53.5t54.5 22.5h614q33 0 55.5 -22.5t22.5 -53.5q0 -33 -22.5 -55.5t-55.5 -22.5h-76v-368l514 -801q45 -70 7 -141q-18 -35 -51 -53.5t-70 -18.5h-1262q-37 0 -69.5 18.5t-51.5 53.5z M377 479h782l-313 490v413h-154v-411z" />
211
<glyph unicode="&#xf0c4;" horiz-adv-x="1916" d="M0 180q0 86 44 168t113.5 146.5t154.5 103.5t169 39h13q18 25 57 60.5t63 58.5v12v12q-12 12 -28.5 27.5t-35 32t-33.5 32t-23 27.5q-84 -6 -172.5 33t-160 105.5t-116.5 150.5t-45 168q0 98 62.5 154.5t160.5 56.5q82 0 168 -39t155.5 -103.5t114 -146.5t44.5 -168 q0 -10 -1.5 -21.5t-3.5 -21.5l86 -76l34 17q34 18 90.5 46.5t129 65.5t148.5 76t150.5 77t135 69.5t102.5 52t52 26.5q16 8 37 9q14 0 39 -4.5t52.5 -9.5t53 -11t41.5 -8q29 -4 47.5 -26.5t18.5 -51.5q0 -43 -35 -66l-700 -485l700 -485q35 -23 35 -66q0 -29 -18.5 -51.5 t-47.5 -26.5q-16 -4 -41.5 -9t-53 -10t-52.5 -9.5t-39 -4.5q-10 0 -18.5 2.5t-18.5 6.5l-842 430l-86 -76q2 -10 3.5 -21.5t1.5 -21.5q0 -86 -44.5 -168t-114 -146.5t-155.5 -103.5t-168 -39q-98 0 -160.5 56.5t-62.5 154.5zM197 1358q0 -23 11 -49.5t27.5 -51t35 -45 t34.5 -34.5q35 -29 82 -54.5t94 -25.5q10 0 27 4v6q0 23 -11.5 48.5t-27.5 50t-34.5 46t-35.5 35.5q-35 29 -82 54.5t-94 25.5q-14 0 -26 -4v-6zM199 180q0 -6 2 -10q6 0 11 -1t11 -1q41 0 90 24.5t92.5 61.5t72 83t28.5 89q0 4 -1 5t-1 5q-8 2 -23 2q-41 0 -90 -24.5 t-92 -61.5t-71.5 -83t-28.5 -89zM586 616q53 -25 82 -69l108 96l45 -27l1016 703l-172 31l-975 -498l6 -127zM586 920l35 -35q12 29 36.5 41t53.5 26l-43 37q-29 -45 -82 -69zM741 768q0 35 23.5 57.5t58.5 22.5q33 0 55.5 -22.5t22.5 -57.5q0 -33 -22.5 -56.5t-57.5 -23.5 q-33 0 -56.5 23.5t-23.5 56.5zM903 575l762 -389l172 31l-727 502z" />
212
<glyph unicode="&#xf0c5;" horiz-adv-x="1597" d="M0 385v707q0 33 16.5 70.5t38.5 60.5l258 258q23 23 61 39t70 16h463q31 0 53.5 -22.5t22.5 -53.5v-250q16 8 35.5 13.5t40.5 5.5h463q31 0 53 -22.5t22 -53.5v-1075q0 -33 -22.5 -55.5t-52.5 -22.5h-830q-33 0 -55.5 22.5t-22.5 55.5v229h-536q-33 0 -55.5 22.5 t-22.5 55.5zM154 461h460v293q0 45 10.5 87t45.5 74l159 162v305h-278v-321q0 -31 -22.5 -53.5t-53.5 -22.5h-321v-524zM186 1139h211v211zM768 154h676v921h-279v-321q0 -31 -22.5 -53.5t-52.5 -22.5h-322v-524zM801 831h211v211z" />
213
<glyph unicode="&#xf0c6;" horiz-adv-x="1470" d="M0 1128q0 90 35 170t94 139.5t139 94.5t170 35q88 0 169 -34t143 -95l655 -656q12 -12 12 -28q0 -10 -11 -26.5t-26.5 -32t-32 -27t-26.5 -11.5q-16 0 -29 13l-655 655q-41 41 -92 61.5t-107 20.5q-57 0 -108 -21.5t-89 -59.5t-59.5 -89t-21.5 -109q0 -55 20.5 -106 t61.5 -92l745 -746q55 -55 133 -55q39 0 74 15.5t60.5 41t41 60.5t15.5 73q0 78 -56 134l-563 563q-29 29 -69 28q-41 0 -71 -29.5t-30 -70.5t29 -70l475 -475q12 -12 12 -28q0 -10 -11 -26.5t-26.5 -32t-32 -27t-26.5 -11.5q-16 0 -29 13l-475 473q-35 37 -55.5 85 t-20.5 99q0 53 20.5 100.5t55.5 83t83.5 56t101.5 20.5q51 0 99 -20.5t85 -55.5l561 -563q102 -102 102 -246q0 -74 -27.5 -137t-74.5 -110t-110.5 -75t-137.5 -28q-143 0 -246 103l-745 745q-61 61 -95 142t-34 169z" />
214
<glyph unicode="&#xf0c7;" horiz-adv-x="1536" d="M0 154v1228q0 63 45 108.5t109 45.5h1075q63 0 108 -45l154 -154q45 -45 45 -108v-1075q0 -63 -45 -108.5t-109 -45.5h-1228q-63 0 -108.5 45t-45.5 109zM154 846h1075v536h-1075v-536zM846 922v385h190v-385h-190z" />
215
<glyph unicode="&#xf0c8;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-1150q-80 0 -136.5 56.5t-56.5 136.5z" />
216
<glyph unicode="&#xf0c9;" d="M0 78v215q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-215q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM0 659v218q0 31 22.5 53t55.5 22h1689q31 0 53.5 -22.5t22.5 -52.5v-218q0 -31 -22.5 -53t-53.5 -22h-1689 q-33 0 -55.5 22.5t-22.5 52.5zM0 1243v217q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-217q0 -31 -22.5 -53.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 53.5z" />
217
<glyph unicode="&#xf0ca;" d="M0 211q0 39 15.5 75t41 61.5t60.5 40.5t76 15q39 0 73.5 -15t61 -40.5t42 -61.5t15.5 -75q0 -41 -15.5 -76t-42 -60.5t-61.5 -41t-73 -15.5q-80 0 -136.5 56.5t-56.5 136.5zM0 768q0 39 15.5 75t41 61.5t60.5 41t76 15.5q39 0 73.5 -15.5t61 -41t42 -61.5t15.5 -75 q0 -41 -15.5 -76t-42 -60.5t-61.5 -41t-73 -15.5q-41 0 -76 15.5t-60.5 41t-41 60.5t-15.5 76zM0 1325q0 39 15.5 75t41 61.5t60.5 41t76 15.5q39 0 73.5 -15.5t61 -41t42 -61.5t15.5 -75q0 -41 -15.5 -76t-42 -60.5t-61.5 -40.5t-73 -15q-41 0 -76 15t-60.5 40.5t-41 60.5 t-15.5 76zM522 154v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1167q-33 0 -55.5 21.5t-22.5 54.5zM522 711v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5 h-1167q-33 0 -55.5 22.5t-22.5 55.5zM522 1268v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1167q-33 0 -55.5 22.5t-22.5 55.5z" />
218
<glyph unicode="&#xf0cb;" d="M0 594q0 55 30.5 90t68.5 61.5t69 50t31 56.5q0 29 -17.5 44t-46.5 15q-25 0 -44 -15t-34 -36l-53 37q23 39 58.5 60.5t78.5 21.5q55 0 96.5 -32t41.5 -91q0 -49 -30 -80t-67 -55.5t-67.5 -47t-30.5 -55.5h143v54h66v-115h-289q-2 10 -3 18.5t-1 18.5zM4 55l37 54 q6 -4 12 -10.5t15 -10.5q12 -8 29.5 -14t37.5 -6q35 0 55.5 18t20.5 47q0 31 -23.5 48.5t-58.5 17.5h-23l-16 37l90 108l6 6t7 6l4 6h-9q-4 -2 -14 -2h-92v-49h-66v111h263v-53l-97 -115q41 -6 74 -35t33 -82t-38 -95t-110 -42q-35 0 -60.5 9t-41.5 20q-25 14 -35 26z M14 1434l105 102h67v-360h93v-62h-259v62h93v258v8h-2q-10 -16 -22.5 -28.5t-29.5 -27.5zM522 154v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -54.5t-53.5 -21.5h-1167q-33 0 -55.5 21.5t-22.5 54.5zM522 711v114q0 33 22.5 55.5 t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1167q-33 0 -55.5 22.5t-22.5 55.5zM522 1268v114q0 33 22.5 55.5t55.5 22.5h1167q31 0 53.5 -22.5t22.5 -55.5v-114q0 -33 -22.5 -55.5t-53.5 -22.5h-1167q-33 0 -55.5 22.5t-22.5 55.5z " />
219
<glyph unicode="&#xf0cc;" horiz-adv-x="1536" d="M0 692v152h1536v-152h-1536zM268 1114q0 117 44 202t118 141t170 83t203 27q88 0 176 -20.5t172 -49.5q20 -72 27.5 -156t7.5 -157q0 -10 -1 -22.5t-3 -24.5l-13 -2q-23 2 -50 2t-50 6q-18 59 -44 114.5t-62.5 98.5t-88 68.5t-122.5 25.5q-49 0 -94.5 -13.5t-80 -40 t-56 -66.5t-21.5 -93q0 -59 28.5 -102t75.5 -75t105.5 -54.5t118 -42t113.5 -39t93 -41.5h-696q-33 53 -51.5 110.5t-18.5 120.5zM285 310v63v45l110 2q31 -72 64 -134.5t76 -108.5t104 -71.5t152 -25.5q55 0 110 16.5t100.5 48t74 78.5t28.5 109q0 76 -49 128t-119 88 t-146.5 59.5t-132.5 45.5h617q8 -16 15 -38.5t10.5 -48t5.5 -50t2 -43.5q0 -131 -47.5 -226t-127 -156.5t-186 -91.5t-225.5 -30q-53 0 -93 4t-78 12.5t-78 20.5t-93 29q-12 4 -38 12t-36 16q-8 6 -12 50.5t-6 96.5t-2 100z" />
220
<glyph unicode="&#xf0cd;" horiz-adv-x="1536" d="M0 0v154h1536v-154h-1536zM0 1532q10 2 19.5 2h19.5q72 0 140.5 -5t137.5 -5q100 0 200.5 2t199.5 6q-4 -16 -1 -36.5t3 -37.5v-8q-66 -10 -108 -7t-65.5 -5t-32.5 -39t-9 -109q0 -137 4 -272t10 -273q8 -147 88 -237t238 -90q125 0 207 29.5t131 88t69.5 146.5t20.5 203 q0 20 -2 65t-5 102.5t-8.5 119t-11.5 113.5t-13 89t-15 45q-33 33 -78 33q-6 0 -23.5 -1t-36 -1t-34 1t-21.5 3l2 82q82 4 163 -3t165 -7q39 0 77.5 5t79.5 5q4 0 9.5 -1t9.5 -1q2 -12 4 -24.5t2 -24.5t-4 -29q-23 -6 -52.5 -8t-58 -7t-48 -16.5t-19.5 -38.5q0 -14 1 -27 t3 -28q2 -6 5 -38.5t5 -79t4 -101.5t4 -103t3 -85t1 -50q0 -37 -2 -80.5t-8 -89t-17.5 -87.5t-29.5 -74q-41 -68 -104.5 -114t-137 -72.5t-153.5 -38t-154 -11.5q-72 0 -144.5 9.5t-140.5 35.5q-96 35 -151 88.5t-84 121t-36 148.5t-7 173v321v42t-1 62.5t-5 60.5t-10 38 q-12 16 -37 23.5t-53.5 10.5t-56.5 3t-44 4z" />
221
<glyph unicode="&#xf0ce;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h460v335h-460v-335zM154 565h460v332h-460v-332zM154 975h460v332h-460v-332zM692 154h461v335h-461v-335zM692 565h461v332h-461v-332z M692 975h461v332h-461v-332zM1229 154h461v335h-461v-335zM1229 565h461v332h-461v-332zM1229 975h461v332h-461v-332z" />
222
<glyph unicode="&#xf0d0;" d="M0 197q0 39 29 61l1579 1247q20 17 47 17q35 0 59 -29q10 -12 29.5 -33.5t38 -44t32 -47.5t13.5 -43q0 -39 -29 -61l-1579 -1248q-20 -16 -47 -16q-37 0 -59 29q-10 12 -30 33.5t-38 44t-31.5 47t-13.5 43.5zM256 922l117 36l37 117l34 -117l119 -36l-119 -37l-34 -117 l-37 117zM373 1229l235 71l72 236l72 -236l235 -71l-235 -72l-72 -235l-72 235zM942 1382l117 37l37 117l37 -117l116 -37l-116 -36l-37 -117l-37 117zM1286 1153l94 -121l369 291l-94 121zM1536 885l117 35l37 118l36 -118l117 -35l-117 -37l-36 -117l-37 117z" />
223
<glyph unicode="&#xf0d1;" d="M0 358v404q0 25 6 51.5t17.5 53t27 51t31.5 40.5l223 222q16 16 41 31.5t51.5 26.5t53 17.5t51.5 6.5h80v198q0 31 22.5 53.5t52.5 22.5h1108q33 0 55.5 -22.5t22.5 -53.5v-1102q0 -31 -22.5 -53t-55.5 -22h-75v-7q0 -63 -25 -119.5t-65.5 -97.5t-97 -65.5t-120.5 -24.5 q-63 0 -119.5 24.5t-97.5 65.5t-65.5 97.5t-24.5 119.5v7h-307v-7q0 -63 -24.5 -119.5t-65.5 -97.5t-97.5 -65.5t-119.5 -24.5t-119.5 24.5t-97.5 65.5t-65.5 97.5t-24.5 119.5v7h-78q-31 0 -53.5 22.5t-22.5 52.5zM193 700h387v369h-78q-10 0 -31.5 -8t-30.5 -17l-223 -221 q-8 -8 -16 -29.5t-8 -31.5v-62zM346 276q0 -47 34 -80.5t81 -33.5t80.5 33.5t33.5 80.5t-33.5 81t-80.5 34t-81 -33.5t-34 -81.5zM1268 276q0 -47 33.5 -80.5t80.5 -33.5t81 33.5t34 80.5t-33.5 81t-81.5 34q-47 0 -80.5 -33.5t-33.5 -81.5z" />
224
<glyph unicode="&#xf0d2;" horiz-adv-x="1597" d="M0 768q0 166 62.5 311.5t171 254t254 171t311.5 62.5t311 -62.5t254 -171t171 -254t62 -311.5t-62 -311.5t-171 -254t-254 -171t-311 -62.5q-59 0 -115.5 8.5t-112.5 24.5q23 35 46.5 80t35.5 92l11 41q6 23 16 66t29 112q23 -41 76 -70.5t118 -29.5q96 0 176 41 t136.5 114.5t88 174t31.5 217.5q0 88 -35.5 171t-102.5 147.5t-160 102t-208 37.5q-141 0 -248.5 -46t-179 -118.5t-107.5 -160.5t-36 -174q0 -104 40 -187.5t124 -117.5q31 -10 41 20q2 10 7 31.5t9 32.5q4 16 1 23t-13 22q-53 59 -53 155q0 76 27.5 145.5t78.5 122t124 84 t163 31.5q80 0 142.5 -23.5t105.5 -64.5t64.5 -96t21.5 -121q0 -86 -18.5 -164t-52.5 -136t-80 -92t-103 -34q-31 0 -57.5 12.5t-45 34t-25.5 49t1 60.5q18 76 44.5 151.5t26.5 130.5q0 49 -26.5 84t-81.5 35q-66 0 -110 -58.5t-44 -146.5q-2 -23 2 -45q2 -18 7.5 -40.5 t15.5 -41.5q-33 -141 -53.5 -225t-30.5 -131q-12 -55 -18 -80q-10 -45 -13.5 -93t-1.5 -89q-104 45 -192 119.5t-151.5 169t-98.5 207t-35 235.5z" />
225
<glyph unicode="&#xf0d3;" horiz-adv-x="1536" d="M0 193v1150q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5t-61.5 -41t-75 -15.5h-829q27 39 59.5 95.5t49.5 117.5l10 41q6 25 17.5 68t29.5 112q20 -41 75.5 -70.5t121.5 -29.5q96 0 176 42t137 115.5 t89 175t32 220.5q0 90 -37 173t-103.5 147.5t-161 102.5t-208.5 38q-143 0 -251 -46.5t-180.5 -120t-108.5 -162.5t-36 -175q0 -104 40 -188.5t124 -118.5q14 -6 25.5 -1t15.5 21q4 10 8 31.5t8 34.5q8 23 -12 43q-23 29 -37 67.5t-14 91.5q0 76 27.5 145.5t79 123t124 85 t164.5 31.5q82 0 144.5 -23.5t105.5 -64.5t64.5 -97t21.5 -124q0 -86 -18.5 -164t-52 -136t-81 -93t-104.5 -35q-31 0 -57.5 12.5t-45 34t-25.5 49t1 60.5q18 78 45 154.5t27 131.5q0 49 -26.5 85t-82.5 36q-66 0 -110.5 -59t-44.5 -150q-2 -23 2 -45q4 -43 22 -84 q-35 -141 -54.5 -226t-29.5 -132q-12 -55 -18 -80q-16 -70 -14 -142.5t6 -117.5h-260q-80 0 -136.5 56.5t-56.5 136.5z" />
226
<glyph unicode="&#xf0d4;" horiz-adv-x="1536" d="M0 342v438q55 -68 120.5 -96.5t153.5 -28.5h36t34 4q-8 -23 -14 -42t-6 -42q0 -41 18 -77.5t43 -67.5q-104 -4 -198.5 -22.5t-186.5 -65.5zM0 1214v129q0 39 15.5 75t41 61.5t60.5 41t76 15.5h1150q80 0 136.5 -56.5t56.5 -136.5v-1150q0 -41 -15.5 -76t-41 -60.5 t-61.5 -41t-75 -15.5h-583q23 39 36 81t13 89q0 70 -21.5 121t-54.5 90t-70.5 69.5t-70.5 57.5t-54.5 53.5t-21.5 59.5q0 49 34 81.5t76 72.5t75.5 99.5t33.5 163.5q0 78 -39 157t-106 122h131l133 76h-428q-129 0 -237.5 -36t-188.5 -143zM2 170q14 57 55 96t96.5 61.5 t115 33t110.5 10.5h31.5t31.5 -2q37 -27 78 -54.5t75 -61.5t55.5 -75t21.5 -92q0 -47 -19 -86h-460q-72 0 -126.5 49t-64.5 121zM102 1094q0 43 11.5 85t35 73.5t59.5 51t85 19.5q68 0 118 -41t81.5 -100.5t47 -128t15.5 -123.5q0 -45 -9 -84t-30.5 -68.5t-56.5 -47 t-84 -17.5q-66 0 -116 39t-85 96t-53.5 123.5t-18.5 122.5zM854 1051h223v-224h109v224h223v108h-223v225h-109v-225h-223v-108z" />
227
<glyph unicode="&#xf0d5;" horiz-adv-x="1536" d="M0 262q0 100 56.5 166t139.5 105.5t179 56t174 18.5q-23 29 -41.5 64t-18.5 76q0 23 6.5 41t14.5 40q-16 -4 -33.5 -4h-34.5q-68 0 -130 23.5t-108 66.5t-74 101.5t-28 130.5q0 68 25 128t67 109.5t98 84t120 49.5q88 18 176 18h411l-127 -74h-127q72 -43 107 -120.5 t35 -157.5q0 -94 -33 -149.5t-73 -94.5t-72.5 -70.5t-32.5 -78.5q0 -45 44 -82t97 -82t97 -107.5t44 -161.5q0 -102 -50 -175.5t-126.5 -121t-170 -70t-181.5 -22.5q-66 0 -141.5 15.5t-140 50.5t-106.5 90t-42 137zM174 307q0 -68 35 -116t87 -78.5t114.5 -44t117.5 -13.5 q51 0 104.5 11.5t96.5 38t69.5 68.5t26.5 103q0 49 -21.5 89.5t-53 72t-70.5 59t-76 52.5q-14 2 -29.5 3t-29.5 1q-57 0 -123 -12.5t-121 -41t-91 -75.5t-36 -117zM276 1247q0 -53 17.5 -117.5t51.5 -120t82.5 -92t111.5 -36.5q96 0 134 61.5t38 147.5q0 53 -14.5 118.5 t-45 124t-78 97t-112.5 38.5q-47 0 -82 -18t-57.5 -49t-34 -71t-11.5 -83zM999 1206h215v-215h107v215h215v105h-215v217h-107v-217h-215v-105z" />
228
<glyph unicode="&#xf0d6;" d="M0 78v1382q0 31 22.5 53.5t55.5 22.5h1689q31 0 53.5 -22.5t22.5 -53.5v-1382q0 -33 -22.5 -55.5t-53.5 -22.5h-1689q-33 0 -55.5 22.5t-22.5 55.5zM154 461q63 0 119.5 -24.5t97.5 -65.5t65.5 -97.5t24.5 -119.5h921q0 63 25 119.5t65.5 97.5t97 65.5t120.5 24.5v614 q-63 0 -120 24.5t-97.5 65.5t-65.5 97.5t-25 119.5h-921q0 -63 -24.5 -119.5t-65.5 -97.5t-97.5 -65.5t-119.5 -24.5v-614zM539 768q0 104 29.5 195.5t81.5 159t122 106.5t150 39t149.5 -39t121.5 -106.5t83 -159t31 -195.5t-31 -195.5t-83 -159t-122 -106.5t-149 -39 q-80 0 -150 39t-122 106.5t-81.5 159t-29.5 195.5zM692 969l94 -99l39 35q8 6 11.5 13.5t7.5 11.5q4 2 8 10h2v-16q0 -8 -1 -16.5t-1 -18.5v-283h-139v-129h438v129h-141v529h-140z" />
229
<glyph unicode="&#xf0d7;" horiz-adv-x="1228" d="M6 967q20 47 72 47h1075q50 0 70 -47t-17 -84l-536 -537q-27 -23 -56 -22q-29 0 -55 22l-536 537q-37 37 -17 84z" />
230
<glyph unicode="&#xf0d8;" horiz-adv-x="1228" d="M6 371q-20 47 17 84l536 536q23 23 55 23q31 0 54 -23l538 -536q37 -37 17 -84t-70 -47h-1077q-50 0 -70 47z" />
231
<glyph unicode="&#xf0d9;" horiz-adv-x="692" d="M0 768q0 33 23 55l538 537q16 16 38 21t44 -5q23 -8 36 -27.5t13 -41.5v-1076q0 -25 -13 -43t-36 -28t-44 -5t-38 21l-538 539q-23 23 -23 53z" />
232
<glyph unicode="&#xf0da;" horiz-adv-x="692" d="M0 231v1076q0 49 47 69t84 -16l539 -537q23 -23 22 -55q0 -31 -22 -53l-539 -539q-37 -37 -84 -16q-47 20 -47 71z" />
233
<glyph unicode="&#xf0db;" d="M0 115v1306q0 47 34 81t81 34h1614q47 0 80.5 -34t33.5 -81v-1306q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34t-34 81zM154 154h692v1153h-692v-1153zM999 154h691v1153h-691v-1153z" />
234
<glyph unicode="&#xf0dc;" horiz-adv-x="1228" d="M0 584q0 31 22.5 54.5t53.5 23.5h1075q33 0 55.5 -23t22.5 -55q0 -33 -23 -56l-536 -536q-23 -23 -56 -23t-55 23l-536 536q-23 23 -23 56zM0 952q0 33 23 56l536 536q23 23 55 23q33 0 56 -23l536 -536q23 -23 23 -56q0 -31 -22.5 -54.5t-55.5 -23.5h-1075 q-31 0 -53.5 23t-22.5 55z" />
235
<glyph unicode="&#xf0dd;" horiz-adv-x="1228" d="M0 584q0 31 22.5 54.5t53.5 23.5h1077q31 0 53.5 -23t22.5 -55q0 -33 -23 -56l-536 -536q-23 -23 -56 -23q-35 0 -53 23l-538 536q-23 23 -23 56z" />
236
<glyph unicode="&#xf0de;" horiz-adv-x="1228" d="M0 952q0 33 23 56l536 536q23 23 55 23q33 0 56 -23l536 -536q23 -23 23 -56q0 -31 -22.5 -54.5t-53.5 -23.5h-1077q-31 0 -53.5 23t-22.5 55z" />
237
<glyph unicode="&#xf0e0;" d="M0 115v905q10 -10 20.5 -17.5t20.5 -15.5q129 -96 256 -191.5t252 -195.5q39 -31 82 -62.5t89 -57t96.5 -41t103.5 -15.5q55 0 105 15.5t96 40t89 56t84 64.5q125 100 252 195.5t256 191.5q10 8 20.5 15.5t20.5 17.5v-905q0 -47 -33.5 -81t-80.5 -34h-1614q-47 0 -81 34 t-34 81zM2 1434q0 41 36 71.5t77 30.5h1614q41 0 76.5 -30.5t35.5 -71.5q0 -31 -18.5 -69t-45 -75t-57 -67.5t-53.5 -48.5q-123 -92 -241.5 -182.5t-239.5 -182.5q-25 -18 -57.5 -45t-67.5 -51.5t-71 -42t-66 -17.5h-2h-2q-31 0 -67 17.5t-70.5 42t-67.5 51.5t-58 45 q-121 92 -239.5 182t-241.5 183q-23 18 -53.5 48.5t-57 67.5t-45 75t-18.5 69z" />
238
<glyph unicode="&#xf0e1;" horiz-adv-x="1576" d="M0 1376q0 39 15.5 74t41 60.5t60 41t73.5 15.5t74 -15.5t61.5 -41t41 -60.5t14.5 -74t-14.5 -73.5t-41 -60t-61.5 -41t-74 -15.5t-73.5 15.5t-60 41t-41 60t-15.5 73.5zM10 41v991q0 16 12.5 28.5t28.5 12.5h281q16 0 28.5 -12t12.5 -29v-991q0 -16 -12.5 -28.5 t-28.5 -12.5h-281q-16 0 -28.5 12.5t-12.5 28.5zM524 41v991q0 16 12.5 28.5t28.5 12.5h273q33 0 37 -25.5t4 -48.5q57 53 129.5 76t150.5 23q190 0 304 -95.5t114 -293.5v-668q0 -16 -12.5 -28.5t-28.5 -12.5h-289q-16 0 -27.5 12.5t-11.5 28.5v604q0 76 -27.5 116 t-111.5 40q-53 0 -89 -17.5t-56.5 -47t-28.5 -70.5t-8 -88v-537q0 -16 -12.5 -28.5t-28.5 -12.5h-281q-16 0 -28.5 12.5t-12.5 28.5z" />
239
<glyph unicode="&#xf0e2;" horiz-adv-x="1591" d="M0 662q-4 39 35 45l158 20q12 2 30 -8q12 -8 15 -27q14 -102 63 -191t123 -153.5t169 -101.5t200 -37q115 0 217 44t178 120t120 177t44 218t-44 218t-120 177t-178.5 120t-216.5 44q-94 0 -181.5 -30.5t-158.5 -88.5l159 -159q35 -35 24 -58.5t-58 -23.5h-463 q-16 0 -29.5 6t-24.5 16q-25 25 -24 55v463q0 47 24.5 57.5t59.5 -24.5l162 -162q109 92 238.5 140.5t271.5 48.5q166 0 311 -62.5t253.5 -171t171 -254t62.5 -311.5t-62.5 -311.5t-171 -254t-254 -171t-310.5 -62.5q-150 0 -285 52.5t-241.5 145.5t-176.5 220t-90 275z" />
240
<glyph unicode="&#xf0e3;" horiz-adv-x="1916" d="M0 651q0 49 37 91t88 42q35 0 68 -22q-20 14 -21 37q0 8 8 24l334 502q14 20 37 21q16 0 24 -9q-25 18 -40 43t-15 56q0 49 38 90t87 41q33 0 62 -19l514 -342q23 -16 36 -40.5t13 -53.5q0 -25 -10.5 -48.5t-26.5 -41.5t-40 -29.5t-48 -11.5q-33 0 -68 23q20 -14 21 -37 q0 -14 -8 -25l-105 -158l227 -151q14 4 28 6t28 2q53 0 94 -29l475 -315q37 -27 58.5 -65.5t21.5 -84.5q0 -74 -52.5 -126t-125.5 -52q-55 0 -99 31l-475 315q-70 47 -75 131l-228 152l-106 -158q-14 -20 -37 -20q-14 0 -25 8q55 -39 56 -100q0 -25 -10.5 -47.5t-28 -41 t-40 -29.5t-46.5 -11q-35 0 -62 18l-514 342q-49 33 -49 92z" />
241
<glyph unicode="&#xf0e4;" horiz-adv-x="1880" d="M0 627q0 195 73.5 365.5t201.5 298.5t299 202t366 74t366 -74t299 -202t201.5 -299t73.5 -365q0 -78 -14.5 -159t-42 -159t-68.5 -149.5t-92 -130.5q-23 -29 -59 -29h-1328q-37 0 -59 29q-53 59 -93 130.5t-67.5 149.5t-42 159t-14.5 159zM158 627q0 -49 33.5 -83 t82.5 -34t83 34t34 83t-34.5 82.5t-82.5 33.5q-49 0 -82.5 -33.5t-33.5 -82.5zM352 1098q0 -49 35 -84t82 -35q49 0 84 35t35 84t-35 82.5t-84 33.5q-47 0 -82 -33.5t-35 -82.5zM743 313q0 -82 57.5 -139t139.5 -57t139.5 57t57.5 139q0 49 -26 91t-67 71q4 14 15.5 55 t27 95.5t33 114t30.5 110.5t22.5 88t9.5 43q0 23 -17.5 40t-40.5 17q-20 0 -35.5 -12t-21.5 -31l-135 -487q-39 -2 -74 -17.5t-60.5 -42t-40 -61.5t-14.5 -74zM823 1292q0 -49 34 -82.5t83 -33.5t83 33.5t34 82.5t-34 83t-83 34t-83 -34t-34 -83zM1292 1098q0 -49 35 -83 t84 -34t83 34t34 83t-34 82.5t-83 33.5t-84 -33.5t-35 -82.5zM1489 627q0 -49 34 -83t83 -34t82.5 34t33.5 83t-33.5 82.5t-82.5 33.5t-83 -33.5t-34 -82.5z" />
242
<glyph unicode="&#xf0e5;" horiz-adv-x="1916" d="M0 866q0 123 49 225.5t130 183.5t184.5 139.5t209.5 92.5q94 31 190.5 45.5t194.5 14.5t194.5 -14.5t190.5 -45.5q106 -35 210 -93t185 -139t130 -183.5t49 -225.5t-49 -225t-130 -183t-184.5 -140.5t-210.5 -92.5q-94 -31 -190 -45t-195 -14q-92 0 -180 12 q-92 -72 -195.5 -119t-215.5 -73q-27 -4 -55.5 -10.5t-53.5 -6.5q-16 0 -27.5 11.5t-11.5 27.5q0 12 8.5 21.5t16.5 17.5q31 33 53 60.5t37.5 57.5t25 64.5t17.5 79.5q-78 43 -145.5 100.5t-120 128t-82 153.5t-29.5 175zM160 866q0 -72 24.5 -133t65.5 -113.5t94 -95.5 t111 -75q27 -14 51 -27.5t49 -28.5q-10 -47 -17.5 -94t-19.5 -94q59 29 111.5 64.5t105.5 76.5q55 -8 110.5 -14t112.5 -6q156 0 308 43q84 25 171 68.5t158.5 107t116.5 143.5t45 178t-45 178t-116.5 143.5t-158.5 107.5t-171 69q-152 43 -308 43q-158 0 -307 -43 q-84 -25 -171 -69t-158.5 -107.5t-116.5 -143t-45 -178.5z" />
243
<glyph unicode="&#xf0e6;" horiz-adv-x="1916" d="M0 997q0 98 40 182.5t106.5 151t150.5 113.5t170 76q76 25 154.5 36t156.5 11q80 0 159 -11.5t155 -35.5q86 -29 170 -76t149.5 -113.5t105 -150.5t39.5 -183q0 -98 -39.5 -182t-105 -149.5t-149.5 -113.5t-170 -77q-154 -47 -314 -47q-37 0 -72.5 3t-72.5 7 q-150 -115 -336 -155q-20 -4 -43 -9.5t-45 -5.5q-12 0 -21.5 9.5t-9.5 23.5q0 10 7.5 17.5l13.5 13.5q51 51 72.5 96t35.5 117q-63 35 -118.5 82t-97.5 104t-66.5 124t-24.5 142zM160 997q0 -72 30.5 -127t77.5 -99t104.5 -78t112.5 -64l-20 -111q33 18 63.5 42t59.5 46 q47 -6 95 -12t95 -6q135 0 264 41q61 18 124 52t114 81t84 105.5t33 129.5q0 72 -33 131.5t-84 105.5t-113.5 80t-124.5 52q-63 23 -129.5 32t-134.5 9q-66 0 -132 -9t-132 -32q-59 -18 -122.5 -52t-115 -80t-84 -105.5t-32.5 -131.5zM649 258l27 16q51 -6 102 -6 q197 0 381 62q111 37 211 99.5t177 147.5t123 190t46 230q0 41 -6 84q90 -72 148.5 -169t58.5 -214q0 -76 -24.5 -142.5t-66.5 -123.5t-97.5 -104t-118.5 -82q14 -72 35.5 -117t72.5 -96q6 -6 13.5 -14.5t7.5 -18.5q0 -16 -10.5 -23.5t-24.5 -7.5q-20 0 -43 5.5t-41 9.5 q-186 41 -336 155q-37 -4 -72.5 -7t-72.5 -3q-129 0 -254 32t-236 97z" />
244
<glyph unicode="&#xf0e7;" horiz-adv-x="933" d="M0 557q0 8 2 10l209 932q4 16 16.5 26.5t28.5 10.5h344q18 0 31.5 -13.5t13.5 -33.5q0 -6 -1 -10t-3 -11l-180 -524q12 4 47 13.5t81 21.5t95 26.5t93 25.5t75 18.5t37 7.5q18 0 31.5 -13.5t13.5 -33.5q0 -12 -2 -19l-565 -1306q-10 -29 -43 -29q-18 0 -33 13.5t-15 33.5 q0 6 3 10l204 914q-12 -4 -48 -14.5t-82 -22.5t-97 -26.5t-95 -27t-76 -19.5t-38 -7q-20 0 -33.5 14.5t-13.5 32.5z" />
245
<glyph unicode="&#xf0e8;" d="M0 78v383q0 33 22.5 55.5t55.5 22.5h133v153q0 55 40 94t95 39h518v174h-135q-31 0 -53.5 21.5t-22.5 54.5v385q0 31 22.5 53.5t53.5 22.5h385q31 0 53.5 -22.5t22.5 -53.5v-385q0 -33 -22.5 -54.5t-53.5 -21.5h-135v-174h518q55 0 95 -38.5t40 -94.5v-153h135 q31 0 53.5 -22.5t22.5 -55.5v-383q0 -33 -22.5 -55.5t-53.5 -22.5h-385q-33 0 -54 22.5t-21 55.5v383q0 33 21.5 55.5t53.5 22.5h136v153q0 18 -21 19h-518v-172h135q31 0 53.5 -22.5t22.5 -55.5v-383q0 -33 -22.5 -55.5t-53.5 -22.5h-385q-31 0 -53.5 22.5t-22.5 55.5v383 q0 33 22.5 55.5t53.5 22.5h135v172h-518q-20 0 -20 -19v-153h135q33 0 55.5 -22.5t22.5 -55.5v-383q0 -33 -22.5 -55.5t-55.5 -22.5h-383q-33 0 -55.5 22.5t-22.5 55.5z" />
246
<glyph unicode="&#xf0e9;" horiz-adv-x="1884" d="M0 770q31 137 109.5 253t193.5 204t257 141t302 66v53q0 35 23.5 57.5t56.5 22.5q35 0 57.5 -22.5t22.5 -57.5v-53q160 -12 303 -65.5t258 -141.5t192.5 -204t108.5 -253q6 -29 -20 -43q-10 -6 -19 -6q-20 0 -28 12q-98 102 -218 103q-86 0 -163.5 -54.5t-130.5 -152.5 q-10 -23 -35 -23t-35 23q-82 150 -213 194v-526q0 -68 -23.5 -127t-63.5 -104.5t-93.5 -71t-114.5 -25.5t-115.5 25.5t-94.5 71t-63.5 104.5t-23.5 127q0 35 23.5 57.5t56.5 22.5q35 0 57.5 -22.5t22.5 -57.5q0 -70 40 -119t97 -49q55 0 95 49t40 119v526 q-131 -45 -213 -194q-10 -23 -35 -23t-34 23q-53 98 -130 152.5t-163 54.5q-121 0 -217 -103q-12 -12 -31 -12q-10 0 -19 6q-25 14 -20 43z" />
247
<glyph unicode="&#xf0ea;" horiz-adv-x="1597" d="M0 385v1075q0 31 22.5 53.5t55.5 22.5h921q31 0 53.5 -22.5t22.5 -53.5v-231h33h61q25 0 55.5 -13.5t49.5 -29.5l280 -281q18 -18 30.5 -49t12.5 -55v-62v-678q0 -27 -17 -44t-44 -17h-860q-27 0 -44.5 17.5t-17.5 43.5v246h-536q-33 0 -55.5 22.5t-22.5 55.5zM276 1321 q0 -12 9.5 -21.5t21.5 -9.5h461q12 0 21.5 9.5t9.5 21.5v61q0 12 -9.5 21.5t-21.5 9.5h-461q-12 0 -21.5 -9t-9.5 -22v-61zM737 123h738v555h-367q-27 0 -44 17.5t-17 43.5v367h-310v-983zM1169 801h306q0 2 -3.5 8t-5.5 10l-280 279q0 4 -6 4q-2 0 -2 1t-2 1t-3.5 1t-3.5 1 v-305z" />
248
<glyph unicode="&#xf105;" horiz-adv-x="2048" />
249
<glyph unicode="&#xf200;" horiz-adv-x="1536" d="M0 57v379q0 39 20.5 87t54.5 90t74.5 73t81.5 35q-35 -59 -34 -129q0 -59 16 -124t59 -106q-18 -37 -18 -75q0 -72 50 -122t122 -50q37 0 68.5 13t55 36.5t37 55.5t13.5 67t-13.5 66.5t-37 55t-55 38t-68.5 14.5q-18 0 -36.5 -5t-35.5 -14q-12 12 -20 31t-13.5 40.5 t-7.5 41.5t-2 37q0 47 28 86t62 67l142 21q-92 57 -142.5 150.5t-50.5 201.5q0 86 33 162t90 133t133 90t162 33t162 -33t133 -90t90 -133t33 -162q0 -109 -50.5 -202t-142.5 -150l158 -23q18 -16 34.5 -36.5t16.5 -47.5q0 -45 -18 -77q-59 33 -121 32q-45 0 -87 -17 t-77 -46q-6 2 -11 3t-11 1q-47 0 -82 -34t-35 -81t34.5 -80.5t82.5 -33.5q47 0 80.5 33.5t33.5 80.5q0 8 -2 15.5t-4 13.5q16 12 35.5 20.5t42.5 8.5q55 0 95 -39t40 -94q0 -23 -8 -41.5t-19 -34.5q-25 10 -45 10q-47 0 -81.5 -34t-34.5 -81t34.5 -80.5t81.5 -33.5t81 33.5 t34 80.5l-2 4q74 74 74 177q0 74 -41 137q45 70 45 157q0 31 -12 62q41 -4 83 -34t74.5 -72t53 -90t20.5 -89v-379q-10 -6 -22.5 -15t-25.5 -18.5t-26.5 -16.5t-21.5 -7h-1344q-35 0 -52 20.5t-44 36.5zM369 287q0 25 17 41t40 16q25 0 41 -16t16 -41q0 -23 -16 -40.5 t-41 -17.5q-23 0 -40 17.5t-17 40.5z" />
250
<glyph unicode="&#xf201;" horiz-adv-x="1597" />
251
<glyph unicode="&#xf202;" horiz-adv-x="1597" />
252
<glyph unicode="&#xf203;" horiz-adv-x="1597" />
253
<glyph unicode="&#xf204;" horiz-adv-x="1597" />
254
</font>
255
</defs></svg> 
gadjo/static/css/gadjo.css
4 4

  
5 5
@font-face {
6 6
	font-family: "FontAwesome";
7
	src: url('fontawesome-webfont.eot');
8
	src: url('fontawesome-webfont.eot?#iefix') format('eot'), url('fontawesome-webfont.woff') format('woff'), url('fontawesome-webfont.ttf') format('truetype'), url('fontawesome-webfont.svg#FontAwesome') format('svg');
7
	src: url('../xstatic/fonts/fontawesome-webfont.eot');
8
	src: url('../xstatic/fonts/fontawesome-webfont.eot?#iefix') format('eot'), url('../xstatic/fonts/fontawesome-webfont.woff') format('woff'), url('../xstatic/fonts/fontawesome-webfont.ttf') format('truetype'), url('../xstatic/fonts/fontawesome-webfont.svg#FontAwesome') format('svg');
9 9
	font-weight: normal;
10 10
	font-style: normal;
11 11
}
gadjo/static/css/smoothness/jquery-ui-1.10.4.custom.css
1
/*! jQuery UI - v1.10.4 - 2014-03-25
2
* http://jqueryui.com
3
* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css
4
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
5
* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
6

  
7
/* Layout helpers
8
----------------------------------*/
9
.ui-helper-hidden {
10
	display: none;
11
}
12
.ui-helper-hidden-accessible {
13
	border: 0;
14
	clip: rect(0 0 0 0);
15
	height: 1px;
16
	margin: -1px;
17
	overflow: hidden;
18
	padding: 0;
19
	position: absolute;
20
	width: 1px;
21
}
22
.ui-helper-reset {
23
	margin: 0;
24
	padding: 0;
25
	border: 0;
26
	outline: 0;
27
	line-height: 1.3;
28
	text-decoration: none;
29
	font-size: 100%;
30
	list-style: none;
31
}
32
.ui-helper-clearfix:before,
33
.ui-helper-clearfix:after {
34
	content: "";
35
	display: table;
36
	border-collapse: collapse;
37
}
38
.ui-helper-clearfix:after {
39
	clear: both;
40
}
41
.ui-helper-clearfix {
42
	min-height: 0; /* support: IE7 */
43
}
44
.ui-helper-zfix {
45
	width: 100%;
46
	height: 100%;
47
	top: 0;
48
	left: 0;
49
	position: absolute;
50
	opacity: 0;
51
	filter:Alpha(Opacity=0);
52
}
53

  
54
.ui-front {
55
	z-index: 100;
56
}
57

  
58

  
59
/* Interaction Cues
60
----------------------------------*/
61
.ui-state-disabled {
62
	cursor: default !important;
63
}
64

  
65

  
66
/* Icons
67
----------------------------------*/
68

  
69
/* states and images */
70
.ui-icon {
71
	display: block;
72
	text-indent: -99999px;
73
	overflow: hidden;
74
	background-repeat: no-repeat;
75
}
76

  
77

  
78
/* Misc visuals
79
----------------------------------*/
80

  
81
/* Overlays */
82
.ui-widget-overlay {
83
	position: fixed;
84
	top: 0;
85
	left: 0;
86
	width: 100%;
87
	height: 100%;
88
}
89
.ui-resizable {
90
	position: relative;
91
}
92
.ui-resizable-handle {
93
	position: absolute;
94
	font-size: 0.1px;
95
	display: block;
96
}
97
.ui-resizable-disabled .ui-resizable-handle,
98
.ui-resizable-autohide .ui-resizable-handle {
99
	display: none;
100
}
101
.ui-resizable-n {
102
	cursor: n-resize;
103
	height: 7px;
104
	width: 100%;
105
	top: -5px;
106
	left: 0;
107
}
108
.ui-resizable-s {
109
	cursor: s-resize;
110
	height: 7px;
111
	width: 100%;
112
	bottom: -5px;
113
	left: 0;
114
}
115
.ui-resizable-e {
116
	cursor: e-resize;
117
	width: 7px;
118
	right: -5px;
119
	top: 0;
120
	height: 100%;
121
}
122
.ui-resizable-w {
123
	cursor: w-resize;
124
	width: 7px;
125
	left: -5px;
126
	top: 0;
127
	height: 100%;
128
}
129
.ui-resizable-se {
130
	cursor: se-resize;
131
	width: 12px;
132
	height: 12px;
133
	right: 1px;
134
	bottom: 1px;
135
}
136
.ui-resizable-sw {
137
	cursor: sw-resize;
138
	width: 9px;
139
	height: 9px;
140
	left: -5px;
141
	bottom: -5px;
142
}
143
.ui-resizable-nw {
144
	cursor: nw-resize;
145
	width: 9px;
146
	height: 9px;
147
	left: -5px;
148
	top: -5px;
149
}
150
.ui-resizable-ne {
151
	cursor: ne-resize;
152
	width: 9px;
153
	height: 9px;
154
	right: -5px;
155
	top: -5px;
156
}
157
.ui-selectable-helper {
158
	position: absolute;
159
	z-index: 100;
160
	border: 1px dotted black;
161
}
162
.ui-accordion .ui-accordion-header {
163
	display: block;
164
	cursor: pointer;
165
	position: relative;
166
	margin-top: 2px;
167
	padding: .5em .5em .5em .7em;
168
	min-height: 0; /* support: IE7 */
169
}
170
.ui-accordion .ui-accordion-icons {
171
	padding-left: 2.2em;
172
}
173
.ui-accordion .ui-accordion-noicons {
174
	padding-left: .7em;
175
}
176
.ui-accordion .ui-accordion-icons .ui-accordion-icons {
177
	padding-left: 2.2em;
178
}
179
.ui-accordion .ui-accordion-header .ui-accordion-header-icon {
180
	position: absolute;
181
	left: .5em;
182
	top: 50%;
183
	margin-top: -8px;
184
}
185
.ui-accordion .ui-accordion-content {
186
	padding: 1em 2.2em;
187
	border-top: 0;
188
	overflow: auto;
189
}
190
.ui-autocomplete {
191
	position: absolute;
192
	top: 0;
193
	left: 0;
194
	cursor: default;
195
}
196
.ui-button {
197
	display: inline-block;
198
	position: relative;
199
	padding: 0;
200
	line-height: normal;
201
	margin-right: .1em;
202
	cursor: pointer;
203
	vertical-align: middle;
204
	text-align: center;
205
	overflow: visible; /* removes extra width in IE */
206
}
207
.ui-button,
208
.ui-button:link,
209
.ui-button:visited,
210
.ui-button:hover,
211
.ui-button:active {
212
	text-decoration: none;
213
}
214
/* to make room for the icon, a width needs to be set here */
215
.ui-button-icon-only {
216
	width: 2.2em;
217
}
218
/* button elements seem to need a little more width */
219
button.ui-button-icon-only {
220
	width: 2.4em;
221
}
222
.ui-button-icons-only {
223
	width: 3.4em;
224
}
225
button.ui-button-icons-only {
226
	width: 3.7em;
227
}
228

  
229
/* button text element */
230
.ui-button .ui-button-text {
231
	display: block;
232
	line-height: normal;
233
}
234
.ui-button-text-only .ui-button-text {
235
	padding: .4em 1em;
236
}
237
.ui-button-icon-only .ui-button-text,
238
.ui-button-icons-only .ui-button-text {
239
	padding: .4em;
240
	text-indent: -9999999px;
241
}
242
.ui-button-text-icon-primary .ui-button-text,
243
.ui-button-text-icons .ui-button-text {
244
	padding: .4em 1em .4em 2.1em;
245
}
246
.ui-button-text-icon-secondary .ui-button-text,
247
.ui-button-text-icons .ui-button-text {
248
	padding: .4em 2.1em .4em 1em;
249
}
250
.ui-button-text-icons .ui-button-text {
251
	padding-left: 2.1em;
252
	padding-right: 2.1em;
253
}
254
/* no icon support for input elements, provide padding by default */
255
input.ui-button {
256
	padding: .4em 1em;
257
}
258

  
259
/* button icon element(s) */
260
.ui-button-icon-only .ui-icon,
261
.ui-button-text-icon-primary .ui-icon,
262
.ui-button-text-icon-secondary .ui-icon,
263
.ui-button-text-icons .ui-icon,
264
.ui-button-icons-only .ui-icon {
265
	position: absolute;
266
	top: 50%;
267
	margin-top: -8px;
268
}
269
.ui-button-icon-only .ui-icon {
270
	left: 50%;
271
	margin-left: -8px;
272
}
273
.ui-button-text-icon-primary .ui-button-icon-primary,
274
.ui-button-text-icons .ui-button-icon-primary,
275
.ui-button-icons-only .ui-button-icon-primary {
276
	left: .5em;
277
}
278
.ui-button-text-icon-secondary .ui-button-icon-secondary,
279
.ui-button-text-icons .ui-button-icon-secondary,
280
.ui-button-icons-only .ui-button-icon-secondary {
281
	right: .5em;
282
}
283

  
284
/* button sets */
285
.ui-buttonset {
286
	margin-right: 7px;
287
}
288
.ui-buttonset .ui-button {
289
	margin-left: 0;
290
	margin-right: -.3em;
291
}
292

  
293
/* workarounds */
294
/* reset extra padding in Firefox, see h5bp.com/l */
295
input.ui-button::-moz-focus-inner,
296
button.ui-button::-moz-focus-inner {
297
	border: 0;
298
	padding: 0;
299
}
300
.ui-datepicker {
301
	width: 17em;
302
	padding: .2em .2em 0;
303
	display: none;
304
}
305
.ui-datepicker .ui-datepicker-header {
306
	position: relative;
307
	padding: .2em 0;
308
}
309
.ui-datepicker .ui-datepicker-prev,
310
.ui-datepicker .ui-datepicker-next {
311
	position: absolute;
312
	top: 2px;
313
	width: 1.8em;
314
	height: 1.8em;
315
}
316
.ui-datepicker .ui-datepicker-prev-hover,
317
.ui-datepicker .ui-datepicker-next-hover {
318
	top: 1px;
319
}
320
.ui-datepicker .ui-datepicker-prev {
321
	left: 2px;
322
}
323
.ui-datepicker .ui-datepicker-next {
324
	right: 2px;
325
}
326
.ui-datepicker .ui-datepicker-prev-hover {
327
	left: 1px;
328
}
329
.ui-datepicker .ui-datepicker-next-hover {
330
	right: 1px;
331
}
332
.ui-datepicker .ui-datepicker-prev span,
333
.ui-datepicker .ui-datepicker-next span {
334
	display: block;
335
	position: absolute;
336
	left: 50%;
337
	margin-left: -8px;
338
	top: 50%;
339
	margin-top: -8px;
340
}
341
.ui-datepicker .ui-datepicker-title {
342
	margin: 0 2.3em;
343
	line-height: 1.8em;
344
	text-align: center;
345
}
346
.ui-datepicker .ui-datepicker-title select {
347
	font-size: 1em;
348
	margin: 1px 0;
349
}
350
.ui-datepicker select.ui-datepicker-month,
351
.ui-datepicker select.ui-datepicker-year {
352
	width: 49%;
353
}
354
.ui-datepicker table {
355
	width: 100%;
356
	font-size: .9em;
357
	border-collapse: collapse;
358
	margin: 0 0 .4em;
359
}
360
.ui-datepicker th {
361
	padding: .7em .3em;
362
	text-align: center;
363
	font-weight: bold;
364
	border: 0;
365
}
366
.ui-datepicker td {
367
	border: 0;
368
	padding: 1px;
369
}
370
.ui-datepicker td span,
371
.ui-datepicker td a {
372
	display: block;
373
	padding: .2em;
374
	text-align: right;
375
	text-decoration: none;
376
}
377
.ui-datepicker .ui-datepicker-buttonpane {
378
	background-image: none;
379
	margin: .7em 0 0 0;
380
	padding: 0 .2em;
381
	border-left: 0;
382
	border-right: 0;
383
	border-bottom: 0;
384
}
385
.ui-datepicker .ui-datepicker-buttonpane button {
386
	float: right;
387
	margin: .5em .2em .4em;
388
	cursor: pointer;
389
	padding: .2em .6em .3em .6em;
390
	width: auto;
391
	overflow: visible;
392
}
393
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
394
	float: left;
395
}
396

  
397
/* with multiple calendars */
398
.ui-datepicker.ui-datepicker-multi {
399
	width: auto;
400
}
401
.ui-datepicker-multi .ui-datepicker-group {
402
	float: left;
403
}
404
.ui-datepicker-multi .ui-datepicker-group table {
405
	width: 95%;
406
	margin: 0 auto .4em;
407
}
408
.ui-datepicker-multi-2 .ui-datepicker-group {
409
	width: 50%;
410
}
411
.ui-datepicker-multi-3 .ui-datepicker-group {
412
	width: 33.3%;
413
}
414
.ui-datepicker-multi-4 .ui-datepicker-group {
415
	width: 25%;
416
}
417
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
418
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
419
	border-left-width: 0;
420
}
421
.ui-datepicker-multi .ui-datepicker-buttonpane {
422
	clear: left;
423
}
424
.ui-datepicker-row-break {
425
	clear: both;
426
	width: 100%;
427
	font-size: 0;
428
}
429

  
430
/* RTL support */
431
.ui-datepicker-rtl {
432
	direction: rtl;
433
}
434
.ui-datepicker-rtl .ui-datepicker-prev {
435
	right: 2px;
436
	left: auto;
437
}
438
.ui-datepicker-rtl .ui-datepicker-next {
439
	left: 2px;
440
	right: auto;
441
}
442
.ui-datepicker-rtl .ui-datepicker-prev:hover {
443
	right: 1px;
444
	left: auto;
445
}
446
.ui-datepicker-rtl .ui-datepicker-next:hover {
447
	left: 1px;
448
	right: auto;
449
}
450
.ui-datepicker-rtl .ui-datepicker-buttonpane {
451
	clear: right;
452
}
453
.ui-datepicker-rtl .ui-datepicker-buttonpane button {
454
	float: left;
455
}
456
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
457
.ui-datepicker-rtl .ui-datepicker-group {
458
	float: right;
459
}
460
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
461
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
462
	border-right-width: 0;
463
	border-left-width: 1px;
464
}
465
.ui-dialog {
466
	overflow: hidden;
467
	position: absolute;
468
	top: 0;
469
	left: 0;
470
	padding: .2em;
471
	outline: 0;
472
}
473
.ui-dialog .ui-dialog-titlebar {
474
	padding: .4em 1em;
475
	position: relative;
476
}
477
.ui-dialog .ui-dialog-title {
478
	float: left;
479
	margin: .1em 0;
480
	white-space: nowrap;
481
	width: 90%;
482
	overflow: hidden;
483
	text-overflow: ellipsis;
484
}
485
.ui-dialog .ui-dialog-titlebar-close {
486
	position: absolute;
487
	right: .3em;
488
	top: 50%;
489
	width: 20px;
490
	margin: -10px 0 0 0;
491
	padding: 1px;
492
	height: 20px;
493
}
494
.ui-dialog .ui-dialog-content {
495
	position: relative;
496
	border: 0;
497
	padding: .5em 1em;
498
	background: none;
499
	overflow: auto;
500
}
501
.ui-dialog .ui-dialog-buttonpane {
502
	text-align: left;
503
	border-width: 1px 0 0 0;
504
	background-image: none;
505
	margin-top: .5em;
506
	padding: .3em 1em .5em .4em;
507
}
508
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
509
	float: right;
510
}
511
.ui-dialog .ui-dialog-buttonpane button {
512
	margin: .5em .4em .5em 0;
513
	cursor: pointer;
514
}
515
.ui-dialog .ui-resizable-se {
516
	width: 12px;
517
	height: 12px;
518
	right: -5px;
519
	bottom: -5px;
520
	background-position: 16px 16px;
521
}
522
.ui-draggable .ui-dialog-titlebar {
523
	cursor: move;
524
}
525
.ui-menu {
526
	list-style: none;
527
	padding: 2px;
528
	margin: 0;
529
	display: block;
530
	outline: none;
531
}
532
.ui-menu .ui-menu {
533
	margin-top: -3px;
534
	position: absolute;
535
}
536
.ui-menu .ui-menu-item {
537
	margin: 0;
538
	padding: 0;
539
	width: 100%;
540
	/* support: IE10, see #8844 */
541
	list-style-image: url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7);
542
}
543
.ui-menu .ui-menu-divider {
544
	margin: 5px -2px 5px -2px;
545
	height: 0;
546
	font-size: 0;
547
	line-height: 0;
548
	border-width: 1px 0 0 0;
549
}
550
.ui-menu .ui-menu-item a {
551
	text-decoration: none;
552
	display: block;
553
	padding: 2px .4em;
554
	line-height: 1.5;
555
	min-height: 0; /* support: IE7 */
556
	font-weight: normal;
557
}
558
.ui-menu .ui-menu-item a.ui-state-focus,
559
.ui-menu .ui-menu-item a.ui-state-active {
560
	font-weight: normal;
561
	margin: -1px;
562
}
563

  
564
.ui-menu .ui-state-disabled {
565
	font-weight: normal;
566
	margin: .4em 0 .2em;
567
	line-height: 1.5;
568
}
569
.ui-menu .ui-state-disabled a {
570
	cursor: default;
571
}
572

  
573
/* icon support */
574
.ui-menu-icons {
575
	position: relative;
576
}
577
.ui-menu-icons .ui-menu-item a {
578
	position: relative;
579
	padding-left: 2em;
580
}
581

  
582
/* left-aligned */
583
.ui-menu .ui-icon {
584
	position: absolute;
585
	top: .2em;
586
	left: .2em;
587
}
588

  
589
/* right-aligned */
590
.ui-menu .ui-menu-icon {
591
	position: static;
592
	float: right;
593
}
594
.ui-progressbar {
595
	height: 2em;
596
	text-align: left;
597
	overflow: hidden;
598
}
599
.ui-progressbar .ui-progressbar-value {
600
	margin: -1px;
601
	height: 100%;
602
}
603
.ui-progressbar .ui-progressbar-overlay {
604
	background: url("images/animated-overlay.gif");
605
	height: 100%;
606
	filter: alpha(opacity=25);
607
	opacity: 0.25;
608
}
609
.ui-progressbar-indeterminate .ui-progressbar-value {
610
	background-image: none;
611
}
612
.ui-slider {
613
	position: relative;
614
	text-align: left;
615
}
616
.ui-slider .ui-slider-handle {
617
	position: absolute;
618
	z-index: 2;
619
	width: 1.2em;
620
	height: 1.2em;
621
	cursor: default;
622
}
623
.ui-slider .ui-slider-range {
624
	position: absolute;
625
	z-index: 1;
626
	font-size: .7em;
627
	display: block;
628
	border: 0;
629
	background-position: 0 0;
630
}
631

  
632
/* For IE8 - See #6727 */
633
.ui-slider.ui-state-disabled .ui-slider-handle,
634
.ui-slider.ui-state-disabled .ui-slider-range {
635
	filter: inherit;
636
}
637

  
638
.ui-slider-horizontal {
639
	height: .8em;
640
}
641
.ui-slider-horizontal .ui-slider-handle {
642
	top: -.3em;
643
	margin-left: -.6em;
644
}
645
.ui-slider-horizontal .ui-slider-range {
646
	top: 0;
647
	height: 100%;
648
}
649
.ui-slider-horizontal .ui-slider-range-min {
650
	left: 0;
651
}
652
.ui-slider-horizontal .ui-slider-range-max {
653
	right: 0;
654
}
655

  
656
.ui-slider-vertical {
657
	width: .8em;
658
	height: 100px;
659
}
660
.ui-slider-vertical .ui-slider-handle {
661
	left: -.3em;
662
	margin-left: 0;
663
	margin-bottom: -.6em;
664
}
665
.ui-slider-vertical .ui-slider-range {
666
	left: 0;
667
	width: 100%;
668
}
669
.ui-slider-vertical .ui-slider-range-min {
670
	bottom: 0;
671
}
672
.ui-slider-vertical .ui-slider-range-max {
673
	top: 0;
674
}
675
.ui-spinner {
676
	position: relative;
677
	display: inline-block;
678
	overflow: hidden;
679
	padding: 0;
680
	vertical-align: middle;
681
}
682
.ui-spinner-input {
683
	border: none;
684
	background: none;
685
	color: inherit;
686
	padding: 0;
687
	margin: .2em 0;
688
	vertical-align: middle;
689
	margin-left: .4em;
690
	margin-right: 22px;
691
}
692
.ui-spinner-button {
693
	width: 16px;
694
	height: 50%;
695
	font-size: .5em;
696
	padding: 0;
697
	margin: 0;
698
	text-align: center;
699
	position: absolute;
700
	cursor: default;
701
	display: block;
702
	overflow: hidden;
703
	right: 0;
704
}
705
/* more specificity required here to override default borders */
706
.ui-spinner a.ui-spinner-button {
707
	border-top: none;
708
	border-bottom: none;
709
	border-right: none;
710
}
711
/* vertically center icon */
712
.ui-spinner .ui-icon {
713
	position: absolute;
714
	margin-top: -8px;
715
	top: 50%;
716
	left: 0;
717
}
718
.ui-spinner-up {
719
	top: 0;
720
}
721
.ui-spinner-down {
722
	bottom: 0;
723
}
724

  
725
/* TR overrides */
726
.ui-spinner .ui-icon-triangle-1-s {
727
	/* need to fix icons sprite */
728
	background-position: -65px -16px;
729
}
730
.ui-tabs {
731
	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
732
	padding: .2em;
733
}
734
.ui-tabs .ui-tabs-nav {
735
	margin: 0;
736
	padding: .2em .2em 0;
737
}
738
.ui-tabs .ui-tabs-nav li {
739
	list-style: none;
740
	float: left;
741
	position: relative;
742
	top: 0;
743
	margin: 1px .2em 0 0;
744
	border-bottom-width: 0;
745
	padding: 0;
746
	white-space: nowrap;
747
}
748
.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
749
	float: left;
750
	padding: .5em 1em;
751
	text-decoration: none;
752
}
753
.ui-tabs .ui-tabs-nav li.ui-tabs-active {
754
	margin-bottom: -1px;
755
	padding-bottom: 1px;
756
}
757
.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
758
.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
759
.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
760
	cursor: text;
761
}
762
.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
763
	cursor: pointer;
764
}
765
.ui-tabs .ui-tabs-panel {
766
	display: block;
767
	border-width: 0;
768
	padding: 1em 1.4em;
769
	background: none;
770
}
771
.ui-tooltip {
772
	padding: 8px;
773
	position: absolute;
774
	z-index: 9999;
775
	max-width: 300px;
776
	-webkit-box-shadow: 0 0 5px #aaa;
777
	box-shadow: 0 0 5px #aaa;
778
}
779
body .ui-tooltip {
780
	border-width: 2px;
781
}
782

  
783
/* Component containers
784
----------------------------------*/
785
.ui-widget {
786
	font-family: Verdana,Arial,sans-serif;
787
	font-size: 1.1em;
788
}
789
.ui-widget .ui-widget {
790
	font-size: 1em;
791
}
792
.ui-widget input,
793
.ui-widget select,
794
.ui-widget textarea,
795
.ui-widget button {
796
	font-family: Verdana,Arial,sans-serif;
797
	font-size: 1em;
798
}
799
.ui-widget-content {
800
	border: 1px solid #aaaaaa;
801
	background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;
802
	color: #222222;
803
}
804
.ui-widget-content a {
805
	color: #222222;
806
}
807
.ui-widget-header {
808
	border: 1px solid #aaaaaa;
809
	background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;
810
	color: #222222;
811
	font-weight: bold;
812
}
813
.ui-widget-header a {
814
	color: #222222;
815
}
816

  
817
/* Interaction states
818
----------------------------------*/
819
.ui-state-default,
820
.ui-widget-content .ui-state-default,
821
.ui-widget-header .ui-state-default {
822
	border: 1px solid #d3d3d3;
823
	background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;
824
	font-weight: normal;
825
	color: #555555;
826
}
827
.ui-state-default a,
828
.ui-state-default a:link,
829
.ui-state-default a:visited {
830
	color: #555555;
831
	text-decoration: none;
832
}
833
.ui-state-hover,
834
.ui-widget-content .ui-state-hover,
835
.ui-widget-header .ui-state-hover,
836
.ui-state-focus,
837
.ui-widget-content .ui-state-focus,
838
.ui-widget-header .ui-state-focus {
839
	border: 1px solid #999999;
840
	background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;
841
	font-weight: normal;
842
	color: #212121;
843
}
844
.ui-state-hover a,
845
.ui-state-hover a:hover,
846
.ui-state-hover a:link,
847
.ui-state-hover a:visited,
848
.ui-state-focus a,
849
.ui-state-focus a:hover,
850
.ui-state-focus a:link,
851
.ui-state-focus a:visited {
852
	color: #212121;
853
	text-decoration: none;
854
}
855
.ui-state-active,
856
.ui-widget-content .ui-state-active,
857
.ui-widget-header .ui-state-active {
858
	border: 1px solid #aaaaaa;
859
	background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;
860
	font-weight: normal;
861
	color: #212121;
862
}
863
.ui-state-active a,
864
.ui-state-active a:link,
865
.ui-state-active a:visited {
866
	color: #212121;
867
	text-decoration: none;
868
}
869

  
870
/* Interaction Cues
871
----------------------------------*/
872
.ui-state-highlight,
873
.ui-widget-content .ui-state-highlight,
874
.ui-widget-header .ui-state-highlight {
875
	border: 1px solid #fcefa1;
876
	background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;
877
	color: #363636;
878
}
879
.ui-state-highlight a,
880
.ui-widget-content .ui-state-highlight a,
881
.ui-widget-header .ui-state-highlight a {
882
	color: #363636;
883
}
884
.ui-state-error,
885
.ui-widget-content .ui-state-error,
886
.ui-widget-header .ui-state-error {
887
	border: 1px solid #cd0a0a;
888
	background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;
889
	color: #cd0a0a;
890
}
891
.ui-state-error a,
892
.ui-widget-content .ui-state-error a,
893
.ui-widget-header .ui-state-error a {
894
	color: #cd0a0a;
895
}
896
.ui-state-error-text,
897
.ui-widget-content .ui-state-error-text,
898
.ui-widget-header .ui-state-error-text {
899
	color: #cd0a0a;
900
}
901
.ui-priority-primary,
902
.ui-widget-content .ui-priority-primary,
903
.ui-widget-header .ui-priority-primary {
904
	font-weight: bold;
905
}
906
.ui-priority-secondary,
907
.ui-widget-content .ui-priority-secondary,
908
.ui-widget-header .ui-priority-secondary {
909
	opacity: .7;
910
	filter:Alpha(Opacity=70);
911
	font-weight: normal;
912
}
913
.ui-state-disabled,
914
.ui-widget-content .ui-state-disabled,
915
.ui-widget-header .ui-state-disabled {
916
	opacity: .35;
917
	filter:Alpha(Opacity=35);
918
	background-image: none;
919
}
920
.ui-state-disabled .ui-icon {
921
	filter:Alpha(Opacity=35); /* For IE8 - See #6059 */
922
}
923

  
924
/* Icons
925
----------------------------------*/
926

  
927
/* states and images */
928
.ui-icon {
929
	width: 16px;
930
	height: 16px;
931
}
932
.ui-icon,
933
.ui-widget-content .ui-icon {
934
	background-image: url(images/ui-icons_222222_256x240.png);
935
}
936
.ui-widget-header .ui-icon {
937
	background-image: url(images/ui-icons_222222_256x240.png);
938
}
939
.ui-state-default .ui-icon {
940
	background-image: url(images/ui-icons_888888_256x240.png);
941
}
942
.ui-state-hover .ui-icon,
943
.ui-state-focus .ui-icon {
944
	background-image: url(images/ui-icons_454545_256x240.png);
945
}
946
.ui-state-active .ui-icon {
947
	background-image: url(images/ui-icons_454545_256x240.png);
948
}
949
.ui-state-highlight .ui-icon {
950
	background-image: url(images/ui-icons_2e83ff_256x240.png);
951
}
952
.ui-state-error .ui-icon,
953
.ui-state-error-text .ui-icon {
954
	background-image: url(images/ui-icons_cd0a0a_256x240.png);
955
}
956

  
957
/* positioning */
958
.ui-icon-blank { background-position: 16px 16px; }
959
.ui-icon-carat-1-n { background-position: 0 0; }
960
.ui-icon-carat-1-ne { background-position: -16px 0; }
961
.ui-icon-carat-1-e { background-position: -32px 0; }
962
.ui-icon-carat-1-se { background-position: -48px 0; }
963
.ui-icon-carat-1-s { background-position: -64px 0; }
964
.ui-icon-carat-1-sw { background-position: -80px 0; }
965
.ui-icon-carat-1-w { background-position: -96px 0; }
966
.ui-icon-carat-1-nw { background-position: -112px 0; }
967
.ui-icon-carat-2-n-s { background-position: -128px 0; }
968
.ui-icon-carat-2-e-w { background-position: -144px 0; }
969
.ui-icon-triangle-1-n { background-position: 0 -16px; }
970
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
971
.ui-icon-triangle-1-e { background-position: -32px -16px; }
972
.ui-icon-triangle-1-se { background-position: -48px -16px; }
973
.ui-icon-triangle-1-s { background-position: -64px -16px; }
974
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
975
.ui-icon-triangle-1-w { background-position: -96px -16px; }
976
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
977
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
978
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
979
.ui-icon-arrow-1-n { background-position: 0 -32px; }
980
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
981
.ui-icon-arrow-1-e { background-position: -32px -32px; }
982
.ui-icon-arrow-1-se { background-position: -48px -32px; }
983
.ui-icon-arrow-1-s { background-position: -64px -32px; }
984
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
985
.ui-icon-arrow-1-w { background-position: -96px -32px; }
986
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
987
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
988
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
989
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
990
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
991
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
992
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
993
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
994
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
995
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
996
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
997
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
998
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
999
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
1000
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
1001
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
1002
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
1003
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
1004
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
1005
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
1006
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
1007
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
1008
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
1009
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
1010
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
1011
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
1012
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
1013
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
1014
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
1015
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
1016
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
1017
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
1018
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
1019
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
1020
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
1021
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
1022
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
1023
.ui-icon-arrow-4 { background-position: 0 -80px; }
1024
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
1025
.ui-icon-extlink { background-position: -32px -80px; }
1026
.ui-icon-newwin { background-position: -48px -80px; }
1027
.ui-icon-refresh { background-position: -64px -80px; }
1028
.ui-icon-shuffle { background-position: -80px -80px; }
1029
.ui-icon-transfer-e-w { background-position: -96px -80px; }
1030
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
1031
.ui-icon-folder-collapsed { background-position: 0 -96px; }
1032
.ui-icon-folder-open { background-position: -16px -96px; }
1033
.ui-icon-document { background-position: -32px -96px; }
1034
.ui-icon-document-b { background-position: -48px -96px; }
1035
.ui-icon-note { background-position: -64px -96px; }
1036
.ui-icon-mail-closed { background-position: -80px -96px; }
1037
.ui-icon-mail-open { background-position: -96px -96px; }
1038
.ui-icon-suitcase { background-position: -112px -96px; }
1039
.ui-icon-comment { background-position: -128px -96px; }
1040
.ui-icon-person { background-position: -144px -96px; }
1041
.ui-icon-print { background-position: -160px -96px; }
1042
.ui-icon-trash { background-position: -176px -96px; }
1043
.ui-icon-locked { background-position: -192px -96px; }
1044
.ui-icon-unlocked { background-position: -208px -96px; }
1045
.ui-icon-bookmark { background-position: -224px -96px; }
1046
.ui-icon-tag { background-position: -240px -96px; }
1047
.ui-icon-home { background-position: 0 -112px; }
1048
.ui-icon-flag { background-position: -16px -112px; }
1049
.ui-icon-calendar { background-position: -32px -112px; }
1050
.ui-icon-cart { background-position: -48px -112px; }
1051
.ui-icon-pencil { background-position: -64px -112px; }
1052
.ui-icon-clock { background-position: -80px -112px; }
1053
.ui-icon-disk { background-position: -96px -112px; }
1054
.ui-icon-calculator { background-position: -112px -112px; }
1055
.ui-icon-zoomin { background-position: -128px -112px; }
1056
.ui-icon-zoomout { background-position: -144px -112px; }
1057
.ui-icon-search { background-position: -160px -112px; }
1058
.ui-icon-wrench { background-position: -176px -112px; }
1059
.ui-icon-gear { background-position: -192px -112px; }
1060
.ui-icon-heart { background-position: -208px -112px; }
1061
.ui-icon-star { background-position: -224px -112px; }
1062
.ui-icon-link { background-position: -240px -112px; }
1063
.ui-icon-cancel { background-position: 0 -128px; }
1064
.ui-icon-plus { background-position: -16px -128px; }
1065
.ui-icon-plusthick { background-position: -32px -128px; }
1066
.ui-icon-minus { background-position: -48px -128px; }
1067
.ui-icon-minusthick { background-position: -64px -128px; }
1068
.ui-icon-close { background-position: -80px -128px; }
1069
.ui-icon-closethick { background-position: -96px -128px; }
1070
.ui-icon-key { background-position: -112px -128px; }
1071
.ui-icon-lightbulb { background-position: -128px -128px; }
1072
.ui-icon-scissors { background-position: -144px -128px; }
1073
.ui-icon-clipboard { background-position: -160px -128px; }
1074
.ui-icon-copy { background-position: -176px -128px; }
1075
.ui-icon-contact { background-position: -192px -128px; }
1076
.ui-icon-image { background-position: -208px -128px; }
1077
.ui-icon-video { background-position: -224px -128px; }
1078
.ui-icon-script { background-position: -240px -128px; }
1079
.ui-icon-alert { background-position: 0 -144px; }
1080
.ui-icon-info { background-position: -16px -144px; }
1081
.ui-icon-notice { background-position: -32px -144px; }
1082
.ui-icon-help { background-position: -48px -144px; }
1083
.ui-icon-check { background-position: -64px -144px; }
1084
.ui-icon-bullet { background-position: -80px -144px; }
1085
.ui-icon-radio-on { background-position: -96px -144px; }
1086
.ui-icon-radio-off { background-position: -112px -144px; }
1087
.ui-icon-pin-w { background-position: -128px -144px; }
1088
.ui-icon-pin-s { background-position: -144px -144px; }
1089
.ui-icon-play { background-position: 0 -160px; }
1090
.ui-icon-pause { background-position: -16px -160px; }
1091
.ui-icon-seek-next { background-position: -32px -160px; }
1092
.ui-icon-seek-prev { background-position: -48px -160px; }
1093
.ui-icon-seek-end { background-position: -64px -160px; }
1094
.ui-icon-seek-start { background-position: -80px -160px; }
1095
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
1096
.ui-icon-seek-first { background-position: -80px -160px; }
1097
.ui-icon-stop { background-position: -96px -160px; }
1098
.ui-icon-eject { background-position: -112px -160px; }
1099
.ui-icon-volume-off { background-position: -128px -160px; }
1100
.ui-icon-volume-on { background-position: -144px -160px; }
1101
.ui-icon-power { background-position: 0 -176px; }
1102
.ui-icon-signal-diag { background-position: -16px -176px; }
1103
.ui-icon-signal { background-position: -32px -176px; }
1104
.ui-icon-battery-0 { background-position: -48px -176px; }
1105
.ui-icon-battery-1 { background-position: -64px -176px; }
1106
.ui-icon-battery-2 { background-position: -80px -176px; }
1107
.ui-icon-battery-3 { background-position: -96px -176px; }
1108
.ui-icon-circle-plus { background-position: 0 -192px; }
1109
.ui-icon-circle-minus { background-position: -16px -192px; }
1110
.ui-icon-circle-close { background-position: -32px -192px; }
1111
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
1112
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
1113
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
1114
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
1115
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
1116
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
1117
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
1118
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
1119
.ui-icon-circle-zoomin { background-position: -176px -192px; }
1120
.ui-icon-circle-zoomout { background-position: -192px -192px; }
1121
.ui-icon-circle-check { background-position: -208px -192px; }
1122
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
1123
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
1124
.ui-icon-circlesmall-close { background-position: -32px -208px; }
1125
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
1126
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
1127
.ui-icon-squaresmall-close { background-position: -80px -208px; }
1128
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
1129
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
1130
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
1131
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
1132
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
1133
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
1134

  
1135

  
1136
/* Misc visuals
1137
----------------------------------*/
1138

  
1139
/* Corner radius */
1140
.ui-corner-all,
1141
.ui-corner-top,
1142
.ui-corner-left,
1143
.ui-corner-tl {
1144
	border-top-left-radius: 4px;
1145
}
1146
.ui-corner-all,
1147
.ui-corner-top,
1148
.ui-corner-right,
1149
.ui-corner-tr {
1150
	border-top-right-radius: 4px;
1151
}
1152
.ui-corner-all,
1153
.ui-corner-bottom,
1154
.ui-corner-left,
1155
.ui-corner-bl {
1156
	border-bottom-left-radius: 4px;
1157
}
1158
.ui-corner-all,
1159
.ui-corner-bottom,
1160
.ui-corner-right,
1161
.ui-corner-br {
1162
	border-bottom-right-radius: 4px;
1163
}
1164

  
1165
/* Overlays */
1166
.ui-widget-overlay {
1167
	background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
1168
	opacity: .3;
1169
	filter: Alpha(Opacity=30);
1170
}
1171
.ui-widget-shadow {
1172
	margin: -8px 0 0 -8px;
1173
	padding: 8px;
1174
	background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;
1175
	opacity: .3;
1176
	filter: Alpha(Opacity=30);
1177
	border-radius: 8px;
1178
}
gadjo/static/css/smoothness/jquery-ui-1.10.4.custom.min.css
1
/*! jQuery UI - v1.10.4 - 2014-03-25
2
* http://jqueryui.com
3
* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css
4
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
5
* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
6

  
7
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%;list-style-image:url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
gadjo/static/css/smoothness/jquery-ui-1.8.21.custom.css
1
/*!
2
 * jQuery UI CSS Framework 1.8.21
3
 *
4
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
5
 * Dual licensed under the MIT or GPL Version 2 licenses.
6
 * http://jquery.org/license
7
 *
8
 * http://docs.jquery.com/UI/Theming/API
9
 */
10

  
11
/* Layout helpers
12
----------------------------------*/
13
.ui-helper-hidden { display: none; }
14
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
15
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
16
.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; }
17
.ui-helper-clearfix:after { clear: both; }
18
.ui-helper-clearfix { zoom: 1; }
19
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
20

  
21

  
22
/* Interaction Cues
23
----------------------------------*/
24
.ui-state-disabled { cursor: default !important; }
25

  
26

  
27
/* Icons
28
----------------------------------*/
29

  
30
/* states and images */
31
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
32

  
33

  
34
/* Misc visuals
35
----------------------------------*/
36

  
37
/* Overlays */
38
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
39

  
40

  
41
/*!
42
 * jQuery UI CSS Framework 1.8.21
43
 *
44
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
45
 * Dual licensed under the MIT or GPL Version 2 licenses.
46
 * http://jquery.org/license
47
 *
48
 * http://docs.jquery.com/UI/Theming/API
49
 *
50
 * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
51
 */
52

  
53

  
54
/* Component containers
55
----------------------------------*/
56
.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
57
.ui-widget .ui-widget { font-size: 1em; }
58
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
59
.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
60
.ui-widget-content a { color: #222222; }
61
.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
62
.ui-widget-header a { color: #222222; }
63

  
64
/* Interaction states
65
----------------------------------*/
66
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
67
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
68
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
69
.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
70
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
71
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
72
.ui-widget :active { outline: none; }
73

  
74
/* Interaction Cues
75
----------------------------------*/
76
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight  {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
77
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
78
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; }
79
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
80
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
81
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
82
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary,  .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
83
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
84

  
85
/* Icons
86
----------------------------------*/
87

  
88
/* states and images */
89
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
90
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
91
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
92
.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
93
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
94
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
95
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
96
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
97

  
98
/* positioning */
99
.ui-icon-carat-1-n { background-position: 0 0; }
100
.ui-icon-carat-1-ne { background-position: -16px 0; }
101
.ui-icon-carat-1-e { background-position: -32px 0; }
102
.ui-icon-carat-1-se { background-position: -48px 0; }
103
.ui-icon-carat-1-s { background-position: -64px 0; }
104
.ui-icon-carat-1-sw { background-position: -80px 0; }
105
.ui-icon-carat-1-w { background-position: -96px 0; }
106
.ui-icon-carat-1-nw { background-position: -112px 0; }
107
.ui-icon-carat-2-n-s { background-position: -128px 0; }
108
.ui-icon-carat-2-e-w { background-position: -144px 0; }
109
.ui-icon-triangle-1-n { background-position: 0 -16px; }
110
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
111
.ui-icon-triangle-1-e { background-position: -32px -16px; }
112
.ui-icon-triangle-1-se { background-position: -48px -16px; }
113
.ui-icon-triangle-1-s { background-position: -64px -16px; }
114
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
115
.ui-icon-triangle-1-w { background-position: -96px -16px; }
116
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
117
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
118
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
119
.ui-icon-arrow-1-n { background-position: 0 -32px; }
120
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
121
.ui-icon-arrow-1-e { background-position: -32px -32px; }
122
.ui-icon-arrow-1-se { background-position: -48px -32px; }
123
.ui-icon-arrow-1-s { background-position: -64px -32px; }
124
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
125
.ui-icon-arrow-1-w { background-position: -96px -32px; }
126
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
127
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
128
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
129
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
130
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
131
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
132
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
133
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
134
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
135
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
136
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
137
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
138
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
139
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
140
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
141
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
142
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
143
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
144
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
145
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
146
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
147
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
148
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
149
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
150
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
151
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
152
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
153
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
154
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
155
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
156
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
157
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
158
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
159
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
160
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
161
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
162
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
163
.ui-icon-arrow-4 { background-position: 0 -80px; }
164
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
165
.ui-icon-extlink { background-position: -32px -80px; }
166
.ui-icon-newwin { background-position: -48px -80px; }
167
.ui-icon-refresh { background-position: -64px -80px; }
168
.ui-icon-shuffle { background-position: -80px -80px; }
169
.ui-icon-transfer-e-w { background-position: -96px -80px; }
170
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
171
.ui-icon-folder-collapsed { background-position: 0 -96px; }
172
.ui-icon-folder-open { background-position: -16px -96px; }
173
.ui-icon-document { background-position: -32px -96px; }
174
.ui-icon-document-b { background-position: -48px -96px; }
175
.ui-icon-note { background-position: -64px -96px; }
176
.ui-icon-mail-closed { background-position: -80px -96px; }
177
.ui-icon-mail-open { background-position: -96px -96px; }
178
.ui-icon-suitcase { background-position: -112px -96px; }
179
.ui-icon-comment { background-position: -128px -96px; }
180
.ui-icon-person { background-position: -144px -96px; }
181
.ui-icon-print { background-position: -160px -96px; }
182
.ui-icon-trash { background-position: -176px -96px; }
183
.ui-icon-locked { background-position: -192px -96px; }
184
.ui-icon-unlocked { background-position: -208px -96px; }
185
.ui-icon-bookmark { background-position: -224px -96px; }
186
.ui-icon-tag { background-position: -240px -96px; }
187
.ui-icon-home { background-position: 0 -112px; }
188
.ui-icon-flag { background-position: -16px -112px; }
189
.ui-icon-calendar { background-position: -32px -112px; }
190
.ui-icon-cart { background-position: -48px -112px; }
191
.ui-icon-pencil { background-position: -64px -112px; }
192
.ui-icon-clock { background-position: -80px -112px; }
193
.ui-icon-disk { background-position: -96px -112px; }
194
.ui-icon-calculator { background-position: -112px -112px; }
195
.ui-icon-zoomin { background-position: -128px -112px; }
196
.ui-icon-zoomout { background-position: -144px -112px; }
197
.ui-icon-search { background-position: -160px -112px; }
198
.ui-icon-wrench { background-position: -176px -112px; }
199
.ui-icon-gear { background-position: -192px -112px; }
200
.ui-icon-heart { background-position: -208px -112px; }
201
.ui-icon-star { background-position: -224px -112px; }
202
.ui-icon-link { background-position: -240px -112px; }
203
.ui-icon-cancel { background-position: 0 -128px; }
204
.ui-icon-plus { background-position: -16px -128px; }
205
.ui-icon-plusthick { background-position: -32px -128px; }
206
.ui-icon-minus { background-position: -48px -128px; }
207
.ui-icon-minusthick { background-position: -64px -128px; }
208
.ui-icon-close { background-position: -80px -128px; }
209
.ui-icon-closethick { background-position: -96px -128px; }
210
.ui-icon-key { background-position: -112px -128px; }
211
.ui-icon-lightbulb { background-position: -128px -128px; }
212
.ui-icon-scissors { background-position: -144px -128px; }
213
.ui-icon-clipboard { background-position: -160px -128px; }
214
.ui-icon-copy { background-position: -176px -128px; }
215
.ui-icon-contact { background-position: -192px -128px; }
216
.ui-icon-image { background-position: -208px -128px; }
217
.ui-icon-video { background-position: -224px -128px; }
218
.ui-icon-script { background-position: -240px -128px; }
219
.ui-icon-alert { background-position: 0 -144px; }
220
.ui-icon-info { background-position: -16px -144px; }
221
.ui-icon-notice { background-position: -32px -144px; }
222
.ui-icon-help { background-position: -48px -144px; }
223
.ui-icon-check { background-position: -64px -144px; }
224
.ui-icon-bullet { background-position: -80px -144px; }
225
.ui-icon-radio-off { background-position: -96px -144px; }
226
.ui-icon-radio-on { background-position: -112px -144px; }
227
.ui-icon-pin-w { background-position: -128px -144px; }
228
.ui-icon-pin-s { background-position: -144px -144px; }
229
.ui-icon-play { background-position: 0 -160px; }
230
.ui-icon-pause { background-position: -16px -160px; }
231
.ui-icon-seek-next { background-position: -32px -160px; }
232
.ui-icon-seek-prev { background-position: -48px -160px; }
233
.ui-icon-seek-end { background-position: -64px -160px; }
234
.ui-icon-seek-start { background-position: -80px -160px; }
235
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
236
.ui-icon-seek-first { background-position: -80px -160px; }
237
.ui-icon-stop { background-position: -96px -160px; }
238
.ui-icon-eject { background-position: -112px -160px; }
239
.ui-icon-volume-off { background-position: -128px -160px; }
240
.ui-icon-volume-on { background-position: -144px -160px; }
241
.ui-icon-power { background-position: 0 -176px; }
242
.ui-icon-signal-diag { background-position: -16px -176px; }
243
.ui-icon-signal { background-position: -32px -176px; }
244
.ui-icon-battery-0 { background-position: -48px -176px; }
245
.ui-icon-battery-1 { background-position: -64px -176px; }
246
.ui-icon-battery-2 { background-position: -80px -176px; }
247
.ui-icon-battery-3 { background-position: -96px -176px; }
248
.ui-icon-circle-plus { background-position: 0 -192px; }
249
.ui-icon-circle-minus { background-position: -16px -192px; }
250
.ui-icon-circle-close { background-position: -32px -192px; }
251
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
252
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
253
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
254
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
255
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
256
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
257
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
258
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
259
.ui-icon-circle-zoomin { background-position: -176px -192px; }
260
.ui-icon-circle-zoomout { background-position: -192px -192px; }
261
.ui-icon-circle-check { background-position: -208px -192px; }
262
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
263
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
264
.ui-icon-circlesmall-close { background-position: -32px -208px; }
265
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
266
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
267
.ui-icon-squaresmall-close { background-position: -80px -208px; }
268
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
269
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
270
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
271
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
272
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
273
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
274

  
275

  
276
/* Misc visuals
277
----------------------------------*/
278

  
279
/* Corner radius */
280
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; }
281
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; }
282
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
283
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
284

  
285
/* Overlays */
286
.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
287
.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*!
288
 * jQuery UI Resizable 1.8.21
289
 *
290
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
291
 * Dual licensed under the MIT or GPL Version 2 licenses.
292
 * http://jquery.org/license
293
 *
294
 * http://docs.jquery.com/UI/Resizable#theming
295
 */
296
.ui-resizable { position: relative;}
297
.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; }
298
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
299
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
300
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
301
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
302
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
303
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
304
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
305
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
306
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*!
307
 * jQuery UI Selectable 1.8.21
308
 *
309
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
310
 * Dual licensed under the MIT or GPL Version 2 licenses.
311
 * http://jquery.org/license
312
 *
313
 * http://docs.jquery.com/UI/Selectable#theming
314
 */
315
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
316
/*!
317
 * jQuery UI Accordion 1.8.21
318
 *
319
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
320
 * Dual licensed under the MIT or GPL Version 2 licenses.
321
 * http://jquery.org/license
322
 *
323
 * http://docs.jquery.com/UI/Accordion#theming
324
 */
325
/* IE/Win - Fix animation bug - #4615 */
326
.ui-accordion { width: 100%; }
327
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
328
.ui-accordion .ui-accordion-li-fix { display: inline; }
329
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
330
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
331
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
332
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
333
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
334
.ui-accordion .ui-accordion-content-active { display: block; }
335
/*!
336
 * jQuery UI Autocomplete 1.8.21
337
 *
338
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
339
 * Dual licensed under the MIT or GPL Version 2 licenses.
340
 * http://jquery.org/license
341
 *
342
 * http://docs.jquery.com/UI/Autocomplete#theming
343
 */
344
.ui-autocomplete { position: absolute; cursor: default; }	
345

  
346
/* workarounds */
347
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
348

  
349
/*
350
 * jQuery UI Menu 1.8.21
351
 *
352
 * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
353
 * Dual licensed under the MIT or GPL Version 2 licenses.
354
 * http://jquery.org/license
355
 *
356
 * http://docs.jquery.com/UI/Menu#theming
357
 */
358
.ui-menu {
359
	list-style:none;
360
	padding: 2px;
361
	margin: 0;
362
	display:block;
363
	float: left;
364
}
365
.ui-menu .ui-menu {
366
	margin-top: -3px;
367
}
368
.ui-menu .ui-menu-item {
369
	margin:0;
370
	padding: 0;
371
	zoom: 1;
372
	float: left;
373
	clear: left;
374
	width: 100%;
375
}
376
.ui-menu .ui-menu-item a {
377
	text-decoration:none;
378
	display:block;
379
	padding:.2em .4em;
380
	line-height:1.5;
381
	zoom:1;
382
}
383
.ui-menu .ui-menu-item a.ui-state-hover,
384
.ui-menu .ui-menu-item a.ui-state-active {
385
	font-weight: normal;
386
	margin: -1px;
387
}
388
/*!
389
 * jQuery UI Button 1.8.21
390
 *
391
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
392
 * Dual licensed under the MIT or GPL Version 2 licenses.
393
 * http://jquery.org/license
394
 *
395
 * http://docs.jquery.com/UI/Button#theming
396
 */
397
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
398
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
399
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
400
.ui-button-icons-only { width: 3.4em; } 
401
button.ui-button-icons-only { width: 3.7em; } 
402

  
403
/*button text element */
404
.ui-button .ui-button-text { display: block; line-height: 1.4;  }
405
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
406
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
407
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
408
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
409
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
410
/* no icon support for input elements, provide padding by default */
411
input.ui-button { padding: .4em 1em; }
412

  
413
/*button icon element(s) */
414
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
415
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
416
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
417
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
418
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
419

  
420
/*button sets*/
421
.ui-buttonset { margin-right: 7px; }
422
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
423

  
424
/* workarounds */
425
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
426
/*!
427
 * jQuery UI Dialog 1.8.21
428
 *
429
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
430
 * Dual licensed under the MIT or GPL Version 2 licenses.
431
 * http://jquery.org/license
432
 *
433
 * http://docs.jquery.com/UI/Dialog#theming
434
 */
435
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
436
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative;  }
437
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } 
438
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
439
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
440
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
441
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
442
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
443
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
444
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
445
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
446
.ui-draggable .ui-dialog-titlebar { cursor: move; }
447
/*!
448
 * jQuery UI Slider 1.8.21
449
 *
450
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
451
 * Dual licensed under the MIT or GPL Version 2 licenses.
452
 * http://jquery.org/license
453
 *
454
 * http://docs.jquery.com/UI/Slider#theming
455
 */
456
.ui-slider { position: relative; text-align: left; }
457
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
458
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
459

  
460
.ui-slider-horizontal { height: .8em; }
461
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
462
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
463
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
464
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
465

  
466
.ui-slider-vertical { width: .8em; height: 100px; }
467
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
468
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
469
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
470
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*!
471
 * jQuery UI Tabs 1.8.21
472
 *
473
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
474
 * Dual licensed under the MIT or GPL Version 2 licenses.
475
 * http://jquery.org/license
476
 *
477
 * http://docs.jquery.com/UI/Tabs#theming
478
 */
479
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
480
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
481
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
482
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
483
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
484
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
485
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
486
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
487
.ui-tabs .ui-tabs-hide { display: none !important; }
488
/*!
489
 * jQuery UI Datepicker 1.8.21
490
 *
491
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
492
 * Dual licensed under the MIT or GPL Version 2 licenses.
493
 * http://jquery.org/license
494
 *
495
 * http://docs.jquery.com/UI/Datepicker#theming
496
 */
497
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
498
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
499
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
500
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
501
.ui-datepicker .ui-datepicker-prev { left:2px; }
502
.ui-datepicker .ui-datepicker-next { right:2px; }
503
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
504
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
505
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px;  }
506
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
507
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
508
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
509
.ui-datepicker select.ui-datepicker-month, 
510
.ui-datepicker select.ui-datepicker-year { width: 49%;}
511
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
512
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0;  }
513
.ui-datepicker td { border: 0; padding: 1px; }
514
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
515
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
516
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
517
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
518

  
519
/* with multiple calendars */
520
.ui-datepicker.ui-datepicker-multi { width:auto; }
521
.ui-datepicker-multi .ui-datepicker-group { float:left; }
522
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
523
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
524
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
525
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
526
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
527
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
528
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
529
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
530

  
531
/* RTL support */
532
.ui-datepicker-rtl { direction: rtl; }
533
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
534
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
535
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
536
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
537
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
538
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
539
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
540
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
541
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
542
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
543

  
544
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
545
.ui-datepicker-cover {
546
    display: none; /*sorry for IE5*/
547
    display/**/: block; /*sorry for IE5*/
548
    position: absolute; /*must have*/
549
    z-index: -1; /*must have*/
550
    filter: mask(); /*must have*/
551
    top: -4px; /*must have*/
552
    left: -4px; /*must have*/
553
    width: 200px; /*must have*/
554
    height: 200px; /*must have*/
555
}/*!
556
 * jQuery UI Progressbar 1.8.21
557
 *
558
 * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about)
559
 * Dual licensed under the MIT or GPL Version 2 licenses.
560
 * http://jquery.org/license
561
 *
562
 * http://docs.jquery.com/UI/Progressbar#theming
563
 */
564
.ui-progressbar { height:2em; text-align: left; overflow: hidden; }
565
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
gadjo/static/js/jquery-1.11.0.js
1
/*!
2
 * jQuery JavaScript Library v1.11.0
3
 * http://jquery.com/
4
 *
5
 * Includes Sizzle.js
6
 * http://sizzlejs.com/
7
 *
8
 * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
9
 * Released under the MIT license
10
 * http://jquery.org/license
11
 *
12
 * Date: 2014-01-23T21:02Z
13
 */
14

  
15
(function( global, factory ) {
16

  
17
	if ( typeof module === "object" && typeof module.exports === "object" ) {
18
		// For CommonJS and CommonJS-like environments where a proper window is present,
19
		// execute the factory and get jQuery
20
		// For environments that do not inherently posses a window with a document
21
		// (such as Node.js), expose a jQuery-making factory as module.exports
22
		// This accentuates the need for the creation of a real window
23
		// e.g. var jQuery = require("jquery")(window);
24
		// See ticket #14549 for more info
25
		module.exports = global.document ?
26
			factory( global, true ) :
27
			function( w ) {
28
				if ( !w.document ) {
29
					throw new Error( "jQuery requires a window with a document" );
30
				}
31
				return factory( w );
32
			};
33
	} else {
34
		factory( global );
35
	}
36

  
37
// Pass this if window is not defined yet
38
}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
39

  
40
// Can't do this because several apps including ASP.NET trace
41
// the stack via arguments.caller.callee and Firefox dies if
42
// you try to trace through "use strict" call chains. (#13335)
43
// Support: Firefox 18+
44
//
45

  
46
var deletedIds = [];
47

  
48
var slice = deletedIds.slice;
49

  
50
var concat = deletedIds.concat;
51

  
52
var push = deletedIds.push;
53

  
54
var indexOf = deletedIds.indexOf;
55

  
56
var class2type = {};
57

  
58
var toString = class2type.toString;
59

  
60
var hasOwn = class2type.hasOwnProperty;
61

  
62
var trim = "".trim;
63

  
64
var support = {};
65

  
66

  
67

  
68
var
69
	version = "1.11.0",
70

  
71
	// Define a local copy of jQuery
72
	jQuery = function( selector, context ) {
73
		// The jQuery object is actually just the init constructor 'enhanced'
74
		// Need init if jQuery is called (just allow error to be thrown if not included)
75
		return new jQuery.fn.init( selector, context );
76
	},
77

  
78
	// Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
79
	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
80

  
81
	// Matches dashed string for camelizing
82
	rmsPrefix = /^-ms-/,
83
	rdashAlpha = /-([\da-z])/gi,
84

  
85
	// Used by jQuery.camelCase as callback to replace()
86
	fcamelCase = function( all, letter ) {
87
		return letter.toUpperCase();
88
	};
89

  
90
jQuery.fn = jQuery.prototype = {
91
	// The current version of jQuery being used
92
	jquery: version,
93

  
94
	constructor: jQuery,
95

  
96
	// Start with an empty selector
97
	selector: "",
98

  
99
	// The default length of a jQuery object is 0
100
	length: 0,
101

  
102
	toArray: function() {
103
		return slice.call( this );
104
	},
105

  
106
	// Get the Nth element in the matched element set OR
107
	// Get the whole matched element set as a clean array
108
	get: function( num ) {
109
		return num != null ?
110

  
111
			// Return a 'clean' array
112
			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
113

  
114
			// Return just the object
115
			slice.call( this );
116
	},
117

  
118
	// Take an array of elements and push it onto the stack
119
	// (returning the new matched element set)
120
	pushStack: function( elems ) {
121

  
122
		// Build a new jQuery matched element set
123
		var ret = jQuery.merge( this.constructor(), elems );
124

  
125
		// Add the old object onto the stack (as a reference)
126
		ret.prevObject = this;
127
		ret.context = this.context;
128

  
129
		// Return the newly-formed element set
130
		return ret;
131
	},
132

  
133
	// Execute a callback for every element in the matched set.
134
	// (You can seed the arguments with an array of args, but this is
135
	// only used internally.)
136
	each: function( callback, args ) {
137
		return jQuery.each( this, callback, args );
138
	},
139

  
140
	map: function( callback ) {
141
		return this.pushStack( jQuery.map(this, function( elem, i ) {
142
			return callback.call( elem, i, elem );
143
		}));
144
	},
145

  
146
	slice: function() {
147
		return this.pushStack( slice.apply( this, arguments ) );
148
	},
149

  
150
	first: function() {
151
		return this.eq( 0 );
152
	},
153

  
154
	last: function() {
155
		return this.eq( -1 );
156
	},
157

  
158
	eq: function( i ) {
159
		var len = this.length,
160
			j = +i + ( i < 0 ? len : 0 );
161
		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
162
	},
163

  
164
	end: function() {
165
		return this.prevObject || this.constructor(null);
166
	},
167

  
168
	// For internal use only.
169
	// Behaves like an Array's method, not like a jQuery method.
170
	push: push,
171
	sort: deletedIds.sort,
172
	splice: deletedIds.splice
173
};
174

  
175
jQuery.extend = jQuery.fn.extend = function() {
176
	var src, copyIsArray, copy, name, options, clone,
177
		target = arguments[0] || {},
178
		i = 1,
179
		length = arguments.length,
180
		deep = false;
181

  
182
	// Handle a deep copy situation
183
	if ( typeof target === "boolean" ) {
184
		deep = target;
185

  
186
		// skip the boolean and the target
187
		target = arguments[ i ] || {};
188
		i++;
189
	}
190

  
191
	// Handle case when target is a string or something (possible in deep copy)
192
	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
193
		target = {};
194
	}
195

  
196
	// extend jQuery itself if only one argument is passed
197
	if ( i === length ) {
198
		target = this;
199
		i--;
200
	}
201

  
202
	for ( ; i < length; i++ ) {
203
		// Only deal with non-null/undefined values
204
		if ( (options = arguments[ i ]) != null ) {
205
			// Extend the base object
206
			for ( name in options ) {
207
				src = target[ name ];
208
				copy = options[ name ];
209

  
210
				// Prevent never-ending loop
211
				if ( target === copy ) {
212
					continue;
213
				}
214

  
215
				// Recurse if we're merging plain objects or arrays
216
				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
217
					if ( copyIsArray ) {
218
						copyIsArray = false;
219
						clone = src && jQuery.isArray(src) ? src : [];
220

  
221
					} else {
222
						clone = src && jQuery.isPlainObject(src) ? src : {};
223
					}
224

  
225
					// Never move original objects, clone them
226
					target[ name ] = jQuery.extend( deep, clone, copy );
227

  
228
				// Don't bring in undefined values
229
				} else if ( copy !== undefined ) {
230
					target[ name ] = copy;
231
				}
232
			}
233
		}
234
	}
235

  
236
	// Return the modified object
237
	return target;
238
};
239

  
240
jQuery.extend({
241
	// Unique for each copy of jQuery on the page
242
	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
243

  
244
	// Assume jQuery is ready without the ready module
245
	isReady: true,
246

  
247
	error: function( msg ) {
248
		throw new Error( msg );
249
	},
250

  
251
	noop: function() {},
252

  
253
	// See test/unit/core.js for details concerning isFunction.
254
	// Since version 1.3, DOM methods and functions like alert
255
	// aren't supported. They return false on IE (#2968).
256
	isFunction: function( obj ) {
257
		return jQuery.type(obj) === "function";
258
	},
259

  
260
	isArray: Array.isArray || function( obj ) {
261
		return jQuery.type(obj) === "array";
262
	},
263

  
264
	isWindow: function( obj ) {
265
		/* jshint eqeqeq: false */
266
		return obj != null && obj == obj.window;
267
	},
268

  
269
	isNumeric: function( obj ) {
270
		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
271
		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
272
		// subtraction forces infinities to NaN
273
		return obj - parseFloat( obj ) >= 0;
274
	},
275

  
276
	isEmptyObject: function( obj ) {
277
		var name;
278
		for ( name in obj ) {
279
			return false;
280
		}
281
		return true;
282
	},
283

  
284
	isPlainObject: function( obj ) {
285
		var key;
286

  
287
		// Must be an Object.
288
		// Because of IE, we also have to check the presence of the constructor property.
289
		// Make sure that DOM nodes and window objects don't pass through, as well
290
		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
291
			return false;
292
		}
293

  
294
		try {
295
			// Not own constructor property must be Object
296
			if ( obj.constructor &&
297
				!hasOwn.call(obj, "constructor") &&
298
				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
299
				return false;
300
			}
301
		} catch ( e ) {
302
			// IE8,9 Will throw exceptions on certain host objects #9897
303
			return false;
304
		}
305

  
306
		// Support: IE<9
307
		// Handle iteration over inherited properties before own properties.
308
		if ( support.ownLast ) {
309
			for ( key in obj ) {
310
				return hasOwn.call( obj, key );
311
			}
312
		}
313

  
314
		// Own properties are enumerated firstly, so to speed up,
315
		// if last one is own, then all properties are own.
316
		for ( key in obj ) {}
317

  
318
		return key === undefined || hasOwn.call( obj, key );
319
	},
320

  
321
	type: function( obj ) {
322
		if ( obj == null ) {
323
			return obj + "";
324
		}
325
		return typeof obj === "object" || typeof obj === "function" ?
326
			class2type[ toString.call(obj) ] || "object" :
327
			typeof obj;
328
	},
329

  
330
	// Evaluates a script in a global context
331
	// Workarounds based on findings by Jim Driscoll
332
	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
333
	globalEval: function( data ) {
334
		if ( data && jQuery.trim( data ) ) {
335
			// We use execScript on Internet Explorer
336
			// We use an anonymous function so that context is window
337
			// rather than jQuery in Firefox
338
			( window.execScript || function( data ) {
339
				window[ "eval" ].call( window, data );
340
			} )( data );
341
		}
342
	},
343

  
344
	// Convert dashed to camelCase; used by the css and data modules
345
	// Microsoft forgot to hump their vendor prefix (#9572)
346
	camelCase: function( string ) {
347
		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
348
	},
349

  
350
	nodeName: function( elem, name ) {
351
		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
352
	},
353

  
354
	// args is for internal usage only
355
	each: function( obj, callback, args ) {
356
		var value,
357
			i = 0,
358
			length = obj.length,
359
			isArray = isArraylike( obj );
360

  
361
		if ( args ) {
362
			if ( isArray ) {
363
				for ( ; i < length; i++ ) {
364
					value = callback.apply( obj[ i ], args );
365

  
366
					if ( value === false ) {
367
						break;
368
					}
369
				}
370
			} else {
371
				for ( i in obj ) {
372
					value = callback.apply( obj[ i ], args );
373

  
374
					if ( value === false ) {
375
						break;
376
					}
377
				}
378
			}
379

  
380
		// A special, fast, case for the most common use of each
381
		} else {
382
			if ( isArray ) {
383
				for ( ; i < length; i++ ) {
384
					value = callback.call( obj[ i ], i, obj[ i ] );
385

  
386
					if ( value === false ) {
387
						break;
388
					}
389
				}
390
			} else {
391
				for ( i in obj ) {
392
					value = callback.call( obj[ i ], i, obj[ i ] );
393

  
394
					if ( value === false ) {
395
						break;
396
					}
397
				}
398
			}
399
		}
400

  
401
		return obj;
402
	},
403

  
404
	// Use native String.trim function wherever possible
405
	trim: trim && !trim.call("\uFEFF\xA0") ?
406
		function( text ) {
407
			return text == null ?
408
				"" :
409
				trim.call( text );
410
		} :
411

  
412
		// Otherwise use our own trimming functionality
413
		function( text ) {
414
			return text == null ?
415
				"" :
416
				( text + "" ).replace( rtrim, "" );
417
		},
418

  
419
	// results is for internal usage only
420
	makeArray: function( arr, results ) {
421
		var ret = results || [];
422

  
423
		if ( arr != null ) {
424
			if ( isArraylike( Object(arr) ) ) {
425
				jQuery.merge( ret,
426
					typeof arr === "string" ?
427
					[ arr ] : arr
428
				);
429
			} else {
430
				push.call( ret, arr );
431
			}
432
		}
433

  
434
		return ret;
435
	},
436

  
437
	inArray: function( elem, arr, i ) {
438
		var len;
439

  
440
		if ( arr ) {
441
			if ( indexOf ) {
442
				return indexOf.call( arr, elem, i );
443
			}
444

  
445
			len = arr.length;
446
			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
447

  
448
			for ( ; i < len; i++ ) {
449
				// Skip accessing in sparse arrays
450
				if ( i in arr && arr[ i ] === elem ) {
451
					return i;
452
				}
453
			}
454
		}
455

  
456
		return -1;
457
	},
458

  
459
	merge: function( first, second ) {
460
		var len = +second.length,
461
			j = 0,
462
			i = first.length;
463

  
464
		while ( j < len ) {
465
			first[ i++ ] = second[ j++ ];
466
		}
467

  
468
		// Support: IE<9
469
		// Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists)
470
		if ( len !== len ) {
471
			while ( second[j] !== undefined ) {
472
				first[ i++ ] = second[ j++ ];
473
			}
474
		}
475

  
476
		first.length = i;
477

  
478
		return first;
479
	},
480

  
481
	grep: function( elems, callback, invert ) {
482
		var callbackInverse,
483
			matches = [],
484
			i = 0,
485
			length = elems.length,
486
			callbackExpect = !invert;
487

  
488
		// Go through the array, only saving the items
489
		// that pass the validator function
490
		for ( ; i < length; i++ ) {
491
			callbackInverse = !callback( elems[ i ], i );
492
			if ( callbackInverse !== callbackExpect ) {
493
				matches.push( elems[ i ] );
494
			}
495
		}
496

  
497
		return matches;
498
	},
499

  
500
	// arg is for internal usage only
501
	map: function( elems, callback, arg ) {
502
		var value,
503
			i = 0,
504
			length = elems.length,
505
			isArray = isArraylike( elems ),
506
			ret = [];
507

  
508
		// Go through the array, translating each of the items to their new values
509
		if ( isArray ) {
510
			for ( ; i < length; i++ ) {
511
				value = callback( elems[ i ], i, arg );
512

  
513
				if ( value != null ) {
514
					ret.push( value );
515
				}
516
			}
517

  
518
		// Go through every key on the object,
519
		} else {
520
			for ( i in elems ) {
521
				value = callback( elems[ i ], i, arg );
522

  
523
				if ( value != null ) {
524
					ret.push( value );
525
				}
526
			}
527
		}
528

  
529
		// Flatten any nested arrays
530
		return concat.apply( [], ret );
531
	},
532

  
533
	// A global GUID counter for objects
534
	guid: 1,
535

  
536
	// Bind a function to a context, optionally partially applying any
537
	// arguments.
538
	proxy: function( fn, context ) {
539
		var args, proxy, tmp;
540

  
541
		if ( typeof context === "string" ) {
542
			tmp = fn[ context ];
543
			context = fn;
544
			fn = tmp;
545
		}
546

  
547
		// Quick check to determine if target is callable, in the spec
548
		// this throws a TypeError, but we will just return undefined.
549
		if ( !jQuery.isFunction( fn ) ) {
550
			return undefined;
551
		}
552

  
553
		// Simulated bind
554
		args = slice.call( arguments, 2 );
555
		proxy = function() {
556
			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
557
		};
558

  
559
		// Set the guid of unique handler to the same of original handler, so it can be removed
560
		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
561

  
562
		return proxy;
563
	},
564

  
565
	now: function() {
566
		return +( new Date() );
567
	},
568

  
569
	// jQuery.support is not used in Core but other projects attach their
570
	// properties to it so it needs to exist.
571
	support: support
572
});
573

  
574
// Populate the class2type map
575
jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
576
	class2type[ "[object " + name + "]" ] = name.toLowerCase();
577
});
578

  
579
function isArraylike( obj ) {
580
	var length = obj.length,
581
		type = jQuery.type( obj );
582

  
583
	if ( type === "function" || jQuery.isWindow( obj ) ) {
584
		return false;
585
	}
586

  
587
	if ( obj.nodeType === 1 && length ) {
588
		return true;
589
	}
590

  
591
	return type === "array" || length === 0 ||
592
		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
593
}
594
var Sizzle =
595
/*!
596
 * Sizzle CSS Selector Engine v1.10.16
597
 * http://sizzlejs.com/
598
 *
599
 * Copyright 2013 jQuery Foundation, Inc. and other contributors
600
 * Released under the MIT license
601
 * http://jquery.org/license
602
 *
603
 * Date: 2014-01-13
604
 */
605
(function( window ) {
606

  
607
var i,
608
	support,
609
	Expr,
610
	getText,
611
	isXML,
612
	compile,
613
	outermostContext,
614
	sortInput,
615
	hasDuplicate,
616

  
617
	// Local document vars
618
	setDocument,
619
	document,
620
	docElem,
621
	documentIsHTML,
622
	rbuggyQSA,
623
	rbuggyMatches,
624
	matches,
625
	contains,
626

  
627
	// Instance-specific data
628
	expando = "sizzle" + -(new Date()),
629
	preferredDoc = window.document,
630
	dirruns = 0,
631
	done = 0,
632
	classCache = createCache(),
633
	tokenCache = createCache(),
634
	compilerCache = createCache(),
635
	sortOrder = function( a, b ) {
636
		if ( a === b ) {
637
			hasDuplicate = true;
638
		}
639
		return 0;
640
	},
641

  
642
	// General-purpose constants
643
	strundefined = typeof undefined,
644
	MAX_NEGATIVE = 1 << 31,
645

  
646
	// Instance methods
647
	hasOwn = ({}).hasOwnProperty,
648
	arr = [],
649
	pop = arr.pop,
650
	push_native = arr.push,
651
	push = arr.push,
652
	slice = arr.slice,
653
	// Use a stripped-down indexOf if we can't use a native one
654
	indexOf = arr.indexOf || function( elem ) {
655
		var i = 0,
656
			len = this.length;
657
		for ( ; i < len; i++ ) {
658
			if ( this[i] === elem ) {
659
				return i;
660
			}
661
		}
662
		return -1;
663
	},
664

  
665
	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
666

  
667
	// Regular expressions
668

  
669
	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
670
	whitespace = "[\\x20\\t\\r\\n\\f]",
671
	// http://www.w3.org/TR/css3-syntax/#characters
672
	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
673

  
674
	// Loosely modeled on CSS identifier characters
675
	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
676
	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
677
	identifier = characterEncoding.replace( "w", "w#" ),
678

  
679
	// Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
680
	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
681
		"*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
682

  
683
	// Prefer arguments quoted,
684
	//   then not containing pseudos/brackets,
685
	//   then attribute selectors/non-parenthetical expressions,
686
	//   then anything else
687
	// These preferences are here to reduce the number of selectors
688
	//   needing tokenize in the PSEUDO preFilter
689
	pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
690

  
691
	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
692
	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
693

  
694
	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
695
	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
696

  
697
	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
698

  
699
	rpseudo = new RegExp( pseudos ),
700
	ridentifier = new RegExp( "^" + identifier + "$" ),
701

  
702
	matchExpr = {
703
		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
704
		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
705
		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
706
		"ATTR": new RegExp( "^" + attributes ),
707
		"PSEUDO": new RegExp( "^" + pseudos ),
708
		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
709
			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
710
			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
711
		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
712
		// For use in libraries implementing .is()
713
		// We use this for POS matching in `select`
714
		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
715
			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
716
	},
717

  
718
	rinputs = /^(?:input|select|textarea|button)$/i,
719
	rheader = /^h\d$/i,
720

  
721
	rnative = /^[^{]+\{\s*\[native \w/,
722

  
723
	// Easily-parseable/retrievable ID or TAG or CLASS selectors
724
	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
725

  
726
	rsibling = /[+~]/,
727
	rescape = /'|\\/g,
728

  
729
	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
730
	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
731
	funescape = function( _, escaped, escapedWhitespace ) {
732
		var high = "0x" + escaped - 0x10000;
733
		// NaN means non-codepoint
734
		// Support: Firefox
735
		// Workaround erroneous numeric interpretation of +"0x"
736
		return high !== high || escapedWhitespace ?
737
			escaped :
738
			high < 0 ?
739
				// BMP codepoint
740
				String.fromCharCode( high + 0x10000 ) :
741
				// Supplemental Plane codepoint (surrogate pair)
742
				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
743
	};
744

  
745
// Optimize for push.apply( _, NodeList )
746
try {
747
	push.apply(
748
		(arr = slice.call( preferredDoc.childNodes )),
749
		preferredDoc.childNodes
750
	);
751
	// Support: Android<4.0
752
	// Detect silently failing push.apply
753
	arr[ preferredDoc.childNodes.length ].nodeType;
754
} catch ( e ) {
755
	push = { apply: arr.length ?
756

  
757
		// Leverage slice if possible
758
		function( target, els ) {
759
			push_native.apply( target, slice.call(els) );
760
		} :
761

  
762
		// Support: IE<9
763
		// Otherwise append directly
764
		function( target, els ) {
765
			var j = target.length,
766
				i = 0;
767
			// Can't trust NodeList.length
768
			while ( (target[j++] = els[i++]) ) {}
769
			target.length = j - 1;
770
		}
771
	};
772
}
773

  
774
function Sizzle( selector, context, results, seed ) {
775
	var match, elem, m, nodeType,
776
		// QSA vars
777
		i, groups, old, nid, newContext, newSelector;
778

  
779
	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
780
		setDocument( context );
781
	}
782

  
783
	context = context || document;
784
	results = results || [];
785

  
786
	if ( !selector || typeof selector !== "string" ) {
787
		return results;
788
	}
789

  
790
	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
791
		return [];
792
	}
793

  
794
	if ( documentIsHTML && !seed ) {
795

  
796
		// Shortcuts
797
		if ( (match = rquickExpr.exec( selector )) ) {
798
			// Speed-up: Sizzle("#ID")
799
			if ( (m = match[1]) ) {
800
				if ( nodeType === 9 ) {
801
					elem = context.getElementById( m );
802
					// Check parentNode to catch when Blackberry 4.6 returns
803
					// nodes that are no longer in the document (jQuery #6963)
804
					if ( elem && elem.parentNode ) {
805
						// Handle the case where IE, Opera, and Webkit return items
806
						// by name instead of ID
807
						if ( elem.id === m ) {
808
							results.push( elem );
809
							return results;
810
						}
811
					} else {
812
						return results;
813
					}
814
				} else {
815
					// Context is not a document
816
					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
817
						contains( context, elem ) && elem.id === m ) {
818
						results.push( elem );
819
						return results;
820
					}
821
				}
822

  
823
			// Speed-up: Sizzle("TAG")
824
			} else if ( match[2] ) {
825
				push.apply( results, context.getElementsByTagName( selector ) );
826
				return results;
827

  
828
			// Speed-up: Sizzle(".CLASS")
829
			} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
830
				push.apply( results, context.getElementsByClassName( m ) );
831
				return results;
832
			}
833
		}
834

  
835
		// QSA path
836
		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
837
			nid = old = expando;
838
			newContext = context;
839
			newSelector = nodeType === 9 && selector;
840

  
841
			// qSA works strangely on Element-rooted queries
842
			// We can work around this by specifying an extra ID on the root
843
			// and working up from there (Thanks to Andrew Dupont for the technique)
844
			// IE 8 doesn't work on object elements
845
			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
846
				groups = tokenize( selector );
847

  
848
				if ( (old = context.getAttribute("id")) ) {
849
					nid = old.replace( rescape, "\\$&" );
850
				} else {
851
					context.setAttribute( "id", nid );
852
				}
853
				nid = "[id='" + nid + "'] ";
854

  
855
				i = groups.length;
856
				while ( i-- ) {
857
					groups[i] = nid + toSelector( groups[i] );
858
				}
859
				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
860
				newSelector = groups.join(",");
861
			}
862

  
863
			if ( newSelector ) {
864
				try {
865
					push.apply( results,
866
						newContext.querySelectorAll( newSelector )
867
					);
868
					return results;
869
				} catch(qsaError) {
870
				} finally {
871
					if ( !old ) {
872
						context.removeAttribute("id");
873
					}
874
				}
875
			}
876
		}
877
	}
878

  
879
	// All others
880
	return select( selector.replace( rtrim, "$1" ), context, results, seed );
881
}
882

  
883
/**
884
 * Create key-value caches of limited size
885
 * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
886
 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
887
 *	deleting the oldest entry
888
 */
889
function createCache() {
890
	var keys = [];
891

  
892
	function cache( key, value ) {
893
		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
894
		if ( keys.push( key + " " ) > Expr.cacheLength ) {
895
			// Only keep the most recent entries
896
			delete cache[ keys.shift() ];
897
		}
898
		return (cache[ key + " " ] = value);
899
	}
900
	return cache;
901
}
902

  
903
/**
904
 * Mark a function for special use by Sizzle
905
 * @param {Function} fn The function to mark
906
 */
907
function markFunction( fn ) {
908
	fn[ expando ] = true;
909
	return fn;
910
}
911

  
912
/**
913
 * Support testing using an element
914
 * @param {Function} fn Passed the created div and expects a boolean result
915
 */
916
function assert( fn ) {
917
	var div = document.createElement("div");
918

  
919
	try {
920
		return !!fn( div );
921
	} catch (e) {
922
		return false;
923
	} finally {
924
		// Remove from its parent by default
925
		if ( div.parentNode ) {
926
			div.parentNode.removeChild( div );
927
		}
928
		// release memory in IE
929
		div = null;
930
	}
931
}
932

  
933
/**
934
 * Adds the same handler for all of the specified attrs
935
 * @param {String} attrs Pipe-separated list of attributes
936
 * @param {Function} handler The method that will be applied
937
 */
938
function addHandle( attrs, handler ) {
939
	var arr = attrs.split("|"),
940
		i = attrs.length;
941

  
942
	while ( i-- ) {
943
		Expr.attrHandle[ arr[i] ] = handler;
944
	}
945
}
946

  
947
/**
948
 * Checks document order of two siblings
949
 * @param {Element} a
950
 * @param {Element} b
951
 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
952
 */
953
function siblingCheck( a, b ) {
954
	var cur = b && a,
955
		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
956
			( ~b.sourceIndex || MAX_NEGATIVE ) -
957
			( ~a.sourceIndex || MAX_NEGATIVE );
958

  
959
	// Use IE sourceIndex if available on both nodes
960
	if ( diff ) {
961
		return diff;
962
	}
963

  
964
	// Check if b follows a
965
	if ( cur ) {
966
		while ( (cur = cur.nextSibling) ) {
967
			if ( cur === b ) {
968
				return -1;
969
			}
970
		}
971
	}
972

  
973
	return a ? 1 : -1;
974
}
975

  
976
/**
977
 * Returns a function to use in pseudos for input types
978
 * @param {String} type
979
 */
980
function createInputPseudo( type ) {
981
	return function( elem ) {
982
		var name = elem.nodeName.toLowerCase();
983
		return name === "input" && elem.type === type;
984
	};
985
}
986

  
987
/**
988
 * Returns a function to use in pseudos for buttons
989
 * @param {String} type
990
 */
991
function createButtonPseudo( type ) {
992
	return function( elem ) {
993
		var name = elem.nodeName.toLowerCase();
994
		return (name === "input" || name === "button") && elem.type === type;
995
	};
996
}
997

  
998
/**
999
 * Returns a function to use in pseudos for positionals
1000
 * @param {Function} fn
1001
 */
1002
function createPositionalPseudo( fn ) {
1003
	return markFunction(function( argument ) {
1004
		argument = +argument;
1005
		return markFunction(function( seed, matches ) {
1006
			var j,
1007
				matchIndexes = fn( [], seed.length, argument ),
1008
				i = matchIndexes.length;
1009

  
1010
			// Match elements found at the specified indexes
1011
			while ( i-- ) {
1012
				if ( seed[ (j = matchIndexes[i]) ] ) {
1013
					seed[j] = !(matches[j] = seed[j]);
1014
				}
1015
			}
1016
		});
1017
	});
1018
}
1019

  
1020
/**
1021
 * Checks a node for validity as a Sizzle context
1022
 * @param {Element|Object=} context
1023
 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
1024
 */
1025
function testContext( context ) {
1026
	return context && typeof context.getElementsByTagName !== strundefined && context;
1027
}
1028

  
1029
// Expose support vars for convenience
1030
support = Sizzle.support = {};
1031

  
1032
/**
1033
 * Detects XML nodes
1034
 * @param {Element|Object} elem An element or a document
1035
 * @returns {Boolean} True iff elem is a non-HTML XML node
1036
 */
1037
isXML = Sizzle.isXML = function( elem ) {
1038
	// documentElement is verified for cases where it doesn't yet exist
1039
	// (such as loading iframes in IE - #4833)
1040
	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
1041
	return documentElement ? documentElement.nodeName !== "HTML" : false;
1042
};
1043

  
1044
/**
1045
 * Sets document-related variables once based on the current document
1046
 * @param {Element|Object} [doc] An element or document object to use to set the document
1047
 * @returns {Object} Returns the current document
1048
 */
1049
setDocument = Sizzle.setDocument = function( node ) {
1050
	var hasCompare,
1051
		doc = node ? node.ownerDocument || node : preferredDoc,
1052
		parent = doc.defaultView;
1053

  
1054
	// If no document and documentElement is available, return
1055
	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
1056
		return document;
1057
	}
1058

  
1059
	// Set our document
1060
	document = doc;
1061
	docElem = doc.documentElement;
1062

  
1063
	// Support tests
1064
	documentIsHTML = !isXML( doc );
1065

  
1066
	// Support: IE>8
1067
	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
1068
	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
1069
	// IE6-8 do not support the defaultView property so parent will be undefined
1070
	if ( parent && parent !== parent.top ) {
1071
		// IE11 does not have attachEvent, so all must suffer
1072
		if ( parent.addEventListener ) {
1073
			parent.addEventListener( "unload", function() {
1074
				setDocument();
1075
			}, false );
1076
		} else if ( parent.attachEvent ) {
1077
			parent.attachEvent( "onunload", function() {
1078
				setDocument();
1079
			});
1080
		}
1081
	}
1082

  
1083
	/* Attributes
1084
	---------------------------------------------------------------------- */
1085

  
1086
	// Support: IE<8
1087
	// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
1088
	support.attributes = assert(function( div ) {
1089
		div.className = "i";
1090
		return !div.getAttribute("className");
1091
	});
1092

  
1093
	/* getElement(s)By*
1094
	---------------------------------------------------------------------- */
1095

  
1096
	// Check if getElementsByTagName("*") returns only elements
1097
	support.getElementsByTagName = assert(function( div ) {
1098
		div.appendChild( doc.createComment("") );
1099
		return !div.getElementsByTagName("*").length;
1100
	});
1101

  
1102
	// Check if getElementsByClassName can be trusted
1103
	support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
1104
		div.innerHTML = "<div class='a'></div><div class='a i'></div>";
1105

  
1106
		// Support: Safari<4
1107
		// Catch class over-caching
1108
		div.firstChild.className = "i";
1109
		// Support: Opera<10
1110
		// Catch gEBCN failure to find non-leading classes
1111
		return div.getElementsByClassName("i").length === 2;
1112
	});
1113

  
1114
	// Support: IE<10
1115
	// Check if getElementById returns elements by name
1116
	// The broken getElementById methods don't pick up programatically-set names,
1117
	// so use a roundabout getElementsByName test
1118
	support.getById = assert(function( div ) {
1119
		docElem.appendChild( div ).id = expando;
1120
		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
1121
	});
1122

  
1123
	// ID find and filter
1124
	if ( support.getById ) {
1125
		Expr.find["ID"] = function( id, context ) {
1126
			if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
1127
				var m = context.getElementById( id );
1128
				// Check parentNode to catch when Blackberry 4.6 returns
1129
				// nodes that are no longer in the document #6963
1130
				return m && m.parentNode ? [m] : [];
1131
			}
1132
		};
1133
		Expr.filter["ID"] = function( id ) {
1134
			var attrId = id.replace( runescape, funescape );
1135
			return function( elem ) {
1136
				return elem.getAttribute("id") === attrId;
1137
			};
1138
		};
1139
	} else {
1140
		// Support: IE6/7
1141
		// getElementById is not reliable as a find shortcut
1142
		delete Expr.find["ID"];
1143

  
1144
		Expr.filter["ID"] =  function( id ) {
1145
			var attrId = id.replace( runescape, funescape );
1146
			return function( elem ) {
1147
				var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
1148
				return node && node.value === attrId;
1149
			};
1150
		};
1151
	}
1152

  
1153
	// Tag
1154
	Expr.find["TAG"] = support.getElementsByTagName ?
1155
		function( tag, context ) {
1156
			if ( typeof context.getElementsByTagName !== strundefined ) {
1157
				return context.getElementsByTagName( tag );
1158
			}
1159
		} :
1160
		function( tag, context ) {
1161
			var elem,
1162
				tmp = [],
1163
				i = 0,
1164
				results = context.getElementsByTagName( tag );
1165

  
1166
			// Filter out possible comments
1167
			if ( tag === "*" ) {
1168
				while ( (elem = results[i++]) ) {
1169
					if ( elem.nodeType === 1 ) {
1170
						tmp.push( elem );
1171
					}
1172
				}
1173

  
1174
				return tmp;
1175
			}
1176
			return results;
1177
		};
1178

  
1179
	// Class
1180
	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
1181
		if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
1182
			return context.getElementsByClassName( className );
1183
		}
1184
	};
1185

  
1186
	/* QSA/matchesSelector
1187
	---------------------------------------------------------------------- */
1188

  
1189
	// QSA and matchesSelector support
1190

  
1191
	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
1192
	rbuggyMatches = [];
1193

  
1194
	// qSa(:focus) reports false when true (Chrome 21)
1195
	// We allow this because of a bug in IE8/9 that throws an error
1196
	// whenever `document.activeElement` is accessed on an iframe
1197
	// So, we allow :focus to pass through QSA all the time to avoid the IE error
1198
	// See http://bugs.jquery.com/ticket/13378
1199
	rbuggyQSA = [];
1200

  
1201
	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
1202
		// Build QSA regex
1203
		// Regex strategy adopted from Diego Perini
1204
		assert(function( div ) {
1205
			// Select is set to empty string on purpose
1206
			// This is to test IE's treatment of not explicitly
1207
			// setting a boolean content attribute,
1208
			// since its presence should be enough
1209
			// http://bugs.jquery.com/ticket/12359
1210
			div.innerHTML = "<select t=''><option selected=''></option></select>";
1211

  
1212
			// Support: IE8, Opera 10-12
1213
			// Nothing should be selected when empty strings follow ^= or $= or *=
1214
			if ( div.querySelectorAll("[t^='']").length ) {
1215
				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
1216
			}
1217

  
1218
			// Support: IE8
1219
			// Boolean attributes and "value" are not treated correctly
1220
			if ( !div.querySelectorAll("[selected]").length ) {
1221
				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
1222
			}
1223

  
1224
			// Webkit/Opera - :checked should return selected option elements
1225
			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1226
			// IE8 throws error here and will not see later tests
1227
			if ( !div.querySelectorAll(":checked").length ) {
1228
				rbuggyQSA.push(":checked");
1229
			}
1230
		});
1231

  
1232
		assert(function( div ) {
1233
			// Support: Windows 8 Native Apps
1234
			// The type and name attributes are restricted during .innerHTML assignment
1235
			var input = doc.createElement("input");
1236
			input.setAttribute( "type", "hidden" );
1237
			div.appendChild( input ).setAttribute( "name", "D" );
1238

  
1239
			// Support: IE8
1240
			// Enforce case-sensitivity of name attribute
1241
			if ( div.querySelectorAll("[name=d]").length ) {
1242
				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
1243
			}
1244

  
1245
			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
1246
			// IE8 throws error here and will not see later tests
1247
			if ( !div.querySelectorAll(":enabled").length ) {
1248
				rbuggyQSA.push( ":enabled", ":disabled" );
1249
			}
1250

  
1251
			// Opera 10-11 does not throw on post-comma invalid pseudos
1252
			div.querySelectorAll("*,:x");
1253
			rbuggyQSA.push(",.*:");
1254
		});
1255
	}
1256

  
1257
	if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
1258
		docElem.mozMatchesSelector ||
1259
		docElem.oMatchesSelector ||
1260
		docElem.msMatchesSelector) )) ) {
1261

  
1262
		assert(function( div ) {
1263
			// Check to see if it's possible to do matchesSelector
1264
			// on a disconnected node (IE 9)
1265
			support.disconnectedMatch = matches.call( div, "div" );
1266

  
1267
			// This should fail with an exception
1268
			// Gecko does not error, returns false instead
1269
			matches.call( div, "[s!='']:x" );
1270
			rbuggyMatches.push( "!=", pseudos );
1271
		});
1272
	}
1273

  
1274
	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
1275
	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
1276

  
1277
	/* Contains
1278
	---------------------------------------------------------------------- */
1279
	hasCompare = rnative.test( docElem.compareDocumentPosition );
1280

  
1281
	// Element contains another
1282
	// Purposefully does not implement inclusive descendent
1283
	// As in, an element does not contain itself
1284
	contains = hasCompare || rnative.test( docElem.contains ) ?
1285
		function( a, b ) {
1286
			var adown = a.nodeType === 9 ? a.documentElement : a,
1287
				bup = b && b.parentNode;
1288
			return a === bup || !!( bup && bup.nodeType === 1 && (
1289
				adown.contains ?
1290
					adown.contains( bup ) :
1291
					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
1292
			));
1293
		} :
1294
		function( a, b ) {
1295
			if ( b ) {
1296
				while ( (b = b.parentNode) ) {
1297
					if ( b === a ) {
1298
						return true;
1299
					}
1300
				}
1301
			}
1302
			return false;
1303
		};
1304

  
1305
	/* Sorting
1306
	---------------------------------------------------------------------- */
1307

  
1308
	// Document order sorting
1309
	sortOrder = hasCompare ?
1310
	function( a, b ) {
1311

  
1312
		// Flag for duplicate removal
1313
		if ( a === b ) {
1314
			hasDuplicate = true;
1315
			return 0;
1316
		}
1317

  
1318
		// Sort on method existence if only one input has compareDocumentPosition
1319
		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
1320
		if ( compare ) {
1321
			return compare;
1322
		}
1323

  
1324
		// Calculate position if both inputs belong to the same document
1325
		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
1326
			a.compareDocumentPosition( b ) :
1327

  
1328
			// Otherwise we know they are disconnected
1329
			1;
1330

  
1331
		// Disconnected nodes
1332
		if ( compare & 1 ||
1333
			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
1334

  
1335
			// Choose the first element that is related to our preferred document
1336
			if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
1337
				return -1;
1338
			}
1339
			if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
1340
				return 1;
1341
			}
1342

  
1343
			// Maintain original order
1344
			return sortInput ?
1345
				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
1346
				0;
1347
		}
1348

  
1349
		return compare & 4 ? -1 : 1;
1350
	} :
1351
	function( a, b ) {
1352
		// Exit early if the nodes are identical
1353
		if ( a === b ) {
1354
			hasDuplicate = true;
1355
			return 0;
1356
		}
1357

  
1358
		var cur,
1359
			i = 0,
1360
			aup = a.parentNode,
1361
			bup = b.parentNode,
1362
			ap = [ a ],
1363
			bp = [ b ];
1364

  
1365
		// Parentless nodes are either documents or disconnected
1366
		if ( !aup || !bup ) {
1367
			return a === doc ? -1 :
1368
				b === doc ? 1 :
1369
				aup ? -1 :
1370
				bup ? 1 :
1371
				sortInput ?
1372
				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
1373
				0;
1374

  
1375
		// If the nodes are siblings, we can do a quick check
1376
		} else if ( aup === bup ) {
1377
			return siblingCheck( a, b );
1378
		}
1379

  
1380
		// Otherwise we need full lists of their ancestors for comparison
1381
		cur = a;
1382
		while ( (cur = cur.parentNode) ) {
1383
			ap.unshift( cur );
1384
		}
1385
		cur = b;
1386
		while ( (cur = cur.parentNode) ) {
1387
			bp.unshift( cur );
1388
		}
1389

  
1390
		// Walk down the tree looking for a discrepancy
1391
		while ( ap[i] === bp[i] ) {
1392
			i++;
1393
		}
1394

  
1395
		return i ?
1396
			// Do a sibling check if the nodes have a common ancestor
1397
			siblingCheck( ap[i], bp[i] ) :
1398

  
1399
			// Otherwise nodes in our document sort first
1400
			ap[i] === preferredDoc ? -1 :
1401
			bp[i] === preferredDoc ? 1 :
1402
			0;
1403
	};
1404

  
1405
	return doc;
1406
};
1407

  
1408
Sizzle.matches = function( expr, elements ) {
1409
	return Sizzle( expr, null, null, elements );
1410
};
1411

  
1412
Sizzle.matchesSelector = function( elem, expr ) {
1413
	// Set document vars if needed
1414
	if ( ( elem.ownerDocument || elem ) !== document ) {
1415
		setDocument( elem );
1416
	}
1417

  
1418
	// Make sure that attribute selectors are quoted
1419
	expr = expr.replace( rattributeQuotes, "='$1']" );
1420

  
1421
	if ( support.matchesSelector && documentIsHTML &&
1422
		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
1423
		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
1424

  
1425
		try {
1426
			var ret = matches.call( elem, expr );
1427

  
1428
			// IE 9's matchesSelector returns false on disconnected nodes
1429
			if ( ret || support.disconnectedMatch ||
1430
					// As well, disconnected nodes are said to be in a document
1431
					// fragment in IE 9
1432
					elem.document && elem.document.nodeType !== 11 ) {
1433
				return ret;
1434
			}
1435
		} catch(e) {}
1436
	}
1437

  
1438
	return Sizzle( expr, document, null, [elem] ).length > 0;
1439
};
1440

  
1441
Sizzle.contains = function( context, elem ) {
1442
	// Set document vars if needed
1443
	if ( ( context.ownerDocument || context ) !== document ) {
1444
		setDocument( context );
1445
	}
1446
	return contains( context, elem );
1447
};
1448

  
1449
Sizzle.attr = function( elem, name ) {
1450
	// Set document vars if needed
1451
	if ( ( elem.ownerDocument || elem ) !== document ) {
1452
		setDocument( elem );
1453
	}
1454

  
1455
	var fn = Expr.attrHandle[ name.toLowerCase() ],
1456
		// Don't get fooled by Object.prototype properties (jQuery #13807)
1457
		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
1458
			fn( elem, name, !documentIsHTML ) :
1459
			undefined;
1460

  
1461
	return val !== undefined ?
1462
		val :
1463
		support.attributes || !documentIsHTML ?
1464
			elem.getAttribute( name ) :
1465
			(val = elem.getAttributeNode(name)) && val.specified ?
1466
				val.value :
1467
				null;
1468
};
1469

  
1470
Sizzle.error = function( msg ) {
1471
	throw new Error( "Syntax error, unrecognized expression: " + msg );
1472
};
1473

  
1474
/**
1475
 * Document sorting and removing duplicates
1476
 * @param {ArrayLike} results
1477
 */
1478
Sizzle.uniqueSort = function( results ) {
1479
	var elem,
1480
		duplicates = [],
1481
		j = 0,
1482
		i = 0;
1483

  
1484
	// Unless we *know* we can detect duplicates, assume their presence
1485
	hasDuplicate = !support.detectDuplicates;
1486
	sortInput = !support.sortStable && results.slice( 0 );
1487
	results.sort( sortOrder );
1488

  
1489
	if ( hasDuplicate ) {
1490
		while ( (elem = results[i++]) ) {
1491
			if ( elem === results[ i ] ) {
1492
				j = duplicates.push( i );
1493
			}
1494
		}
1495
		while ( j-- ) {
1496
			results.splice( duplicates[ j ], 1 );
1497
		}
1498
	}
1499

  
1500
	// Clear input after sorting to release objects
1501
	// See https://github.com/jquery/sizzle/pull/225
1502
	sortInput = null;
1503

  
1504
	return results;
1505
};
1506

  
1507
/**
1508
 * Utility function for retrieving the text value of an array of DOM nodes
1509
 * @param {Array|Element} elem
1510
 */
1511
getText = Sizzle.getText = function( elem ) {
1512
	var node,
1513
		ret = "",
1514
		i = 0,
1515
		nodeType = elem.nodeType;
1516

  
1517
	if ( !nodeType ) {
1518
		// If no nodeType, this is expected to be an array
1519
		while ( (node = elem[i++]) ) {
1520
			// Do not traverse comment nodes
1521
			ret += getText( node );
1522
		}
1523
	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
1524
		// Use textContent for elements
1525
		// innerText usage removed for consistency of new lines (jQuery #11153)
1526
		if ( typeof elem.textContent === "string" ) {
1527
			return elem.textContent;
1528
		} else {
1529
			// Traverse its children
1530
			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1531
				ret += getText( elem );
1532
			}
1533
		}
1534
	} else if ( nodeType === 3 || nodeType === 4 ) {
1535
		return elem.nodeValue;
1536
	}
1537
	// Do not include comment or processing instruction nodes
1538

  
1539
	return ret;
1540
};
1541

  
1542
Expr = Sizzle.selectors = {
1543

  
1544
	// Can be adjusted by the user
1545
	cacheLength: 50,
1546

  
1547
	createPseudo: markFunction,
1548

  
1549
	match: matchExpr,
1550

  
1551
	attrHandle: {},
1552

  
1553
	find: {},
1554

  
1555
	relative: {
1556
		">": { dir: "parentNode", first: true },
1557
		" ": { dir: "parentNode" },
1558
		"+": { dir: "previousSibling", first: true },
1559
		"~": { dir: "previousSibling" }
1560
	},
1561

  
1562
	preFilter: {
1563
		"ATTR": function( match ) {
1564
			match[1] = match[1].replace( runescape, funescape );
1565

  
1566
			// Move the given value to match[3] whether quoted or unquoted
1567
			match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
1568

  
1569
			if ( match[2] === "~=" ) {
1570
				match[3] = " " + match[3] + " ";
1571
			}
1572

  
1573
			return match.slice( 0, 4 );
1574
		},
1575

  
1576
		"CHILD": function( match ) {
1577
			/* matches from matchExpr["CHILD"]
1578
				1 type (only|nth|...)
1579
				2 what (child|of-type)
1580
				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
1581
				4 xn-component of xn+y argument ([+-]?\d*n|)
1582
				5 sign of xn-component
1583
				6 x of xn-component
1584
				7 sign of y-component
1585
				8 y of y-component
1586
			*/
1587
			match[1] = match[1].toLowerCase();
1588

  
1589
			if ( match[1].slice( 0, 3 ) === "nth" ) {
1590
				// nth-* requires argument
1591
				if ( !match[3] ) {
1592
					Sizzle.error( match[0] );
1593
				}
1594

  
1595
				// numeric x and y parameters for Expr.filter.CHILD
1596
				// remember that false/true cast respectively to 0/1
1597
				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
1598
				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
1599

  
1600
			// other types prohibit arguments
1601
			} else if ( match[3] ) {
1602
				Sizzle.error( match[0] );
1603
			}
1604

  
1605
			return match;
1606
		},
1607

  
1608
		"PSEUDO": function( match ) {
1609
			var excess,
1610
				unquoted = !match[5] && match[2];
1611

  
1612
			if ( matchExpr["CHILD"].test( match[0] ) ) {
1613
				return null;
1614
			}
1615

  
1616
			// Accept quoted arguments as-is
1617
			if ( match[3] && match[4] !== undefined ) {
1618
				match[2] = match[4];
1619

  
1620
			// Strip excess characters from unquoted arguments
1621
			} else if ( unquoted && rpseudo.test( unquoted ) &&
1622
				// Get excess from tokenize (recursively)
1623
				(excess = tokenize( unquoted, true )) &&
1624
				// advance to the next closing parenthesis
1625
				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
1626

  
1627
				// excess is a negative index
1628
				match[0] = match[0].slice( 0, excess );
1629
				match[2] = unquoted.slice( 0, excess );
1630
			}
1631

  
1632
			// Return only captures needed by the pseudo filter method (type and argument)
1633
			return match.slice( 0, 3 );
1634
		}
1635
	},
1636

  
1637
	filter: {
1638

  
1639
		"TAG": function( nodeNameSelector ) {
1640
			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
1641
			return nodeNameSelector === "*" ?
1642
				function() { return true; } :
1643
				function( elem ) {
1644
					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
1645
				};
1646
		},
1647

  
1648
		"CLASS": function( className ) {
1649
			var pattern = classCache[ className + " " ];
1650

  
1651
			return pattern ||
1652
				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
1653
				classCache( className, function( elem ) {
1654
					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
1655
				});
1656
		},
1657

  
1658
		"ATTR": function( name, operator, check ) {
1659
			return function( elem ) {
1660
				var result = Sizzle.attr( elem, name );
1661

  
1662
				if ( result == null ) {
1663
					return operator === "!=";
1664
				}
1665
				if ( !operator ) {
1666
					return true;
1667
				}
1668

  
1669
				result += "";
1670

  
1671
				return operator === "=" ? result === check :
1672
					operator === "!=" ? result !== check :
1673
					operator === "^=" ? check && result.indexOf( check ) === 0 :
1674
					operator === "*=" ? check && result.indexOf( check ) > -1 :
1675
					operator === "$=" ? check && result.slice( -check.length ) === check :
1676
					operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
1677
					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
1678
					false;
1679
			};
1680
		},
1681

  
1682
		"CHILD": function( type, what, argument, first, last ) {
1683
			var simple = type.slice( 0, 3 ) !== "nth",
1684
				forward = type.slice( -4 ) !== "last",
1685
				ofType = what === "of-type";
1686

  
1687
			return first === 1 && last === 0 ?
1688

  
1689
				// Shortcut for :nth-*(n)
1690
				function( elem ) {
1691
					return !!elem.parentNode;
1692
				} :
1693

  
1694
				function( elem, context, xml ) {
1695
					var cache, outerCache, node, diff, nodeIndex, start,
1696
						dir = simple !== forward ? "nextSibling" : "previousSibling",
1697
						parent = elem.parentNode,
1698
						name = ofType && elem.nodeName.toLowerCase(),
1699
						useCache = !xml && !ofType;
1700

  
1701
					if ( parent ) {
1702

  
1703
						// :(first|last|only)-(child|of-type)
1704
						if ( simple ) {
1705
							while ( dir ) {
1706
								node = elem;
1707
								while ( (node = node[ dir ]) ) {
1708
									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
1709
										return false;
1710
									}
1711
								}
1712
								// Reverse direction for :only-* (if we haven't yet done so)
1713
								start = dir = type === "only" && !start && "nextSibling";
1714
							}
1715
							return true;
1716
						}
1717

  
1718
						start = [ forward ? parent.firstChild : parent.lastChild ];
1719

  
1720
						// non-xml :nth-child(...) stores cache data on `parent`
1721
						if ( forward && useCache ) {
1722
							// Seek `elem` from a previously-cached index
1723
							outerCache = parent[ expando ] || (parent[ expando ] = {});
1724
							cache = outerCache[ type ] || [];
1725
							nodeIndex = cache[0] === dirruns && cache[1];
1726
							diff = cache[0] === dirruns && cache[2];
1727
							node = nodeIndex && parent.childNodes[ nodeIndex ];
1728

  
1729
							while ( (node = ++nodeIndex && node && node[ dir ] ||
1730

  
1731
								// Fallback to seeking `elem` from the start
1732
								(diff = nodeIndex = 0) || start.pop()) ) {
1733

  
1734
								// When found, cache indexes on `parent` and break
1735
								if ( node.nodeType === 1 && ++diff && node === elem ) {
1736
									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
1737
									break;
1738
								}
1739
							}
1740

  
1741
						// Use previously-cached element index if available
1742
						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
1743
							diff = cache[1];
1744

  
1745
						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
1746
						} else {
1747
							// Use the same loop as above to seek `elem` from the start
1748
							while ( (node = ++nodeIndex && node && node[ dir ] ||
1749
								(diff = nodeIndex = 0) || start.pop()) ) {
1750

  
1751
								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
1752
									// Cache the index of each encountered element
1753
									if ( useCache ) {
1754
										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
1755
									}
1756

  
1757
									if ( node === elem ) {
1758
										break;
1759
									}
1760
								}
1761
							}
1762
						}
1763

  
1764
						// Incorporate the offset, then check against cycle size
1765
						diff -= last;
1766
						return diff === first || ( diff % first === 0 && diff / first >= 0 );
1767
					}
1768
				};
1769
		},
1770

  
1771
		"PSEUDO": function( pseudo, argument ) {
1772
			// pseudo-class names are case-insensitive
1773
			// http://www.w3.org/TR/selectors/#pseudo-classes
1774
			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
1775
			// Remember that setFilters inherits from pseudos
1776
			var args,
1777
				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
1778
					Sizzle.error( "unsupported pseudo: " + pseudo );
1779

  
1780
			// The user may use createPseudo to indicate that
1781
			// arguments are needed to create the filter function
1782
			// just as Sizzle does
1783
			if ( fn[ expando ] ) {
1784
				return fn( argument );
1785
			}
1786

  
1787
			// But maintain support for old signatures
1788
			if ( fn.length > 1 ) {
1789
				args = [ pseudo, pseudo, "", argument ];
1790
				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
1791
					markFunction(function( seed, matches ) {
1792
						var idx,
1793
							matched = fn( seed, argument ),
1794
							i = matched.length;
1795
						while ( i-- ) {
1796
							idx = indexOf.call( seed, matched[i] );
1797
							seed[ idx ] = !( matches[ idx ] = matched[i] );
1798
						}
1799
					}) :
1800
					function( elem ) {
1801
						return fn( elem, 0, args );
1802
					};
1803
			}
1804

  
1805
			return fn;
1806
		}
1807
	},
1808

  
1809
	pseudos: {
1810
		// Potentially complex pseudos
1811
		"not": markFunction(function( selector ) {
1812
			// Trim the selector passed to compile
1813
			// to avoid treating leading and trailing
1814
			// spaces as combinators
1815
			var input = [],
1816
				results = [],
1817
				matcher = compile( selector.replace( rtrim, "$1" ) );
1818

  
1819
			return matcher[ expando ] ?
1820
				markFunction(function( seed, matches, context, xml ) {
1821
					var elem,
1822
						unmatched = matcher( seed, null, xml, [] ),
1823
						i = seed.length;
1824

  
1825
					// Match elements unmatched by `matcher`
1826
					while ( i-- ) {
1827
						if ( (elem = unmatched[i]) ) {
1828
							seed[i] = !(matches[i] = elem);
1829
						}
1830
					}
1831
				}) :
1832
				function( elem, context, xml ) {
1833
					input[0] = elem;
1834
					matcher( input, null, xml, results );
1835
					return !results.pop();
1836
				};
1837
		}),
1838

  
1839
		"has": markFunction(function( selector ) {
1840
			return function( elem ) {
1841
				return Sizzle( selector, elem ).length > 0;
1842
			};
1843
		}),
1844

  
1845
		"contains": markFunction(function( text ) {
1846
			return function( elem ) {
1847
				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
1848
			};
1849
		}),
1850

  
1851
		// "Whether an element is represented by a :lang() selector
1852
		// is based solely on the element's language value
1853
		// being equal to the identifier C,
1854
		// or beginning with the identifier C immediately followed by "-".
1855
		// The matching of C against the element's language value is performed case-insensitively.
1856
		// The identifier C does not have to be a valid language name."
1857
		// http://www.w3.org/TR/selectors/#lang-pseudo
1858
		"lang": markFunction( function( lang ) {
1859
			// lang value must be a valid identifier
1860
			if ( !ridentifier.test(lang || "") ) {
1861
				Sizzle.error( "unsupported lang: " + lang );
1862
			}
1863
			lang = lang.replace( runescape, funescape ).toLowerCase();
1864
			return function( elem ) {
1865
				var elemLang;
1866
				do {
1867
					if ( (elemLang = documentIsHTML ?
1868
						elem.lang :
1869
						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
1870

  
1871
						elemLang = elemLang.toLowerCase();
1872
						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
1873
					}
1874
				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
1875
				return false;
1876
			};
1877
		}),
1878

  
1879
		// Miscellaneous
1880
		"target": function( elem ) {
1881
			var hash = window.location && window.location.hash;
1882
			return hash && hash.slice( 1 ) === elem.id;
1883
		},
1884

  
1885
		"root": function( elem ) {
1886
			return elem === docElem;
1887
		},
1888

  
1889
		"focus": function( elem ) {
1890
			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
1891
		},
1892

  
1893
		// Boolean properties
1894
		"enabled": function( elem ) {
1895
			return elem.disabled === false;
1896
		},
1897

  
1898
		"disabled": function( elem ) {
1899
			return elem.disabled === true;
1900
		},
1901

  
1902
		"checked": function( elem ) {
1903
			// In CSS3, :checked should return both checked and selected elements
1904
			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
1905
			var nodeName = elem.nodeName.toLowerCase();
1906
			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
1907
		},
1908

  
1909
		"selected": function( elem ) {
1910
			// Accessing this property makes selected-by-default
1911
			// options in Safari work properly
1912
			if ( elem.parentNode ) {
1913
				elem.parentNode.selectedIndex;
1914
			}
1915

  
1916
			return elem.selected === true;
1917
		},
1918

  
1919
		// Contents
1920
		"empty": function( elem ) {
1921
			// http://www.w3.org/TR/selectors/#empty-pseudo
1922
			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
1923
			//   but not by others (comment: 8; processing instruction: 7; etc.)
1924
			// nodeType < 6 works because attributes (2) do not appear as children
1925
			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
1926
				if ( elem.nodeType < 6 ) {
1927
					return false;
1928
				}
1929
			}
1930
			return true;
1931
		},
1932

  
1933
		"parent": function( elem ) {
1934
			return !Expr.pseudos["empty"]( elem );
1935
		},
1936

  
1937
		// Element/input types
1938
		"header": function( elem ) {
1939
			return rheader.test( elem.nodeName );
1940
		},
1941

  
1942
		"input": function( elem ) {
1943
			return rinputs.test( elem.nodeName );
1944
		},
1945

  
1946
		"button": function( elem ) {
1947
			var name = elem.nodeName.toLowerCase();
1948
			return name === "input" && elem.type === "button" || name === "button";
1949
		},
1950

  
1951
		"text": function( elem ) {
1952
			var attr;
1953
			return elem.nodeName.toLowerCase() === "input" &&
1954
				elem.type === "text" &&
1955

  
1956
				// Support: IE<8
1957
				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
1958
				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
1959
		},
1960

  
1961
		// Position-in-collection
1962
		"first": createPositionalPseudo(function() {
1963
			return [ 0 ];
1964
		}),
1965

  
1966
		"last": createPositionalPseudo(function( matchIndexes, length ) {
1967
			return [ length - 1 ];
1968
		}),
1969

  
1970
		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
1971
			return [ argument < 0 ? argument + length : argument ];
1972
		}),
1973

  
1974
		"even": createPositionalPseudo(function( matchIndexes, length ) {
1975
			var i = 0;
1976
			for ( ; i < length; i += 2 ) {
1977
				matchIndexes.push( i );
1978
			}
1979
			return matchIndexes;
1980
		}),
1981

  
1982
		"odd": createPositionalPseudo(function( matchIndexes, length ) {
1983
			var i = 1;
1984
			for ( ; i < length; i += 2 ) {
1985
				matchIndexes.push( i );
1986
			}
1987
			return matchIndexes;
1988
		}),
1989

  
1990
		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
1991
			var i = argument < 0 ? argument + length : argument;
1992
			for ( ; --i >= 0; ) {
1993
				matchIndexes.push( i );
1994
			}
1995
			return matchIndexes;
1996
		}),
1997

  
1998
		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
1999
			var i = argument < 0 ? argument + length : argument;
2000
			for ( ; ++i < length; ) {
2001
				matchIndexes.push( i );
2002
			}
2003
			return matchIndexes;
2004
		})
2005
	}
2006
};
2007

  
2008
Expr.pseudos["nth"] = Expr.pseudos["eq"];
2009

  
2010
// Add button/input type pseudos
2011
for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
2012
	Expr.pseudos[ i ] = createInputPseudo( i );
2013
}
2014
for ( i in { submit: true, reset: true } ) {
2015
	Expr.pseudos[ i ] = createButtonPseudo( i );
2016
}
2017

  
2018
// Easy API for creating new setFilters
2019
function setFilters() {}
2020
setFilters.prototype = Expr.filters = Expr.pseudos;
2021
Expr.setFilters = new setFilters();
2022

  
2023
function tokenize( selector, parseOnly ) {
2024
	var matched, match, tokens, type,
2025
		soFar, groups, preFilters,
2026
		cached = tokenCache[ selector + " " ];
2027

  
2028
	if ( cached ) {
2029
		return parseOnly ? 0 : cached.slice( 0 );
2030
	}
2031

  
2032
	soFar = selector;
2033
	groups = [];
2034
	preFilters = Expr.preFilter;
2035

  
2036
	while ( soFar ) {
2037

  
2038
		// Comma and first run
2039
		if ( !matched || (match = rcomma.exec( soFar )) ) {
2040
			if ( match ) {
2041
				// Don't consume trailing commas as valid
2042
				soFar = soFar.slice( match[0].length ) || soFar;
2043
			}
2044
			groups.push( (tokens = []) );
2045
		}
2046

  
2047
		matched = false;
2048

  
2049
		// Combinators
2050
		if ( (match = rcombinators.exec( soFar )) ) {
2051
			matched = match.shift();
2052
			tokens.push({
2053
				value: matched,
2054
				// Cast descendant combinators to space
2055
				type: match[0].replace( rtrim, " " )
2056
			});
2057
			soFar = soFar.slice( matched.length );
2058
		}
2059

  
2060
		// Filters
2061
		for ( type in Expr.filter ) {
2062
			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
2063
				(match = preFilters[ type ]( match ))) ) {
2064
				matched = match.shift();
2065
				tokens.push({
2066
					value: matched,
2067
					type: type,
2068
					matches: match
2069
				});
2070
				soFar = soFar.slice( matched.length );
2071
			}
2072
		}
2073

  
2074
		if ( !matched ) {
2075
			break;
2076
		}
2077
	}
2078

  
2079
	// Return the length of the invalid excess
2080
	// if we're just parsing
2081
	// Otherwise, throw an error or return tokens
2082
	return parseOnly ?
2083
		soFar.length :
2084
		soFar ?
2085
			Sizzle.error( selector ) :
2086
			// Cache the tokens
2087
			tokenCache( selector, groups ).slice( 0 );
2088
}
2089

  
2090
function toSelector( tokens ) {
2091
	var i = 0,
2092
		len = tokens.length,
2093
		selector = "";
2094
	for ( ; i < len; i++ ) {
2095
		selector += tokens[i].value;
2096
	}
2097
	return selector;
2098
}
2099

  
2100
function addCombinator( matcher, combinator, base ) {
2101
	var dir = combinator.dir,
2102
		checkNonElements = base && dir === "parentNode",
2103
		doneName = done++;
2104

  
2105
	return combinator.first ?
2106
		// Check against closest ancestor/preceding element
2107
		function( elem, context, xml ) {
2108
			while ( (elem = elem[ dir ]) ) {
2109
				if ( elem.nodeType === 1 || checkNonElements ) {
2110
					return matcher( elem, context, xml );
2111
				}
2112
			}
2113
		} :
2114

  
2115
		// Check against all ancestor/preceding elements
2116
		function( elem, context, xml ) {
2117
			var oldCache, outerCache,
2118
				newCache = [ dirruns, doneName ];
2119

  
2120
			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
2121
			if ( xml ) {
2122
				while ( (elem = elem[ dir ]) ) {
2123
					if ( elem.nodeType === 1 || checkNonElements ) {
2124
						if ( matcher( elem, context, xml ) ) {
2125
							return true;
2126
						}
2127
					}
2128
				}
2129
			} else {
2130
				while ( (elem = elem[ dir ]) ) {
2131
					if ( elem.nodeType === 1 || checkNonElements ) {
2132
						outerCache = elem[ expando ] || (elem[ expando ] = {});
2133
						if ( (oldCache = outerCache[ dir ]) &&
2134
							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
2135

  
2136
							// Assign to newCache so results back-propagate to previous elements
2137
							return (newCache[ 2 ] = oldCache[ 2 ]);
2138
						} else {
2139
							// Reuse newcache so results back-propagate to previous elements
2140
							outerCache[ dir ] = newCache;
2141

  
2142
							// A match means we're done; a fail means we have to keep checking
2143
							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
2144
								return true;
2145
							}
2146
						}
2147
					}
2148
				}
2149
			}
2150
		};
2151
}
2152

  
2153
function elementMatcher( matchers ) {
2154
	return matchers.length > 1 ?
2155
		function( elem, context, xml ) {
2156
			var i = matchers.length;
2157
			while ( i-- ) {
2158
				if ( !matchers[i]( elem, context, xml ) ) {
2159
					return false;
2160
				}
2161
			}
2162
			return true;
2163
		} :
2164
		matchers[0];
2165
}
2166

  
2167
function condense( unmatched, map, filter, context, xml ) {
2168
	var elem,
2169
		newUnmatched = [],
2170
		i = 0,
2171
		len = unmatched.length,
2172
		mapped = map != null;
2173

  
2174
	for ( ; i < len; i++ ) {
2175
		if ( (elem = unmatched[i]) ) {
2176
			if ( !filter || filter( elem, context, xml ) ) {
2177
				newUnmatched.push( elem );
2178
				if ( mapped ) {
2179
					map.push( i );
2180
				}
2181
			}
2182
		}
2183
	}
2184

  
2185
	return newUnmatched;
2186
}
2187

  
2188
function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
2189
	if ( postFilter && !postFilter[ expando ] ) {
2190
		postFilter = setMatcher( postFilter );
2191
	}
2192
	if ( postFinder && !postFinder[ expando ] ) {
2193
		postFinder = setMatcher( postFinder, postSelector );
2194
	}
2195
	return markFunction(function( seed, results, context, xml ) {
2196
		var temp, i, elem,
2197
			preMap = [],
2198
			postMap = [],
2199
			preexisting = results.length,
2200

  
2201
			// Get initial elements from seed or context
2202
			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
2203

  
2204
			// Prefilter to get matcher input, preserving a map for seed-results synchronization
2205
			matcherIn = preFilter && ( seed || !selector ) ?
2206
				condense( elems, preMap, preFilter, context, xml ) :
2207
				elems,
2208

  
2209
			matcherOut = matcher ?
2210
				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
2211
				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
2212

  
2213
					// ...intermediate processing is necessary
2214
					[] :
2215

  
2216
					// ...otherwise use results directly
2217
					results :
2218
				matcherIn;
2219

  
2220
		// Find primary matches
2221
		if ( matcher ) {
2222
			matcher( matcherIn, matcherOut, context, xml );
2223
		}
2224

  
2225
		// Apply postFilter
2226
		if ( postFilter ) {
2227
			temp = condense( matcherOut, postMap );
2228
			postFilter( temp, [], context, xml );
2229

  
2230
			// Un-match failing elements by moving them back to matcherIn
2231
			i = temp.length;
2232
			while ( i-- ) {
2233
				if ( (elem = temp[i]) ) {
2234
					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
2235
				}
2236
			}
2237
		}
2238

  
2239
		if ( seed ) {
2240
			if ( postFinder || preFilter ) {
2241
				if ( postFinder ) {
2242
					// Get the final matcherOut by condensing this intermediate into postFinder contexts
2243
					temp = [];
2244
					i = matcherOut.length;
2245
					while ( i-- ) {
2246
						if ( (elem = matcherOut[i]) ) {
2247
							// Restore matcherIn since elem is not yet a final match
2248
							temp.push( (matcherIn[i] = elem) );
2249
						}
2250
					}
2251
					postFinder( null, (matcherOut = []), temp, xml );
2252
				}
2253

  
2254
				// Move matched elements from seed to results to keep them synchronized
2255
				i = matcherOut.length;
2256
				while ( i-- ) {
2257
					if ( (elem = matcherOut[i]) &&
2258
						(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
2259

  
2260
						seed[temp] = !(results[temp] = elem);
2261
					}
2262
				}
2263
			}
2264

  
2265
		// Add elements to results, through postFinder if defined
2266
		} else {
2267
			matcherOut = condense(
2268
				matcherOut === results ?
2269
					matcherOut.splice( preexisting, matcherOut.length ) :
2270
					matcherOut
2271
			);
2272
			if ( postFinder ) {
2273
				postFinder( null, results, matcherOut, xml );
2274
			} else {
2275
				push.apply( results, matcherOut );
2276
			}
2277
		}
2278
	});
2279
}
2280

  
2281
function matcherFromTokens( tokens ) {
2282
	var checkContext, matcher, j,
2283
		len = tokens.length,
2284
		leadingRelative = Expr.relative[ tokens[0].type ],
2285
		implicitRelative = leadingRelative || Expr.relative[" "],
2286
		i = leadingRelative ? 1 : 0,
2287

  
2288
		// The foundational matcher ensures that elements are reachable from top-level context(s)
2289
		matchContext = addCombinator( function( elem ) {
2290
			return elem === checkContext;
2291
		}, implicitRelative, true ),
2292
		matchAnyContext = addCombinator( function( elem ) {
2293
			return indexOf.call( checkContext, elem ) > -1;
2294
		}, implicitRelative, true ),
2295
		matchers = [ function( elem, context, xml ) {
2296
			return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
2297
				(checkContext = context).nodeType ?
2298
					matchContext( elem, context, xml ) :
2299
					matchAnyContext( elem, context, xml ) );
2300
		} ];
2301

  
2302
	for ( ; i < len; i++ ) {
2303
		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
2304
			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
2305
		} else {
2306
			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
2307

  
2308
			// Return special upon seeing a positional matcher
2309
			if ( matcher[ expando ] ) {
2310
				// Find the next relative operator (if any) for proper handling
2311
				j = ++i;
2312
				for ( ; j < len; j++ ) {
2313
					if ( Expr.relative[ tokens[j].type ] ) {
2314
						break;
2315
					}
2316
				}
2317
				return setMatcher(
2318
					i > 1 && elementMatcher( matchers ),
2319
					i > 1 && toSelector(
2320
						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
2321
						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
2322
					).replace( rtrim, "$1" ),
2323
					matcher,
2324
					i < j && matcherFromTokens( tokens.slice( i, j ) ),
2325
					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
2326
					j < len && toSelector( tokens )
2327
				);
2328
			}
2329
			matchers.push( matcher );
2330
		}
2331
	}
2332

  
2333
	return elementMatcher( matchers );
2334
}
2335

  
2336
function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
2337
	var bySet = setMatchers.length > 0,
2338
		byElement = elementMatchers.length > 0,
2339
		superMatcher = function( seed, context, xml, results, outermost ) {
2340
			var elem, j, matcher,
2341
				matchedCount = 0,
2342
				i = "0",
2343
				unmatched = seed && [],
2344
				setMatched = [],
2345
				contextBackup = outermostContext,
2346
				// We must always have either seed elements or outermost context
2347
				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
2348
				// Use integer dirruns iff this is the outermost matcher
2349
				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
2350
				len = elems.length;
2351

  
2352
			if ( outermost ) {
2353
				outermostContext = context !== document && context;
2354
			}
2355

  
2356
			// Add elements passing elementMatchers directly to results
2357
			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
2358
			// Support: IE<9, Safari
2359
			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
2360
			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
2361
				if ( byElement && elem ) {
2362
					j = 0;
2363
					while ( (matcher = elementMatchers[j++]) ) {
2364
						if ( matcher( elem, context, xml ) ) {
2365
							results.push( elem );
2366
							break;
2367
						}
2368
					}
2369
					if ( outermost ) {
2370
						dirruns = dirrunsUnique;
2371
					}
2372
				}
2373

  
2374
				// Track unmatched elements for set filters
2375
				if ( bySet ) {
2376
					// They will have gone through all possible matchers
2377
					if ( (elem = !matcher && elem) ) {
2378
						matchedCount--;
2379
					}
2380

  
2381
					// Lengthen the array for every element, matched or not
2382
					if ( seed ) {
2383
						unmatched.push( elem );
2384
					}
2385
				}
2386
			}
2387

  
2388
			// Apply set filters to unmatched elements
2389
			matchedCount += i;
2390
			if ( bySet && i !== matchedCount ) {
2391
				j = 0;
2392
				while ( (matcher = setMatchers[j++]) ) {
2393
					matcher( unmatched, setMatched, context, xml );
2394
				}
2395

  
2396
				if ( seed ) {
2397
					// Reintegrate element matches to eliminate the need for sorting
2398
					if ( matchedCount > 0 ) {
2399
						while ( i-- ) {
2400
							if ( !(unmatched[i] || setMatched[i]) ) {
2401
								setMatched[i] = pop.call( results );
2402
							}
2403
						}
2404
					}
2405

  
2406
					// Discard index placeholder values to get only actual matches
2407
					setMatched = condense( setMatched );
2408
				}
2409

  
2410
				// Add matches to results
2411
				push.apply( results, setMatched );
2412

  
2413
				// Seedless set matches succeeding multiple successful matchers stipulate sorting
2414
				if ( outermost && !seed && setMatched.length > 0 &&
2415
					( matchedCount + setMatchers.length ) > 1 ) {
2416

  
2417
					Sizzle.uniqueSort( results );
2418
				}
2419
			}
2420

  
2421
			// Override manipulation of globals by nested matchers
2422
			if ( outermost ) {
2423
				dirruns = dirrunsUnique;
2424
				outermostContext = contextBackup;
2425
			}
2426

  
2427
			return unmatched;
2428
		};
2429

  
2430
	return bySet ?
2431
		markFunction( superMatcher ) :
2432
		superMatcher;
2433
}
2434

  
2435
compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
2436
	var i,
2437
		setMatchers = [],
2438
		elementMatchers = [],
2439
		cached = compilerCache[ selector + " " ];
2440

  
2441
	if ( !cached ) {
2442
		// Generate a function of recursive functions that can be used to check each element
2443
		if ( !group ) {
2444
			group = tokenize( selector );
2445
		}
2446
		i = group.length;
2447
		while ( i-- ) {
2448
			cached = matcherFromTokens( group[i] );
2449
			if ( cached[ expando ] ) {
2450
				setMatchers.push( cached );
2451
			} else {
2452
				elementMatchers.push( cached );
2453
			}
2454
		}
2455

  
2456
		// Cache the compiled function
2457
		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
2458
	}
2459
	return cached;
2460
};
2461

  
2462
function multipleContexts( selector, contexts, results ) {
2463
	var i = 0,
2464
		len = contexts.length;
2465
	for ( ; i < len; i++ ) {
2466
		Sizzle( selector, contexts[i], results );
2467
	}
2468
	return results;
2469
}
2470

  
2471
function select( selector, context, results, seed ) {
2472
	var i, tokens, token, type, find,
2473
		match = tokenize( selector );
2474

  
2475
	if ( !seed ) {
2476
		// Try to minimize operations if there is only one group
2477
		if ( match.length === 1 ) {
2478

  
2479
			// Take a shortcut and set the context if the root selector is an ID
2480
			tokens = match[0] = match[0].slice( 0 );
2481
			if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
2482
					support.getById && context.nodeType === 9 && documentIsHTML &&
2483
					Expr.relative[ tokens[1].type ] ) {
2484

  
2485
				context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
2486
				if ( !context ) {
2487
					return results;
2488
				}
2489
				selector = selector.slice( tokens.shift().value.length );
2490
			}
2491

  
2492
			// Fetch a seed set for right-to-left matching
2493
			i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
2494
			while ( i-- ) {
2495
				token = tokens[i];
2496

  
2497
				// Abort if we hit a combinator
2498
				if ( Expr.relative[ (type = token.type) ] ) {
2499
					break;
2500
				}
2501
				if ( (find = Expr.find[ type ]) ) {
2502
					// Search, expanding context for leading sibling combinators
2503
					if ( (seed = find(
2504
						token.matches[0].replace( runescape, funescape ),
2505
						rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
2506
					)) ) {
2507

  
2508
						// If seed is empty or no tokens remain, we can return early
2509
						tokens.splice( i, 1 );
2510
						selector = seed.length && toSelector( tokens );
2511
						if ( !selector ) {
2512
							push.apply( results, seed );
2513
							return results;
2514
						}
2515

  
2516
						break;
2517
					}
2518
				}
2519
			}
2520
		}
2521
	}
2522

  
2523
	// Compile and execute a filtering function
2524
	// Provide `match` to avoid retokenization if we modified the selector above
2525
	compile( selector, match )(
2526
		seed,
2527
		context,
2528
		!documentIsHTML,
2529
		results,
2530
		rsibling.test( selector ) && testContext( context.parentNode ) || context
2531
	);
2532
	return results;
2533
}
2534

  
2535
// One-time assignments
2536

  
2537
// Sort stability
2538
support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
2539

  
2540
// Support: Chrome<14
2541
// Always assume duplicates if they aren't passed to the comparison function
2542
support.detectDuplicates = !!hasDuplicate;
2543

  
2544
// Initialize against the default document
2545
setDocument();
2546

  
2547
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
2548
// Detached nodes confoundingly follow *each other*
2549
support.sortDetached = assert(function( div1 ) {
2550
	// Should return 1, but returns 4 (following)
2551
	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
2552
});
2553

  
2554
// Support: IE<8
2555
// Prevent attribute/property "interpolation"
2556
// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
2557
if ( !assert(function( div ) {
2558
	div.innerHTML = "<a href='#'></a>";
2559
	return div.firstChild.getAttribute("href") === "#" ;
2560
}) ) {
2561
	addHandle( "type|href|height|width", function( elem, name, isXML ) {
2562
		if ( !isXML ) {
2563
			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
2564
		}
2565
	});
2566
}
2567

  
2568
// Support: IE<9
2569
// Use defaultValue in place of getAttribute("value")
2570
if ( !support.attributes || !assert(function( div ) {
2571
	div.innerHTML = "<input/>";
2572
	div.firstChild.setAttribute( "value", "" );
2573
	return div.firstChild.getAttribute( "value" ) === "";
2574
}) ) {
2575
	addHandle( "value", function( elem, name, isXML ) {
2576
		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
2577
			return elem.defaultValue;
2578
		}
2579
	});
2580
}
2581

  
2582
// Support: IE<9
2583
// Use getAttributeNode to fetch booleans when getAttribute lies
2584
if ( !assert(function( div ) {
2585
	return div.getAttribute("disabled") == null;
2586
}) ) {
2587
	addHandle( booleans, function( elem, name, isXML ) {
2588
		var val;
2589
		if ( !isXML ) {
2590
			return elem[ name ] === true ? name.toLowerCase() :
2591
					(val = elem.getAttributeNode( name )) && val.specified ?
2592
					val.value :
2593
				null;
2594
		}
2595
	});
2596
}
2597

  
2598
return Sizzle;
2599

  
2600
})( window );
2601

  
2602

  
2603

  
2604
jQuery.find = Sizzle;
2605
jQuery.expr = Sizzle.selectors;
2606
jQuery.expr[":"] = jQuery.expr.pseudos;
2607
jQuery.unique = Sizzle.uniqueSort;
2608
jQuery.text = Sizzle.getText;
2609
jQuery.isXMLDoc = Sizzle.isXML;
2610
jQuery.contains = Sizzle.contains;
2611

  
2612

  
2613

  
2614
var rneedsContext = jQuery.expr.match.needsContext;
2615

  
2616
var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
2617

  
2618

  
2619

  
2620
var risSimple = /^.[^:#\[\.,]*$/;
2621

  
2622
// Implement the identical functionality for filter and not
2623
function winnow( elements, qualifier, not ) {
2624
	if ( jQuery.isFunction( qualifier ) ) {
2625
		return jQuery.grep( elements, function( elem, i ) {
2626
			/* jshint -W018 */
2627
			return !!qualifier.call( elem, i, elem ) !== not;
2628
		});
2629

  
2630
	}
2631

  
2632
	if ( qualifier.nodeType ) {
2633
		return jQuery.grep( elements, function( elem ) {
2634
			return ( elem === qualifier ) !== not;
2635
		});
2636

  
2637
	}
2638

  
2639
	if ( typeof qualifier === "string" ) {
2640
		if ( risSimple.test( qualifier ) ) {
2641
			return jQuery.filter( qualifier, elements, not );
2642
		}
2643

  
2644
		qualifier = jQuery.filter( qualifier, elements );
2645
	}
2646

  
2647
	return jQuery.grep( elements, function( elem ) {
2648
		return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not;
2649
	});
2650
}
2651

  
2652
jQuery.filter = function( expr, elems, not ) {
2653
	var elem = elems[ 0 ];
2654

  
2655
	if ( not ) {
2656
		expr = ":not(" + expr + ")";
2657
	}
2658

  
2659
	return elems.length === 1 && elem.nodeType === 1 ?
2660
		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
2661
		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
2662
			return elem.nodeType === 1;
2663
		}));
2664
};
2665

  
2666
jQuery.fn.extend({
2667
	find: function( selector ) {
2668
		var i,
2669
			ret = [],
2670
			self = this,
2671
			len = self.length;
2672

  
2673
		if ( typeof selector !== "string" ) {
2674
			return this.pushStack( jQuery( selector ).filter(function() {
2675
				for ( i = 0; i < len; i++ ) {
2676
					if ( jQuery.contains( self[ i ], this ) ) {
2677
						return true;
2678
					}
2679
				}
2680
			}) );
2681
		}
2682

  
2683
		for ( i = 0; i < len; i++ ) {
2684
			jQuery.find( selector, self[ i ], ret );
2685
		}
2686

  
2687
		// Needed because $( selector, context ) becomes $( context ).find( selector )
2688
		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
2689
		ret.selector = this.selector ? this.selector + " " + selector : selector;
2690
		return ret;
2691
	},
2692
	filter: function( selector ) {
2693
		return this.pushStack( winnow(this, selector || [], false) );
2694
	},
2695
	not: function( selector ) {
2696
		return this.pushStack( winnow(this, selector || [], true) );
2697
	},
2698
	is: function( selector ) {
2699
		return !!winnow(
2700
			this,
2701

  
2702
			// If this is a positional/relative selector, check membership in the returned set
2703
			// so $("p:first").is("p:last") won't return true for a doc with two "p".
2704
			typeof selector === "string" && rneedsContext.test( selector ) ?
2705
				jQuery( selector ) :
2706
				selector || [],
2707
			false
2708
		).length;
2709
	}
2710
});
2711

  
2712

  
2713
// Initialize a jQuery object
2714

  
2715

  
2716
// A central reference to the root jQuery(document)
2717
var rootjQuery,
2718

  
2719
	// Use the correct document accordingly with window argument (sandbox)
2720
	document = window.document,
2721

  
2722
	// A simple way to check for HTML strings
2723
	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
2724
	// Strict HTML recognition (#11290: must start with <)
2725
	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
2726

  
2727
	init = jQuery.fn.init = function( selector, context ) {
2728
		var match, elem;
2729

  
2730
		// HANDLE: $(""), $(null), $(undefined), $(false)
2731
		if ( !selector ) {
2732
			return this;
2733
		}
2734

  
2735
		// Handle HTML strings
2736
		if ( typeof selector === "string" ) {
2737
			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
2738
				// Assume that strings that start and end with <> are HTML and skip the regex check
2739
				match = [ null, selector, null ];
2740

  
2741
			} else {
2742
				match = rquickExpr.exec( selector );
2743
			}
2744

  
2745
			// Match html or make sure no context is specified for #id
2746
			if ( match && (match[1] || !context) ) {
2747

  
2748
				// HANDLE: $(html) -> $(array)
2749
				if ( match[1] ) {
2750
					context = context instanceof jQuery ? context[0] : context;
2751

  
2752
					// scripts is true for back-compat
2753
					// Intentionally let the error be thrown if parseHTML is not present
2754
					jQuery.merge( this, jQuery.parseHTML(
2755
						match[1],
2756
						context && context.nodeType ? context.ownerDocument || context : document,
2757
						true
2758
					) );
2759

  
2760
					// HANDLE: $(html, props)
2761
					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
2762
						for ( match in context ) {
2763
							// Properties of context are called as methods if possible
2764
							if ( jQuery.isFunction( this[ match ] ) ) {
2765
								this[ match ]( context[ match ] );
2766

  
2767
							// ...and otherwise set as attributes
2768
							} else {
2769
								this.attr( match, context[ match ] );
2770
							}
2771
						}
2772
					}
2773

  
2774
					return this;
2775

  
2776
				// HANDLE: $(#id)
2777
				} else {
2778
					elem = document.getElementById( match[2] );
2779

  
2780
					// Check parentNode to catch when Blackberry 4.6 returns
2781
					// nodes that are no longer in the document #6963
2782
					if ( elem && elem.parentNode ) {
2783
						// Handle the case where IE and Opera return items
2784
						// by name instead of ID
2785
						if ( elem.id !== match[2] ) {
2786
							return rootjQuery.find( selector );
2787
						}
2788

  
2789
						// Otherwise, we inject the element directly into the jQuery object
2790
						this.length = 1;
2791
						this[0] = elem;
2792
					}
2793

  
2794
					this.context = document;
2795
					this.selector = selector;
2796
					return this;
2797
				}
2798

  
2799
			// HANDLE: $(expr, $(...))
2800
			} else if ( !context || context.jquery ) {
2801
				return ( context || rootjQuery ).find( selector );
2802

  
2803
			// HANDLE: $(expr, context)
2804
			// (which is just equivalent to: $(context).find(expr)
2805
			} else {
2806
				return this.constructor( context ).find( selector );
2807
			}
2808

  
2809
		// HANDLE: $(DOMElement)
2810
		} else if ( selector.nodeType ) {
2811
			this.context = this[0] = selector;
2812
			this.length = 1;
2813
			return this;
2814

  
2815
		// HANDLE: $(function)
2816
		// Shortcut for document ready
2817
		} else if ( jQuery.isFunction( selector ) ) {
2818
			return typeof rootjQuery.ready !== "undefined" ?
2819
				rootjQuery.ready( selector ) :
2820
				// Execute immediately if ready is not present
2821
				selector( jQuery );
2822
		}
2823

  
2824
		if ( selector.selector !== undefined ) {
2825
			this.selector = selector.selector;
2826
			this.context = selector.context;
2827
		}
2828

  
2829
		return jQuery.makeArray( selector, this );
2830
	};
2831

  
2832
// Give the init function the jQuery prototype for later instantiation
2833
init.prototype = jQuery.fn;
2834

  
2835
// Initialize central reference
2836
rootjQuery = jQuery( document );
2837

  
2838

  
2839
var rparentsprev = /^(?:parents|prev(?:Until|All))/,
2840
	// methods guaranteed to produce a unique set when starting from a unique set
2841
	guaranteedUnique = {
2842
		children: true,
2843
		contents: true,
2844
		next: true,
2845
		prev: true
2846
	};
2847

  
2848
jQuery.extend({
2849
	dir: function( elem, dir, until ) {
2850
		var matched = [],
2851
			cur = elem[ dir ];
2852

  
2853
		while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
2854
			if ( cur.nodeType === 1 ) {
2855
				matched.push( cur );
2856
			}
2857
			cur = cur[dir];
2858
		}
2859
		return matched;
2860
	},
2861

  
2862
	sibling: function( n, elem ) {
2863
		var r = [];
2864

  
2865
		for ( ; n; n = n.nextSibling ) {
2866
			if ( n.nodeType === 1 && n !== elem ) {
2867
				r.push( n );
2868
			}
2869
		}
2870

  
2871
		return r;
2872
	}
2873
});
2874

  
2875
jQuery.fn.extend({
2876
	has: function( target ) {
2877
		var i,
2878
			targets = jQuery( target, this ),
2879
			len = targets.length;
2880

  
2881
		return this.filter(function() {
2882
			for ( i = 0; i < len; i++ ) {
2883
				if ( jQuery.contains( this, targets[i] ) ) {
2884
					return true;
2885
				}
2886
			}
2887
		});
2888
	},
2889

  
2890
	closest: function( selectors, context ) {
2891
		var cur,
2892
			i = 0,
2893
			l = this.length,
2894
			matched = [],
2895
			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
2896
				jQuery( selectors, context || this.context ) :
2897
				0;
2898

  
2899
		for ( ; i < l; i++ ) {
2900
			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
2901
				// Always skip document fragments
2902
				if ( cur.nodeType < 11 && (pos ?
2903
					pos.index(cur) > -1 :
2904

  
2905
					// Don't pass non-elements to Sizzle
2906
					cur.nodeType === 1 &&
2907
						jQuery.find.matchesSelector(cur, selectors)) ) {
2908

  
2909
					matched.push( cur );
2910
					break;
2911
				}
2912
			}
2913
		}
2914

  
2915
		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
2916
	},
2917

  
2918
	// Determine the position of an element within
2919
	// the matched set of elements
2920
	index: function( elem ) {
2921

  
2922
		// No argument, return index in parent
2923
		if ( !elem ) {
2924
			return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
2925
		}
2926

  
2927
		// index in selector
2928
		if ( typeof elem === "string" ) {
2929
			return jQuery.inArray( this[0], jQuery( elem ) );
2930
		}
2931

  
2932
		// Locate the position of the desired element
2933
		return jQuery.inArray(
2934
			// If it receives a jQuery object, the first element is used
2935
			elem.jquery ? elem[0] : elem, this );
2936
	},
2937

  
2938
	add: function( selector, context ) {
2939
		return this.pushStack(
2940
			jQuery.unique(
2941
				jQuery.merge( this.get(), jQuery( selector, context ) )
2942
			)
2943
		);
2944
	},
2945

  
2946
	addBack: function( selector ) {
2947
		return this.add( selector == null ?
2948
			this.prevObject : this.prevObject.filter(selector)
2949
		);
2950
	}
2951
});
2952

  
2953
function sibling( cur, dir ) {
2954
	do {
2955
		cur = cur[ dir ];
2956
	} while ( cur && cur.nodeType !== 1 );
2957

  
2958
	return cur;
2959
}
2960

  
2961
jQuery.each({
2962
	parent: function( elem ) {
2963
		var parent = elem.parentNode;
2964
		return parent && parent.nodeType !== 11 ? parent : null;
2965
	},
2966
	parents: function( elem ) {
2967
		return jQuery.dir( elem, "parentNode" );
2968
	},
2969
	parentsUntil: function( elem, i, until ) {
2970
		return jQuery.dir( elem, "parentNode", until );
2971
	},
2972
	next: function( elem ) {
2973
		return sibling( elem, "nextSibling" );
2974
	},
2975
	prev: function( elem ) {
2976
		return sibling( elem, "previousSibling" );
2977
	},
2978
	nextAll: function( elem ) {
2979
		return jQuery.dir( elem, "nextSibling" );
2980
	},
2981
	prevAll: function( elem ) {
2982
		return jQuery.dir( elem, "previousSibling" );
2983
	},
2984
	nextUntil: function( elem, i, until ) {
2985
		return jQuery.dir( elem, "nextSibling", until );
2986
	},
2987
	prevUntil: function( elem, i, until ) {
2988
		return jQuery.dir( elem, "previousSibling", until );
2989
	},
2990
	siblings: function( elem ) {
2991
		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
2992
	},
2993
	children: function( elem ) {
2994
		return jQuery.sibling( elem.firstChild );
2995
	},
2996
	contents: function( elem ) {
2997
		return jQuery.nodeName( elem, "iframe" ) ?
2998
			elem.contentDocument || elem.contentWindow.document :
2999
			jQuery.merge( [], elem.childNodes );
3000
	}
3001
}, function( name, fn ) {
3002
	jQuery.fn[ name ] = function( until, selector ) {
3003
		var ret = jQuery.map( this, fn, until );
3004

  
3005
		if ( name.slice( -5 ) !== "Until" ) {
3006
			selector = until;
3007
		}
3008

  
3009
		if ( selector && typeof selector === "string" ) {
3010
			ret = jQuery.filter( selector, ret );
3011
		}
3012

  
3013
		if ( this.length > 1 ) {
3014
			// Remove duplicates
3015
			if ( !guaranteedUnique[ name ] ) {
3016
				ret = jQuery.unique( ret );
3017
			}
3018

  
3019
			// Reverse order for parents* and prev-derivatives
3020
			if ( rparentsprev.test( name ) ) {
3021
				ret = ret.reverse();
3022
			}
3023
		}
3024

  
3025
		return this.pushStack( ret );
3026
	};
3027
});
3028
var rnotwhite = (/\S+/g);
3029

  
3030

  
3031

  
3032
// String to Object options format cache
3033
var optionsCache = {};
3034

  
3035
// Convert String-formatted options into Object-formatted ones and store in cache
3036
function createOptions( options ) {
3037
	var object = optionsCache[ options ] = {};
3038
	jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
3039
		object[ flag ] = true;
3040
	});
3041
	return object;
3042
}
3043

  
3044
/*
3045
 * Create a callback list using the following parameters:
3046
 *
3047
 *	options: an optional list of space-separated options that will change how
3048
 *			the callback list behaves or a more traditional option object
3049
 *
3050
 * By default a callback list will act like an event callback list and can be
3051
 * "fired" multiple times.
3052
 *
3053
 * Possible options:
3054
 *
3055
 *	once:			will ensure the callback list can only be fired once (like a Deferred)
3056
 *
3057
 *	memory:			will keep track of previous values and will call any callback added
3058
 *					after the list has been fired right away with the latest "memorized"
3059
 *					values (like a Deferred)
3060
 *
3061
 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
3062
 *
3063
 *	stopOnFalse:	interrupt callings when a callback returns false
3064
 *
3065
 */
3066
jQuery.Callbacks = function( options ) {
3067

  
3068
	// Convert options from String-formatted to Object-formatted if needed
3069
	// (we check in cache first)
3070
	options = typeof options === "string" ?
3071
		( optionsCache[ options ] || createOptions( options ) ) :
3072
		jQuery.extend( {}, options );
3073

  
3074
	var // Flag to know if list is currently firing
3075
		firing,
3076
		// Last fire value (for non-forgettable lists)
3077
		memory,
3078
		// Flag to know if list was already fired
3079
		fired,
3080
		// End of the loop when firing
3081
		firingLength,
3082
		// Index of currently firing callback (modified by remove if needed)
3083
		firingIndex,
3084
		// First callback to fire (used internally by add and fireWith)
3085
		firingStart,
3086
		// Actual callback list
3087
		list = [],
3088
		// Stack of fire calls for repeatable lists
3089
		stack = !options.once && [],
3090
		// Fire callbacks
3091
		fire = function( data ) {
3092
			memory = options.memory && data;
3093
			fired = true;
3094
			firingIndex = firingStart || 0;
3095
			firingStart = 0;
3096
			firingLength = list.length;
3097
			firing = true;
3098
			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
3099
				if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
3100
					memory = false; // To prevent further calls using add
3101
					break;
3102
				}
3103
			}
3104
			firing = false;
3105
			if ( list ) {
3106
				if ( stack ) {
3107
					if ( stack.length ) {
3108
						fire( stack.shift() );
3109
					}
3110
				} else if ( memory ) {
3111
					list = [];
3112
				} else {
3113
					self.disable();
3114
				}
3115
			}
3116
		},
3117
		// Actual Callbacks object
3118
		self = {
3119
			// Add a callback or a collection of callbacks to the list
3120
			add: function() {
3121
				if ( list ) {
3122
					// First, we save the current length
3123
					var start = list.length;
3124
					(function add( args ) {
3125
						jQuery.each( args, function( _, arg ) {
3126
							var type = jQuery.type( arg );
3127
							if ( type === "function" ) {
3128
								if ( !options.unique || !self.has( arg ) ) {
3129
									list.push( arg );
3130
								}
3131
							} else if ( arg && arg.length && type !== "string" ) {
3132
								// Inspect recursively
3133
								add( arg );
3134
							}
3135
						});
3136
					})( arguments );
3137
					// Do we need to add the callbacks to the
3138
					// current firing batch?
3139
					if ( firing ) {
3140
						firingLength = list.length;
3141
					// With memory, if we're not firing then
3142
					// we should call right away
3143
					} else if ( memory ) {
3144
						firingStart = start;
3145
						fire( memory );
3146
					}
3147
				}
3148
				return this;
3149
			},
3150
			// Remove a callback from the list
3151
			remove: function() {
3152
				if ( list ) {
3153
					jQuery.each( arguments, function( _, arg ) {
3154
						var index;
3155
						while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
3156
							list.splice( index, 1 );
3157
							// Handle firing indexes
3158
							if ( firing ) {
3159
								if ( index <= firingLength ) {
3160
									firingLength--;
3161
								}
3162
								if ( index <= firingIndex ) {
3163
									firingIndex--;
3164
								}
3165
							}
3166
						}
3167
					});
3168
				}
3169
				return this;
3170
			},
3171
			// Check if a given callback is in the list.
3172
			// If no argument is given, return whether or not list has callbacks attached.
3173
			has: function( fn ) {
3174
				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
3175
			},
3176
			// Remove all callbacks from the list
3177
			empty: function() {
3178
				list = [];
3179
				firingLength = 0;
3180
				return this;
3181
			},
3182
			// Have the list do nothing anymore
3183
			disable: function() {
3184
				list = stack = memory = undefined;
3185
				return this;
3186
			},
3187
			// Is it disabled?
3188
			disabled: function() {
3189
				return !list;
3190
			},
3191
			// Lock the list in its current state
3192
			lock: function() {
3193
				stack = undefined;
3194
				if ( !memory ) {
3195
					self.disable();
3196
				}
3197
				return this;
3198
			},
3199
			// Is it locked?
3200
			locked: function() {
3201
				return !stack;
3202
			},
3203
			// Call all callbacks with the given context and arguments
3204
			fireWith: function( context, args ) {
3205
				if ( list && ( !fired || stack ) ) {
3206
					args = args || [];
3207
					args = [ context, args.slice ? args.slice() : args ];
3208
					if ( firing ) {
3209
						stack.push( args );
3210
					} else {
3211
						fire( args );
3212
					}
3213
				}
3214
				return this;
3215
			},
3216
			// Call all the callbacks with the given arguments
3217
			fire: function() {
3218
				self.fireWith( this, arguments );
3219
				return this;
3220
			},
3221
			// To know if the callbacks have already been called at least once
3222
			fired: function() {
3223
				return !!fired;
3224
			}
3225
		};
3226

  
3227
	return self;
3228
};
3229

  
3230

  
3231
jQuery.extend({
3232

  
3233
	Deferred: function( func ) {
3234
		var tuples = [
3235
				// action, add listener, listener list, final state
3236
				[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
3237
				[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
3238
				[ "notify", "progress", jQuery.Callbacks("memory") ]
3239
			],
3240
			state = "pending",
3241
			promise = {
3242
				state: function() {
3243
					return state;
3244
				},
3245
				always: function() {
3246
					deferred.done( arguments ).fail( arguments );
3247
					return this;
3248
				},
3249
				then: function( /* fnDone, fnFail, fnProgress */ ) {
3250
					var fns = arguments;
3251
					return jQuery.Deferred(function( newDefer ) {
3252
						jQuery.each( tuples, function( i, tuple ) {
3253
							var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
3254
							// deferred[ done | fail | progress ] for forwarding actions to newDefer
3255
							deferred[ tuple[1] ](function() {
3256
								var returned = fn && fn.apply( this, arguments );
3257
								if ( returned && jQuery.isFunction( returned.promise ) ) {
3258
									returned.promise()
3259
										.done( newDefer.resolve )
3260
										.fail( newDefer.reject )
3261
										.progress( newDefer.notify );
3262
								} else {
3263
									newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
3264
								}
3265
							});
3266
						});
3267
						fns = null;
3268
					}).promise();
3269
				},
3270
				// Get a promise for this deferred
3271
				// If obj is provided, the promise aspect is added to the object
3272
				promise: function( obj ) {
3273
					return obj != null ? jQuery.extend( obj, promise ) : promise;
3274
				}
3275
			},
3276
			deferred = {};
3277

  
3278
		// Keep pipe for back-compat
3279
		promise.pipe = promise.then;
3280

  
3281
		// Add list-specific methods
3282
		jQuery.each( tuples, function( i, tuple ) {
3283
			var list = tuple[ 2 ],
3284
				stateString = tuple[ 3 ];
3285

  
3286
			// promise[ done | fail | progress ] = list.add
3287
			promise[ tuple[1] ] = list.add;
3288

  
3289
			// Handle state
3290
			if ( stateString ) {
3291
				list.add(function() {
3292
					// state = [ resolved | rejected ]
3293
					state = stateString;
3294

  
3295
				// [ reject_list | resolve_list ].disable; progress_list.lock
3296
				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
3297
			}
3298

  
3299
			// deferred[ resolve | reject | notify ]
3300
			deferred[ tuple[0] ] = function() {
3301
				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
3302
				return this;
3303
			};
3304
			deferred[ tuple[0] + "With" ] = list.fireWith;
3305
		});
3306

  
3307
		// Make the deferred a promise
3308
		promise.promise( deferred );
3309

  
3310
		// Call given func if any
3311
		if ( func ) {
3312
			func.call( deferred, deferred );
3313
		}
3314

  
3315
		// All done!
3316
		return deferred;
3317
	},
3318

  
3319
	// Deferred helper
3320
	when: function( subordinate /* , ..., subordinateN */ ) {
3321
		var i = 0,
3322
			resolveValues = slice.call( arguments ),
3323
			length = resolveValues.length,
3324

  
3325
			// the count of uncompleted subordinates
3326
			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
3327

  
3328
			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
3329
			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
3330

  
3331
			// Update function for both resolve and progress values
3332
			updateFunc = function( i, contexts, values ) {
3333
				return function( value ) {
3334
					contexts[ i ] = this;
3335
					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
3336
					if ( values === progressValues ) {
3337
						deferred.notifyWith( contexts, values );
3338

  
3339
					} else if ( !(--remaining) ) {
3340
						deferred.resolveWith( contexts, values );
3341
					}
3342
				};
3343
			},
3344

  
3345
			progressValues, progressContexts, resolveContexts;
3346

  
3347
		// add listeners to Deferred subordinates; treat others as resolved
3348
		if ( length > 1 ) {
3349
			progressValues = new Array( length );
3350
			progressContexts = new Array( length );
3351
			resolveContexts = new Array( length );
3352
			for ( ; i < length; i++ ) {
3353
				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
3354
					resolveValues[ i ].promise()
3355
						.done( updateFunc( i, resolveContexts, resolveValues ) )
3356
						.fail( deferred.reject )
3357
						.progress( updateFunc( i, progressContexts, progressValues ) );
3358
				} else {
3359
					--remaining;
3360
				}
3361
			}
3362
		}
3363

  
3364
		// if we're not waiting on anything, resolve the master
3365
		if ( !remaining ) {
3366
			deferred.resolveWith( resolveContexts, resolveValues );
3367
		}
3368

  
3369
		return deferred.promise();
3370
	}
3371
});
3372

  
3373

  
3374
// The deferred used on DOM ready
3375
var readyList;
3376

  
3377
jQuery.fn.ready = function( fn ) {
3378
	// Add the callback
3379
	jQuery.ready.promise().done( fn );
3380

  
3381
	return this;
3382
};
3383

  
3384
jQuery.extend({
3385
	// Is the DOM ready to be used? Set to true once it occurs.
3386
	isReady: false,
3387

  
3388
	// A counter to track how many items to wait for before
3389
	// the ready event fires. See #6781
3390
	readyWait: 1,
3391

  
3392
	// Hold (or release) the ready event
3393
	holdReady: function( hold ) {
3394
		if ( hold ) {
3395
			jQuery.readyWait++;
3396
		} else {
3397
			jQuery.ready( true );
3398
		}
3399
	},
3400

  
3401
	// Handle when the DOM is ready
3402
	ready: function( wait ) {
3403

  
3404
		// Abort if there are pending holds or we're already ready
3405
		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
3406
			return;
3407
		}
3408

  
3409
		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
3410
		if ( !document.body ) {
3411
			return setTimeout( jQuery.ready );
3412
		}
3413

  
3414
		// Remember that the DOM is ready
3415
		jQuery.isReady = true;
3416

  
3417
		// If a normal DOM Ready event fired, decrement, and wait if need be
3418
		if ( wait !== true && --jQuery.readyWait > 0 ) {
3419
			return;
3420
		}
3421

  
3422
		// If there are functions bound, to execute
3423
		readyList.resolveWith( document, [ jQuery ] );
3424

  
3425
		// Trigger any bound ready events
3426
		if ( jQuery.fn.trigger ) {
3427
			jQuery( document ).trigger("ready").off("ready");
3428
		}
3429
	}
3430
});
3431

  
3432
/**
3433
 * Clean-up method for dom ready events
3434
 */
3435
function detach() {
3436
	if ( document.addEventListener ) {
3437
		document.removeEventListener( "DOMContentLoaded", completed, false );
3438
		window.removeEventListener( "load", completed, false );
3439

  
3440
	} else {
3441
		document.detachEvent( "onreadystatechange", completed );
3442
		window.detachEvent( "onload", completed );
3443
	}
3444
}
3445

  
3446
/**
3447
 * The ready event handler and self cleanup method
3448
 */
3449
function completed() {
3450
	// readyState === "complete" is good enough for us to call the dom ready in oldIE
3451
	if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
3452
		detach();
3453
		jQuery.ready();
3454
	}
3455
}
3456

  
3457
jQuery.ready.promise = function( obj ) {
3458
	if ( !readyList ) {
3459

  
3460
		readyList = jQuery.Deferred();
3461

  
3462
		// Catch cases where $(document).ready() is called after the browser event has already occurred.
3463
		// we once tried to use readyState "interactive" here, but it caused issues like the one
3464
		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
3465
		if ( document.readyState === "complete" ) {
3466
			// Handle it asynchronously to allow scripts the opportunity to delay ready
3467
			setTimeout( jQuery.ready );
3468

  
3469
		// Standards-based browsers support DOMContentLoaded
3470
		} else if ( document.addEventListener ) {
3471
			// Use the handy event callback
3472
			document.addEventListener( "DOMContentLoaded", completed, false );
3473

  
3474
			// A fallback to window.onload, that will always work
3475
			window.addEventListener( "load", completed, false );
3476

  
3477
		// If IE event model is used
3478
		} else {
3479
			// Ensure firing before onload, maybe late but safe also for iframes
3480
			document.attachEvent( "onreadystatechange", completed );
3481

  
3482
			// A fallback to window.onload, that will always work
3483
			window.attachEvent( "onload", completed );
3484

  
3485
			// If IE and not a frame
3486
			// continually check to see if the document is ready
3487
			var top = false;
3488

  
3489
			try {
3490
				top = window.frameElement == null && document.documentElement;
3491
			} catch(e) {}
3492

  
3493
			if ( top && top.doScroll ) {
3494
				(function doScrollCheck() {
3495
					if ( !jQuery.isReady ) {
3496

  
3497
						try {
3498
							// Use the trick by Diego Perini
3499
							// http://javascript.nwbox.com/IEContentLoaded/
3500
							top.doScroll("left");
3501
						} catch(e) {
3502
							return setTimeout( doScrollCheck, 50 );
3503
						}
3504

  
3505
						// detach all dom ready events
3506
						detach();
3507

  
3508
						// and execute any waiting functions
3509
						jQuery.ready();
3510
					}
3511
				})();
3512
			}
3513
		}
3514
	}
3515
	return readyList.promise( obj );
3516
};
3517

  
3518

  
3519
var strundefined = typeof undefined;
3520

  
3521

  
3522

  
3523
// Support: IE<9
3524
// Iteration over object's inherited properties before its own
3525
var i;
3526
for ( i in jQuery( support ) ) {
3527
	break;
3528
}
3529
support.ownLast = i !== "0";
3530

  
3531
// Note: most support tests are defined in their respective modules.
3532
// false until the test is run
3533
support.inlineBlockNeedsLayout = false;
3534

  
3535
jQuery(function() {
3536
	// We need to execute this one support test ASAP because we need to know
3537
	// if body.style.zoom needs to be set.
3538

  
3539
	var container, div,
3540
		body = document.getElementsByTagName("body")[0];
3541

  
3542
	if ( !body ) {
3543
		// Return for frameset docs that don't have a body
3544
		return;
3545
	}
3546

  
3547
	// Setup
3548
	container = document.createElement( "div" );
3549
	container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
3550

  
3551
	div = document.createElement( "div" );
3552
	body.appendChild( container ).appendChild( div );
3553

  
3554
	if ( typeof div.style.zoom !== strundefined ) {
3555
		// Support: IE<8
3556
		// Check if natively block-level elements act like inline-block
3557
		// elements when setting their display to 'inline' and giving
3558
		// them layout
3559
		div.style.cssText = "border:0;margin:0;width:1px;padding:1px;display:inline;zoom:1";
3560

  
3561
		if ( (support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 )) ) {
3562
			// Prevent IE 6 from affecting layout for positioned elements #11048
3563
			// Prevent IE from shrinking the body in IE 7 mode #12869
3564
			// Support: IE<8
3565
			body.style.zoom = 1;
3566
		}
3567
	}
3568

  
3569
	body.removeChild( container );
3570

  
3571
	// Null elements to avoid leaks in IE
3572
	container = div = null;
3573
});
3574

  
3575

  
3576

  
3577

  
3578
(function() {
3579
	var div = document.createElement( "div" );
3580

  
3581
	// Execute the test only if not already executed in another module.
3582
	if (support.deleteExpando == null) {
3583
		// Support: IE<9
3584
		support.deleteExpando = true;
3585
		try {
3586
			delete div.test;
3587
		} catch( e ) {
3588
			support.deleteExpando = false;
3589
		}
3590
	}
3591

  
3592
	// Null elements to avoid leaks in IE.
3593
	div = null;
3594
})();
3595

  
3596

  
3597
/**
3598
 * Determines whether an object can have data
3599
 */
3600
jQuery.acceptData = function( elem ) {
3601
	var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ],
3602
		nodeType = +elem.nodeType || 1;
3603

  
3604
	// Do not set data on non-element DOM nodes because it will not be cleared (#8335).
3605
	return nodeType !== 1 && nodeType !== 9 ?
3606
		false :
3607

  
3608
		// Nodes accept data unless otherwise specified; rejection can be conditional
3609
		!noData || noData !== true && elem.getAttribute("classid") === noData;
3610
};
3611

  
3612

  
3613
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
3614
	rmultiDash = /([A-Z])/g;
3615

  
3616
function dataAttr( elem, key, data ) {
3617
	// If nothing was found internally, try to fetch any
3618
	// data from the HTML5 data-* attribute
3619
	if ( data === undefined && elem.nodeType === 1 ) {
3620

  
3621
		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
3622

  
3623
		data = elem.getAttribute( name );
3624

  
3625
		if ( typeof data === "string" ) {
3626
			try {
3627
				data = data === "true" ? true :
3628
					data === "false" ? false :
3629
					data === "null" ? null :
3630
					// Only convert to a number if it doesn't change the string
3631
					+data + "" === data ? +data :
3632
					rbrace.test( data ) ? jQuery.parseJSON( data ) :
3633
					data;
3634
			} catch( e ) {}
3635

  
3636
			// Make sure we set the data so it isn't changed later
3637
			jQuery.data( elem, key, data );
3638

  
3639
		} else {
3640
			data = undefined;
3641
		}
3642
	}
3643

  
3644
	return data;
3645
}
3646

  
3647
// checks a cache object for emptiness
3648
function isEmptyDataObject( obj ) {
3649
	var name;
3650
	for ( name in obj ) {
3651

  
3652
		// if the public data object is empty, the private is still empty
3653
		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
3654
			continue;
3655
		}
3656
		if ( name !== "toJSON" ) {
3657
			return false;
3658
		}
3659
	}
3660

  
3661
	return true;
3662
}
3663

  
3664
function internalData( elem, name, data, pvt /* Internal Use Only */ ) {
3665
	if ( !jQuery.acceptData( elem ) ) {
3666
		return;
3667
	}
3668

  
3669
	var ret, thisCache,
3670
		internalKey = jQuery.expando,
3671

  
3672
		// We have to handle DOM nodes and JS objects differently because IE6-7
3673
		// can't GC object references properly across the DOM-JS boundary
3674
		isNode = elem.nodeType,
3675

  
3676
		// Only DOM nodes need the global jQuery cache; JS object data is
3677
		// attached directly to the object so GC can occur automatically
3678
		cache = isNode ? jQuery.cache : elem,
3679

  
3680
		// Only defining an ID for JS objects if its cache already exists allows
3681
		// the code to shortcut on the same path as a DOM node with no cache
3682
		id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
3683

  
3684
	// Avoid doing any more work than we need to when trying to get data on an
3685
	// object that has no data at all
3686
	if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) {
3687
		return;
3688
	}
3689

  
3690
	if ( !id ) {
3691
		// Only DOM nodes need a new unique ID for each element since their data
3692
		// ends up in the global cache
3693
		if ( isNode ) {
3694
			id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++;
3695
		} else {
3696
			id = internalKey;
3697
		}
3698
	}
3699

  
3700
	if ( !cache[ id ] ) {
3701
		// Avoid exposing jQuery metadata on plain JS objects when the object
3702
		// is serialized using JSON.stringify
3703
		cache[ id ] = isNode ? {} : { toJSON: jQuery.noop };
3704
	}
3705

  
3706
	// An object can be passed to jQuery.data instead of a key/value pair; this gets
3707
	// shallow copied over onto the existing cache
3708
	if ( typeof name === "object" || typeof name === "function" ) {
3709
		if ( pvt ) {
3710
			cache[ id ] = jQuery.extend( cache[ id ], name );
3711
		} else {
3712
			cache[ id ].data = jQuery.extend( cache[ id ].data, name );
3713
		}
3714
	}
3715

  
3716
	thisCache = cache[ id ];
3717

  
3718
	// jQuery data() is stored in a separate object inside the object's internal data
3719
	// cache in order to avoid key collisions between internal data and user-defined
3720
	// data.
3721
	if ( !pvt ) {
3722
		if ( !thisCache.data ) {
3723
			thisCache.data = {};
3724
		}
3725

  
3726
		thisCache = thisCache.data;
3727
	}
3728

  
3729
	if ( data !== undefined ) {
3730
		thisCache[ jQuery.camelCase( name ) ] = data;
3731
	}
3732

  
3733
	// Check for both converted-to-camel and non-converted data property names
3734
	// If a data property was specified
3735
	if ( typeof name === "string" ) {
3736

  
3737
		// First Try to find as-is property data
3738
		ret = thisCache[ name ];
3739

  
3740
		// Test for null|undefined property data
3741
		if ( ret == null ) {
3742

  
3743
			// Try to find the camelCased property
3744
			ret = thisCache[ jQuery.camelCase( name ) ];
3745
		}
3746
	} else {
3747
		ret = thisCache;
3748
	}
3749

  
3750
	return ret;
3751
}
3752

  
3753
function internalRemoveData( elem, name, pvt ) {
3754
	if ( !jQuery.acceptData( elem ) ) {
3755
		return;
3756
	}
3757

  
3758
	var thisCache, i,
3759
		isNode = elem.nodeType,
3760

  
3761
		// See jQuery.data for more information
3762
		cache = isNode ? jQuery.cache : elem,
3763
		id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
3764

  
3765
	// If there is already no cache entry for this object, there is no
3766
	// purpose in continuing
3767
	if ( !cache[ id ] ) {
3768
		return;
3769
	}
3770

  
3771
	if ( name ) {
3772

  
3773
		thisCache = pvt ? cache[ id ] : cache[ id ].data;
3774

  
3775
		if ( thisCache ) {
3776

  
3777
			// Support array or space separated string names for data keys
3778
			if ( !jQuery.isArray( name ) ) {
3779

  
3780
				// try the string as a key before any manipulation
3781
				if ( name in thisCache ) {
3782
					name = [ name ];
3783
				} else {
3784

  
3785
					// split the camel cased version by spaces unless a key with the spaces exists
3786
					name = jQuery.camelCase( name );
3787
					if ( name in thisCache ) {
3788
						name = [ name ];
3789
					} else {
3790
						name = name.split(" ");
3791
					}
3792
				}
3793
			} else {
3794
				// If "name" is an array of keys...
3795
				// When data is initially created, via ("key", "val") signature,
3796
				// keys will be converted to camelCase.
3797
				// Since there is no way to tell _how_ a key was added, remove
3798
				// both plain key and camelCase key. #12786
3799
				// This will only penalize the array argument path.
3800
				name = name.concat( jQuery.map( name, jQuery.camelCase ) );
3801
			}
3802

  
3803
			i = name.length;
3804
			while ( i-- ) {
3805
				delete thisCache[ name[i] ];
3806
			}
3807

  
3808
			// If there is no data left in the cache, we want to continue
3809
			// and let the cache object itself get destroyed
3810
			if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) {
3811
				return;
3812
			}
3813
		}
3814
	}
3815

  
3816
	// See jQuery.data for more information
3817
	if ( !pvt ) {
3818
		delete cache[ id ].data;
3819

  
3820
		// Don't destroy the parent cache unless the internal data object
3821
		// had been the only thing left in it
3822
		if ( !isEmptyDataObject( cache[ id ] ) ) {
3823
			return;
3824
		}
3825
	}
3826

  
3827
	// Destroy the cache
3828
	if ( isNode ) {
3829
		jQuery.cleanData( [ elem ], true );
3830

  
3831
	// Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
3832
	/* jshint eqeqeq: false */
3833
	} else if ( support.deleteExpando || cache != cache.window ) {
3834
		/* jshint eqeqeq: true */
3835
		delete cache[ id ];
3836

  
3837
	// When all else fails, null
3838
	} else {
3839
		cache[ id ] = null;
3840
	}
3841
}
3842

  
3843
jQuery.extend({
3844
	cache: {},
3845

  
3846
	// The following elements (space-suffixed to avoid Object.prototype collisions)
3847
	// throw uncatchable exceptions if you attempt to set expando properties
3848
	noData: {
3849
		"applet ": true,
3850
		"embed ": true,
3851
		// ...but Flash objects (which have this classid) *can* handle expandos
3852
		"object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
3853
	},
3854

  
3855
	hasData: function( elem ) {
3856
		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
3857
		return !!elem && !isEmptyDataObject( elem );
3858
	},
3859

  
3860
	data: function( elem, name, data ) {
3861
		return internalData( elem, name, data );
3862
	},
3863

  
3864
	removeData: function( elem, name ) {
3865
		return internalRemoveData( elem, name );
3866
	},
3867

  
3868
	// For internal use only.
3869
	_data: function( elem, name, data ) {
3870
		return internalData( elem, name, data, true );
3871
	},
3872

  
3873
	_removeData: function( elem, name ) {
3874
		return internalRemoveData( elem, name, true );
3875
	}
3876
});
3877

  
3878
jQuery.fn.extend({
3879
	data: function( key, value ) {
3880
		var i, name, data,
3881
			elem = this[0],
3882
			attrs = elem && elem.attributes;
3883

  
3884
		// Special expections of .data basically thwart jQuery.access,
3885
		// so implement the relevant behavior ourselves
3886

  
3887
		// Gets all values
3888
		if ( key === undefined ) {
3889
			if ( this.length ) {
3890
				data = jQuery.data( elem );
3891

  
3892
				if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
3893
					i = attrs.length;
3894
					while ( i-- ) {
3895
						name = attrs[i].name;
3896

  
3897
						if ( name.indexOf("data-") === 0 ) {
3898
							name = jQuery.camelCase( name.slice(5) );
3899

  
3900
							dataAttr( elem, name, data[ name ] );
3901
						}
3902
					}
3903
					jQuery._data( elem, "parsedAttrs", true );
3904
				}
3905
			}
3906

  
3907
			return data;
3908
		}
3909

  
3910
		// Sets multiple values
3911
		if ( typeof key === "object" ) {
3912
			return this.each(function() {
3913
				jQuery.data( this, key );
3914
			});
3915
		}
3916

  
3917
		return arguments.length > 1 ?
3918

  
3919
			// Sets one value
3920
			this.each(function() {
3921
				jQuery.data( this, key, value );
3922
			}) :
3923

  
3924
			// Gets one value
3925
			// Try to fetch any internally stored data first
3926
			elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined;
3927
	},
3928

  
3929
	removeData: function( key ) {
3930
		return this.each(function() {
3931
			jQuery.removeData( this, key );
3932
		});
3933
	}
3934
});
3935

  
3936

  
3937
jQuery.extend({
3938
	queue: function( elem, type, data ) {
3939
		var queue;
3940

  
3941
		if ( elem ) {
3942
			type = ( type || "fx" ) + "queue";
3943
			queue = jQuery._data( elem, type );
3944

  
3945
			// Speed up dequeue by getting out quickly if this is just a lookup
3946
			if ( data ) {
3947
				if ( !queue || jQuery.isArray(data) ) {
3948
					queue = jQuery._data( elem, type, jQuery.makeArray(data) );
3949
				} else {
3950
					queue.push( data );
3951
				}
3952
			}
3953
			return queue || [];
3954
		}
3955
	},
3956

  
3957
	dequeue: function( elem, type ) {
3958
		type = type || "fx";
3959

  
3960
		var queue = jQuery.queue( elem, type ),
3961
			startLength = queue.length,
3962
			fn = queue.shift(),
3963
			hooks = jQuery._queueHooks( elem, type ),
3964
			next = function() {
3965
				jQuery.dequeue( elem, type );
3966
			};
3967

  
3968
		// If the fx queue is dequeued, always remove the progress sentinel
3969
		if ( fn === "inprogress" ) {
3970
			fn = queue.shift();
3971
			startLength--;
3972
		}
3973

  
3974
		if ( fn ) {
3975

  
3976
			// Add a progress sentinel to prevent the fx queue from being
3977
			// automatically dequeued
3978
			if ( type === "fx" ) {
3979
				queue.unshift( "inprogress" );
3980
			}
3981

  
3982
			// clear up the last queue stop function
3983
			delete hooks.stop;
3984
			fn.call( elem, next, hooks );
3985
		}
3986

  
3987
		if ( !startLength && hooks ) {
3988
			hooks.empty.fire();
3989
		}
3990
	},
3991

  
3992
	// not intended for public consumption - generates a queueHooks object, or returns the current one
3993
	_queueHooks: function( elem, type ) {
3994
		var key = type + "queueHooks";
3995
		return jQuery._data( elem, key ) || jQuery._data( elem, key, {
3996
			empty: jQuery.Callbacks("once memory").add(function() {
3997
				jQuery._removeData( elem, type + "queue" );
3998
				jQuery._removeData( elem, key );
3999
			})
4000
		});
4001
	}
4002
});
4003

  
4004
jQuery.fn.extend({
4005
	queue: function( type, data ) {
4006
		var setter = 2;
4007

  
4008
		if ( typeof type !== "string" ) {
4009
			data = type;
4010
			type = "fx";
4011
			setter--;
4012
		}
4013

  
4014
		if ( arguments.length < setter ) {
4015
			return jQuery.queue( this[0], type );
4016
		}
4017

  
4018
		return data === undefined ?
4019
			this :
4020
			this.each(function() {
4021
				var queue = jQuery.queue( this, type, data );
4022

  
4023
				// ensure a hooks for this queue
4024
				jQuery._queueHooks( this, type );
4025

  
4026
				if ( type === "fx" && queue[0] !== "inprogress" ) {
4027
					jQuery.dequeue( this, type );
4028
				}
4029
			});
4030
	},
4031
	dequeue: function( type ) {
4032
		return this.each(function() {
4033
			jQuery.dequeue( this, type );
4034
		});
4035
	},
4036
	clearQueue: function( type ) {
4037
		return this.queue( type || "fx", [] );
4038
	},
4039
	// Get a promise resolved when queues of a certain type
4040
	// are emptied (fx is the type by default)
4041
	promise: function( type, obj ) {
4042
		var tmp,
4043
			count = 1,
4044
			defer = jQuery.Deferred(),
4045
			elements = this,
4046
			i = this.length,
4047
			resolve = function() {
4048
				if ( !( --count ) ) {
4049
					defer.resolveWith( elements, [ elements ] );
4050
				}
4051
			};
4052

  
4053
		if ( typeof type !== "string" ) {
4054
			obj = type;
4055
			type = undefined;
4056
		}
4057
		type = type || "fx";
4058

  
4059
		while ( i-- ) {
4060
			tmp = jQuery._data( elements[ i ], type + "queueHooks" );
4061
			if ( tmp && tmp.empty ) {
4062
				count++;
4063
				tmp.empty.add( resolve );
4064
			}
4065
		}
4066
		resolve();
4067
		return defer.promise( obj );
4068
	}
4069
});
4070
var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
4071

  
4072
var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
4073

  
4074
var isHidden = function( elem, el ) {
4075
		// isHidden might be called from jQuery#filter function;
4076
		// in that case, element will be second argument
4077
		elem = el || elem;
4078
		return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
4079
	};
4080

  
4081

  
4082

  
4083
// Multifunctional method to get and set values of a collection
4084
// The value/s can optionally be executed if it's a function
4085
var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
4086
	var i = 0,
4087
		length = elems.length,
4088
		bulk = key == null;
4089

  
4090
	// Sets many values
4091
	if ( jQuery.type( key ) === "object" ) {
4092
		chainable = true;
4093
		for ( i in key ) {
4094
			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
4095
		}
4096

  
4097
	// Sets one value
4098
	} else if ( value !== undefined ) {
4099
		chainable = true;
4100

  
4101
		if ( !jQuery.isFunction( value ) ) {
4102
			raw = true;
4103
		}
4104

  
4105
		if ( bulk ) {
4106
			// Bulk operations run against the entire set
4107
			if ( raw ) {
4108
				fn.call( elems, value );
4109
				fn = null;
4110

  
4111
			// ...except when executing function values
4112
			} else {
4113
				bulk = fn;
4114
				fn = function( elem, key, value ) {
4115
					return bulk.call( jQuery( elem ), value );
4116
				};
4117
			}
4118
		}
4119

  
4120
		if ( fn ) {
4121
			for ( ; i < length; i++ ) {
4122
				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
4123
			}
4124
		}
4125
	}
4126

  
4127
	return chainable ?
4128
		elems :
4129

  
4130
		// Gets
4131
		bulk ?
4132
			fn.call( elems ) :
4133
			length ? fn( elems[0], key ) : emptyGet;
4134
};
4135
var rcheckableType = (/^(?:checkbox|radio)$/i);
4136

  
4137

  
4138

  
4139
(function() {
4140
	var fragment = document.createDocumentFragment(),
4141
		div = document.createElement("div"),
4142
		input = document.createElement("input");
4143

  
4144
	// Setup
4145
	div.setAttribute( "className", "t" );
4146
	div.innerHTML = "  <link/><table></table><a href='/a'>a</a>";
4147

  
4148
	// IE strips leading whitespace when .innerHTML is used
4149
	support.leadingWhitespace = div.firstChild.nodeType === 3;
4150

  
4151
	// Make sure that tbody elements aren't automatically inserted
4152
	// IE will insert them into empty tables
4153
	support.tbody = !div.getElementsByTagName( "tbody" ).length;
4154

  
4155
	// Make sure that link elements get serialized correctly by innerHTML
4156
	// This requires a wrapper element in IE
4157
	support.htmlSerialize = !!div.getElementsByTagName( "link" ).length;
4158

  
4159
	// Makes sure cloning an html5 element does not cause problems
4160
	// Where outerHTML is undefined, this still works
4161
	support.html5Clone =
4162
		document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav></:nav>";
4163

  
4164
	// Check if a disconnected checkbox will retain its checked
4165
	// value of true after appended to the DOM (IE6/7)
4166
	input.type = "checkbox";
4167
	input.checked = true;
4168
	fragment.appendChild( input );
4169
	support.appendChecked = input.checked;
4170

  
4171
	// Make sure textarea (and checkbox) defaultValue is properly cloned
4172
	// Support: IE6-IE11+
4173
	div.innerHTML = "<textarea>x</textarea>";
4174
	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
4175

  
4176
	// #11217 - WebKit loses check when the name is after the checked attribute
4177
	fragment.appendChild( div );
4178
	div.innerHTML = "<input type='radio' checked='checked' name='t'/>";
4179

  
4180
	// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3
4181
	// old WebKit doesn't clone checked state correctly in fragments
4182
	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
4183

  
4184
	// Support: IE<9
4185
	// Opera does not clone events (and typeof div.attachEvent === undefined).
4186
	// IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
4187
	support.noCloneEvent = true;
4188
	if ( div.attachEvent ) {
4189
		div.attachEvent( "onclick", function() {
4190
			support.noCloneEvent = false;
4191
		});
4192

  
4193
		div.cloneNode( true ).click();
4194
	}
4195

  
4196
	// Execute the test only if not already executed in another module.
4197
	if (support.deleteExpando == null) {
4198
		// Support: IE<9
4199
		support.deleteExpando = true;
4200
		try {
4201
			delete div.test;
4202
		} catch( e ) {
4203
			support.deleteExpando = false;
4204
		}
4205
	}
4206

  
4207
	// Null elements to avoid leaks in IE.
4208
	fragment = div = input = null;
4209
})();
4210

  
4211

  
4212
(function() {
4213
	var i, eventName,
4214
		div = document.createElement( "div" );
4215

  
4216
	// Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event)
4217
	for ( i in { submit: true, change: true, focusin: true }) {
4218
		eventName = "on" + i;
4219

  
4220
		if ( !(support[ i + "Bubbles" ] = eventName in window) ) {
4221
			// Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP)
4222
			div.setAttribute( eventName, "t" );
4223
			support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false;
4224
		}
4225
	}
4226

  
4227
	// Null elements to avoid leaks in IE.
4228
	div = null;
4229
})();
4230

  
4231

  
4232
var rformElems = /^(?:input|select|textarea)$/i,
4233
	rkeyEvent = /^key/,
4234
	rmouseEvent = /^(?:mouse|contextmenu)|click/,
4235
	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
4236
	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
4237

  
4238
function returnTrue() {
4239
	return true;
4240
}
4241

  
4242
function returnFalse() {
4243
	return false;
4244
}
4245

  
4246
function safeActiveElement() {
4247
	try {
4248
		return document.activeElement;
4249
	} catch ( err ) { }
4250
}
4251

  
4252
/*
4253
 * Helper functions for managing events -- not part of the public interface.
4254
 * Props to Dean Edwards' addEvent library for many of the ideas.
4255
 */
4256
jQuery.event = {
4257

  
4258
	global: {},
4259

  
4260
	add: function( elem, types, handler, data, selector ) {
4261
		var tmp, events, t, handleObjIn,
4262
			special, eventHandle, handleObj,
4263
			handlers, type, namespaces, origType,
4264
			elemData = jQuery._data( elem );
4265

  
4266
		// Don't attach events to noData or text/comment nodes (but allow plain objects)
4267
		if ( !elemData ) {
4268
			return;
4269
		}
4270

  
4271
		// Caller can pass in an object of custom data in lieu of the handler
4272
		if ( handler.handler ) {
4273
			handleObjIn = handler;
4274
			handler = handleObjIn.handler;
4275
			selector = handleObjIn.selector;
4276
		}
4277

  
4278
		// Make sure that the handler has a unique ID, used to find/remove it later
4279
		if ( !handler.guid ) {
4280
			handler.guid = jQuery.guid++;
4281
		}
4282

  
4283
		// Init the element's event structure and main handler, if this is the first
4284
		if ( !(events = elemData.events) ) {
4285
			events = elemData.events = {};
4286
		}
4287
		if ( !(eventHandle = elemData.handle) ) {
4288
			eventHandle = elemData.handle = function( e ) {
4289
				// Discard the second event of a jQuery.event.trigger() and
4290
				// when an event is called after a page has unloaded
4291
				return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ?
4292
					jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
4293
					undefined;
4294
			};
4295
			// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
4296
			eventHandle.elem = elem;
4297
		}
4298

  
4299
		// Handle multiple events separated by a space
4300
		types = ( types || "" ).match( rnotwhite ) || [ "" ];
4301
		t = types.length;
4302
		while ( t-- ) {
4303
			tmp = rtypenamespace.exec( types[t] ) || [];
4304
			type = origType = tmp[1];
4305
			namespaces = ( tmp[2] || "" ).split( "." ).sort();
4306

  
4307
			// There *must* be a type, no attaching namespace-only handlers
4308
			if ( !type ) {
4309
				continue;
4310
			}
4311

  
4312
			// If event changes its type, use the special event handlers for the changed type
4313
			special = jQuery.event.special[ type ] || {};
4314

  
4315
			// If selector defined, determine special event api type, otherwise given type
4316
			type = ( selector ? special.delegateType : special.bindType ) || type;
4317

  
4318
			// Update special based on newly reset type
4319
			special = jQuery.event.special[ type ] || {};
4320

  
4321
			// handleObj is passed to all event handlers
4322
			handleObj = jQuery.extend({
4323
				type: type,
4324
				origType: origType,
4325
				data: data,
4326
				handler: handler,
4327
				guid: handler.guid,
4328
				selector: selector,
4329
				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
4330
				namespace: namespaces.join(".")
4331
			}, handleObjIn );
4332

  
4333
			// Init the event handler queue if we're the first
4334
			if ( !(handlers = events[ type ]) ) {
4335
				handlers = events[ type ] = [];
4336
				handlers.delegateCount = 0;
4337

  
4338
				// Only use addEventListener/attachEvent if the special events handler returns false
4339
				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
4340
					// Bind the global event handler to the element
4341
					if ( elem.addEventListener ) {
4342
						elem.addEventListener( type, eventHandle, false );
4343

  
4344
					} else if ( elem.attachEvent ) {
4345
						elem.attachEvent( "on" + type, eventHandle );
4346
					}
4347
				}
4348
			}
4349

  
4350
			if ( special.add ) {
4351
				special.add.call( elem, handleObj );
4352

  
4353
				if ( !handleObj.handler.guid ) {
4354
					handleObj.handler.guid = handler.guid;
4355
				}
4356
			}
4357

  
4358
			// Add to the element's handler list, delegates in front
4359
			if ( selector ) {
4360
				handlers.splice( handlers.delegateCount++, 0, handleObj );
4361
			} else {
4362
				handlers.push( handleObj );
4363
			}
4364

  
4365
			// Keep track of which events have ever been used, for event optimization
4366
			jQuery.event.global[ type ] = true;
4367
		}
4368

  
4369
		// Nullify elem to prevent memory leaks in IE
4370
		elem = null;
4371
	},
4372

  
4373
	// Detach an event or set of events from an element
4374
	remove: function( elem, types, handler, selector, mappedTypes ) {
4375
		var j, handleObj, tmp,
4376
			origCount, t, events,
4377
			special, handlers, type,
4378
			namespaces, origType,
4379
			elemData = jQuery.hasData( elem ) && jQuery._data( elem );
4380

  
4381
		if ( !elemData || !(events = elemData.events) ) {
4382
			return;
4383
		}
4384

  
4385
		// Once for each type.namespace in types; type may be omitted
4386
		types = ( types || "" ).match( rnotwhite ) || [ "" ];
4387
		t = types.length;
4388
		while ( t-- ) {
4389
			tmp = rtypenamespace.exec( types[t] ) || [];
4390
			type = origType = tmp[1];
4391
			namespaces = ( tmp[2] || "" ).split( "." ).sort();
4392

  
4393
			// Unbind all events (on this namespace, if provided) for the element
4394
			if ( !type ) {
4395
				for ( type in events ) {
4396
					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
4397
				}
4398
				continue;
4399
			}
4400

  
4401
			special = jQuery.event.special[ type ] || {};
4402
			type = ( selector ? special.delegateType : special.bindType ) || type;
4403
			handlers = events[ type ] || [];
4404
			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
4405

  
4406
			// Remove matching events
4407
			origCount = j = handlers.length;
4408
			while ( j-- ) {
4409
				handleObj = handlers[ j ];
4410

  
4411
				if ( ( mappedTypes || origType === handleObj.origType ) &&
4412
					( !handler || handler.guid === handleObj.guid ) &&
4413
					( !tmp || tmp.test( handleObj.namespace ) ) &&
4414
					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
4415
					handlers.splice( j, 1 );
4416

  
4417
					if ( handleObj.selector ) {
4418
						handlers.delegateCount--;
4419
					}
4420
					if ( special.remove ) {
4421
						special.remove.call( elem, handleObj );
4422
					}
4423
				}
4424
			}
4425

  
4426
			// Remove generic event handler if we removed something and no more handlers exist
4427
			// (avoids potential for endless recursion during removal of special event handlers)
4428
			if ( origCount && !handlers.length ) {
4429
				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
4430
					jQuery.removeEvent( elem, type, elemData.handle );
4431
				}
4432

  
4433
				delete events[ type ];
4434
			}
4435
		}
4436

  
4437
		// Remove the expando if it's no longer used
4438
		if ( jQuery.isEmptyObject( events ) ) {
4439
			delete elemData.handle;
4440

  
4441
			// removeData also checks for emptiness and clears the expando if empty
4442
			// so use it instead of delete
4443
			jQuery._removeData( elem, "events" );
4444
		}
4445
	},
4446

  
4447
	trigger: function( event, data, elem, onlyHandlers ) {
4448
		var handle, ontype, cur,
4449
			bubbleType, special, tmp, i,
4450
			eventPath = [ elem || document ],
4451
			type = hasOwn.call( event, "type" ) ? event.type : event,
4452
			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
4453

  
4454
		cur = tmp = elem = elem || document;
4455

  
4456
		// Don't do events on text and comment nodes
4457
		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
4458
			return;
4459
		}
4460

  
4461
		// focus/blur morphs to focusin/out; ensure we're not firing them right now
4462
		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
4463
			return;
4464
		}
4465

  
4466
		if ( type.indexOf(".") >= 0 ) {
4467
			// Namespaced trigger; create a regexp to match event type in handle()
4468
			namespaces = type.split(".");
4469
			type = namespaces.shift();
4470
			namespaces.sort();
4471
		}
4472
		ontype = type.indexOf(":") < 0 && "on" + type;
4473

  
4474
		// Caller can pass in a jQuery.Event object, Object, or just an event type string
4475
		event = event[ jQuery.expando ] ?
4476
			event :
4477
			new jQuery.Event( type, typeof event === "object" && event );
4478

  
4479
		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
4480
		event.isTrigger = onlyHandlers ? 2 : 3;
4481
		event.namespace = namespaces.join(".");
4482
		event.namespace_re = event.namespace ?
4483
			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
4484
			null;
4485

  
4486
		// Clean up the event in case it is being reused
4487
		event.result = undefined;
4488
		if ( !event.target ) {
4489
			event.target = elem;
4490
		}
4491

  
4492
		// Clone any incoming data and prepend the event, creating the handler arg list
4493
		data = data == null ?
4494
			[ event ] :
4495
			jQuery.makeArray( data, [ event ] );
4496

  
4497
		// Allow special events to draw outside the lines
4498
		special = jQuery.event.special[ type ] || {};
4499
		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
4500
			return;
4501
		}
4502

  
4503
		// Determine event propagation path in advance, per W3C events spec (#9951)
4504
		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
4505
		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
4506

  
4507
			bubbleType = special.delegateType || type;
4508
			if ( !rfocusMorph.test( bubbleType + type ) ) {
4509
				cur = cur.parentNode;
4510
			}
4511
			for ( ; cur; cur = cur.parentNode ) {
4512
				eventPath.push( cur );
4513
				tmp = cur;
4514
			}
4515

  
4516
			// Only add window if we got to document (e.g., not plain obj or detached DOM)
4517
			if ( tmp === (elem.ownerDocument || document) ) {
4518
				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
4519
			}
4520
		}
4521

  
4522
		// Fire handlers on the event path
4523
		i = 0;
4524
		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
4525

  
4526
			event.type = i > 1 ?
4527
				bubbleType :
4528
				special.bindType || type;
4529

  
4530
			// jQuery handler
4531
			handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
4532
			if ( handle ) {
4533
				handle.apply( cur, data );
4534
			}
4535

  
4536
			// Native handler
4537
			handle = ontype && cur[ ontype ];
4538
			if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
4539
				event.result = handle.apply( cur, data );
4540
				if ( event.result === false ) {
4541
					event.preventDefault();
4542
				}
4543
			}
4544
		}
4545
		event.type = type;
4546

  
4547
		// If nobody prevented the default action, do it now
4548
		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
4549

  
4550
			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
4551
				jQuery.acceptData( elem ) ) {
4552

  
4553
				// Call a native DOM method on the target with the same name name as the event.
4554
				// Can't use an .isFunction() check here because IE6/7 fails that test.
4555
				// Don't do default actions on window, that's where global variables be (#6170)
4556
				if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
4557

  
4558
					// Don't re-trigger an onFOO event when we call its FOO() method
4559
					tmp = elem[ ontype ];
4560

  
4561
					if ( tmp ) {
4562
						elem[ ontype ] = null;
4563
					}
4564

  
4565
					// Prevent re-triggering of the same event, since we already bubbled it above
4566
					jQuery.event.triggered = type;
4567
					try {
4568
						elem[ type ]();
4569
					} catch ( e ) {
4570
						// IE<9 dies on focus/blur to hidden element (#1486,#12518)
4571
						// only reproducible on winXP IE8 native, not IE9 in IE8 mode
4572
					}
4573
					jQuery.event.triggered = undefined;
4574

  
4575
					if ( tmp ) {
4576
						elem[ ontype ] = tmp;
4577
					}
4578
				}
4579
			}
4580
		}
4581

  
4582
		return event.result;
4583
	},
4584

  
4585
	dispatch: function( event ) {
4586

  
4587
		// Make a writable jQuery.Event from the native event object
4588
		event = jQuery.event.fix( event );
4589

  
4590
		var i, ret, handleObj, matched, j,
4591
			handlerQueue = [],
4592
			args = slice.call( arguments ),
4593
			handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
4594
			special = jQuery.event.special[ event.type ] || {};
4595

  
4596
		// Use the fix-ed jQuery.Event rather than the (read-only) native event
4597
		args[0] = event;
4598
		event.delegateTarget = this;
4599

  
4600
		// Call the preDispatch hook for the mapped type, and let it bail if desired
4601
		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
4602
			return;
4603
		}
4604

  
4605
		// Determine handlers
4606
		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
4607

  
4608
		// Run delegates first; they may want to stop propagation beneath us
4609
		i = 0;
4610
		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
4611
			event.currentTarget = matched.elem;
4612

  
4613
			j = 0;
4614
			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
4615

  
4616
				// Triggered event must either 1) have no namespace, or
4617
				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
4618
				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
4619

  
4620
					event.handleObj = handleObj;
4621
					event.data = handleObj.data;
4622

  
4623
					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
4624
							.apply( matched.elem, args );
4625

  
4626
					if ( ret !== undefined ) {
4627
						if ( (event.result = ret) === false ) {
4628
							event.preventDefault();
4629
							event.stopPropagation();
4630
						}
4631
					}
4632
				}
4633
			}
4634
		}
4635

  
4636
		// Call the postDispatch hook for the mapped type
4637
		if ( special.postDispatch ) {
4638
			special.postDispatch.call( this, event );
4639
		}
4640

  
4641
		return event.result;
4642
	},
4643

  
4644
	handlers: function( event, handlers ) {
4645
		var sel, handleObj, matches, i,
4646
			handlerQueue = [],
4647
			delegateCount = handlers.delegateCount,
4648
			cur = event.target;
4649

  
4650
		// Find delegate handlers
4651
		// Black-hole SVG <use> instance trees (#13180)
4652
		// Avoid non-left-click bubbling in Firefox (#3861)
4653
		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
4654

  
4655
			/* jshint eqeqeq: false */
4656
			for ( ; cur != this; cur = cur.parentNode || this ) {
4657
				/* jshint eqeqeq: true */
4658

  
4659
				// Don't check non-elements (#13208)
4660
				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
4661
				if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
4662
					matches = [];
4663
					for ( i = 0; i < delegateCount; i++ ) {
4664
						handleObj = handlers[ i ];
4665

  
4666
						// Don't conflict with Object.prototype properties (#13203)
4667
						sel = handleObj.selector + " ";
4668

  
4669
						if ( matches[ sel ] === undefined ) {
4670
							matches[ sel ] = handleObj.needsContext ?
4671
								jQuery( sel, this ).index( cur ) >= 0 :
4672
								jQuery.find( sel, this, null, [ cur ] ).length;
4673
						}
4674
						if ( matches[ sel ] ) {
4675
							matches.push( handleObj );
4676
						}
4677
					}
4678
					if ( matches.length ) {
4679
						handlerQueue.push({ elem: cur, handlers: matches });
4680
					}
4681
				}
4682
			}
4683
		}
4684

  
4685
		// Add the remaining (directly-bound) handlers
4686
		if ( delegateCount < handlers.length ) {
4687
			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
4688
		}
4689

  
4690
		return handlerQueue;
4691
	},
4692

  
4693
	fix: function( event ) {
4694
		if ( event[ jQuery.expando ] ) {
4695
			return event;
4696
		}
4697

  
4698
		// Create a writable copy of the event object and normalize some properties
4699
		var i, prop, copy,
4700
			type = event.type,
4701
			originalEvent = event,
4702
			fixHook = this.fixHooks[ type ];
4703

  
4704
		if ( !fixHook ) {
4705
			this.fixHooks[ type ] = fixHook =
4706
				rmouseEvent.test( type ) ? this.mouseHooks :
4707
				rkeyEvent.test( type ) ? this.keyHooks :
4708
				{};
4709
		}
4710
		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
4711

  
4712
		event = new jQuery.Event( originalEvent );
4713

  
4714
		i = copy.length;
4715
		while ( i-- ) {
4716
			prop = copy[ i ];
4717
			event[ prop ] = originalEvent[ prop ];
4718
		}
4719

  
4720
		// Support: IE<9
4721
		// Fix target property (#1925)
4722
		if ( !event.target ) {
4723
			event.target = originalEvent.srcElement || document;
4724
		}
4725

  
4726
		// Support: Chrome 23+, Safari?
4727
		// Target should not be a text node (#504, #13143)
4728
		if ( event.target.nodeType === 3 ) {
4729
			event.target = event.target.parentNode;
4730
		}
4731

  
4732
		// Support: IE<9
4733
		// For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
4734
		event.metaKey = !!event.metaKey;
4735

  
4736
		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
4737
	},
4738

  
4739
	// Includes some event props shared by KeyEvent and MouseEvent
4740
	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
4741

  
4742
	fixHooks: {},
4743

  
4744
	keyHooks: {
4745
		props: "char charCode key keyCode".split(" "),
4746
		filter: function( event, original ) {
4747

  
4748
			// Add which for key events
4749
			if ( event.which == null ) {
4750
				event.which = original.charCode != null ? original.charCode : original.keyCode;
4751
			}
4752

  
4753
			return event;
4754
		}
4755
	},
4756

  
4757
	mouseHooks: {
4758
		props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
4759
		filter: function( event, original ) {
4760
			var body, eventDoc, doc,
4761
				button = original.button,
4762
				fromElement = original.fromElement;
4763

  
4764
			// Calculate pageX/Y if missing and clientX/Y available
4765
			if ( event.pageX == null && original.clientX != null ) {
4766
				eventDoc = event.target.ownerDocument || document;
4767
				doc = eventDoc.documentElement;
4768
				body = eventDoc.body;
4769

  
4770
				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
4771
				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
4772
			}
4773

  
4774
			// Add relatedTarget, if necessary
4775
			if ( !event.relatedTarget && fromElement ) {
4776
				event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
4777
			}
4778

  
4779
			// Add which for click: 1 === left; 2 === middle; 3 === right
4780
			// Note: button is not normalized, so don't use it
4781
			if ( !event.which && button !== undefined ) {
4782
				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
4783
			}
4784

  
4785
			return event;
4786
		}
4787
	},
4788

  
4789
	special: {
4790
		load: {
4791
			// Prevent triggered image.load events from bubbling to window.load
4792
			noBubble: true
4793
		},
4794
		focus: {
4795
			// Fire native event if possible so blur/focus sequence is correct
4796
			trigger: function() {
4797
				if ( this !== safeActiveElement() && this.focus ) {
4798
					try {
4799
						this.focus();
4800
						return false;
4801
					} catch ( e ) {
4802
						// Support: IE<9
4803
						// If we error on focus to hidden element (#1486, #12518),
4804
						// let .trigger() run the handlers
4805
					}
4806
				}
4807
			},
4808
			delegateType: "focusin"
4809
		},
4810
		blur: {
4811
			trigger: function() {
4812
				if ( this === safeActiveElement() && this.blur ) {
4813
					this.blur();
4814
					return false;
4815
				}
4816
			},
4817
			delegateType: "focusout"
4818
		},
4819
		click: {
4820
			// For checkbox, fire native event so checked state will be right
4821
			trigger: function() {
4822
				if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
4823
					this.click();
4824
					return false;
4825
				}
4826
			},
4827

  
4828
			// For cross-browser consistency, don't fire native .click() on links
4829
			_default: function( event ) {
4830
				return jQuery.nodeName( event.target, "a" );
4831
			}
4832
		},
4833

  
4834
		beforeunload: {
4835
			postDispatch: function( event ) {
4836

  
4837
				// Even when returnValue equals to undefined Firefox will still show alert
4838
				if ( event.result !== undefined ) {
4839
					event.originalEvent.returnValue = event.result;
4840
				}
4841
			}
4842
		}
4843
	},
4844

  
4845
	simulate: function( type, elem, event, bubble ) {
4846
		// Piggyback on a donor event to simulate a different one.
4847
		// Fake originalEvent to avoid donor's stopPropagation, but if the
4848
		// simulated event prevents default then we do the same on the donor.
4849
		var e = jQuery.extend(
4850
			new jQuery.Event(),
4851
			event,
4852
			{
4853
				type: type,
4854
				isSimulated: true,
4855
				originalEvent: {}
4856
			}
4857
		);
4858
		if ( bubble ) {
4859
			jQuery.event.trigger( e, null, elem );
4860
		} else {
4861
			jQuery.event.dispatch.call( elem, e );
4862
		}
4863
		if ( e.isDefaultPrevented() ) {
4864
			event.preventDefault();
4865
		}
4866
	}
4867
};
4868

  
4869
jQuery.removeEvent = document.removeEventListener ?
4870
	function( elem, type, handle ) {
4871
		if ( elem.removeEventListener ) {
4872
			elem.removeEventListener( type, handle, false );
4873
		}
4874
	} :
4875
	function( elem, type, handle ) {
4876
		var name = "on" + type;
4877

  
4878
		if ( elem.detachEvent ) {
4879

  
4880
			// #8545, #7054, preventing memory leaks for custom events in IE6-8
4881
			// detachEvent needed property on element, by name of that event, to properly expose it to GC
4882
			if ( typeof elem[ name ] === strundefined ) {
4883
				elem[ name ] = null;
4884
			}
4885

  
4886
			elem.detachEvent( name, handle );
4887
		}
4888
	};
4889

  
4890
jQuery.Event = function( src, props ) {
4891
	// Allow instantiation without the 'new' keyword
4892
	if ( !(this instanceof jQuery.Event) ) {
4893
		return new jQuery.Event( src, props );
4894
	}
4895

  
4896
	// Event object
4897
	if ( src && src.type ) {
4898
		this.originalEvent = src;
4899
		this.type = src.type;
4900

  
4901
		// Events bubbling up the document may have been marked as prevented
4902
		// by a handler lower down the tree; reflect the correct value.
4903
		this.isDefaultPrevented = src.defaultPrevented ||
4904
				src.defaultPrevented === undefined && (
4905
				// Support: IE < 9
4906
				src.returnValue === false ||
4907
				// Support: Android < 4.0
4908
				src.getPreventDefault && src.getPreventDefault() ) ?
4909
			returnTrue :
4910
			returnFalse;
4911

  
4912
	// Event type
4913
	} else {
4914
		this.type = src;
4915
	}
4916

  
4917
	// Put explicitly provided properties onto the event object
4918
	if ( props ) {
4919
		jQuery.extend( this, props );
4920
	}
4921

  
4922
	// Create a timestamp if incoming event doesn't have one
4923
	this.timeStamp = src && src.timeStamp || jQuery.now();
4924

  
4925
	// Mark it as fixed
4926
	this[ jQuery.expando ] = true;
4927
};
4928

  
4929
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
4930
// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
4931
jQuery.Event.prototype = {
4932
	isDefaultPrevented: returnFalse,
4933
	isPropagationStopped: returnFalse,
4934
	isImmediatePropagationStopped: returnFalse,
4935

  
4936
	preventDefault: function() {
4937
		var e = this.originalEvent;
4938

  
4939
		this.isDefaultPrevented = returnTrue;
4940
		if ( !e ) {
4941
			return;
4942
		}
4943

  
4944
		// If preventDefault exists, run it on the original event
4945
		if ( e.preventDefault ) {
4946
			e.preventDefault();
4947

  
4948
		// Support: IE
4949
		// Otherwise set the returnValue property of the original event to false
4950
		} else {
4951
			e.returnValue = false;
4952
		}
4953
	},
4954
	stopPropagation: function() {
4955
		var e = this.originalEvent;
4956

  
4957
		this.isPropagationStopped = returnTrue;
4958
		if ( !e ) {
4959
			return;
4960
		}
4961
		// If stopPropagation exists, run it on the original event
4962
		if ( e.stopPropagation ) {
4963
			e.stopPropagation();
4964
		}
4965

  
4966
		// Support: IE
4967
		// Set the cancelBubble property of the original event to true
4968
		e.cancelBubble = true;
4969
	},
4970
	stopImmediatePropagation: function() {
4971
		this.isImmediatePropagationStopped = returnTrue;
4972
		this.stopPropagation();
4973
	}
4974
};
4975

  
4976
// Create mouseenter/leave events using mouseover/out and event-time checks
4977
jQuery.each({
4978
	mouseenter: "mouseover",
4979
	mouseleave: "mouseout"
4980
}, function( orig, fix ) {
4981
	jQuery.event.special[ orig ] = {
4982
		delegateType: fix,
4983
		bindType: fix,
4984

  
4985
		handle: function( event ) {
4986
			var ret,
4987
				target = this,
4988
				related = event.relatedTarget,
4989
				handleObj = event.handleObj;
4990

  
4991
			// For mousenter/leave call the handler if related is outside the target.
4992
			// NB: No relatedTarget if the mouse left/entered the browser window
4993
			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
4994
				event.type = handleObj.origType;
4995
				ret = handleObj.handler.apply( this, arguments );
4996
				event.type = fix;
4997
			}
4998
			return ret;
4999
		}
5000
	};
5001
});
5002

  
5003
// IE submit delegation
5004
if ( !support.submitBubbles ) {
5005

  
5006
	jQuery.event.special.submit = {
5007
		setup: function() {
5008
			// Only need this for delegated form submit events
5009
			if ( jQuery.nodeName( this, "form" ) ) {
5010
				return false;
5011
			}
5012

  
5013
			// Lazy-add a submit handler when a descendant form may potentially be submitted
5014
			jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
5015
				// Node name check avoids a VML-related crash in IE (#9807)
5016
				var elem = e.target,
5017
					form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
5018
				if ( form && !jQuery._data( form, "submitBubbles" ) ) {
5019
					jQuery.event.add( form, "submit._submit", function( event ) {
5020
						event._submit_bubble = true;
5021
					});
5022
					jQuery._data( form, "submitBubbles", true );
5023
				}
5024
			});
5025
			// return undefined since we don't need an event listener
5026
		},
5027

  
5028
		postDispatch: function( event ) {
5029
			// If form was submitted by the user, bubble the event up the tree
5030
			if ( event._submit_bubble ) {
5031
				delete event._submit_bubble;
5032
				if ( this.parentNode && !event.isTrigger ) {
5033
					jQuery.event.simulate( "submit", this.parentNode, event, true );
5034
				}
5035
			}
5036
		},
5037

  
5038
		teardown: function() {
5039
			// Only need this for delegated form submit events
5040
			if ( jQuery.nodeName( this, "form" ) ) {
5041
				return false;
5042
			}
5043

  
5044
			// Remove delegated handlers; cleanData eventually reaps submit handlers attached above
5045
			jQuery.event.remove( this, "._submit" );
5046
		}
5047
	};
5048
}
5049

  
5050
// IE change delegation and checkbox/radio fix
5051
if ( !support.changeBubbles ) {
5052

  
5053
	jQuery.event.special.change = {
5054

  
5055
		setup: function() {
5056

  
5057
			if ( rformElems.test( this.nodeName ) ) {
5058
				// IE doesn't fire change on a check/radio until blur; trigger it on click
5059
				// after a propertychange. Eat the blur-change in special.change.handle.
5060
				// This still fires onchange a second time for check/radio after blur.
5061
				if ( this.type === "checkbox" || this.type === "radio" ) {
5062
					jQuery.event.add( this, "propertychange._change", function( event ) {
5063
						if ( event.originalEvent.propertyName === "checked" ) {
5064
							this._just_changed = true;
5065
						}
5066
					});
5067
					jQuery.event.add( this, "click._change", function( event ) {
5068
						if ( this._just_changed && !event.isTrigger ) {
5069
							this._just_changed = false;
5070
						}
5071
						// Allow triggered, simulated change events (#11500)
5072
						jQuery.event.simulate( "change", this, event, true );
5073
					});
5074
				}
5075
				return false;
5076
			}
5077
			// Delegated event; lazy-add a change handler on descendant inputs
5078
			jQuery.event.add( this, "beforeactivate._change", function( e ) {
5079
				var elem = e.target;
5080

  
5081
				if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
5082
					jQuery.event.add( elem, "change._change", function( event ) {
5083
						if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
5084
							jQuery.event.simulate( "change", this.parentNode, event, true );
5085
						}
5086
					});
5087
					jQuery._data( elem, "changeBubbles", true );
5088
				}
5089
			});
5090
		},
5091

  
5092
		handle: function( event ) {
5093
			var elem = event.target;
5094

  
5095
			// Swallow native change events from checkbox/radio, we already triggered them above
5096
			if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
5097
				return event.handleObj.handler.apply( this, arguments );
5098
			}
5099
		},
5100

  
5101
		teardown: function() {
5102
			jQuery.event.remove( this, "._change" );
5103

  
5104
			return !rformElems.test( this.nodeName );
5105
		}
5106
	};
5107
}
5108

  
5109
// Create "bubbling" focus and blur events
5110
if ( !support.focusinBubbles ) {
5111
	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
5112

  
5113
		// Attach a single capturing handler on the document while someone wants focusin/focusout
5114
		var handler = function( event ) {
5115
				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
5116
			};
5117

  
5118
		jQuery.event.special[ fix ] = {
5119
			setup: function() {
5120
				var doc = this.ownerDocument || this,
5121
					attaches = jQuery._data( doc, fix );
5122

  
5123
				if ( !attaches ) {
5124
					doc.addEventListener( orig, handler, true );
5125
				}
5126
				jQuery._data( doc, fix, ( attaches || 0 ) + 1 );
5127
			},
5128
			teardown: function() {
5129
				var doc = this.ownerDocument || this,
5130
					attaches = jQuery._data( doc, fix ) - 1;
5131

  
5132
				if ( !attaches ) {
5133
					doc.removeEventListener( orig, handler, true );
5134
					jQuery._removeData( doc, fix );
5135
				} else {
5136
					jQuery._data( doc, fix, attaches );
5137
				}
5138
			}
5139
		};
5140
	});
5141
}
5142

  
5143
jQuery.fn.extend({
5144

  
5145
	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
5146
		var type, origFn;
5147

  
5148
		// Types can be a map of types/handlers
5149
		if ( typeof types === "object" ) {
5150
			// ( types-Object, selector, data )
5151
			if ( typeof selector !== "string" ) {
5152
				// ( types-Object, data )
5153
				data = data || selector;
5154
				selector = undefined;
5155
			}
5156
			for ( type in types ) {
5157
				this.on( type, selector, data, types[ type ], one );
5158
			}
5159
			return this;
5160
		}
5161

  
5162
		if ( data == null && fn == null ) {
5163
			// ( types, fn )
5164
			fn = selector;
5165
			data = selector = undefined;
5166
		} else if ( fn == null ) {
5167
			if ( typeof selector === "string" ) {
5168
				// ( types, selector, fn )
5169
				fn = data;
5170
				data = undefined;
5171
			} else {
5172
				// ( types, data, fn )
5173
				fn = data;
5174
				data = selector;
5175
				selector = undefined;
5176
			}
5177
		}
5178
		if ( fn === false ) {
5179
			fn = returnFalse;
5180
		} else if ( !fn ) {
5181
			return this;
5182
		}
5183

  
5184
		if ( one === 1 ) {
5185
			origFn = fn;
5186
			fn = function( event ) {
5187
				// Can use an empty set, since event contains the info
5188
				jQuery().off( event );
5189
				return origFn.apply( this, arguments );
5190
			};
5191
			// Use same guid so caller can remove using origFn
5192
			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
5193
		}
5194
		return this.each( function() {
5195
			jQuery.event.add( this, types, fn, data, selector );
5196
		});
5197
	},
5198
	one: function( types, selector, data, fn ) {
5199
		return this.on( types, selector, data, fn, 1 );
5200
	},
5201
	off: function( types, selector, fn ) {
5202
		var handleObj, type;
5203
		if ( types && types.preventDefault && types.handleObj ) {
5204
			// ( event )  dispatched jQuery.Event
5205
			handleObj = types.handleObj;
5206
			jQuery( types.delegateTarget ).off(
5207
				handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
5208
				handleObj.selector,
5209
				handleObj.handler
5210
			);
5211
			return this;
5212
		}
5213
		if ( typeof types === "object" ) {
5214
			// ( types-object [, selector] )
5215
			for ( type in types ) {
5216
				this.off( type, selector, types[ type ] );
5217
			}
5218
			return this;
5219
		}
5220
		if ( selector === false || typeof selector === "function" ) {
5221
			// ( types [, fn] )
5222
			fn = selector;
5223
			selector = undefined;
5224
		}
5225
		if ( fn === false ) {
5226
			fn = returnFalse;
5227
		}
5228
		return this.each(function() {
5229
			jQuery.event.remove( this, types, fn, selector );
5230
		});
5231
	},
5232

  
5233
	trigger: function( type, data ) {
5234
		return this.each(function() {
5235
			jQuery.event.trigger( type, data, this );
5236
		});
5237
	},
5238
	triggerHandler: function( type, data ) {
5239
		var elem = this[0];
5240
		if ( elem ) {
5241
			return jQuery.event.trigger( type, data, elem, true );
5242
		}
5243
	}
5244
});
5245

  
5246

  
5247
function createSafeFragment( document ) {
5248
	var list = nodeNames.split( "|" ),
5249
		safeFrag = document.createDocumentFragment();
5250

  
5251
	if ( safeFrag.createElement ) {
5252
		while ( list.length ) {
5253
			safeFrag.createElement(
5254
				list.pop()
5255
			);
5256
		}
5257
	}
5258
	return safeFrag;
5259
}
5260

  
5261
var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
5262
		"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
5263
	rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
5264
	rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
5265
	rleadingWhitespace = /^\s+/,
5266
	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
5267
	rtagName = /<([\w:]+)/,
5268
	rtbody = /<tbody/i,
5269
	rhtml = /<|&#?\w+;/,
5270
	rnoInnerhtml = /<(?:script|style|link)/i,
5271
	// checked="checked" or checked
5272
	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
5273
	rscriptType = /^$|\/(?:java|ecma)script/i,
5274
	rscriptTypeMasked = /^true\/(.*)/,
5275
	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
5276

  
5277
	// We have to close these tags to support XHTML (#13200)
5278
	wrapMap = {
5279
		option: [ 1, "<select multiple='multiple'>", "</select>" ],
5280
		legend: [ 1, "<fieldset>", "</fieldset>" ],
5281
		area: [ 1, "<map>", "</map>" ],
5282
		param: [ 1, "<object>", "</object>" ],
5283
		thead: [ 1, "<table>", "</table>" ],
5284
		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
5285
		col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
5286
		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
5287

  
5288
		// IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
5289
		// unless wrapped in a div with non-breaking characters in front of it.
5290
		_default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>"  ]
5291
	},
5292
	safeFragment = createSafeFragment( document ),
5293
	fragmentDiv = safeFragment.appendChild( document.createElement("div") );
5294

  
5295
wrapMap.optgroup = wrapMap.option;
5296
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
5297
wrapMap.th = wrapMap.td;
5298

  
5299
function getAll( context, tag ) {
5300
	var elems, elem,
5301
		i = 0,
5302
		found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) :
5303
			typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) :
5304
			undefined;
5305

  
5306
	if ( !found ) {
5307
		for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
5308
			if ( !tag || jQuery.nodeName( elem, tag ) ) {
5309
				found.push( elem );
5310
			} else {
5311
				jQuery.merge( found, getAll( elem, tag ) );
5312
			}
5313
		}
5314
	}
5315

  
5316
	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
5317
		jQuery.merge( [ context ], found ) :
5318
		found;
5319
}
5320

  
5321
// Used in buildFragment, fixes the defaultChecked property
5322
function fixDefaultChecked( elem ) {
5323
	if ( rcheckableType.test( elem.type ) ) {
5324
		elem.defaultChecked = elem.checked;
5325
	}
5326
}
5327

  
5328
// Support: IE<8
5329
// Manipulating tables requires a tbody
5330
function manipulationTarget( elem, content ) {
5331
	return jQuery.nodeName( elem, "table" ) &&
5332
		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
5333

  
5334
		elem.getElementsByTagName("tbody")[0] ||
5335
			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
5336
		elem;
5337
}
5338

  
5339
// Replace/restore the type attribute of script elements for safe DOM manipulation
5340
function disableScript( elem ) {
5341
	elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type;
5342
	return elem;
5343
}
5344
function restoreScript( elem ) {
5345
	var match = rscriptTypeMasked.exec( elem.type );
5346
	if ( match ) {
5347
		elem.type = match[1];
5348
	} else {
5349
		elem.removeAttribute("type");
5350
	}
5351
	return elem;
5352
}
5353

  
5354
// Mark scripts as having already been evaluated
5355
function setGlobalEval( elems, refElements ) {
5356
	var elem,
5357
		i = 0;
5358
	for ( ; (elem = elems[i]) != null; i++ ) {
5359
		jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
5360
	}
5361
}
5362

  
5363
function cloneCopyEvent( src, dest ) {
5364

  
5365
	if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
5366
		return;
5367
	}
5368

  
5369
	var type, i, l,
5370
		oldData = jQuery._data( src ),
5371
		curData = jQuery._data( dest, oldData ),
5372
		events = oldData.events;
5373

  
5374
	if ( events ) {
5375
		delete curData.handle;
5376
		curData.events = {};
5377

  
5378
		for ( type in events ) {
5379
			for ( i = 0, l = events[ type ].length; i < l; i++ ) {
5380
				jQuery.event.add( dest, type, events[ type ][ i ] );
5381
			}
5382
		}
5383
	}
5384

  
5385
	// make the cloned public data object a copy from the original
5386
	if ( curData.data ) {
5387
		curData.data = jQuery.extend( {}, curData.data );
5388
	}
5389
}
5390

  
5391
function fixCloneNodeIssues( src, dest ) {
5392
	var nodeName, e, data;
5393

  
5394
	// We do not need to do anything for non-Elements
5395
	if ( dest.nodeType !== 1 ) {
5396
		return;
5397
	}
5398

  
5399
	nodeName = dest.nodeName.toLowerCase();
5400

  
5401
	// IE6-8 copies events bound via attachEvent when using cloneNode.
5402
	if ( !support.noCloneEvent && dest[ jQuery.expando ] ) {
5403
		data = jQuery._data( dest );
5404

  
5405
		for ( e in data.events ) {
5406
			jQuery.removeEvent( dest, e, data.handle );
5407
		}
5408

  
5409
		// Event data gets referenced instead of copied if the expando gets copied too
5410
		dest.removeAttribute( jQuery.expando );
5411
	}
5412

  
5413
	// IE blanks contents when cloning scripts, and tries to evaluate newly-set text
5414
	if ( nodeName === "script" && dest.text !== src.text ) {
5415
		disableScript( dest ).text = src.text;
5416
		restoreScript( dest );
5417

  
5418
	// IE6-10 improperly clones children of object elements using classid.
5419
	// IE10 throws NoModificationAllowedError if parent is null, #12132.
5420
	} else if ( nodeName === "object" ) {
5421
		if ( dest.parentNode ) {
5422
			dest.outerHTML = src.outerHTML;
5423
		}
5424

  
5425
		// This path appears unavoidable for IE9. When cloning an object
5426
		// element in IE9, the outerHTML strategy above is not sufficient.
5427
		// If the src has innerHTML and the destination does not,
5428
		// copy the src.innerHTML into the dest.innerHTML. #10324
5429
		if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
5430
			dest.innerHTML = src.innerHTML;
5431
		}
5432

  
5433
	} else if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
5434
		// IE6-8 fails to persist the checked state of a cloned checkbox
5435
		// or radio button. Worse, IE6-7 fail to give the cloned element
5436
		// a checked appearance if the defaultChecked value isn't also set
5437

  
5438
		dest.defaultChecked = dest.checked = src.checked;
5439

  
5440
		// IE6-7 get confused and end up setting the value of a cloned
5441
		// checkbox/radio button to an empty string instead of "on"
5442
		if ( dest.value !== src.value ) {
5443
			dest.value = src.value;
5444
		}
5445

  
5446
	// IE6-8 fails to return the selected option to the default selected
5447
	// state when cloning options
5448
	} else if ( nodeName === "option" ) {
5449
		dest.defaultSelected = dest.selected = src.defaultSelected;
5450

  
5451
	// IE6-8 fails to set the defaultValue to the correct value when
5452
	// cloning other types of input fields
5453
	} else if ( nodeName === "input" || nodeName === "textarea" ) {
5454
		dest.defaultValue = src.defaultValue;
5455
	}
5456
}
5457

  
5458
jQuery.extend({
5459
	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
5460
		var destElements, node, clone, i, srcElements,
5461
			inPage = jQuery.contains( elem.ownerDocument, elem );
5462

  
5463
		if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
5464
			clone = elem.cloneNode( true );
5465

  
5466
		// IE<=8 does not properly clone detached, unknown element nodes
5467
		} else {
5468
			fragmentDiv.innerHTML = elem.outerHTML;
5469
			fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
5470
		}
5471

  
5472
		if ( (!support.noCloneEvent || !support.noCloneChecked) &&
5473
				(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
5474

  
5475
			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
5476
			destElements = getAll( clone );
5477
			srcElements = getAll( elem );
5478

  
5479
			// Fix all IE cloning issues
5480
			for ( i = 0; (node = srcElements[i]) != null; ++i ) {
5481
				// Ensure that the destination node is not null; Fixes #9587
5482
				if ( destElements[i] ) {
5483
					fixCloneNodeIssues( node, destElements[i] );
5484
				}
5485
			}
5486
		}
5487

  
5488
		// Copy the events from the original to the clone
5489
		if ( dataAndEvents ) {
5490
			if ( deepDataAndEvents ) {
5491
				srcElements = srcElements || getAll( elem );
5492
				destElements = destElements || getAll( clone );
5493

  
5494
				for ( i = 0; (node = srcElements[i]) != null; i++ ) {
5495
					cloneCopyEvent( node, destElements[i] );
5496
				}
5497
			} else {
5498
				cloneCopyEvent( elem, clone );
5499
			}
5500
		}
5501

  
5502
		// Preserve script evaluation history
5503
		destElements = getAll( clone, "script" );
5504
		if ( destElements.length > 0 ) {
5505
			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
5506
		}
5507

  
5508
		destElements = srcElements = node = null;
5509

  
5510
		// Return the cloned set
5511
		return clone;
5512
	},
5513

  
5514
	buildFragment: function( elems, context, scripts, selection ) {
5515
		var j, elem, contains,
5516
			tmp, tag, tbody, wrap,
5517
			l = elems.length,
5518

  
5519
			// Ensure a safe fragment
5520
			safe = createSafeFragment( context ),
5521

  
5522
			nodes = [],
5523
			i = 0;
5524

  
5525
		for ( ; i < l; i++ ) {
5526
			elem = elems[ i ];
5527

  
5528
			if ( elem || elem === 0 ) {
5529

  
5530
				// Add nodes directly
5531
				if ( jQuery.type( elem ) === "object" ) {
5532
					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
5533

  
5534
				// Convert non-html into a text node
5535
				} else if ( !rhtml.test( elem ) ) {
5536
					nodes.push( context.createTextNode( elem ) );
5537

  
5538
				// Convert html into DOM nodes
5539
				} else {
5540
					tmp = tmp || safe.appendChild( context.createElement("div") );
5541

  
5542
					// Deserialize a standard representation
5543
					tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase();
5544
					wrap = wrapMap[ tag ] || wrapMap._default;
5545

  
5546
					tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
5547

  
5548
					// Descend through wrappers to the right content
5549
					j = wrap[0];
5550
					while ( j-- ) {
5551
						tmp = tmp.lastChild;
5552
					}
5553

  
5554
					// Manually add leading whitespace removed by IE
5555
					if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
5556
						nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
5557
					}
5558

  
5559
					// Remove IE's autoinserted <tbody> from table fragments
5560
					if ( !support.tbody ) {
5561

  
5562
						// String was a <table>, *may* have spurious <tbody>
5563
						elem = tag === "table" && !rtbody.test( elem ) ?
5564
							tmp.firstChild :
5565

  
5566
							// String was a bare <thead> or <tfoot>
5567
							wrap[1] === "<table>" && !rtbody.test( elem ) ?
5568
								tmp :
5569
								0;
5570

  
5571
						j = elem && elem.childNodes.length;
5572
						while ( j-- ) {
5573
							if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
5574
								elem.removeChild( tbody );
5575
							}
5576
						}
5577
					}
5578

  
5579
					jQuery.merge( nodes, tmp.childNodes );
5580

  
5581
					// Fix #12392 for WebKit and IE > 9
5582
					tmp.textContent = "";
5583

  
5584
					// Fix #12392 for oldIE
5585
					while ( tmp.firstChild ) {
5586
						tmp.removeChild( tmp.firstChild );
5587
					}
5588

  
5589
					// Remember the top-level container for proper cleanup
5590
					tmp = safe.lastChild;
5591
				}
5592
			}
5593
		}
5594

  
5595
		// Fix #11356: Clear elements from fragment
5596
		if ( tmp ) {
5597
			safe.removeChild( tmp );
5598
		}
5599

  
5600
		// Reset defaultChecked for any radios and checkboxes
5601
		// about to be appended to the DOM in IE 6/7 (#8060)
5602
		if ( !support.appendChecked ) {
5603
			jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
5604
		}
5605

  
5606
		i = 0;
5607
		while ( (elem = nodes[ i++ ]) ) {
5608

  
5609
			// #4087 - If origin and destination elements are the same, and this is
5610
			// that element, do not do anything
5611
			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
5612
				continue;
5613
			}
5614

  
5615
			contains = jQuery.contains( elem.ownerDocument, elem );
5616

  
5617
			// Append to fragment
5618
			tmp = getAll( safe.appendChild( elem ), "script" );
5619

  
5620
			// Preserve script evaluation history
5621
			if ( contains ) {
5622
				setGlobalEval( tmp );
5623
			}
5624

  
5625
			// Capture executables
5626
			if ( scripts ) {
5627
				j = 0;
5628
				while ( (elem = tmp[ j++ ]) ) {
5629
					if ( rscriptType.test( elem.type || "" ) ) {
5630
						scripts.push( elem );
5631
					}
5632
				}
5633
			}
5634
		}
5635

  
5636
		tmp = null;
5637

  
5638
		return safe;
5639
	},
5640

  
5641
	cleanData: function( elems, /* internal */ acceptData ) {
5642
		var elem, type, id, data,
5643
			i = 0,
5644
			internalKey = jQuery.expando,
5645
			cache = jQuery.cache,
5646
			deleteExpando = support.deleteExpando,
5647
			special = jQuery.event.special;
5648

  
5649
		for ( ; (elem = elems[i]) != null; i++ ) {
5650
			if ( acceptData || jQuery.acceptData( elem ) ) {
5651

  
5652
				id = elem[ internalKey ];
5653
				data = id && cache[ id ];
5654

  
5655
				if ( data ) {
5656
					if ( data.events ) {
5657
						for ( type in data.events ) {
5658
							if ( special[ type ] ) {
5659
								jQuery.event.remove( elem, type );
5660

  
5661
							// This is a shortcut to avoid jQuery.event.remove's overhead
5662
							} else {
5663
								jQuery.removeEvent( elem, type, data.handle );
5664
							}
5665
						}
5666
					}
5667

  
5668
					// Remove cache only if it was not already removed by jQuery.event.remove
5669
					if ( cache[ id ] ) {
5670

  
5671
						delete cache[ id ];
5672

  
5673
						// IE does not allow us to delete expando properties from nodes,
5674
						// nor does it have a removeAttribute function on Document nodes;
5675
						// we must handle all of these cases
5676
						if ( deleteExpando ) {
5677
							delete elem[ internalKey ];
5678

  
5679
						} else if ( typeof elem.removeAttribute !== strundefined ) {
5680
							elem.removeAttribute( internalKey );
5681

  
5682
						} else {
5683
							elem[ internalKey ] = null;
5684
						}
5685

  
5686
						deletedIds.push( id );
5687
					}
5688
				}
5689
			}
5690
		}
5691
	}
5692
});
5693

  
5694
jQuery.fn.extend({
5695
	text: function( value ) {
5696
		return access( this, function( value ) {
5697
			return value === undefined ?
5698
				jQuery.text( this ) :
5699
				this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
5700
		}, null, value, arguments.length );
5701
	},
5702

  
5703
	append: function() {
5704
		return this.domManip( arguments, function( elem ) {
5705
			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
5706
				var target = manipulationTarget( this, elem );
5707
				target.appendChild( elem );
5708
			}
5709
		});
5710
	},
5711

  
5712
	prepend: function() {
5713
		return this.domManip( arguments, function( elem ) {
5714
			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
5715
				var target = manipulationTarget( this, elem );
5716
				target.insertBefore( elem, target.firstChild );
5717
			}
5718
		});
5719
	},
5720

  
5721
	before: function() {
5722
		return this.domManip( arguments, function( elem ) {
5723
			if ( this.parentNode ) {
5724
				this.parentNode.insertBefore( elem, this );
5725
			}
5726
		});
5727
	},
5728

  
5729
	after: function() {
5730
		return this.domManip( arguments, function( elem ) {
5731
			if ( this.parentNode ) {
5732
				this.parentNode.insertBefore( elem, this.nextSibling );
5733
			}
5734
		});
5735
	},
5736

  
5737
	remove: function( selector, keepData /* Internal Use Only */ ) {
5738
		var elem,
5739
			elems = selector ? jQuery.filter( selector, this ) : this,
5740
			i = 0;
5741

  
5742
		for ( ; (elem = elems[i]) != null; i++ ) {
5743

  
5744
			if ( !keepData && elem.nodeType === 1 ) {
5745
				jQuery.cleanData( getAll( elem ) );
5746
			}
5747

  
5748
			if ( elem.parentNode ) {
5749
				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
5750
					setGlobalEval( getAll( elem, "script" ) );
5751
				}
5752
				elem.parentNode.removeChild( elem );
5753
			}
5754
		}
5755

  
5756
		return this;
5757
	},
5758

  
5759
	empty: function() {
5760
		var elem,
5761
			i = 0;
5762

  
5763
		for ( ; (elem = this[i]) != null; i++ ) {
5764
			// Remove element nodes and prevent memory leaks
5765
			if ( elem.nodeType === 1 ) {
5766
				jQuery.cleanData( getAll( elem, false ) );
5767
			}
5768

  
5769
			// Remove any remaining nodes
5770
			while ( elem.firstChild ) {
5771
				elem.removeChild( elem.firstChild );
5772
			}
5773

  
5774
			// If this is a select, ensure that it displays empty (#12336)
5775
			// Support: IE<9
5776
			if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
5777
				elem.options.length = 0;
5778
			}
5779
		}
5780

  
5781
		return this;
5782
	},
5783

  
5784
	clone: function( dataAndEvents, deepDataAndEvents ) {
5785
		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
5786
		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
5787

  
5788
		return this.map(function() {
5789
			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
5790
		});
5791
	},
5792

  
5793
	html: function( value ) {
5794
		return access( this, function( value ) {
5795
			var elem = this[ 0 ] || {},
5796
				i = 0,
5797
				l = this.length;
5798

  
5799
			if ( value === undefined ) {
5800
				return elem.nodeType === 1 ?
5801
					elem.innerHTML.replace( rinlinejQuery, "" ) :
5802
					undefined;
5803
			}
5804

  
5805
			// See if we can take a shortcut and just use innerHTML
5806
			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
5807
				( support.htmlSerialize || !rnoshimcache.test( value )  ) &&
5808
				( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
5809
				!wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) {
5810

  
5811
				value = value.replace( rxhtmlTag, "<$1></$2>" );
5812

  
5813
				try {
5814
					for (; i < l; i++ ) {
5815
						// Remove element nodes and prevent memory leaks
5816
						elem = this[i] || {};
5817
						if ( elem.nodeType === 1 ) {
5818
							jQuery.cleanData( getAll( elem, false ) );
5819
							elem.innerHTML = value;
5820
						}
5821
					}
5822

  
5823
					elem = 0;
5824

  
5825
				// If using innerHTML throws an exception, use the fallback method
5826
				} catch(e) {}
5827
			}
5828

  
5829
			if ( elem ) {
5830
				this.empty().append( value );
5831
			}
5832
		}, null, value, arguments.length );
5833
	},
5834

  
5835
	replaceWith: function() {
5836
		var arg = arguments[ 0 ];
5837

  
5838
		// Make the changes, replacing each context element with the new content
5839
		this.domManip( arguments, function( elem ) {
5840
			arg = this.parentNode;
5841

  
5842
			jQuery.cleanData( getAll( this ) );
5843

  
5844
			if ( arg ) {
5845
				arg.replaceChild( elem, this );
5846
			}
5847
		});
5848

  
5849
		// Force removal if there was no new content (e.g., from empty arguments)
5850
		return arg && (arg.length || arg.nodeType) ? this : this.remove();
5851
	},
5852

  
5853
	detach: function( selector ) {
5854
		return this.remove( selector, true );
5855
	},
5856

  
5857
	domManip: function( args, callback ) {
5858

  
5859
		// Flatten any nested arrays
5860
		args = concat.apply( [], args );
5861

  
5862
		var first, node, hasScripts,
5863
			scripts, doc, fragment,
5864
			i = 0,
5865
			l = this.length,
5866
			set = this,
5867
			iNoClone = l - 1,
5868
			value = args[0],
5869
			isFunction = jQuery.isFunction( value );
5870

  
5871
		// We can't cloneNode fragments that contain checked, in WebKit
5872
		if ( isFunction ||
5873
				( l > 1 && typeof value === "string" &&
5874
					!support.checkClone && rchecked.test( value ) ) ) {
5875
			return this.each(function( index ) {
5876
				var self = set.eq( index );
5877
				if ( isFunction ) {
5878
					args[0] = value.call( this, index, self.html() );
5879
				}
5880
				self.domManip( args, callback );
5881
			});
5882
		}
5883

  
5884
		if ( l ) {
5885
			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
5886
			first = fragment.firstChild;
5887

  
5888
			if ( fragment.childNodes.length === 1 ) {
5889
				fragment = first;
5890
			}
5891

  
5892
			if ( first ) {
5893
				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
5894
				hasScripts = scripts.length;
5895

  
5896
				// Use the original fragment for the last item instead of the first because it can end up
5897
				// being emptied incorrectly in certain situations (#8070).
5898
				for ( ; i < l; i++ ) {
5899
					node = fragment;
5900

  
5901
					if ( i !== iNoClone ) {
5902
						node = jQuery.clone( node, true, true );
5903

  
5904
						// Keep references to cloned scripts for later restoration
5905
						if ( hasScripts ) {
5906
							jQuery.merge( scripts, getAll( node, "script" ) );
5907
						}
5908
					}
5909

  
5910
					callback.call( this[i], node, i );
5911
				}
5912

  
5913
				if ( hasScripts ) {
5914
					doc = scripts[ scripts.length - 1 ].ownerDocument;
5915

  
5916
					// Reenable scripts
5917
					jQuery.map( scripts, restoreScript );
5918

  
5919
					// Evaluate executable scripts on first document insertion
5920
					for ( i = 0; i < hasScripts; i++ ) {
5921
						node = scripts[ i ];
5922
						if ( rscriptType.test( node.type || "" ) &&
5923
							!jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
5924

  
5925
							if ( node.src ) {
5926
								// Optional AJAX dependency, but won't run scripts if not present
5927
								if ( jQuery._evalUrl ) {
5928
									jQuery._evalUrl( node.src );
5929
								}
5930
							} else {
5931
								jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
5932
							}
5933
						}
5934
					}
5935
				}
5936

  
5937
				// Fix #11809: Avoid leaking memory
5938
				fragment = first = null;
5939
			}
5940
		}
5941

  
5942
		return this;
5943
	}
5944
});
5945

  
5946
jQuery.each({
5947
	appendTo: "append",
5948
	prependTo: "prepend",
5949
	insertBefore: "before",
5950
	insertAfter: "after",
5951
	replaceAll: "replaceWith"
5952
}, function( name, original ) {
5953
	jQuery.fn[ name ] = function( selector ) {
5954
		var elems,
5955
			i = 0,
5956
			ret = [],
5957
			insert = jQuery( selector ),
5958
			last = insert.length - 1;
5959

  
5960
		for ( ; i <= last; i++ ) {
5961
			elems = i === last ? this : this.clone(true);
5962
			jQuery( insert[i] )[ original ]( elems );
5963

  
5964
			// Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
5965
			push.apply( ret, elems.get() );
5966
		}
5967

  
5968
		return this.pushStack( ret );
5969
	};
5970
});
5971

  
5972

  
5973
var iframe,
5974
	elemdisplay = {};
5975

  
5976
/**
5977
 * Retrieve the actual display of a element
5978
 * @param {String} name nodeName of the element
5979
 * @param {Object} doc Document object
5980
 */
5981
// Called only from within defaultDisplay
5982
function actualDisplay( name, doc ) {
5983
	var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
5984

  
5985
		// getDefaultComputedStyle might be reliably used only on attached element
5986
		display = window.getDefaultComputedStyle ?
5987

  
5988
			// Use of this method is a temporary fix (more like optmization) until something better comes along,
5989
			// since it was removed from specification and supported only in FF
5990
			window.getDefaultComputedStyle( elem[ 0 ] ).display : jQuery.css( elem[ 0 ], "display" );
5991

  
5992
	// We don't have any data stored on the element,
5993
	// so use "detach" method as fast way to get rid of the element
5994
	elem.detach();
5995

  
5996
	return display;
5997
}
5998

  
5999
/**
6000
 * Try to determine the default display value of an element
6001
 * @param {String} nodeName
6002
 */
6003
function defaultDisplay( nodeName ) {
6004
	var doc = document,
6005
		display = elemdisplay[ nodeName ];
6006

  
6007
	if ( !display ) {
6008
		display = actualDisplay( nodeName, doc );
6009

  
6010
		// If the simple way fails, read from inside an iframe
6011
		if ( display === "none" || !display ) {
6012

  
6013
			// Use the already-created iframe if possible
6014
			iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
6015

  
6016
			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
6017
			doc = ( iframe[ 0 ].contentWindow || iframe[ 0 ].contentDocument ).document;
6018

  
6019
			// Support: IE
6020
			doc.write();
6021
			doc.close();
6022

  
6023
			display = actualDisplay( nodeName, doc );
6024
			iframe.detach();
6025
		}
6026

  
6027
		// Store the correct default display
6028
		elemdisplay[ nodeName ] = display;
6029
	}
6030

  
6031
	return display;
6032
}
6033

  
6034

  
6035
(function() {
6036
	var a, shrinkWrapBlocksVal,
6037
		div = document.createElement( "div" ),
6038
		divReset =
6039
			"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;" +
6040
			"display:block;padding:0;margin:0;border:0";
6041

  
6042
	// Setup
6043
	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
6044
	a = div.getElementsByTagName( "a" )[ 0 ];
6045

  
6046
	a.style.cssText = "float:left;opacity:.5";
6047

  
6048
	// Make sure that element opacity exists
6049
	// (IE uses filter instead)
6050
	// Use a regex to work around a WebKit issue. See #5145
6051
	support.opacity = /^0.5/.test( a.style.opacity );
6052

  
6053
	// Verify style float existence
6054
	// (IE uses styleFloat instead of cssFloat)
6055
	support.cssFloat = !!a.style.cssFloat;
6056

  
6057
	div.style.backgroundClip = "content-box";
6058
	div.cloneNode( true ).style.backgroundClip = "";
6059
	support.clearCloneStyle = div.style.backgroundClip === "content-box";
6060

  
6061
	// Null elements to avoid leaks in IE.
6062
	a = div = null;
6063

  
6064
	support.shrinkWrapBlocks = function() {
6065
		var body, container, div, containerStyles;
6066

  
6067
		if ( shrinkWrapBlocksVal == null ) {
6068
			body = document.getElementsByTagName( "body" )[ 0 ];
6069
			if ( !body ) {
6070
				// Test fired too early or in an unsupported environment, exit.
6071
				return;
6072
			}
6073

  
6074
			containerStyles = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px";
6075
			container = document.createElement( "div" );
6076
			div = document.createElement( "div" );
6077

  
6078
			body.appendChild( container ).appendChild( div );
6079

  
6080
			// Will be changed later if needed.
6081
			shrinkWrapBlocksVal = false;
6082

  
6083
			if ( typeof div.style.zoom !== strundefined ) {
6084
				// Support: IE6
6085
				// Check if elements with layout shrink-wrap their children
6086
				div.style.cssText = divReset + ";width:1px;padding:1px;zoom:1";
6087
				div.innerHTML = "<div></div>";
6088
				div.firstChild.style.width = "5px";
6089
				shrinkWrapBlocksVal = div.offsetWidth !== 3;
6090
			}
6091

  
6092
			body.removeChild( container );
6093

  
6094
			// Null elements to avoid leaks in IE.
6095
			body = container = div = null;
6096
		}
6097

  
6098
		return shrinkWrapBlocksVal;
6099
	};
6100

  
6101
})();
6102
var rmargin = (/^margin/);
6103

  
6104
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
6105

  
6106

  
6107

  
6108
var getStyles, curCSS,
6109
	rposition = /^(top|right|bottom|left)$/;
6110

  
6111
if ( window.getComputedStyle ) {
6112
	getStyles = function( elem ) {
6113
		return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
6114
	};
6115

  
6116
	curCSS = function( elem, name, computed ) {
6117
		var width, minWidth, maxWidth, ret,
6118
			style = elem.style;
6119

  
6120
		computed = computed || getStyles( elem );
6121

  
6122
		// getPropertyValue is only needed for .css('filter') in IE9, see #12537
6123
		ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined;
6124

  
6125
		if ( computed ) {
6126

  
6127
			if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
6128
				ret = jQuery.style( elem, name );
6129
			}
6130

  
6131
			// A tribute to the "awesome hack by Dean Edwards"
6132
			// Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
6133
			// Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
6134
			// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
6135
			if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
6136

  
6137
				// Remember the original values
6138
				width = style.width;
6139
				minWidth = style.minWidth;
6140
				maxWidth = style.maxWidth;
6141

  
6142
				// Put in the new values to get a computed value out
6143
				style.minWidth = style.maxWidth = style.width = ret;
6144
				ret = computed.width;
6145

  
6146
				// Revert the changed values
6147
				style.width = width;
6148
				style.minWidth = minWidth;
6149
				style.maxWidth = maxWidth;
6150
			}
6151
		}
6152

  
6153
		// Support: IE
6154
		// IE returns zIndex value as an integer.
6155
		return ret === undefined ?
6156
			ret :
6157
			ret + "";
6158
	};
6159
} else if ( document.documentElement.currentStyle ) {
6160
	getStyles = function( elem ) {
6161
		return elem.currentStyle;
6162
	};
6163

  
6164
	curCSS = function( elem, name, computed ) {
6165
		var left, rs, rsLeft, ret,
6166
			style = elem.style;
6167

  
6168
		computed = computed || getStyles( elem );
6169
		ret = computed ? computed[ name ] : undefined;
6170

  
6171
		// Avoid setting ret to empty string here
6172
		// so we don't default to auto
6173
		if ( ret == null && style && style[ name ] ) {
6174
			ret = style[ name ];
6175
		}
6176

  
6177
		// From the awesome hack by Dean Edwards
6178
		// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
6179

  
6180
		// If we're not dealing with a regular pixel number
6181
		// but a number that has a weird ending, we need to convert it to pixels
6182
		// but not position css attributes, as those are proportional to the parent element instead
6183
		// and we can't measure the parent instead because it might trigger a "stacking dolls" problem
6184
		if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
6185

  
6186
			// Remember the original values
6187
			left = style.left;
6188
			rs = elem.runtimeStyle;
6189
			rsLeft = rs && rs.left;
6190

  
6191
			// Put in the new values to get a computed value out
6192
			if ( rsLeft ) {
6193
				rs.left = elem.currentStyle.left;
6194
			}
6195
			style.left = name === "fontSize" ? "1em" : ret;
6196
			ret = style.pixelLeft + "px";
6197

  
6198
			// Revert the changed values
6199
			style.left = left;
6200
			if ( rsLeft ) {
6201
				rs.left = rsLeft;
6202
			}
6203
		}
6204

  
6205
		// Support: IE
6206
		// IE returns zIndex value as an integer.
6207
		return ret === undefined ?
6208
			ret :
6209
			ret + "" || "auto";
6210
	};
6211
}
6212

  
6213

  
6214

  
6215

  
6216
function addGetHookIf( conditionFn, hookFn ) {
6217
	// Define the hook, we'll check on the first run if it's really needed.
6218
	return {
6219
		get: function() {
6220
			var condition = conditionFn();
6221

  
6222
			if ( condition == null ) {
6223
				// The test was not ready at this point; screw the hook this time
6224
				// but check again when needed next time.
6225
				return;
6226
			}
6227

  
6228
			if ( condition ) {
6229
				// Hook not needed (or it's not possible to use it due to missing dependency),
6230
				// remove it.
6231
				// Since there are no other hooks for marginRight, remove the whole object.
6232
				delete this.get;
6233
				return;
6234
			}
6235

  
6236
			// Hook needed; redefine it so that the support test is not executed again.
6237

  
6238
			return (this.get = hookFn).apply( this, arguments );
6239
		}
6240
	};
6241
}
6242

  
6243

  
6244
(function() {
6245
	var a, reliableHiddenOffsetsVal, boxSizingVal, boxSizingReliableVal,
6246
		pixelPositionVal, reliableMarginRightVal,
6247
		div = document.createElement( "div" ),
6248
		containerStyles = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px",
6249
		divReset =
6250
			"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;" +
6251
			"display:block;padding:0;margin:0;border:0";
6252

  
6253
	// Setup
6254
	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
6255
	a = div.getElementsByTagName( "a" )[ 0 ];
6256

  
6257
	a.style.cssText = "float:left;opacity:.5";
6258

  
6259
	// Make sure that element opacity exists
6260
	// (IE uses filter instead)
6261
	// Use a regex to work around a WebKit issue. See #5145
6262
	support.opacity = /^0.5/.test( a.style.opacity );
6263

  
6264
	// Verify style float existence
6265
	// (IE uses styleFloat instead of cssFloat)
6266
	support.cssFloat = !!a.style.cssFloat;
6267

  
6268
	div.style.backgroundClip = "content-box";
6269
	div.cloneNode( true ).style.backgroundClip = "";
6270
	support.clearCloneStyle = div.style.backgroundClip === "content-box";
6271

  
6272
	// Null elements to avoid leaks in IE.
6273
	a = div = null;
6274

  
6275
	jQuery.extend(support, {
6276
		reliableHiddenOffsets: function() {
6277
			if ( reliableHiddenOffsetsVal != null ) {
6278
				return reliableHiddenOffsetsVal;
6279
			}
6280

  
6281
			var container, tds, isSupported,
6282
				div = document.createElement( "div" ),
6283
				body = document.getElementsByTagName( "body" )[ 0 ];
6284

  
6285
			if ( !body ) {
6286
				// Return for frameset docs that don't have a body
6287
				return;
6288
			}
6289

  
6290
			// Setup
6291
			div.setAttribute( "className", "t" );
6292
			div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
6293

  
6294
			container = document.createElement( "div" );
6295
			container.style.cssText = containerStyles;
6296

  
6297
			body.appendChild( container ).appendChild( div );
6298

  
6299
			// Support: IE8
6300
			// Check if table cells still have offsetWidth/Height when they are set
6301
			// to display:none and there are still other visible table cells in a
6302
			// table row; if so, offsetWidth/Height are not reliable for use when
6303
			// determining if an element has been hidden directly using
6304
			// display:none (it is still safe to use offsets if a parent element is
6305
			// hidden; don safety goggles and see bug #4512 for more information).
6306
			div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
6307
			tds = div.getElementsByTagName( "td" );
6308
			tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
6309
			isSupported = ( tds[ 0 ].offsetHeight === 0 );
6310

  
6311
			tds[ 0 ].style.display = "";
6312
			tds[ 1 ].style.display = "none";
6313

  
6314
			// Support: IE8
6315
			// Check if empty table cells still have offsetWidth/Height
6316
			reliableHiddenOffsetsVal = isSupported && ( tds[ 0 ].offsetHeight === 0 );
6317

  
6318
			body.removeChild( container );
6319

  
6320
			// Null elements to avoid leaks in IE.
6321
			div = body = null;
6322

  
6323
			return reliableHiddenOffsetsVal;
6324
		},
6325

  
6326
		boxSizing: function() {
6327
			if ( boxSizingVal == null ) {
6328
				computeStyleTests();
6329
			}
6330
			return boxSizingVal;
6331
		},
6332

  
6333
		boxSizingReliable: function() {
6334
			if ( boxSizingReliableVal == null ) {
6335
				computeStyleTests();
6336
			}
6337
			return boxSizingReliableVal;
6338
		},
6339

  
6340
		pixelPosition: function() {
6341
			if ( pixelPositionVal == null ) {
6342
				computeStyleTests();
6343
			}
6344
			return pixelPositionVal;
6345
		},
6346

  
6347
		reliableMarginRight: function() {
6348
			var body, container, div, marginDiv;
6349

  
6350
			// Use window.getComputedStyle because jsdom on node.js will break without it.
6351
			if ( reliableMarginRightVal == null && window.getComputedStyle ) {
6352
				body = document.getElementsByTagName( "body" )[ 0 ];
6353
				if ( !body ) {
6354
					// Test fired too early or in an unsupported environment, exit.
6355
					return;
6356
				}
6357

  
6358
				container = document.createElement( "div" );
6359
				div = document.createElement( "div" );
6360
				container.style.cssText = containerStyles;
6361

  
6362
				body.appendChild( container ).appendChild( div );
6363

  
6364
				// Check if div with explicit width and no margin-right incorrectly
6365
				// gets computed margin-right based on width of container. (#3333)
6366
				// Fails in WebKit before Feb 2011 nightlies
6367
				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
6368
				marginDiv = div.appendChild( document.createElement( "div" ) );
6369
				marginDiv.style.cssText = div.style.cssText = divReset;
6370
				marginDiv.style.marginRight = marginDiv.style.width = "0";
6371
				div.style.width = "1px";
6372

  
6373
				reliableMarginRightVal =
6374
					!parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
6375

  
6376
				body.removeChild( container );
6377
			}
6378

  
6379
			return reliableMarginRightVal;
6380
		}
6381
	});
6382

  
6383
	function computeStyleTests() {
6384
		var container, div,
6385
			body = document.getElementsByTagName( "body" )[ 0 ];
6386

  
6387
		if ( !body ) {
6388
			// Test fired too early or in an unsupported environment, exit.
6389
			return;
6390
		}
6391

  
6392
		container = document.createElement( "div" );
6393
		div = document.createElement( "div" );
6394
		container.style.cssText = containerStyles;
6395

  
6396
		body.appendChild( container ).appendChild( div );
6397

  
6398
		div.style.cssText =
6399
			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;" +
6400
				"position:absolute;display:block;padding:1px;border:1px;width:4px;" +
6401
				"margin-top:1%;top:1%";
6402

  
6403
		// Workaround failing boxSizing test due to offsetWidth returning wrong value
6404
		// with some non-1 values of body zoom, ticket #13543
6405
		jQuery.swap( body, body.style.zoom != null ? { zoom: 1 } : {}, function() {
6406
			boxSizingVal = div.offsetWidth === 4;
6407
		});
6408

  
6409
		// Will be changed later if needed.
6410
		boxSizingReliableVal = true;
6411
		pixelPositionVal = false;
6412
		reliableMarginRightVal = true;
6413

  
6414
		// Use window.getComputedStyle because jsdom on node.js will break without it.
6415
		if ( window.getComputedStyle ) {
6416
			pixelPositionVal = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
6417
			boxSizingReliableVal =
6418
				( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
6419
		}
6420

  
6421
		body.removeChild( container );
6422

  
6423
		// Null elements to avoid leaks in IE.
6424
		div = body = null;
6425
	}
6426

  
6427
})();
6428

  
6429

  
6430
// A method for quickly swapping in/out CSS properties to get correct calculations.
6431
jQuery.swap = function( elem, options, callback, args ) {
6432
	var ret, name,
6433
		old = {};
6434

  
6435
	// Remember the old values, and insert the new ones
6436
	for ( name in options ) {
6437
		old[ name ] = elem.style[ name ];
6438
		elem.style[ name ] = options[ name ];
6439
	}
6440

  
6441
	ret = callback.apply( elem, args || [] );
6442

  
6443
	// Revert the old values
6444
	for ( name in options ) {
6445
		elem.style[ name ] = old[ name ];
6446
	}
6447

  
6448
	return ret;
6449
};
6450

  
6451

  
6452
var
6453
		ralpha = /alpha\([^)]*\)/i,
6454
	ropacity = /opacity\s*=\s*([^)]*)/,
6455

  
6456
	// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
6457
	// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
6458
	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
6459
	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
6460
	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
6461

  
6462
	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
6463
	cssNormalTransform = {
6464
		letterSpacing: 0,
6465
		fontWeight: 400
6466
	},
6467

  
6468
	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
6469

  
6470

  
6471
// return a css property mapped to a potentially vendor prefixed property
6472
function vendorPropName( style, name ) {
6473

  
6474
	// shortcut for names that are not vendor prefixed
6475
	if ( name in style ) {
6476
		return name;
6477
	}
6478

  
6479
	// check for vendor prefixed names
6480
	var capName = name.charAt(0).toUpperCase() + name.slice(1),
6481
		origName = name,
6482
		i = cssPrefixes.length;
6483

  
6484
	while ( i-- ) {
6485
		name = cssPrefixes[ i ] + capName;
6486
		if ( name in style ) {
6487
			return name;
6488
		}
6489
	}
6490

  
6491
	return origName;
6492
}
6493

  
6494
function showHide( elements, show ) {
6495
	var display, elem, hidden,
6496
		values = [],
6497
		index = 0,
6498
		length = elements.length;
6499

  
6500
	for ( ; index < length; index++ ) {
6501
		elem = elements[ index ];
6502
		if ( !elem.style ) {
6503
			continue;
6504
		}
6505

  
6506
		values[ index ] = jQuery._data( elem, "olddisplay" );
6507
		display = elem.style.display;
6508
		if ( show ) {
6509
			// Reset the inline display of this element to learn if it is
6510
			// being hidden by cascaded rules or not
6511
			if ( !values[ index ] && display === "none" ) {
6512
				elem.style.display = "";
6513
			}
6514

  
6515
			// Set elements which have been overridden with display: none
6516
			// in a stylesheet to whatever the default browser style is
6517
			// for such an element
6518
			if ( elem.style.display === "" && isHidden( elem ) ) {
6519
				values[ index ] = jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
6520
			}
6521
		} else {
6522

  
6523
			if ( !values[ index ] ) {
6524
				hidden = isHidden( elem );
6525

  
6526
				if ( display && display !== "none" || !hidden ) {
6527
					jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
6528
				}
6529
			}
6530
		}
6531
	}
6532

  
6533
	// Set the display of most of the elements in a second loop
6534
	// to avoid the constant reflow
6535
	for ( index = 0; index < length; index++ ) {
6536
		elem = elements[ index ];
6537
		if ( !elem.style ) {
6538
			continue;
6539
		}
6540
		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
6541
			elem.style.display = show ? values[ index ] || "" : "none";
6542
		}
6543
	}
6544

  
6545
	return elements;
6546
}
6547

  
6548
function setPositiveNumber( elem, value, subtract ) {
6549
	var matches = rnumsplit.exec( value );
6550
	return matches ?
6551
		// Guard against undefined "subtract", e.g., when used as in cssHooks
6552
		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
6553
		value;
6554
}
6555

  
6556
function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
6557
	var i = extra === ( isBorderBox ? "border" : "content" ) ?
6558
		// If we already have the right measurement, avoid augmentation
6559
		4 :
6560
		// Otherwise initialize for horizontal or vertical properties
6561
		name === "width" ? 1 : 0,
6562

  
6563
		val = 0;
6564

  
6565
	for ( ; i < 4; i += 2 ) {
6566
		// both box models exclude margin, so add it if we want it
6567
		if ( extra === "margin" ) {
6568
			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
6569
		}
6570

  
6571
		if ( isBorderBox ) {
6572
			// border-box includes padding, so remove it if we want content
6573
			if ( extra === "content" ) {
6574
				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6575
			}
6576

  
6577
			// at this point, extra isn't border nor margin, so remove border
6578
			if ( extra !== "margin" ) {
6579
				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6580
			}
6581
		} else {
6582
			// at this point, extra isn't content, so add padding
6583
			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
6584

  
6585
			// at this point, extra isn't content nor padding, so add border
6586
			if ( extra !== "padding" ) {
6587
				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
6588
			}
6589
		}
6590
	}
6591

  
6592
	return val;
6593
}
6594

  
6595
function getWidthOrHeight( elem, name, extra ) {
6596

  
6597
	// Start with offset property, which is equivalent to the border-box value
6598
	var valueIsBorderBox = true,
6599
		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
6600
		styles = getStyles( elem ),
6601
		isBorderBox = support.boxSizing() && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
6602

  
6603
	// some non-html elements return undefined for offsetWidth, so check for null/undefined
6604
	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
6605
	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
6606
	if ( val <= 0 || val == null ) {
6607
		// Fall back to computed then uncomputed css if necessary
6608
		val = curCSS( elem, name, styles );
6609
		if ( val < 0 || val == null ) {
6610
			val = elem.style[ name ];
6611
		}
6612

  
6613
		// Computed unit is not pixels. Stop here and return.
6614
		if ( rnumnonpx.test(val) ) {
6615
			return val;
6616
		}
6617

  
6618
		// we need the check for style in case a browser which returns unreliable values
6619
		// for getComputedStyle silently falls back to the reliable elem.style
6620
		valueIsBorderBox = isBorderBox && ( support.boxSizingReliable() || val === elem.style[ name ] );
6621

  
6622
		// Normalize "", auto, and prepare for extra
6623
		val = parseFloat( val ) || 0;
6624
	}
6625

  
6626
	// use the active box-sizing model to add/subtract irrelevant styles
6627
	return ( val +
6628
		augmentWidthOrHeight(
6629
			elem,
6630
			name,
6631
			extra || ( isBorderBox ? "border" : "content" ),
6632
			valueIsBorderBox,
6633
			styles
6634
		)
6635
	) + "px";
6636
}
6637

  
6638
jQuery.extend({
6639
	// Add in style property hooks for overriding the default
6640
	// behavior of getting and setting a style property
6641
	cssHooks: {
6642
		opacity: {
6643
			get: function( elem, computed ) {
6644
				if ( computed ) {
6645
					// We should always get a number back from opacity
6646
					var ret = curCSS( elem, "opacity" );
6647
					return ret === "" ? "1" : ret;
6648
				}
6649
			}
6650
		}
6651
	},
6652

  
6653
	// Don't automatically add "px" to these possibly-unitless properties
6654
	cssNumber: {
6655
		"columnCount": true,
6656
		"fillOpacity": true,
6657
		"fontWeight": true,
6658
		"lineHeight": true,
6659
		"opacity": true,
6660
		"order": true,
6661
		"orphans": true,
6662
		"widows": true,
6663
		"zIndex": true,
6664
		"zoom": true
6665
	},
6666

  
6667
	// Add in properties whose names you wish to fix before
6668
	// setting or getting the value
6669
	cssProps: {
6670
		// normalize float css property
6671
		"float": support.cssFloat ? "cssFloat" : "styleFloat"
6672
	},
6673

  
6674
	// Get and set the style property on a DOM Node
6675
	style: function( elem, name, value, extra ) {
6676
		// Don't set styles on text and comment nodes
6677
		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
6678
			return;
6679
		}
6680

  
6681
		// Make sure that we're working with the right name
6682
		var ret, type, hooks,
6683
			origName = jQuery.camelCase( name ),
6684
			style = elem.style;
6685

  
6686
		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
6687

  
6688
		// gets hook for the prefixed version
6689
		// followed by the unprefixed version
6690
		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6691

  
6692
		// Check if we're setting a value
6693
		if ( value !== undefined ) {
6694
			type = typeof value;
6695

  
6696
			// convert relative number strings (+= or -=) to relative numbers. #7345
6697
			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
6698
				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
6699
				// Fixes bug #9237
6700
				type = "number";
6701
			}
6702

  
6703
			// Make sure that null and NaN values aren't set. See: #7116
6704
			if ( value == null || value !== value ) {
6705
				return;
6706
			}
6707

  
6708
			// If a number was passed in, add 'px' to the (except for certain CSS properties)
6709
			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
6710
				value += "px";
6711
			}
6712

  
6713
			// Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
6714
			// but it would mean to define eight (for every problematic property) identical functions
6715
			if ( !support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
6716
				style[ name ] = "inherit";
6717
			}
6718

  
6719
			// If a hook was provided, use that value, otherwise just set the specified value
6720
			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
6721

  
6722
				// Support: IE
6723
				// Swallow errors from 'invalid' CSS values (#5509)
6724
				try {
6725
					// Support: Chrome, Safari
6726
					// Setting style to blank string required to delete "style: x !important;"
6727
					style[ name ] = "";
6728
					style[ name ] = value;
6729
				} catch(e) {}
6730
			}
6731

  
6732
		} else {
6733
			// If a hook was provided get the non-computed value from there
6734
			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
6735
				return ret;
6736
			}
6737

  
6738
			// Otherwise just get the value from the style object
6739
			return style[ name ];
6740
		}
6741
	},
6742

  
6743
	css: function( elem, name, extra, styles ) {
6744
		var num, val, hooks,
6745
			origName = jQuery.camelCase( name );
6746

  
6747
		// Make sure that we're working with the right name
6748
		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
6749

  
6750
		// gets hook for the prefixed version
6751
		// followed by the unprefixed version
6752
		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
6753

  
6754
		// If a hook was provided get the computed value from there
6755
		if ( hooks && "get" in hooks ) {
6756
			val = hooks.get( elem, true, extra );
6757
		}
6758

  
6759
		// Otherwise, if a way to get the computed value exists, use that
6760
		if ( val === undefined ) {
6761
			val = curCSS( elem, name, styles );
6762
		}
6763

  
6764
		//convert "normal" to computed value
6765
		if ( val === "normal" && name in cssNormalTransform ) {
6766
			val = cssNormalTransform[ name ];
6767
		}
6768

  
6769
		// Return, converting to number if forced or a qualifier was provided and val looks numeric
6770
		if ( extra === "" || extra ) {
6771
			num = parseFloat( val );
6772
			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
6773
		}
6774
		return val;
6775
	}
6776
});
6777

  
6778
jQuery.each([ "height", "width" ], function( i, name ) {
6779
	jQuery.cssHooks[ name ] = {
6780
		get: function( elem, computed, extra ) {
6781
			if ( computed ) {
6782
				// certain elements can have dimension info if we invisibly show them
6783
				// however, it must have a current display style that would benefit from this
6784
				return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
6785
					jQuery.swap( elem, cssShow, function() {
6786
						return getWidthOrHeight( elem, name, extra );
6787
					}) :
6788
					getWidthOrHeight( elem, name, extra );
6789
			}
6790
		},
6791

  
6792
		set: function( elem, value, extra ) {
6793
			var styles = extra && getStyles( elem );
6794
			return setPositiveNumber( elem, value, extra ?
6795
				augmentWidthOrHeight(
6796
					elem,
6797
					name,
6798
					extra,
6799
					support.boxSizing() && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
6800
					styles
6801
				) : 0
6802
			);
6803
		}
6804
	};
6805
});
6806

  
6807
if ( !support.opacity ) {
6808
	jQuery.cssHooks.opacity = {
6809
		get: function( elem, computed ) {
6810
			// IE uses filters for opacity
6811
			return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
6812
				( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
6813
				computed ? "1" : "";
6814
		},
6815

  
6816
		set: function( elem, value ) {
6817
			var style = elem.style,
6818
				currentStyle = elem.currentStyle,
6819
				opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
6820
				filter = currentStyle && currentStyle.filter || style.filter || "";
6821

  
6822
			// IE has trouble with opacity if it does not have layout
6823
			// Force it by setting the zoom level
6824
			style.zoom = 1;
6825

  
6826
			// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
6827
			// if value === "", then remove inline opacity #12685
6828
			if ( ( value >= 1 || value === "" ) &&
6829
					jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
6830
					style.removeAttribute ) {
6831

  
6832
				// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
6833
				// if "filter:" is present at all, clearType is disabled, we want to avoid this
6834
				// style.removeAttribute is IE Only, but so apparently is this code path...
6835
				style.removeAttribute( "filter" );
6836

  
6837
				// if there is no filter style applied in a css rule or unset inline opacity, we are done
6838
				if ( value === "" || currentStyle && !currentStyle.filter ) {
6839
					return;
6840
				}
6841
			}
6842

  
6843
			// otherwise, set new filter values
6844
			style.filter = ralpha.test( filter ) ?
6845
				filter.replace( ralpha, opacity ) :
6846
				filter + " " + opacity;
6847
		}
6848
	};
6849
}
6850

  
6851
jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
6852
	function( elem, computed ) {
6853
		if ( computed ) {
6854
			// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
6855
			// Work around by temporarily setting element display to inline-block
6856
			return jQuery.swap( elem, { "display": "inline-block" },
6857
				curCSS, [ elem, "marginRight" ] );
6858
		}
6859
	}
6860
);
6861

  
6862
// These hooks are used by animate to expand properties
6863
jQuery.each({
6864
	margin: "",
6865
	padding: "",
6866
	border: "Width"
6867
}, function( prefix, suffix ) {
6868
	jQuery.cssHooks[ prefix + suffix ] = {
6869
		expand: function( value ) {
6870
			var i = 0,
6871
				expanded = {},
6872

  
6873
				// assumes a single number if not a string
6874
				parts = typeof value === "string" ? value.split(" ") : [ value ];
6875

  
6876
			for ( ; i < 4; i++ ) {
6877
				expanded[ prefix + cssExpand[ i ] + suffix ] =
6878
					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
6879
			}
6880

  
6881
			return expanded;
6882
		}
6883
	};
6884

  
6885
	if ( !rmargin.test( prefix ) ) {
6886
		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
6887
	}
6888
});
6889

  
6890
jQuery.fn.extend({
6891
	css: function( name, value ) {
6892
		return access( this, function( elem, name, value ) {
6893
			var styles, len,
6894
				map = {},
6895
				i = 0;
6896

  
6897
			if ( jQuery.isArray( name ) ) {
6898
				styles = getStyles( elem );
6899
				len = name.length;
6900

  
6901
				for ( ; i < len; i++ ) {
6902
					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
6903
				}
6904

  
6905
				return map;
6906
			}
6907

  
6908
			return value !== undefined ?
6909
				jQuery.style( elem, name, value ) :
6910
				jQuery.css( elem, name );
6911
		}, name, value, arguments.length > 1 );
6912
	},
6913
	show: function() {
6914
		return showHide( this, true );
6915
	},
6916
	hide: function() {
6917
		return showHide( this );
6918
	},
6919
	toggle: function( state ) {
6920
		if ( typeof state === "boolean" ) {
6921
			return state ? this.show() : this.hide();
6922
		}
6923

  
6924
		return this.each(function() {
6925
			if ( isHidden( this ) ) {
6926
				jQuery( this ).show();
6927
			} else {
6928
				jQuery( this ).hide();
6929
			}
6930
		});
6931
	}
6932
});
6933

  
6934

  
6935
function Tween( elem, options, prop, end, easing ) {
6936
	return new Tween.prototype.init( elem, options, prop, end, easing );
6937
}
6938
jQuery.Tween = Tween;
6939

  
6940
Tween.prototype = {
6941
	constructor: Tween,
6942
	init: function( elem, options, prop, end, easing, unit ) {
6943
		this.elem = elem;
6944
		this.prop = prop;
6945
		this.easing = easing || "swing";
6946
		this.options = options;
6947
		this.start = this.now = this.cur();
6948
		this.end = end;
6949
		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
6950
	},
6951
	cur: function() {
6952
		var hooks = Tween.propHooks[ this.prop ];
6953

  
6954
		return hooks && hooks.get ?
6955
			hooks.get( this ) :
6956
			Tween.propHooks._default.get( this );
6957
	},
6958
	run: function( percent ) {
6959
		var eased,
6960
			hooks = Tween.propHooks[ this.prop ];
6961

  
6962
		if ( this.options.duration ) {
6963
			this.pos = eased = jQuery.easing[ this.easing ](
6964
				percent, this.options.duration * percent, 0, 1, this.options.duration
6965
			);
6966
		} else {
6967
			this.pos = eased = percent;
6968
		}
6969
		this.now = ( this.end - this.start ) * eased + this.start;
6970

  
6971
		if ( this.options.step ) {
6972
			this.options.step.call( this.elem, this.now, this );
6973
		}
6974

  
6975
		if ( hooks && hooks.set ) {
6976
			hooks.set( this );
6977
		} else {
6978
			Tween.propHooks._default.set( this );
6979
		}
6980
		return this;
6981
	}
6982
};
6983

  
6984
Tween.prototype.init.prototype = Tween.prototype;
6985

  
6986
Tween.propHooks = {
6987
	_default: {
6988
		get: function( tween ) {
6989
			var result;
6990

  
6991
			if ( tween.elem[ tween.prop ] != null &&
6992
				(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
6993
				return tween.elem[ tween.prop ];
6994
			}
6995

  
6996
			// passing an empty string as a 3rd parameter to .css will automatically
6997
			// attempt a parseFloat and fallback to a string if the parse fails
6998
			// so, simple values such as "10px" are parsed to Float.
6999
			// complex values such as "rotate(1rad)" are returned as is.
7000
			result = jQuery.css( tween.elem, tween.prop, "" );
7001
			// Empty strings, null, undefined and "auto" are converted to 0.
7002
			return !result || result === "auto" ? 0 : result;
7003
		},
7004
		set: function( tween ) {
7005
			// use step hook for back compat - use cssHook if its there - use .style if its
7006
			// available and use plain properties where available
7007
			if ( jQuery.fx.step[ tween.prop ] ) {
7008
				jQuery.fx.step[ tween.prop ]( tween );
7009
			} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
7010
				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
7011
			} else {
7012
				tween.elem[ tween.prop ] = tween.now;
7013
			}
7014
		}
7015
	}
7016
};
7017

  
7018
// Support: IE <=9
7019
// Panic based approach to setting things on disconnected nodes
7020

  
7021
Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
7022
	set: function( tween ) {
7023
		if ( tween.elem.nodeType && tween.elem.parentNode ) {
7024
			tween.elem[ tween.prop ] = tween.now;
7025
		}
7026
	}
7027
};
7028

  
7029
jQuery.easing = {
7030
	linear: function( p ) {
7031
		return p;
7032
	},
7033
	swing: function( p ) {
7034
		return 0.5 - Math.cos( p * Math.PI ) / 2;
7035
	}
7036
};
7037

  
7038
jQuery.fx = Tween.prototype.init;
7039

  
7040
// Back Compat <1.8 extension point
7041
jQuery.fx.step = {};
7042

  
7043

  
7044

  
7045

  
7046
var
7047
	fxNow, timerId,
7048
	rfxtypes = /^(?:toggle|show|hide)$/,
7049
	rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
7050
	rrun = /queueHooks$/,
7051
	animationPrefilters = [ defaultPrefilter ],
7052
	tweeners = {
7053
		"*": [ function( prop, value ) {
7054
			var tween = this.createTween( prop, value ),
7055
				target = tween.cur(),
7056
				parts = rfxnum.exec( value ),
7057
				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
7058

  
7059
				// Starting value computation is required for potential unit mismatches
7060
				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
7061
					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
7062
				scale = 1,
7063
				maxIterations = 20;
7064

  
7065
			if ( start && start[ 3 ] !== unit ) {
7066
				// Trust units reported by jQuery.css
7067
				unit = unit || start[ 3 ];
7068

  
7069
				// Make sure we update the tween properties later on
7070
				parts = parts || [];
7071

  
7072
				// Iteratively approximate from a nonzero starting point
7073
				start = +target || 1;
7074

  
7075
				do {
7076
					// If previous iteration zeroed out, double until we get *something*
7077
					// Use a string for doubling factor so we don't accidentally see scale as unchanged below
7078
					scale = scale || ".5";
7079

  
7080
					// Adjust and apply
7081
					start = start / scale;
7082
					jQuery.style( tween.elem, prop, start + unit );
7083

  
7084
				// Update scale, tolerating zero or NaN from tween.cur()
7085
				// And breaking the loop if scale is unchanged or perfect, or if we've just had enough
7086
				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
7087
			}
7088

  
7089
			// Update tween properties
7090
			if ( parts ) {
7091
				start = tween.start = +start || +target || 0;
7092
				tween.unit = unit;
7093
				// If a +=/-= token was provided, we're doing a relative animation
7094
				tween.end = parts[ 1 ] ?
7095
					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
7096
					+parts[ 2 ];
7097
			}
7098

  
7099
			return tween;
7100
		} ]
7101
	};
7102

  
7103
// Animations created synchronously will run synchronously
7104
function createFxNow() {
7105
	setTimeout(function() {
7106
		fxNow = undefined;
7107
	});
7108
	return ( fxNow = jQuery.now() );
7109
}
7110

  
7111
// Generate parameters to create a standard animation
7112
function genFx( type, includeWidth ) {
7113
	var which,
7114
		attrs = { height: type },
7115
		i = 0;
7116

  
7117
	// if we include width, step value is 1 to do all cssExpand values,
7118
	// if we don't include width, step value is 2 to skip over Left and Right
7119
	includeWidth = includeWidth ? 1 : 0;
7120
	for ( ; i < 4 ; i += 2 - includeWidth ) {
7121
		which = cssExpand[ i ];
7122
		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
7123
	}
7124

  
7125
	if ( includeWidth ) {
7126
		attrs.opacity = attrs.width = type;
7127
	}
7128

  
7129
	return attrs;
7130
}
7131

  
7132
function createTween( value, prop, animation ) {
7133
	var tween,
7134
		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
7135
		index = 0,
7136
		length = collection.length;
7137
	for ( ; index < length; index++ ) {
7138
		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
7139

  
7140
			// we're done with this property
7141
			return tween;
7142
		}
7143
	}
7144
}
7145

  
7146
function defaultPrefilter( elem, props, opts ) {
7147
	/* jshint validthis: true */
7148
	var prop, value, toggle, tween, hooks, oldfire, display, dDisplay,
7149
		anim = this,
7150
		orig = {},
7151
		style = elem.style,
7152
		hidden = elem.nodeType && isHidden( elem ),
7153
		dataShow = jQuery._data( elem, "fxshow" );
7154

  
7155
	// handle queue: false promises
7156
	if ( !opts.queue ) {
7157
		hooks = jQuery._queueHooks( elem, "fx" );
7158
		if ( hooks.unqueued == null ) {
7159
			hooks.unqueued = 0;
7160
			oldfire = hooks.empty.fire;
7161
			hooks.empty.fire = function() {
7162
				if ( !hooks.unqueued ) {
7163
					oldfire();
7164
				}
7165
			};
7166
		}
7167
		hooks.unqueued++;
7168

  
7169
		anim.always(function() {
7170
			// doing this makes sure that the complete handler will be called
7171
			// before this completes
7172
			anim.always(function() {
7173
				hooks.unqueued--;
7174
				if ( !jQuery.queue( elem, "fx" ).length ) {
7175
					hooks.empty.fire();
7176
				}
7177
			});
7178
		});
7179
	}
7180

  
7181
	// height/width overflow pass
7182
	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
7183
		// Make sure that nothing sneaks out
7184
		// Record all 3 overflow attributes because IE does not
7185
		// change the overflow attribute when overflowX and
7186
		// overflowY are set to the same value
7187
		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
7188

  
7189
		// Set display property to inline-block for height/width
7190
		// animations on inline elements that are having width/height animated
7191
		display = jQuery.css( elem, "display" );
7192
		dDisplay = defaultDisplay( elem.nodeName );
7193
		if ( display === "none" ) {
7194
			display = dDisplay;
7195
		}
7196
		if ( display === "inline" &&
7197
				jQuery.css( elem, "float" ) === "none" ) {
7198

  
7199
			// inline-level elements accept inline-block;
7200
			// block-level elements need to be inline with layout
7201
			if ( !support.inlineBlockNeedsLayout || dDisplay === "inline" ) {
7202
				style.display = "inline-block";
7203
			} else {
7204
				style.zoom = 1;
7205
			}
7206
		}
7207
	}
7208

  
7209
	if ( opts.overflow ) {
7210
		style.overflow = "hidden";
7211
		if ( !support.shrinkWrapBlocks() ) {
7212
			anim.always(function() {
7213
				style.overflow = opts.overflow[ 0 ];
7214
				style.overflowX = opts.overflow[ 1 ];
7215
				style.overflowY = opts.overflow[ 2 ];
7216
			});
7217
		}
7218
	}
7219

  
7220
	// show/hide pass
7221
	for ( prop in props ) {
7222
		value = props[ prop ];
7223
		if ( rfxtypes.exec( value ) ) {
7224
			delete props[ prop ];
7225
			toggle = toggle || value === "toggle";
7226
			if ( value === ( hidden ? "hide" : "show" ) ) {
7227

  
7228
				// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
7229
				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
7230
					hidden = true;
7231
				} else {
7232
					continue;
7233
				}
7234
			}
7235
			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
7236
		}
7237
	}
7238

  
7239
	if ( !jQuery.isEmptyObject( orig ) ) {
7240
		if ( dataShow ) {
7241
			if ( "hidden" in dataShow ) {
7242
				hidden = dataShow.hidden;
7243
			}
7244
		} else {
7245
			dataShow = jQuery._data( elem, "fxshow", {} );
7246
		}
7247

  
7248
		// store state if its toggle - enables .stop().toggle() to "reverse"
7249
		if ( toggle ) {
7250
			dataShow.hidden = !hidden;
7251
		}
7252
		if ( hidden ) {
7253
			jQuery( elem ).show();
7254
		} else {
7255
			anim.done(function() {
7256
				jQuery( elem ).hide();
7257
			});
7258
		}
7259
		anim.done(function() {
7260
			var prop;
7261
			jQuery._removeData( elem, "fxshow" );
7262
			for ( prop in orig ) {
7263
				jQuery.style( elem, prop, orig[ prop ] );
7264
			}
7265
		});
7266
		for ( prop in orig ) {
7267
			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
7268

  
7269
			if ( !( prop in dataShow ) ) {
7270
				dataShow[ prop ] = tween.start;
7271
				if ( hidden ) {
7272
					tween.end = tween.start;
7273
					tween.start = prop === "width" || prop === "height" ? 1 : 0;
7274
				}
7275
			}
7276
		}
7277
	}
7278
}
7279

  
7280
function propFilter( props, specialEasing ) {
7281
	var index, name, easing, value, hooks;
7282

  
7283
	// camelCase, specialEasing and expand cssHook pass
7284
	for ( index in props ) {
7285
		name = jQuery.camelCase( index );
7286
		easing = specialEasing[ name ];
7287
		value = props[ index ];
7288
		if ( jQuery.isArray( value ) ) {
7289
			easing = value[ 1 ];
7290
			value = props[ index ] = value[ 0 ];
7291
		}
7292

  
7293
		if ( index !== name ) {
7294
			props[ name ] = value;
7295
			delete props[ index ];
7296
		}
7297

  
7298
		hooks = jQuery.cssHooks[ name ];
7299
		if ( hooks && "expand" in hooks ) {
7300
			value = hooks.expand( value );
7301
			delete props[ name ];
7302

  
7303
			// not quite $.extend, this wont overwrite keys already present.
7304
			// also - reusing 'index' from above because we have the correct "name"
7305
			for ( index in value ) {
7306
				if ( !( index in props ) ) {
7307
					props[ index ] = value[ index ];
7308
					specialEasing[ index ] = easing;
7309
				}
7310
			}
7311
		} else {
7312
			specialEasing[ name ] = easing;
7313
		}
7314
	}
7315
}
7316

  
7317
function Animation( elem, properties, options ) {
7318
	var result,
7319
		stopped,
7320
		index = 0,
7321
		length = animationPrefilters.length,
7322
		deferred = jQuery.Deferred().always( function() {
7323
			// don't match elem in the :animated selector
7324
			delete tick.elem;
7325
		}),
7326
		tick = function() {
7327
			if ( stopped ) {
7328
				return false;
7329
			}
7330
			var currentTime = fxNow || createFxNow(),
7331
				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
7332
				// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
7333
				temp = remaining / animation.duration || 0,
7334
				percent = 1 - temp,
7335
				index = 0,
7336
				length = animation.tweens.length;
7337

  
7338
			for ( ; index < length ; index++ ) {
7339
				animation.tweens[ index ].run( percent );
7340
			}
7341

  
7342
			deferred.notifyWith( elem, [ animation, percent, remaining ]);
7343

  
7344
			if ( percent < 1 && length ) {
7345
				return remaining;
7346
			} else {
7347
				deferred.resolveWith( elem, [ animation ] );
7348
				return false;
7349
			}
7350
		},
7351
		animation = deferred.promise({
7352
			elem: elem,
7353
			props: jQuery.extend( {}, properties ),
7354
			opts: jQuery.extend( true, { specialEasing: {} }, options ),
7355
			originalProperties: properties,
7356
			originalOptions: options,
7357
			startTime: fxNow || createFxNow(),
7358
			duration: options.duration,
7359
			tweens: [],
7360
			createTween: function( prop, end ) {
7361
				var tween = jQuery.Tween( elem, animation.opts, prop, end,
7362
						animation.opts.specialEasing[ prop ] || animation.opts.easing );
7363
				animation.tweens.push( tween );
7364
				return tween;
7365
			},
7366
			stop: function( gotoEnd ) {
7367
				var index = 0,
7368
					// if we are going to the end, we want to run all the tweens
7369
					// otherwise we skip this part
7370
					length = gotoEnd ? animation.tweens.length : 0;
7371
				if ( stopped ) {
7372
					return this;
7373
				}
7374
				stopped = true;
7375
				for ( ; index < length ; index++ ) {
7376
					animation.tweens[ index ].run( 1 );
7377
				}
7378

  
7379
				// resolve when we played the last frame
7380
				// otherwise, reject
7381
				if ( gotoEnd ) {
7382
					deferred.resolveWith( elem, [ animation, gotoEnd ] );
7383
				} else {
7384
					deferred.rejectWith( elem, [ animation, gotoEnd ] );
7385
				}
7386
				return this;
7387
			}
7388
		}),
7389
		props = animation.props;
7390

  
7391
	propFilter( props, animation.opts.specialEasing );
7392

  
7393
	for ( ; index < length ; index++ ) {
7394
		result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
7395
		if ( result ) {
7396
			return result;
7397
		}
7398
	}
7399

  
7400
	jQuery.map( props, createTween, animation );
7401

  
7402
	if ( jQuery.isFunction( animation.opts.start ) ) {
7403
		animation.opts.start.call( elem, animation );
7404
	}
7405

  
7406
	jQuery.fx.timer(
7407
		jQuery.extend( tick, {
7408
			elem: elem,
7409
			anim: animation,
7410
			queue: animation.opts.queue
7411
		})
7412
	);
7413

  
7414
	// attach callbacks from options
7415
	return animation.progress( animation.opts.progress )
7416
		.done( animation.opts.done, animation.opts.complete )
7417
		.fail( animation.opts.fail )
7418
		.always( animation.opts.always );
7419
}
7420

  
7421
jQuery.Animation = jQuery.extend( Animation, {
7422
	tweener: function( props, callback ) {
7423
		if ( jQuery.isFunction( props ) ) {
7424
			callback = props;
7425
			props = [ "*" ];
7426
		} else {
7427
			props = props.split(" ");
7428
		}
7429

  
7430
		var prop,
7431
			index = 0,
7432
			length = props.length;
7433

  
7434
		for ( ; index < length ; index++ ) {
7435
			prop = props[ index ];
7436
			tweeners[ prop ] = tweeners[ prop ] || [];
7437
			tweeners[ prop ].unshift( callback );
7438
		}
7439
	},
7440

  
7441
	prefilter: function( callback, prepend ) {
7442
		if ( prepend ) {
7443
			animationPrefilters.unshift( callback );
7444
		} else {
7445
			animationPrefilters.push( callback );
7446
		}
7447
	}
7448
});
7449

  
7450
jQuery.speed = function( speed, easing, fn ) {
7451
	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
7452
		complete: fn || !fn && easing ||
7453
			jQuery.isFunction( speed ) && speed,
7454
		duration: speed,
7455
		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
7456
	};
7457

  
7458
	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
7459
		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
7460

  
7461
	// normalize opt.queue - true/undefined/null -> "fx"
7462
	if ( opt.queue == null || opt.queue === true ) {
7463
		opt.queue = "fx";
7464
	}
7465

  
7466
	// Queueing
7467
	opt.old = opt.complete;
7468

  
7469
	opt.complete = function() {
7470
		if ( jQuery.isFunction( opt.old ) ) {
7471
			opt.old.call( this );
7472
		}
7473

  
7474
		if ( opt.queue ) {
7475
			jQuery.dequeue( this, opt.queue );
7476
		}
7477
	};
7478

  
7479
	return opt;
7480
};
7481

  
7482
jQuery.fn.extend({
7483
	fadeTo: function( speed, to, easing, callback ) {
7484

  
7485
		// show any hidden elements after setting opacity to 0
7486
		return this.filter( isHidden ).css( "opacity", 0 ).show()
7487

  
7488
			// animate to the value specified
7489
			.end().animate({ opacity: to }, speed, easing, callback );
7490
	},
7491
	animate: function( prop, speed, easing, callback ) {
7492
		var empty = jQuery.isEmptyObject( prop ),
7493
			optall = jQuery.speed( speed, easing, callback ),
7494
			doAnimation = function() {
7495
				// Operate on a copy of prop so per-property easing won't be lost
7496
				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
7497

  
7498
				// Empty animations, or finishing resolves immediately
7499
				if ( empty || jQuery._data( this, "finish" ) ) {
7500
					anim.stop( true );
7501
				}
7502
			};
7503
			doAnimation.finish = doAnimation;
7504

  
7505
		return empty || optall.queue === false ?
7506
			this.each( doAnimation ) :
7507
			this.queue( optall.queue, doAnimation );
7508
	},
7509
	stop: function( type, clearQueue, gotoEnd ) {
7510
		var stopQueue = function( hooks ) {
7511
			var stop = hooks.stop;
7512
			delete hooks.stop;
7513
			stop( gotoEnd );
7514
		};
7515

  
7516
		if ( typeof type !== "string" ) {
7517
			gotoEnd = clearQueue;
7518
			clearQueue = type;
7519
			type = undefined;
7520
		}
7521
		if ( clearQueue && type !== false ) {
7522
			this.queue( type || "fx", [] );
7523
		}
7524

  
7525
		return this.each(function() {
7526
			var dequeue = true,
7527
				index = type != null && type + "queueHooks",
7528
				timers = jQuery.timers,
7529
				data = jQuery._data( this );
7530

  
7531
			if ( index ) {
7532
				if ( data[ index ] && data[ index ].stop ) {
7533
					stopQueue( data[ index ] );
7534
				}
7535
			} else {
7536
				for ( index in data ) {
7537
					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
7538
						stopQueue( data[ index ] );
7539
					}
7540
				}
7541
			}
7542

  
7543
			for ( index = timers.length; index--; ) {
7544
				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
7545
					timers[ index ].anim.stop( gotoEnd );
7546
					dequeue = false;
7547
					timers.splice( index, 1 );
7548
				}
7549
			}
7550

  
7551
			// start the next in the queue if the last step wasn't forced
7552
			// timers currently will call their complete callbacks, which will dequeue
7553
			// but only if they were gotoEnd
7554
			if ( dequeue || !gotoEnd ) {
7555
				jQuery.dequeue( this, type );
7556
			}
7557
		});
7558
	},
7559
	finish: function( type ) {
7560
		if ( type !== false ) {
7561
			type = type || "fx";
7562
		}
7563
		return this.each(function() {
7564
			var index,
7565
				data = jQuery._data( this ),
7566
				queue = data[ type + "queue" ],
7567
				hooks = data[ type + "queueHooks" ],
7568
				timers = jQuery.timers,
7569
				length = queue ? queue.length : 0;
7570

  
7571
			// enable finishing flag on private data
7572
			data.finish = true;
7573

  
7574
			// empty the queue first
7575
			jQuery.queue( this, type, [] );
7576

  
7577
			if ( hooks && hooks.stop ) {
7578
				hooks.stop.call( this, true );
7579
			}
7580

  
7581
			// look for any active animations, and finish them
7582
			for ( index = timers.length; index--; ) {
7583
				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
7584
					timers[ index ].anim.stop( true );
7585
					timers.splice( index, 1 );
7586
				}
7587
			}
7588

  
7589
			// look for any animations in the old queue and finish them
7590
			for ( index = 0; index < length; index++ ) {
7591
				if ( queue[ index ] && queue[ index ].finish ) {
7592
					queue[ index ].finish.call( this );
7593
				}
7594
			}
7595

  
7596
			// turn off finishing flag
7597
			delete data.finish;
7598
		});
7599
	}
7600
});
7601

  
7602
jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
7603
	var cssFn = jQuery.fn[ name ];
7604
	jQuery.fn[ name ] = function( speed, easing, callback ) {
7605
		return speed == null || typeof speed === "boolean" ?
7606
			cssFn.apply( this, arguments ) :
7607
			this.animate( genFx( name, true ), speed, easing, callback );
7608
	};
7609
});
7610

  
7611
// Generate shortcuts for custom animations
7612
jQuery.each({
7613
	slideDown: genFx("show"),
7614
	slideUp: genFx("hide"),
7615
	slideToggle: genFx("toggle"),
7616
	fadeIn: { opacity: "show" },
7617
	fadeOut: { opacity: "hide" },
7618
	fadeToggle: { opacity: "toggle" }
7619
}, function( name, props ) {
7620
	jQuery.fn[ name ] = function( speed, easing, callback ) {
7621
		return this.animate( props, speed, easing, callback );
7622
	};
7623
});
7624

  
7625
jQuery.timers = [];
7626
jQuery.fx.tick = function() {
7627
	var timer,
7628
		timers = jQuery.timers,
7629
		i = 0;
7630

  
7631
	fxNow = jQuery.now();
7632

  
7633
	for ( ; i < timers.length; i++ ) {
7634
		timer = timers[ i ];
7635
		// Checks the timer has not already been removed
7636
		if ( !timer() && timers[ i ] === timer ) {
7637
			timers.splice( i--, 1 );
7638
		}
7639
	}
7640

  
7641
	if ( !timers.length ) {
7642
		jQuery.fx.stop();
7643
	}
7644
	fxNow = undefined;
7645
};
7646

  
7647
jQuery.fx.timer = function( timer ) {
7648
	jQuery.timers.push( timer );
7649
	if ( timer() ) {
7650
		jQuery.fx.start();
7651
	} else {
7652
		jQuery.timers.pop();
7653
	}
7654
};
7655

  
7656
jQuery.fx.interval = 13;
7657

  
7658
jQuery.fx.start = function() {
7659
	if ( !timerId ) {
7660
		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
7661
	}
7662
};
7663

  
7664
jQuery.fx.stop = function() {
7665
	clearInterval( timerId );
7666
	timerId = null;
7667
};
7668

  
7669
jQuery.fx.speeds = {
7670
	slow: 600,
7671
	fast: 200,
7672
	// Default speed
7673
	_default: 400
7674
};
7675

  
7676

  
7677
// Based off of the plugin by Clint Helfers, with permission.
7678
// http://blindsignals.com/index.php/2009/07/jquery-delay/
7679
jQuery.fn.delay = function( time, type ) {
7680
	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
7681
	type = type || "fx";
7682

  
7683
	return this.queue( type, function( next, hooks ) {
7684
		var timeout = setTimeout( next, time );
7685
		hooks.stop = function() {
7686
			clearTimeout( timeout );
7687
		};
7688
	});
7689
};
7690

  
7691

  
7692
(function() {
7693
	var a, input, select, opt,
7694
		div = document.createElement("div" );
7695

  
7696
	// Setup
7697
	div.setAttribute( "className", "t" );
7698
	div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
7699
	a = div.getElementsByTagName("a")[ 0 ];
7700

  
7701
	// First batch of tests.
7702
	select = document.createElement("select");
7703
	opt = select.appendChild( document.createElement("option") );
7704
	input = div.getElementsByTagName("input")[ 0 ];
7705

  
7706
	a.style.cssText = "top:1px";
7707

  
7708
	// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
7709
	support.getSetAttribute = div.className !== "t";
7710

  
7711
	// Get the style information from getAttribute
7712
	// (IE uses .cssText instead)
7713
	support.style = /top/.test( a.getAttribute("style") );
7714

  
7715
	// Make sure that URLs aren't manipulated
7716
	// (IE normalizes it by default)
7717
	support.hrefNormalized = a.getAttribute("href") === "/a";
7718

  
7719
	// Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
7720
	support.checkOn = !!input.value;
7721

  
7722
	// Make sure that a selected-by-default option has a working selected property.
7723
	// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
7724
	support.optSelected = opt.selected;
7725

  
7726
	// Tests for enctype support on a form (#6743)
7727
	support.enctype = !!document.createElement("form").enctype;
7728

  
7729
	// Make sure that the options inside disabled selects aren't marked as disabled
7730
	// (WebKit marks them as disabled)
7731
	select.disabled = true;
7732
	support.optDisabled = !opt.disabled;
7733

  
7734
	// Support: IE8 only
7735
	// Check if we can trust getAttribute("value")
7736
	input = document.createElement( "input" );
7737
	input.setAttribute( "value", "" );
7738
	support.input = input.getAttribute( "value" ) === "";
7739

  
7740
	// Check if an input maintains its value after becoming a radio
7741
	input.value = "t";
7742
	input.setAttribute( "type", "radio" );
7743
	support.radioValue = input.value === "t";
7744

  
7745
	// Null elements to avoid leaks in IE.
7746
	a = input = select = opt = div = null;
7747
})();
7748

  
7749

  
7750
var rreturn = /\r/g;
7751

  
7752
jQuery.fn.extend({
7753
	val: function( value ) {
7754
		var hooks, ret, isFunction,
7755
			elem = this[0];
7756

  
7757
		if ( !arguments.length ) {
7758
			if ( elem ) {
7759
				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
7760

  
7761
				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
7762
					return ret;
7763
				}
7764

  
7765
				ret = elem.value;
7766

  
7767
				return typeof ret === "string" ?
7768
					// handle most common string cases
7769
					ret.replace(rreturn, "") :
7770
					// handle cases where value is null/undef or number
7771
					ret == null ? "" : ret;
7772
			}
7773

  
7774
			return;
7775
		}
7776

  
7777
		isFunction = jQuery.isFunction( value );
7778

  
7779
		return this.each(function( i ) {
7780
			var val;
7781

  
7782
			if ( this.nodeType !== 1 ) {
7783
				return;
7784
			}
7785

  
7786
			if ( isFunction ) {
7787
				val = value.call( this, i, jQuery( this ).val() );
7788
			} else {
7789
				val = value;
7790
			}
7791

  
7792
			// Treat null/undefined as ""; convert numbers to string
7793
			if ( val == null ) {
7794
				val = "";
7795
			} else if ( typeof val === "number" ) {
7796
				val += "";
7797
			} else if ( jQuery.isArray( val ) ) {
7798
				val = jQuery.map( val, function( value ) {
7799
					return value == null ? "" : value + "";
7800
				});
7801
			}
7802

  
7803
			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
7804

  
7805
			// If set returns undefined, fall back to normal setting
7806
			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
7807
				this.value = val;
7808
			}
7809
		});
7810
	}
7811
});
7812

  
7813
jQuery.extend({
7814
	valHooks: {
7815
		option: {
7816
			get: function( elem ) {
7817
				var val = jQuery.find.attr( elem, "value" );
7818
				return val != null ?
7819
					val :
7820
					jQuery.text( elem );
7821
			}
7822
		},
7823
		select: {
7824
			get: function( elem ) {
7825
				var value, option,
7826
					options = elem.options,
7827
					index = elem.selectedIndex,
7828
					one = elem.type === "select-one" || index < 0,
7829
					values = one ? null : [],
7830
					max = one ? index + 1 : options.length,
7831
					i = index < 0 ?
7832
						max :
7833
						one ? index : 0;
7834

  
7835
				// Loop through all the selected options
7836
				for ( ; i < max; i++ ) {
7837
					option = options[ i ];
7838

  
7839
					// oldIE doesn't update selected after form reset (#2551)
7840
					if ( ( option.selected || i === index ) &&
7841
							// Don't return options that are disabled or in a disabled optgroup
7842
							( support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
7843
							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
7844

  
7845
						// Get the specific value for the option
7846
						value = jQuery( option ).val();
7847

  
7848
						// We don't need an array for one selects
7849
						if ( one ) {
7850
							return value;
7851
						}
7852

  
7853
						// Multi-Selects return an array
7854
						values.push( value );
7855
					}
7856
				}
7857

  
7858
				return values;
7859
			},
7860

  
7861
			set: function( elem, value ) {
7862
				var optionSet, option,
7863
					options = elem.options,
7864
					values = jQuery.makeArray( value ),
7865
					i = options.length;
7866

  
7867
				while ( i-- ) {
7868
					option = options[ i ];
7869

  
7870
					if ( jQuery.inArray( jQuery.valHooks.option.get( option ), values ) >= 0 ) {
7871

  
7872
						// Support: IE6
7873
						// When new option element is added to select box we need to
7874
						// force reflow of newly added node in order to workaround delay
7875
						// of initialization properties
7876
						try {
7877
							option.selected = optionSet = true;
7878

  
7879
						} catch ( _ ) {
7880

  
7881
							// Will be executed only in IE6
7882
							option.scrollHeight;
7883
						}
7884

  
7885
					} else {
7886
						option.selected = false;
7887
					}
7888
				}
7889

  
7890
				// Force browsers to behave consistently when non-matching value is set
7891
				if ( !optionSet ) {
7892
					elem.selectedIndex = -1;
7893
				}
7894

  
7895
				return options;
7896
			}
7897
		}
7898
	}
7899
});
7900

  
7901
// Radios and checkboxes getter/setter
7902
jQuery.each([ "radio", "checkbox" ], function() {
7903
	jQuery.valHooks[ this ] = {
7904
		set: function( elem, value ) {
7905
			if ( jQuery.isArray( value ) ) {
7906
				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
7907
			}
7908
		}
7909
	};
7910
	if ( !support.checkOn ) {
7911
		jQuery.valHooks[ this ].get = function( elem ) {
7912
			// Support: Webkit
7913
			// "" is returned instead of "on" if a value isn't specified
7914
			return elem.getAttribute("value") === null ? "on" : elem.value;
7915
		};
7916
	}
7917
});
7918

  
7919

  
7920

  
7921

  
7922
var nodeHook, boolHook,
7923
	attrHandle = jQuery.expr.attrHandle,
7924
	ruseDefault = /^(?:checked|selected)$/i,
7925
	getSetAttribute = support.getSetAttribute,
7926
	getSetInput = support.input;
7927

  
7928
jQuery.fn.extend({
7929
	attr: function( name, value ) {
7930
		return access( this, jQuery.attr, name, value, arguments.length > 1 );
7931
	},
7932

  
7933
	removeAttr: function( name ) {
7934
		return this.each(function() {
7935
			jQuery.removeAttr( this, name );
7936
		});
7937
	}
7938
});
7939

  
7940
jQuery.extend({
7941
	attr: function( elem, name, value ) {
7942
		var hooks, ret,
7943
			nType = elem.nodeType;
7944

  
7945
		// don't get/set attributes on text, comment and attribute nodes
7946
		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
7947
			return;
7948
		}
7949

  
7950
		// Fallback to prop when attributes are not supported
7951
		if ( typeof elem.getAttribute === strundefined ) {
7952
			return jQuery.prop( elem, name, value );
7953
		}
7954

  
7955
		// All attributes are lowercase
7956
		// Grab necessary hook if one is defined
7957
		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
7958
			name = name.toLowerCase();
7959
			hooks = jQuery.attrHooks[ name ] ||
7960
				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
7961
		}
7962

  
7963
		if ( value !== undefined ) {
7964

  
7965
			if ( value === null ) {
7966
				jQuery.removeAttr( elem, name );
7967

  
7968
			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
7969
				return ret;
7970

  
7971
			} else {
7972
				elem.setAttribute( name, value + "" );
7973
				return value;
7974
			}
7975

  
7976
		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
7977
			return ret;
7978

  
7979
		} else {
7980
			ret = jQuery.find.attr( elem, name );
7981

  
7982
			// Non-existent attributes return null, we normalize to undefined
7983
			return ret == null ?
7984
				undefined :
7985
				ret;
7986
		}
7987
	},
7988

  
7989
	removeAttr: function( elem, value ) {
7990
		var name, propName,
7991
			i = 0,
7992
			attrNames = value && value.match( rnotwhite );
7993

  
7994
		if ( attrNames && elem.nodeType === 1 ) {
7995
			while ( (name = attrNames[i++]) ) {
7996
				propName = jQuery.propFix[ name ] || name;
7997

  
7998
				// Boolean attributes get special treatment (#10870)
7999
				if ( jQuery.expr.match.bool.test( name ) ) {
8000
					// Set corresponding property to false
8001
					if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
8002
						elem[ propName ] = false;
8003
					// Support: IE<9
8004
					// Also clear defaultChecked/defaultSelected (if appropriate)
8005
					} else {
8006
						elem[ jQuery.camelCase( "default-" + name ) ] =
8007
							elem[ propName ] = false;
8008
					}
8009

  
8010
				// See #9699 for explanation of this approach (setting first, then removal)
8011
				} else {
8012
					jQuery.attr( elem, name, "" );
8013
				}
8014

  
8015
				elem.removeAttribute( getSetAttribute ? name : propName );
8016
			}
8017
		}
8018
	},
8019

  
8020
	attrHooks: {
8021
		type: {
8022
			set: function( elem, value ) {
8023
				if ( !support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
8024
					// Setting the type on a radio button after the value resets the value in IE6-9
8025
					// Reset value to default in case type is set after value during creation
8026
					var val = elem.value;
8027
					elem.setAttribute( "type", value );
8028
					if ( val ) {
8029
						elem.value = val;
8030
					}
8031
					return value;
8032
				}
8033
			}
8034
		}
8035
	}
8036
});
8037

  
8038
// Hook for boolean attributes
8039
boolHook = {
8040
	set: function( elem, value, name ) {
8041
		if ( value === false ) {
8042
			// Remove boolean attributes when set to false
8043
			jQuery.removeAttr( elem, name );
8044
		} else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
8045
			// IE<8 needs the *property* name
8046
			elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
8047

  
8048
		// Use defaultChecked and defaultSelected for oldIE
8049
		} else {
8050
			elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
8051
		}
8052

  
8053
		return name;
8054
	}
8055
};
8056

  
8057
// Retrieve booleans specially
8058
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
8059

  
8060
	var getter = attrHandle[ name ] || jQuery.find.attr;
8061

  
8062
	attrHandle[ name ] = getSetInput && getSetAttribute || !ruseDefault.test( name ) ?
8063
		function( elem, name, isXML ) {
8064
			var ret, handle;
8065
			if ( !isXML ) {
8066
				// Avoid an infinite loop by temporarily removing this function from the getter
8067
				handle = attrHandle[ name ];
8068
				attrHandle[ name ] = ret;
8069
				ret = getter( elem, name, isXML ) != null ?
8070
					name.toLowerCase() :
8071
					null;
8072
				attrHandle[ name ] = handle;
8073
			}
8074
			return ret;
8075
		} :
8076
		function( elem, name, isXML ) {
8077
			if ( !isXML ) {
8078
				return elem[ jQuery.camelCase( "default-" + name ) ] ?
8079
					name.toLowerCase() :
8080
					null;
8081
			}
8082
		};
8083
});
8084

  
8085
// fix oldIE attroperties
8086
if ( !getSetInput || !getSetAttribute ) {
8087
	jQuery.attrHooks.value = {
8088
		set: function( elem, value, name ) {
8089
			if ( jQuery.nodeName( elem, "input" ) ) {
8090
				// Does not return so that setAttribute is also used
8091
				elem.defaultValue = value;
8092
			} else {
8093
				// Use nodeHook if defined (#1954); otherwise setAttribute is fine
8094
				return nodeHook && nodeHook.set( elem, value, name );
8095
			}
8096
		}
8097
	};
8098
}
8099

  
8100
// IE6/7 do not support getting/setting some attributes with get/setAttribute
8101
if ( !getSetAttribute ) {
8102

  
8103
	// Use this for any attribute in IE6/7
8104
	// This fixes almost every IE6/7 issue
8105
	nodeHook = {
8106
		set: function( elem, value, name ) {
8107
			// Set the existing or create a new attribute node
8108
			var ret = elem.getAttributeNode( name );
8109
			if ( !ret ) {
8110
				elem.setAttributeNode(
8111
					(ret = elem.ownerDocument.createAttribute( name ))
8112
				);
8113
			}
8114

  
8115
			ret.value = value += "";
8116

  
8117
			// Break association with cloned elements by also using setAttribute (#9646)
8118
			if ( name === "value" || value === elem.getAttribute( name ) ) {
8119
				return value;
8120
			}
8121
		}
8122
	};
8123

  
8124
	// Some attributes are constructed with empty-string values when not defined
8125
	attrHandle.id = attrHandle.name = attrHandle.coords =
8126
		function( elem, name, isXML ) {
8127
			var ret;
8128
			if ( !isXML ) {
8129
				return (ret = elem.getAttributeNode( name )) && ret.value !== "" ?
8130
					ret.value :
8131
					null;
8132
			}
8133
		};
8134

  
8135
	// Fixing value retrieval on a button requires this module
8136
	jQuery.valHooks.button = {
8137
		get: function( elem, name ) {
8138
			var ret = elem.getAttributeNode( name );
8139
			if ( ret && ret.specified ) {
8140
				return ret.value;
8141
			}
8142
		},
8143
		set: nodeHook.set
8144
	};
8145

  
8146
	// Set contenteditable to false on removals(#10429)
8147
	// Setting to empty string throws an error as an invalid value
8148
	jQuery.attrHooks.contenteditable = {
8149
		set: function( elem, value, name ) {
8150
			nodeHook.set( elem, value === "" ? false : value, name );
8151
		}
8152
	};
8153

  
8154
	// Set width and height to auto instead of 0 on empty string( Bug #8150 )
8155
	// This is for removals
8156
	jQuery.each([ "width", "height" ], function( i, name ) {
8157
		jQuery.attrHooks[ name ] = {
8158
			set: function( elem, value ) {
8159
				if ( value === "" ) {
8160
					elem.setAttribute( name, "auto" );
8161
					return value;
8162
				}
8163
			}
8164
		};
8165
	});
8166
}
8167

  
8168
if ( !support.style ) {
8169
	jQuery.attrHooks.style = {
8170
		get: function( elem ) {
8171
			// Return undefined in the case of empty string
8172
			// Note: IE uppercases css property names, but if we were to .toLowerCase()
8173
			// .cssText, that would destroy case senstitivity in URL's, like in "background"
8174
			return elem.style.cssText || undefined;
8175
		},
8176
		set: function( elem, value ) {
8177
			return ( elem.style.cssText = value + "" );
8178
		}
8179
	};
8180
}
8181

  
8182

  
8183

  
8184

  
8185
var rfocusable = /^(?:input|select|textarea|button|object)$/i,
8186
	rclickable = /^(?:a|area)$/i;
8187

  
8188
jQuery.fn.extend({
8189
	prop: function( name, value ) {
8190
		return access( this, jQuery.prop, name, value, arguments.length > 1 );
8191
	},
8192

  
8193
	removeProp: function( name ) {
8194
		name = jQuery.propFix[ name ] || name;
8195
		return this.each(function() {
8196
			// try/catch handles cases where IE balks (such as removing a property on window)
8197
			try {
8198
				this[ name ] = undefined;
8199
				delete this[ name ];
8200
			} catch( e ) {}
8201
		});
8202
	}
8203
});
8204

  
8205
jQuery.extend({
8206
	propFix: {
8207
		"for": "htmlFor",
8208
		"class": "className"
8209
	},
8210

  
8211
	prop: function( elem, name, value ) {
8212
		var ret, hooks, notxml,
8213
			nType = elem.nodeType;
8214

  
8215
		// don't get/set properties on text, comment and attribute nodes
8216
		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
8217
			return;
8218
		}
8219

  
8220
		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
8221

  
8222
		if ( notxml ) {
8223
			// Fix name and attach hooks
8224
			name = jQuery.propFix[ name ] || name;
8225
			hooks = jQuery.propHooks[ name ];
8226
		}
8227

  
8228
		if ( value !== undefined ) {
8229
			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
8230
				ret :
8231
				( elem[ name ] = value );
8232

  
8233
		} else {
8234
			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
8235
				ret :
8236
				elem[ name ];
8237
		}
8238
	},
8239

  
8240
	propHooks: {
8241
		tabIndex: {
8242
			get: function( elem ) {
8243
				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
8244
				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
8245
				// Use proper attribute retrieval(#12072)
8246
				var tabindex = jQuery.find.attr( elem, "tabindex" );
8247

  
8248
				return tabindex ?
8249
					parseInt( tabindex, 10 ) :
8250
					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
8251
						0 :
8252
						-1;
8253
			}
8254
		}
8255
	}
8256
});
8257

  
8258
// Some attributes require a special call on IE
8259
// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
8260
if ( !support.hrefNormalized ) {
8261
	// href/src property should get the full normalized URL (#10299/#12915)
8262
	jQuery.each([ "href", "src" ], function( i, name ) {
8263
		jQuery.propHooks[ name ] = {
8264
			get: function( elem ) {
8265
				return elem.getAttribute( name, 4 );
8266
			}
8267
		};
8268
	});
8269
}
8270

  
8271
// Support: Safari, IE9+
8272
// mis-reports the default selected property of an option
8273
// Accessing the parent's selectedIndex property fixes it
8274
if ( !support.optSelected ) {
8275
	jQuery.propHooks.selected = {
8276
		get: function( elem ) {
8277
			var parent = elem.parentNode;
8278

  
8279
			if ( parent ) {
8280
				parent.selectedIndex;
8281

  
8282
				// Make sure that it also works with optgroups, see #5701
8283
				if ( parent.parentNode ) {
8284
					parent.parentNode.selectedIndex;
8285
				}
8286
			}
8287
			return null;
8288
		}
8289
	};
8290
}
8291

  
8292
jQuery.each([
8293
	"tabIndex",
8294
	"readOnly",
8295
	"maxLength",
8296
	"cellSpacing",
8297
	"cellPadding",
8298
	"rowSpan",
8299
	"colSpan",
8300
	"useMap",
8301
	"frameBorder",
8302
	"contentEditable"
8303
], function() {
8304
	jQuery.propFix[ this.toLowerCase() ] = this;
8305
});
8306

  
8307
// IE6/7 call enctype encoding
8308
if ( !support.enctype ) {
8309
	jQuery.propFix.enctype = "encoding";
8310
}
8311

  
8312

  
8313

  
8314

  
8315
var rclass = /[\t\r\n\f]/g;
8316

  
8317
jQuery.fn.extend({
8318
	addClass: function( value ) {
8319
		var classes, elem, cur, clazz, j, finalValue,
8320
			i = 0,
8321
			len = this.length,
8322
			proceed = typeof value === "string" && value;
8323

  
8324
		if ( jQuery.isFunction( value ) ) {
8325
			return this.each(function( j ) {
8326
				jQuery( this ).addClass( value.call( this, j, this.className ) );
8327
			});
8328
		}
8329

  
8330
		if ( proceed ) {
8331
			// The disjunction here is for better compressibility (see removeClass)
8332
			classes = ( value || "" ).match( rnotwhite ) || [];
8333

  
8334
			for ( ; i < len; i++ ) {
8335
				elem = this[ i ];
8336
				cur = elem.nodeType === 1 && ( elem.className ?
8337
					( " " + elem.className + " " ).replace( rclass, " " ) :
8338
					" "
8339
				);
8340

  
8341
				if ( cur ) {
8342
					j = 0;
8343
					while ( (clazz = classes[j++]) ) {
8344
						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
8345
							cur += clazz + " ";
8346
						}
8347
					}
8348

  
8349
					// only assign if different to avoid unneeded rendering.
8350
					finalValue = jQuery.trim( cur );
8351
					if ( elem.className !== finalValue ) {
8352
						elem.className = finalValue;
8353
					}
8354
				}
8355
			}
8356
		}
8357

  
8358
		return this;
8359
	},
8360

  
8361
	removeClass: function( value ) {
8362
		var classes, elem, cur, clazz, j, finalValue,
8363
			i = 0,
8364
			len = this.length,
8365
			proceed = arguments.length === 0 || typeof value === "string" && value;
8366

  
8367
		if ( jQuery.isFunction( value ) ) {
8368
			return this.each(function( j ) {
8369
				jQuery( this ).removeClass( value.call( this, j, this.className ) );
8370
			});
8371
		}
8372
		if ( proceed ) {
8373
			classes = ( value || "" ).match( rnotwhite ) || [];
8374

  
8375
			for ( ; i < len; i++ ) {
8376
				elem = this[ i ];
8377
				// This expression is here for better compressibility (see addClass)
8378
				cur = elem.nodeType === 1 && ( elem.className ?
8379
					( " " + elem.className + " " ).replace( rclass, " " ) :
8380
					""
8381
				);
8382

  
8383
				if ( cur ) {
8384
					j = 0;
8385
					while ( (clazz = classes[j++]) ) {
8386
						// Remove *all* instances
8387
						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
8388
							cur = cur.replace( " " + clazz + " ", " " );
8389
						}
8390
					}
8391

  
8392
					// only assign if different to avoid unneeded rendering.
8393
					finalValue = value ? jQuery.trim( cur ) : "";
8394
					if ( elem.className !== finalValue ) {
8395
						elem.className = finalValue;
8396
					}
8397
				}
8398
			}
8399
		}
8400

  
8401
		return this;
8402
	},
8403

  
8404
	toggleClass: function( value, stateVal ) {
8405
		var type = typeof value;
8406

  
8407
		if ( typeof stateVal === "boolean" && type === "string" ) {
8408
			return stateVal ? this.addClass( value ) : this.removeClass( value );
8409
		}
8410

  
8411
		if ( jQuery.isFunction( value ) ) {
8412
			return this.each(function( i ) {
8413
				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
8414
			});
8415
		}
8416

  
8417
		return this.each(function() {
8418
			if ( type === "string" ) {
8419
				// toggle individual class names
8420
				var className,
8421
					i = 0,
8422
					self = jQuery( this ),
8423
					classNames = value.match( rnotwhite ) || [];
8424

  
8425
				while ( (className = classNames[ i++ ]) ) {
8426
					// check each className given, space separated list
8427
					if ( self.hasClass( className ) ) {
8428
						self.removeClass( className );
8429
					} else {
8430
						self.addClass( className );
8431
					}
8432
				}
8433

  
8434
			// Toggle whole class name
8435
			} else if ( type === strundefined || type === "boolean" ) {
8436
				if ( this.className ) {
8437
					// store className if set
8438
					jQuery._data( this, "__className__", this.className );
8439
				}
8440

  
8441
				// If the element has a class name or if we're passed "false",
8442
				// then remove the whole classname (if there was one, the above saved it).
8443
				// Otherwise bring back whatever was previously saved (if anything),
8444
				// falling back to the empty string if nothing was stored.
8445
				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
8446
			}
8447
		});
8448
	},
8449

  
8450
	hasClass: function( selector ) {
8451
		var className = " " + selector + " ",
8452
			i = 0,
8453
			l = this.length;
8454
		for ( ; i < l; i++ ) {
8455
			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
8456
				return true;
8457
			}
8458
		}
8459

  
8460
		return false;
8461
	}
8462
});
8463

  
8464

  
8465

  
8466

  
8467
// Return jQuery for attributes-only inclusion
8468

  
8469

  
8470
jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
8471
	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
8472
	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
8473

  
8474
	// Handle event binding
8475
	jQuery.fn[ name ] = function( data, fn ) {
8476
		return arguments.length > 0 ?
8477
			this.on( name, null, data, fn ) :
8478
			this.trigger( name );
8479
	};
8480
});
8481

  
8482
jQuery.fn.extend({
8483
	hover: function( fnOver, fnOut ) {
8484
		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
8485
	},
8486

  
8487
	bind: function( types, data, fn ) {
8488
		return this.on( types, null, data, fn );
8489
	},
8490
	unbind: function( types, fn ) {
8491
		return this.off( types, null, fn );
8492
	},
8493

  
8494
	delegate: function( selector, types, data, fn ) {
8495
		return this.on( types, selector, data, fn );
8496
	},
8497
	undelegate: function( selector, types, fn ) {
8498
		// ( namespace ) or ( selector, types [, fn] )
8499
		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
8500
	}
8501
});
8502

  
8503

  
8504
var nonce = jQuery.now();
8505

  
8506
var rquery = (/\?/);
8507

  
8508

  
8509

  
8510
var rvalidtokens = /(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;
8511

  
8512
jQuery.parseJSON = function( data ) {
8513
	// Attempt to parse using the native JSON parser first
8514
	if ( window.JSON && window.JSON.parse ) {
8515
		// Support: Android 2.3
8516
		// Workaround failure to string-cast null input
8517
		return window.JSON.parse( data + "" );
8518
	}
8519

  
8520
	var requireNonComma,
8521
		depth = null,
8522
		str = jQuery.trim( data + "" );
8523

  
8524
	// Guard against invalid (and possibly dangerous) input by ensuring that nothing remains
8525
	// after removing valid tokens
8526
	return str && !jQuery.trim( str.replace( rvalidtokens, function( token, comma, open, close ) {
8527

  
8528
		// Force termination if we see a misplaced comma
8529
		if ( requireNonComma && comma ) {
8530
			depth = 0;
8531
		}
8532

  
8533
		// Perform no more replacements after returning to outermost depth
8534
		if ( depth === 0 ) {
8535
			return token;
8536
		}
8537

  
8538
		// Commas must not follow "[", "{", or ","
8539
		requireNonComma = open || comma;
8540

  
8541
		// Determine new depth
8542
		// array/object open ("[" or "{"): depth += true - false (increment)
8543
		// array/object close ("]" or "}"): depth += false - true (decrement)
8544
		// other cases ("," or primitive): depth += true - true (numeric cast)
8545
		depth += !close - !open;
8546

  
8547
		// Remove this token
8548
		return "";
8549
	}) ) ?
8550
		( Function( "return " + str ) )() :
8551
		jQuery.error( "Invalid JSON: " + data );
8552
};
8553

  
8554

  
8555
// Cross-browser xml parsing
8556
jQuery.parseXML = function( data ) {
8557
	var xml, tmp;
8558
	if ( !data || typeof data !== "string" ) {
8559
		return null;
8560
	}
8561
	try {
8562
		if ( window.DOMParser ) { // Standard
8563
			tmp = new DOMParser();
8564
			xml = tmp.parseFromString( data, "text/xml" );
8565
		} else { // IE
8566
			xml = new ActiveXObject( "Microsoft.XMLDOM" );
8567
			xml.async = "false";
8568
			xml.loadXML( data );
8569
		}
8570
	} catch( e ) {
8571
		xml = undefined;
8572
	}
8573
	if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
8574
		jQuery.error( "Invalid XML: " + data );
8575
	}
8576
	return xml;
8577
};
8578

  
8579

  
8580
var
8581
	// Document location
8582
	ajaxLocParts,
8583
	ajaxLocation,
8584

  
8585
	rhash = /#.*$/,
8586
	rts = /([?&])_=[^&]*/,
8587
	rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
8588
	// #7653, #8125, #8152: local protocol detection
8589
	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
8590
	rnoContent = /^(?:GET|HEAD)$/,
8591
	rprotocol = /^\/\//,
8592
	rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
8593

  
8594
	/* Prefilters
8595
	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
8596
	 * 2) These are called:
8597
	 *    - BEFORE asking for a transport
8598
	 *    - AFTER param serialization (s.data is a string if s.processData is true)
8599
	 * 3) key is the dataType
8600
	 * 4) the catchall symbol "*" can be used
8601
	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
8602
	 */
8603
	prefilters = {},
8604

  
8605
	/* Transports bindings
8606
	 * 1) key is the dataType
8607
	 * 2) the catchall symbol "*" can be used
8608
	 * 3) selection will start with transport dataType and THEN go to "*" if needed
8609
	 */
8610
	transports = {},
8611

  
8612
	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
8613
	allTypes = "*/".concat("*");
8614

  
8615
// #8138, IE may throw an exception when accessing
8616
// a field from window.location if document.domain has been set
8617
try {
8618
	ajaxLocation = location.href;
8619
} catch( e ) {
8620
	// Use the href attribute of an A element
8621
	// since IE will modify it given document.location
8622
	ajaxLocation = document.createElement( "a" );
8623
	ajaxLocation.href = "";
8624
	ajaxLocation = ajaxLocation.href;
8625
}
8626

  
8627
// Segment location into parts
8628
ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
8629

  
8630
// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
8631
function addToPrefiltersOrTransports( structure ) {
8632

  
8633
	// dataTypeExpression is optional and defaults to "*"
8634
	return function( dataTypeExpression, func ) {
8635

  
8636
		if ( typeof dataTypeExpression !== "string" ) {
8637
			func = dataTypeExpression;
8638
			dataTypeExpression = "*";
8639
		}
8640

  
8641
		var dataType,
8642
			i = 0,
8643
			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
8644

  
8645
		if ( jQuery.isFunction( func ) ) {
8646
			// For each dataType in the dataTypeExpression
8647
			while ( (dataType = dataTypes[i++]) ) {
8648
				// Prepend if requested
8649
				if ( dataType.charAt( 0 ) === "+" ) {
8650
					dataType = dataType.slice( 1 ) || "*";
8651
					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
8652

  
8653
				// Otherwise append
8654
				} else {
8655
					(structure[ dataType ] = structure[ dataType ] || []).push( func );
8656
				}
8657
			}
8658
		}
8659
	};
8660
}
8661

  
8662
// Base inspection function for prefilters and transports
8663
function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
8664

  
8665
	var inspected = {},
8666
		seekingTransport = ( structure === transports );
8667

  
8668
	function inspect( dataType ) {
8669
		var selected;
8670
		inspected[ dataType ] = true;
8671
		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
8672
			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
8673
			if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
8674
				options.dataTypes.unshift( dataTypeOrTransport );
8675
				inspect( dataTypeOrTransport );
8676
				return false;
8677
			} else if ( seekingTransport ) {
8678
				return !( selected = dataTypeOrTransport );
8679
			}
8680
		});
8681
		return selected;
8682
	}
8683

  
8684
	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
8685
}
8686

  
8687
// A special extend for ajax options
8688
// that takes "flat" options (not to be deep extended)
8689
// Fixes #9887
8690
function ajaxExtend( target, src ) {
8691
	var deep, key,
8692
		flatOptions = jQuery.ajaxSettings.flatOptions || {};
8693

  
8694
	for ( key in src ) {
8695
		if ( src[ key ] !== undefined ) {
8696
			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
8697
		}
8698
	}
8699
	if ( deep ) {
8700
		jQuery.extend( true, target, deep );
8701
	}
8702

  
8703
	return target;
8704
}
8705

  
8706
/* Handles responses to an ajax request:
8707
 * - finds the right dataType (mediates between content-type and expected dataType)
8708
 * - returns the corresponding response
8709
 */
8710
function ajaxHandleResponses( s, jqXHR, responses ) {
8711
	var firstDataType, ct, finalDataType, type,
8712
		contents = s.contents,
8713
		dataTypes = s.dataTypes;
8714

  
8715
	// Remove auto dataType and get content-type in the process
8716
	while ( dataTypes[ 0 ] === "*" ) {
8717
		dataTypes.shift();
8718
		if ( ct === undefined ) {
8719
			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
8720
		}
8721
	}
8722

  
8723
	// Check if we're dealing with a known content-type
8724
	if ( ct ) {
8725
		for ( type in contents ) {
8726
			if ( contents[ type ] && contents[ type ].test( ct ) ) {
8727
				dataTypes.unshift( type );
8728
				break;
8729
			}
8730
		}
8731
	}
8732

  
8733
	// Check to see if we have a response for the expected dataType
8734
	if ( dataTypes[ 0 ] in responses ) {
8735
		finalDataType = dataTypes[ 0 ];
8736
	} else {
8737
		// Try convertible dataTypes
8738
		for ( type in responses ) {
8739
			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
8740
				finalDataType = type;
8741
				break;
8742
			}
8743
			if ( !firstDataType ) {
8744
				firstDataType = type;
8745
			}
8746
		}
8747
		// Or just use first one
8748
		finalDataType = finalDataType || firstDataType;
8749
	}
8750

  
8751
	// If we found a dataType
8752
	// We add the dataType to the list if needed
8753
	// and return the corresponding response
8754
	if ( finalDataType ) {
8755
		if ( finalDataType !== dataTypes[ 0 ] ) {
8756
			dataTypes.unshift( finalDataType );
8757
		}
8758
		return responses[ finalDataType ];
8759
	}
8760
}
8761

  
8762
/* Chain conversions given the request and the original response
8763
 * Also sets the responseXXX fields on the jqXHR instance
8764
 */
8765
function ajaxConvert( s, response, jqXHR, isSuccess ) {
8766
	var conv2, current, conv, tmp, prev,
8767
		converters = {},
8768
		// Work with a copy of dataTypes in case we need to modify it for conversion
8769
		dataTypes = s.dataTypes.slice();
8770

  
8771
	// Create converters map with lowercased keys
8772
	if ( dataTypes[ 1 ] ) {
8773
		for ( conv in s.converters ) {
8774
			converters[ conv.toLowerCase() ] = s.converters[ conv ];
8775
		}
8776
	}
8777

  
8778
	current = dataTypes.shift();
8779

  
8780
	// Convert to each sequential dataType
8781
	while ( current ) {
8782

  
8783
		if ( s.responseFields[ current ] ) {
8784
			jqXHR[ s.responseFields[ current ] ] = response;
8785
		}
8786

  
8787
		// Apply the dataFilter if provided
8788
		if ( !prev && isSuccess && s.dataFilter ) {
8789
			response = s.dataFilter( response, s.dataType );
8790
		}
8791

  
8792
		prev = current;
8793
		current = dataTypes.shift();
8794

  
8795
		if ( current ) {
8796

  
8797
			// There's only work to do if current dataType is non-auto
8798
			if ( current === "*" ) {
8799

  
8800
				current = prev;
8801

  
8802
			// Convert response if prev dataType is non-auto and differs from current
8803
			} else if ( prev !== "*" && prev !== current ) {
8804

  
8805
				// Seek a direct converter
8806
				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
8807

  
8808
				// If none found, seek a pair
8809
				if ( !conv ) {
8810
					for ( conv2 in converters ) {
8811

  
8812
						// If conv2 outputs current
8813
						tmp = conv2.split( " " );
8814
						if ( tmp[ 1 ] === current ) {
8815

  
8816
							// If prev can be converted to accepted input
8817
							conv = converters[ prev + " " + tmp[ 0 ] ] ||
8818
								converters[ "* " + tmp[ 0 ] ];
8819
							if ( conv ) {
8820
								// Condense equivalence converters
8821
								if ( conv === true ) {
8822
									conv = converters[ conv2 ];
8823

  
8824
								// Otherwise, insert the intermediate dataType
8825
								} else if ( converters[ conv2 ] !== true ) {
8826
									current = tmp[ 0 ];
8827
									dataTypes.unshift( tmp[ 1 ] );
8828
								}
8829
								break;
8830
							}
8831
						}
8832
					}
8833
				}
8834

  
8835
				// Apply converter (if not an equivalence)
8836
				if ( conv !== true ) {
8837

  
8838
					// Unless errors are allowed to bubble, catch and return them
8839
					if ( conv && s[ "throws" ] ) {
8840
						response = conv( response );
8841
					} else {
8842
						try {
8843
							response = conv( response );
8844
						} catch ( e ) {
8845
							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
8846
						}
8847
					}
8848
				}
8849
			}
8850
		}
8851
	}
8852

  
8853
	return { state: "success", data: response };
8854
}
8855

  
8856
jQuery.extend({
8857

  
8858
	// Counter for holding the number of active queries
8859
	active: 0,
8860

  
8861
	// Last-Modified header cache for next request
8862
	lastModified: {},
8863
	etag: {},
8864

  
8865
	ajaxSettings: {
8866
		url: ajaxLocation,
8867
		type: "GET",
8868
		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
8869
		global: true,
8870
		processData: true,
8871
		async: true,
8872
		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
8873
		/*
8874
		timeout: 0,
8875
		data: null,
8876
		dataType: null,
8877
		username: null,
8878
		password: null,
8879
		cache: null,
8880
		throws: false,
8881
		traditional: false,
8882
		headers: {},
8883
		*/
8884

  
8885
		accepts: {
8886
			"*": allTypes,
8887
			text: "text/plain",
8888
			html: "text/html",
8889
			xml: "application/xml, text/xml",
8890
			json: "application/json, text/javascript"
8891
		},
8892

  
8893
		contents: {
8894
			xml: /xml/,
8895
			html: /html/,
8896
			json: /json/
8897
		},
8898

  
8899
		responseFields: {
8900
			xml: "responseXML",
8901
			text: "responseText",
8902
			json: "responseJSON"
8903
		},
8904

  
8905
		// Data converters
8906
		// Keys separate source (or catchall "*") and destination types with a single space
8907
		converters: {
8908

  
8909
			// Convert anything to text
8910
			"* text": String,
8911

  
8912
			// Text to html (true = no transformation)
8913
			"text html": true,
8914

  
8915
			// Evaluate text as a json expression
8916
			"text json": jQuery.parseJSON,
8917

  
8918
			// Parse text as xml
8919
			"text xml": jQuery.parseXML
8920
		},
8921

  
8922
		// For options that shouldn't be deep extended:
8923
		// you can add your own custom options here if
8924
		// and when you create one that shouldn't be
8925
		// deep extended (see ajaxExtend)
8926
		flatOptions: {
8927
			url: true,
8928
			context: true
8929
		}
8930
	},
8931

  
8932
	// Creates a full fledged settings object into target
8933
	// with both ajaxSettings and settings fields.
8934
	// If target is omitted, writes into ajaxSettings.
8935
	ajaxSetup: function( target, settings ) {
8936
		return settings ?
8937

  
8938
			// Building a settings object
8939
			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
8940

  
8941
			// Extending ajaxSettings
8942
			ajaxExtend( jQuery.ajaxSettings, target );
8943
	},
8944

  
8945
	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
8946
	ajaxTransport: addToPrefiltersOrTransports( transports ),
8947

  
8948
	// Main method
8949
	ajax: function( url, options ) {
8950

  
8951
		// If url is an object, simulate pre-1.5 signature
8952
		if ( typeof url === "object" ) {
8953
			options = url;
8954
			url = undefined;
8955
		}
8956

  
8957
		// Force options to be an object
8958
		options = options || {};
8959

  
8960
		var // Cross-domain detection vars
8961
			parts,
8962
			// Loop variable
8963
			i,
8964
			// URL without anti-cache param
8965
			cacheURL,
8966
			// Response headers as string
8967
			responseHeadersString,
8968
			// timeout handle
8969
			timeoutTimer,
8970

  
8971
			// To know if global events are to be dispatched
8972
			fireGlobals,
8973

  
8974
			transport,
8975
			// Response headers
8976
			responseHeaders,
8977
			// Create the final options object
8978
			s = jQuery.ajaxSetup( {}, options ),
8979
			// Callbacks context
8980
			callbackContext = s.context || s,
8981
			// Context for global events is callbackContext if it is a DOM node or jQuery collection
8982
			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
8983
				jQuery( callbackContext ) :
8984
				jQuery.event,
8985
			// Deferreds
8986
			deferred = jQuery.Deferred(),
8987
			completeDeferred = jQuery.Callbacks("once memory"),
8988
			// Status-dependent callbacks
8989
			statusCode = s.statusCode || {},
8990
			// Headers (they are sent all at once)
8991
			requestHeaders = {},
8992
			requestHeadersNames = {},
8993
			// The jqXHR state
8994
			state = 0,
8995
			// Default abort message
8996
			strAbort = "canceled",
8997
			// Fake xhr
8998
			jqXHR = {
8999
				readyState: 0,
9000

  
9001
				// Builds headers hashtable if needed
9002
				getResponseHeader: function( key ) {
9003
					var match;
9004
					if ( state === 2 ) {
9005
						if ( !responseHeaders ) {
9006
							responseHeaders = {};
9007
							while ( (match = rheaders.exec( responseHeadersString )) ) {
9008
								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
9009
							}
9010
						}
9011
						match = responseHeaders[ key.toLowerCase() ];
9012
					}
9013
					return match == null ? null : match;
9014
				},
9015

  
9016
				// Raw string
9017
				getAllResponseHeaders: function() {
9018
					return state === 2 ? responseHeadersString : null;
9019
				},
9020

  
9021
				// Caches the header
9022
				setRequestHeader: function( name, value ) {
9023
					var lname = name.toLowerCase();
9024
					if ( !state ) {
9025
						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
9026
						requestHeaders[ name ] = value;
9027
					}
9028
					return this;
9029
				},
9030

  
9031
				// Overrides response content-type header
9032
				overrideMimeType: function( type ) {
9033
					if ( !state ) {
9034
						s.mimeType = type;
9035
					}
9036
					return this;
9037
				},
9038

  
9039
				// Status-dependent callbacks
9040
				statusCode: function( map ) {
9041
					var code;
9042
					if ( map ) {
9043
						if ( state < 2 ) {
9044
							for ( code in map ) {
9045
								// Lazy-add the new callback in a way that preserves old ones
9046
								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
9047
							}
9048
						} else {
9049
							// Execute the appropriate callbacks
9050
							jqXHR.always( map[ jqXHR.status ] );
9051
						}
9052
					}
9053
					return this;
9054
				},
9055

  
9056
				// Cancel the request
9057
				abort: function( statusText ) {
9058
					var finalText = statusText || strAbort;
9059
					if ( transport ) {
9060
						transport.abort( finalText );
9061
					}
9062
					done( 0, finalText );
9063
					return this;
9064
				}
9065
			};
9066

  
9067
		// Attach deferreds
9068
		deferred.promise( jqXHR ).complete = completeDeferred.add;
9069
		jqXHR.success = jqXHR.done;
9070
		jqXHR.error = jqXHR.fail;
9071

  
9072
		// Remove hash character (#7531: and string promotion)
9073
		// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
9074
		// Handle falsy url in the settings object (#10093: consistency with old signature)
9075
		// We also use the url parameter if available
9076
		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
9077

  
9078
		// Alias method option to type as per ticket #12004
9079
		s.type = options.method || options.type || s.method || s.type;
9080

  
9081
		// Extract dataTypes list
9082
		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
9083

  
9084
		// A cross-domain request is in order when we have a protocol:host:port mismatch
9085
		if ( s.crossDomain == null ) {
9086
			parts = rurl.exec( s.url.toLowerCase() );
9087
			s.crossDomain = !!( parts &&
9088
				( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
9089
					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
9090
						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
9091
			);
9092
		}
9093

  
9094
		// Convert data if not already a string
9095
		if ( s.data && s.processData && typeof s.data !== "string" ) {
9096
			s.data = jQuery.param( s.data, s.traditional );
9097
		}
9098

  
9099
		// Apply prefilters
9100
		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
9101

  
9102
		// If request was aborted inside a prefilter, stop there
9103
		if ( state === 2 ) {
9104
			return jqXHR;
9105
		}
9106

  
9107
		// We can fire global events as of now if asked to
9108
		fireGlobals = s.global;
9109

  
9110
		// Watch for a new set of requests
9111
		if ( fireGlobals && jQuery.active++ === 0 ) {
9112
			jQuery.event.trigger("ajaxStart");
9113
		}
9114

  
9115
		// Uppercase the type
9116
		s.type = s.type.toUpperCase();
9117

  
9118
		// Determine if request has content
9119
		s.hasContent = !rnoContent.test( s.type );
9120

  
9121
		// Save the URL in case we're toying with the If-Modified-Since
9122
		// and/or If-None-Match header later on
9123
		cacheURL = s.url;
9124

  
9125
		// More options handling for requests with no content
9126
		if ( !s.hasContent ) {
9127

  
9128
			// If data is available, append data to url
9129
			if ( s.data ) {
9130
				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
9131
				// #9682: remove data so that it's not used in an eventual retry
9132
				delete s.data;
9133
			}
9134

  
9135
			// Add anti-cache in url if needed
9136
			if ( s.cache === false ) {
9137
				s.url = rts.test( cacheURL ) ?
9138

  
9139
					// If there is already a '_' parameter, set its value
9140
					cacheURL.replace( rts, "$1_=" + nonce++ ) :
9141

  
9142
					// Otherwise add one to the end
9143
					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
9144
			}
9145
		}
9146

  
9147
		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9148
		if ( s.ifModified ) {
9149
			if ( jQuery.lastModified[ cacheURL ] ) {
9150
				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
9151
			}
9152
			if ( jQuery.etag[ cacheURL ] ) {
9153
				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
9154
			}
9155
		}
9156

  
9157
		// Set the correct header, if data is being sent
9158
		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
9159
			jqXHR.setRequestHeader( "Content-Type", s.contentType );
9160
		}
9161

  
9162
		// Set the Accepts header for the server, depending on the dataType
9163
		jqXHR.setRequestHeader(
9164
			"Accept",
9165
			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
9166
				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
9167
				s.accepts[ "*" ]
9168
		);
9169

  
9170
		// Check for headers option
9171
		for ( i in s.headers ) {
9172
			jqXHR.setRequestHeader( i, s.headers[ i ] );
9173
		}
9174

  
9175
		// Allow custom headers/mimetypes and early abort
9176
		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
9177
			// Abort if not done already and return
9178
			return jqXHR.abort();
9179
		}
9180

  
9181
		// aborting is no longer a cancellation
9182
		strAbort = "abort";
9183

  
9184
		// Install callbacks on deferreds
9185
		for ( i in { success: 1, error: 1, complete: 1 } ) {
9186
			jqXHR[ i ]( s[ i ] );
9187
		}
9188

  
9189
		// Get transport
9190
		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
9191

  
9192
		// If no transport, we auto-abort
9193
		if ( !transport ) {
9194
			done( -1, "No Transport" );
9195
		} else {
9196
			jqXHR.readyState = 1;
9197

  
9198
			// Send global event
9199
			if ( fireGlobals ) {
9200
				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
9201
			}
9202
			// Timeout
9203
			if ( s.async && s.timeout > 0 ) {
9204
				timeoutTimer = setTimeout(function() {
9205
					jqXHR.abort("timeout");
9206
				}, s.timeout );
9207
			}
9208

  
9209
			try {
9210
				state = 1;
9211
				transport.send( requestHeaders, done );
9212
			} catch ( e ) {
9213
				// Propagate exception as error if not done
9214
				if ( state < 2 ) {
9215
					done( -1, e );
9216
				// Simply rethrow otherwise
9217
				} else {
9218
					throw e;
9219
				}
9220
			}
9221
		}
9222

  
9223
		// Callback for when everything is done
9224
		function done( status, nativeStatusText, responses, headers ) {
9225
			var isSuccess, success, error, response, modified,
9226
				statusText = nativeStatusText;
9227

  
9228
			// Called once
9229
			if ( state === 2 ) {
9230
				return;
9231
			}
9232

  
9233
			// State is "done" now
9234
			state = 2;
9235

  
9236
			// Clear timeout if it exists
9237
			if ( timeoutTimer ) {
9238
				clearTimeout( timeoutTimer );
9239
			}
9240

  
9241
			// Dereference transport for early garbage collection
9242
			// (no matter how long the jqXHR object will be used)
9243
			transport = undefined;
9244

  
9245
			// Cache response headers
9246
			responseHeadersString = headers || "";
9247

  
9248
			// Set readyState
9249
			jqXHR.readyState = status > 0 ? 4 : 0;
9250

  
9251
			// Determine if successful
9252
			isSuccess = status >= 200 && status < 300 || status === 304;
9253

  
9254
			// Get response data
9255
			if ( responses ) {
9256
				response = ajaxHandleResponses( s, jqXHR, responses );
9257
			}
9258

  
9259
			// Convert no matter what (that way responseXXX fields are always set)
9260
			response = ajaxConvert( s, response, jqXHR, isSuccess );
9261

  
9262
			// If successful, handle type chaining
9263
			if ( isSuccess ) {
9264

  
9265
				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9266
				if ( s.ifModified ) {
9267
					modified = jqXHR.getResponseHeader("Last-Modified");
9268
					if ( modified ) {
9269
						jQuery.lastModified[ cacheURL ] = modified;
9270
					}
9271
					modified = jqXHR.getResponseHeader("etag");
9272
					if ( modified ) {
9273
						jQuery.etag[ cacheURL ] = modified;
9274
					}
9275
				}
9276

  
9277
				// if no content
9278
				if ( status === 204 || s.type === "HEAD" ) {
9279
					statusText = "nocontent";
9280

  
9281
				// if not modified
9282
				} else if ( status === 304 ) {
9283
					statusText = "notmodified";
9284

  
9285
				// If we have data, let's convert it
9286
				} else {
9287
					statusText = response.state;
9288
					success = response.data;
9289
					error = response.error;
9290
					isSuccess = !error;
9291
				}
9292
			} else {
9293
				// We extract error from statusText
9294
				// then normalize statusText and status for non-aborts
9295
				error = statusText;
9296
				if ( status || !statusText ) {
9297
					statusText = "error";
9298
					if ( status < 0 ) {
9299
						status = 0;
9300
					}
9301
				}
9302
			}
9303

  
9304
			// Set data for the fake xhr object
9305
			jqXHR.status = status;
9306
			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
9307

  
9308
			// Success/Error
9309
			if ( isSuccess ) {
9310
				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
9311
			} else {
9312
				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
9313
			}
9314

  
9315
			// Status-dependent callbacks
9316
			jqXHR.statusCode( statusCode );
9317
			statusCode = undefined;
9318

  
9319
			if ( fireGlobals ) {
9320
				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
9321
					[ jqXHR, s, isSuccess ? success : error ] );
9322
			}
9323

  
9324
			// Complete
9325
			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
9326

  
9327
			if ( fireGlobals ) {
9328
				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
9329
				// Handle the global AJAX counter
9330
				if ( !( --jQuery.active ) ) {
9331
					jQuery.event.trigger("ajaxStop");
9332
				}
9333
			}
9334
		}
9335

  
9336
		return jqXHR;
9337
	},
9338

  
9339
	getJSON: function( url, data, callback ) {
9340
		return jQuery.get( url, data, callback, "json" );
9341
	},
9342

  
9343
	getScript: function( url, callback ) {
9344
		return jQuery.get( url, undefined, callback, "script" );
9345
	}
9346
});
9347

  
9348
jQuery.each( [ "get", "post" ], function( i, method ) {
9349
	jQuery[ method ] = function( url, data, callback, type ) {
9350
		// shift arguments if data argument was omitted
9351
		if ( jQuery.isFunction( data ) ) {
9352
			type = type || callback;
9353
			callback = data;
9354
			data = undefined;
9355
		}
9356

  
9357
		return jQuery.ajax({
9358
			url: url,
9359
			type: method,
9360
			dataType: type,
9361
			data: data,
9362
			success: callback
9363
		});
9364
	};
9365
});
9366

  
9367
// Attach a bunch of functions for handling common AJAX events
9368
jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
9369
	jQuery.fn[ type ] = function( fn ) {
9370
		return this.on( type, fn );
9371
	};
9372
});
9373

  
9374

  
9375
jQuery._evalUrl = function( url ) {
9376
	return jQuery.ajax({
9377
		url: url,
9378
		type: "GET",
9379
		dataType: "script",
9380
		async: false,
9381
		global: false,
9382
		"throws": true
9383
	});
9384
};
9385

  
9386

  
9387
jQuery.fn.extend({
9388
	wrapAll: function( html ) {
9389
		if ( jQuery.isFunction( html ) ) {
9390
			return this.each(function(i) {
9391
				jQuery(this).wrapAll( html.call(this, i) );
9392
			});
9393
		}
9394

  
9395
		if ( this[0] ) {
9396
			// The elements to wrap the target around
9397
			var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
9398

  
9399
			if ( this[0].parentNode ) {
9400
				wrap.insertBefore( this[0] );
9401
			}
9402

  
9403
			wrap.map(function() {
9404
				var elem = this;
9405

  
9406
				while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
9407
					elem = elem.firstChild;
9408
				}
9409

  
9410
				return elem;
9411
			}).append( this );
9412
		}
9413

  
9414
		return this;
9415
	},
9416

  
9417
	wrapInner: function( html ) {
9418
		if ( jQuery.isFunction( html ) ) {
9419
			return this.each(function(i) {
9420
				jQuery(this).wrapInner( html.call(this, i) );
9421
			});
9422
		}
9423

  
9424
		return this.each(function() {
9425
			var self = jQuery( this ),
9426
				contents = self.contents();
9427

  
9428
			if ( contents.length ) {
9429
				contents.wrapAll( html );
9430

  
9431
			} else {
9432
				self.append( html );
9433
			}
9434
		});
9435
	},
9436

  
9437
	wrap: function( html ) {
9438
		var isFunction = jQuery.isFunction( html );
9439

  
9440
		return this.each(function(i) {
9441
			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
9442
		});
9443
	},
9444

  
9445
	unwrap: function() {
9446
		return this.parent().each(function() {
9447
			if ( !jQuery.nodeName( this, "body" ) ) {
9448
				jQuery( this ).replaceWith( this.childNodes );
9449
			}
9450
		}).end();
9451
	}
9452
});
9453

  
9454

  
9455
jQuery.expr.filters.hidden = function( elem ) {
9456
	// Support: Opera <= 12.12
9457
	// Opera reports offsetWidths and offsetHeights less than zero on some elements
9458
	return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
9459
		(!support.reliableHiddenOffsets() &&
9460
			((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
9461
};
9462

  
9463
jQuery.expr.filters.visible = function( elem ) {
9464
	return !jQuery.expr.filters.hidden( elem );
9465
};
9466

  
9467

  
9468

  
9469

  
9470
var r20 = /%20/g,
9471
	rbracket = /\[\]$/,
9472
	rCRLF = /\r?\n/g,
9473
	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
9474
	rsubmittable = /^(?:input|select|textarea|keygen)/i;
9475

  
9476
function buildParams( prefix, obj, traditional, add ) {
9477
	var name;
9478

  
9479
	if ( jQuery.isArray( obj ) ) {
9480
		// Serialize array item.
9481
		jQuery.each( obj, function( i, v ) {
9482
			if ( traditional || rbracket.test( prefix ) ) {
9483
				// Treat each array item as a scalar.
9484
				add( prefix, v );
9485

  
9486
			} else {
9487
				// Item is non-scalar (array or object), encode its numeric index.
9488
				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
9489
			}
9490
		});
9491

  
9492
	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
9493
		// Serialize object item.
9494
		for ( name in obj ) {
9495
			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
9496
		}
9497

  
9498
	} else {
9499
		// Serialize scalar item.
9500
		add( prefix, obj );
9501
	}
9502
}
9503

  
9504
// Serialize an array of form elements or a set of
9505
// key/values into a query string
9506
jQuery.param = function( a, traditional ) {
9507
	var prefix,
9508
		s = [],
9509
		add = function( key, value ) {
9510
			// If value is a function, invoke it and return its value
9511
			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
9512
			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
9513
		};
9514

  
9515
	// Set traditional to true for jQuery <= 1.3.2 behavior.
9516
	if ( traditional === undefined ) {
9517
		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
9518
	}
9519

  
9520
	// If an array was passed in, assume that it is an array of form elements.
9521
	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
9522
		// Serialize the form elements
9523
		jQuery.each( a, function() {
9524
			add( this.name, this.value );
9525
		});
9526

  
9527
	} else {
9528
		// If traditional, encode the "old" way (the way 1.3.2 or older
9529
		// did it), otherwise encode params recursively.
9530
		for ( prefix in a ) {
9531
			buildParams( prefix, a[ prefix ], traditional, add );
9532
		}
9533
	}
9534

  
9535
	// Return the resulting serialization
9536
	return s.join( "&" ).replace( r20, "+" );
9537
};
9538

  
9539
jQuery.fn.extend({
9540
	serialize: function() {
9541
		return jQuery.param( this.serializeArray() );
9542
	},
9543
	serializeArray: function() {
9544
		return this.map(function() {
9545
			// Can add propHook for "elements" to filter or add form elements
9546
			var elements = jQuery.prop( this, "elements" );
9547
			return elements ? jQuery.makeArray( elements ) : this;
9548
		})
9549
		.filter(function() {
9550
			var type = this.type;
9551
			// Use .is(":disabled") so that fieldset[disabled] works
9552
			return this.name && !jQuery( this ).is( ":disabled" ) &&
9553
				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
9554
				( this.checked || !rcheckableType.test( type ) );
9555
		})
9556
		.map(function( i, elem ) {
9557
			var val = jQuery( this ).val();
9558

  
9559
			return val == null ?
9560
				null :
9561
				jQuery.isArray( val ) ?
9562
					jQuery.map( val, function( val ) {
9563
						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
9564
					}) :
9565
					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
9566
		}).get();
9567
	}
9568
});
9569

  
9570

  
9571
// Create the request object
9572
// (This is still attached to ajaxSettings for backward compatibility)
9573
jQuery.ajaxSettings.xhr = window.ActiveXObject !== undefined ?
9574
	// Support: IE6+
9575
	function() {
9576

  
9577
		// XHR cannot access local files, always use ActiveX for that case
9578
		return !this.isLocal &&
9579

  
9580
			// Support: IE7-8
9581
			// oldIE XHR does not support non-RFC2616 methods (#13240)
9582
			// See http://msdn.microsoft.com/en-us/library/ie/ms536648(v=vs.85).aspx
9583
			// and http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9
9584
			// Although this check for six methods instead of eight
9585
			// since IE also does not support "trace" and "connect"
9586
			/^(get|post|head|put|delete|options)$/i.test( this.type ) &&
9587

  
9588
			createStandardXHR() || createActiveXHR();
... Ce différentiel a été tronqué car il excède la taille maximale pouvant être affichée.