diff --git a/.docker/Dockerfile b/.docker/Dockerfile deleted file mode 100644 index b8e4519..0000000 --- a/.docker/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM python -RUN pip install redis numpy scipy pyserial - -RUN mkdir -p /project -WORKDIR /project -CMD python main.py \ No newline at end of file diff --git a/.docker/LJ.conf.docker b/.docker/LJ.conf.docker deleted file mode 100644 index e36e521..0000000 --- a/.docker/LJ.conf.docker +++ /dev/null @@ -1,119 +0,0 @@ -[General] -lasernumber = 1 -debug = 0 -rediserverip = redis -wwwip = 10.0.2.3 -nozoscip = 127.0.0.1 -oscserverip = 127.0.0.1 -autostart = artnet -wstype = ws -wsport = 9001 - -[laser0] -color = -1 -type = LOCAL -dac_family = helios -ip = 127.0.0.1 -kpps = 10000 -centerx = 7.0 -centery = 61.0 -zoomx = 312.0 -zoomy = 1039.0 -sizex = 32000.0 -sizey = 32000.0 -finangle = -0.02263757042605427 -intens = 255.0 -red = 100 -green = 100 -blue = 100 -swapx = -1 -swapy = -1 -lsteps = [ (1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)] -warpdest = [[-1500., 1500.], - [ 1500., 1500.], - [ 1500.,-1500.], - [-1500.,-1500.]] - -[laser1] -color = -1 -type = LOCAL -dac_family = helios -ip = 192.168.2.5 -kpps = 25000 -centerx = 0 -centery = 0 -zoomx = 50.0 -zoomy = 50.0 -sizex = 32000 -sizey = 32000 -finangle = 0.0 -intens = 255 -red = 100 -green = 100 -blue = 100 -swapx = -1 -swapy = -1 -lsteps = [ (1.0, 2),(0.25, 1), (0.75, 1), (1.0, 5)] -warpdest = [[-1500., 1500.], - [ 1500., 1500.], - [ 1500.,-1500.], - [-1500.,-1500.]] - -[laser2] -color = -1 -type = LUKE400 -dac_family = helios -ip = 192.168.2.6 -kpps = 25000 -centerx = 0 -centery = 0 -zoomx = 50.0 -zoomy = 50.0 -sizex = 32000 -sizey = 32000 -finangle = 0.0 -intens = 255 -red = 100 -green = 100 -blue = 100 -swapx = -1 -swapy = -1 -lsteps = [(1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)] -warpdest = [[-1500., 1500.], - [ 1500., 1500.], - [ 1500.,-1500.], - [-1500.,-1500.]] - -[laser3] -color = -1 -type = LUKE400 -dac_family = helios -ip = 192.168.1.5 -kpps = 25000 -centerx = 0 -centery = 0 -zoomx = 50.0 -zoomy = 50.0 -sizex = 32000 -sizey = 32000 -finangle = 0.0 -intens = 255 -red = 100 -green = 100 -blue = 1000 -swapx = -1 -swapy = -1 -lsteps = [(1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)] -warpdest = [[-1500., 1500.], - [ 1500., 1500.], - [ 1500.,-1500.], - [-1500.,-1500.]] - -[plugins] -plugins = { - "aurora": {"OSC": 8090, "command": "python3 plugins/aurora/aurora.py", "display": True}, - "artnet": {"OSC": 8009, "command": "python3 libs3/artnet.py", "display": False}, - "square": {"OSC": 8013, "command": "python3 plugins/square.py", "display": True}, - "custom1": {"OSC": 8014, "command": "python3 plugins/custom1.py", "display": True} - } - diff --git a/.docker/config.js.docker b/.docker/config.js.docker deleted file mode 100644 index 402a4ac..0000000 --- a/.docker/config.js.docker +++ /dev/null @@ -1 +0,0 @@ -websocket_uri = "ws://127.0.0.1:9001/" \ No newline at end of file diff --git a/.gitignore b/.gitignore index 52f1c70..6fdac33 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ .*swp* *__pycache__ www/config.js +.venv/ .idea diff --git a/LJ.conf b/LJ.conf index 598df2f..2467c11 100644 --- a/LJ.conf +++ b/LJ.conf @@ -1,32 +1,28 @@ [General] lasernumber = 1 -debug = 0 -rediserverip = 0.0.0.0 -wwwip = 192.168.1.14 +debug = 2 +ljayserverip = 0.0.0.0 +wwwip = 127.0.0.1 nozoscip = 127.0.0.1 -oscserverip = 127.0.0.1 -autostart = artnet +bhoroscip = 127.0.0.1 +autostart = wstype = ws wsport = 9001 [laser0] +dac_family = helios color = -1 -type = LOCAL -dac_family = etherdream +type = DS1000 ip = 127.0.0.1 -kpps = 10000 -centerx = 7.0 -centery = 61.0 -zoomx = 312.0 -zoomy = 1039.0 -sizex = 32000.0 -sizey = 32000.0 -finangle = -0.02263757042605427 -intens = 255.0 -red = 100 -green = 100 -blue = 100 -swapx = -1 +kpps = 25000 +centerx = 0 +centery = 0 +zoomx = 50.0 +zoomy = 50.0 +sizex = 32000 +sizey = 32000 +finangle = 0.0 +swapx = 1 swapy = -1 lsteps = [ (1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)] warpdest = [[-1500., 1500.], @@ -37,7 +33,6 @@ warpdest = [[-1500., 1500.], [laser1] color = -1 type = LOCAL -dac_family = helios ip = 192.168.2.5 kpps = 25000 centerx = 0 @@ -47,10 +42,6 @@ zoomy = 50.0 sizex = 32000 sizey = 32000 finangle = 0.0 -intens = 255 -red = 100 -green = 100 -blue = 100 swapx = -1 swapy = -1 lsteps = [ (1.0, 2),(0.25, 1), (0.75, 1), (1.0, 5)] @@ -62,7 +53,6 @@ warpdest = [[-1500., 1500.], [laser2] color = -1 type = LUKE400 -dac_family = helios ip = 192.168.2.6 kpps = 25000 centerx = 0 @@ -72,10 +62,6 @@ zoomy = 50.0 sizex = 32000 sizey = 32000 finangle = 0.0 -intens = 255 -red = 100 -green = 100 -blue = 100 swapx = -1 swapy = -1 lsteps = [(1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)] @@ -87,7 +73,6 @@ warpdest = [[-1500., 1500.], [laser3] color = -1 type = LUKE400 -dac_family = helios ip = 192.168.1.5 kpps = 25000 centerx = 0 @@ -97,10 +82,6 @@ zoomy = 50.0 sizex = 32000 sizey = 32000 finangle = 0.0 -intens = 255 -red = 100 -green = 100 -blue = 1000 swapx = -1 swapy = -1 lsteps = [(1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)] diff --git a/examples/Processing/mousedot/.DS_Store b/Pd/.DS_Store similarity index 68% rename from examples/Processing/mousedot/.DS_Store rename to Pd/.DS_Store index c384692..31a0d67 100644 Binary files a/examples/Processing/mousedot/.DS_Store and b/Pd/.DS_Store differ diff --git a/Pd/LJsender.pd b/Pd/LJsender.pd new file mode 100644 index 0000000..82c3bd3 --- /dev/null +++ b/Pd/LJsender.pd @@ -0,0 +1,23 @@ +#N canvas 468 143 709 527 10; +#X msg 60 237 disconnect; +#X floatatom 27 294 0 0 0 0 - - -; +#X text 22 315 Outlet is nonzero if connection is open \, zero otherwise. +; +#X msg 37 60 send mytext trololo; +#X obj 28 267 netsend 1; +#X msg 51 125 send /pl/0/0 (150 2300 65280) (170 170 65280) (230 170 +65280) (210 230 65280) (150 230 65280); +#X text 258 29 LJ Sender; +#X msg 46 84 send /pl/0/0 150 2300 65280 170 170 65280 230 170 65280 +210 230 65280 150 230 65280; +#X msg 26 39 connect 127.0.0.1 8083; +#X msg 58 165 send /pl/0/0 [(150.0:230.0:65280) (170.0:170.0:65280) +(230.0:170.0:65280) (210.0:230.0:65280) (150.0:230.0:65280)]; +#X text 444 174 <- le mieux; +#X connect 0 0 4 0; +#X connect 3 0 4 0; +#X connect 4 0 1 0; +#X connect 5 0 4 0; +#X connect 7 0 4 0; +#X connect 8 0 4 0; +#X connect 9 0 4 0; diff --git a/Pd/ljpd.py b/Pd/ljpd.py new file mode 100644 index 0000000..67c97d1 --- /dev/null +++ b/Pd/ljpd.py @@ -0,0 +1,106 @@ +#!/usr/bin/python3 +# -*- coding: utf-8 -*- +# -*- mode: Python -*- + +''' + +LJPD + +Udp server to redis +v0.1b + +''' +import traceback, time +import argparse +import socket +import _thread +import redis + + +print() +print ("LJPD") +print ("Arguments parsing if needed...") +argsparser = argparse.ArgumentParser(description="dumpUDP v0.1b help mode") +argsparser.add_argument("-i","--IP",help="IP to bind to (0.0.0.0 by default)", type=str) +argsparser.add_argument("-p","--port",help="UDP port to bind to (9000 by default)", type=str) +argsparser.add_argument("-l","--lj",help="LJ IP address (127.0.0.1 by default)", type=str) + + +args = argsparser.parse_args() + +# LJ server IP name +if args.IP: + ljIP = lj.IP +else: + ljIP = "127.0.0.1" + +# Server +if args.IP: + serverIP = args.IP +else: + serverIP = "0.0.0.0" + +# ORCA destination device +if args.port: + UDPORT = int(args.port) +else: + UDPORT = 8083 + +print("Connecting to Redis...") + +r = redis.StrictRedis(host= ljIP, port=6379, db=0) + +def GetTime(): + return time.strftime("%a, %d %b %Y %H:%M:%S", time.localtime()) + + +def udp_thread(): + + while True: + + payload, client_address = sock.recvfrom(1024) + udpath = payload.decode('utf_8') + print(GetTime(),"From", str(client_address),"got", udpath ) + #r.set('/pl/0/0', "/pl/"+str(clientnumber)+"/") + #print(udpath[0:1], " ",udpath[1:2], " ",udpath[2:3], " ",udpath[3:4], " " ) + + + # Reply to client + bytesToSend = str.encode("ACK :"+str(payload)) + serverAddressPort = (client_address, UDPORT) + bufferSize = 1024 + #sock.sendto(bytesToSend, serverAddressPort) + sock.sendto(bytesToSend, client_address) + + + time.sleep(0.005) + + + +def Start(serverIP, UDPORT): + global sock + + sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + server = ( serverIP,UDPORT) + sock.bind(server) + _thread.start_new_thread(udp_thread, ()) + + + +# Launch server in another thread. +print("Launching UDP Server", serverIP,':', UDPORT) +Start(serverIP, UDPORT) + + +# Do something else +try: + + while True: + time.sleep(0.005) + +except Exception: + traceback.print_exc() + +finally: + print("") + print("ljpd stopped.") \ No newline at end of file diff --git a/README.md b/README.md index 2dd2529..cf94189 100644 --- a/README.md +++ b/README.md @@ -5,19 +5,19 @@ By Sam Neurohack, Loloster, Cocoa LICENCE : CC BY -![LJ](https://www.protonphoton.art/ljweb/images/lj2.png) +![LJ](https://www.teamlaser.fr/lj/images/lj2.png) LJ is like a video projector where you fire images and forget. Lasers are dangerous : you can really fire real world objects. That's why you really shouldn't forget your lasers and go drink a beer. -As content creator, it's damn easy to send frames : LJ do the heavy lifting for up to 4 lasers live actions. Think creative like games, Laser "battles", planetarium, sharing available lasers in demoparties for competition,... + As content creator, it's damn easy to send frames : LJ do the heavy lifting for up to 4 lasers live actions. Think creative like games, Laser "battles", planetarium, sharing available lasers in demoparties for competition,... LJ has 5 main components : -- Frame *generators* to one or more lasers. You probably want to use/code a 'generator'. Generators can be program "plugins" managed by LJ or you can feed the "connectors" directly. Remember with laser : *one frame = one polyline*, like in LOGO. +- Frame *generators* to one or more lasers. Generators can be program "plugins" managed by LJ or you can feed the "connectors" directly. Remember with laser : *one frame = one polyline*, like in LOGO. - A "tracer" per etherdream/laser that take its given point list, correct geometry, recompute in laser controller coordinates, send it to its controller and report its status to the "manager". - A "manager" that talk to all tracers (which point lists to draw, new geometry correction,...), handle IOs (webui functions, OSC commands,...) and plugins. -- A web GUI in html, css, and vanilla js. *Yes, there is a builtin simulator*, so you can create without actual lasers. This UI can be used in a tablet, computer, whatever. If you want a webserver, it's "bring your own". Locally, you can open www directory and load html files. -- Frame *connectors*. If you don't want to talk directly to the network database (redis) for your pointlists, use a 'connector'. Each "tracer" is instructed to get one of the avalaible pointlist in redis. +- A web GUI in html, css, and vanilla js. *Yes, there is a builtin simulator* so you can create without actual lasers. This UI can be used in a tablet, computer, whatever. You can open www directory and load html files. To not mess with user computer, it's "bring your own webserver". +- Frame *connectors* for pointlists, if you don't want to talk directly to the network available database (redis). Each "tracer" is instructed to get one of the avalaible pointlist in redis. "Frames connectors" are : @@ -32,12 +32,11 @@ All derivatives you can think of like : - Netlogo (text outputs are piped to clitools) - ... - # # Scenes and pointlists. # -![Scenes](https://www.protonphoton.art/ljweb/images/scenes.png) +![Scenes](https://www.teamlaser.fr/lj/images/scenes.png) LJ accept up to 4 groups = virtual "scenes" of 4 "pointlists" each (= one pointlist per laser), so up to 16 pointlists can be sent to redis at anytime from anywhere in the network. The idea behind this is to easily share actual lasers. Imagine in demo party : @@ -155,19 +154,7 @@ an ISO is available here : https://www.tmplab.org/wp-content/lazer-iso.zip ## Postinstall for all : -You probably want redis bound to all network interfaces : - -- locate redis.conf - -redis-cli INFO server | grep config_file - -Macos : -arm : /opt/homebrew/etc/ -intel : /usr/local/etc/redis.conf - -- comment the bind line - -- redis-cli CONFIG SET protected-mode no +You probably want redis bound to all network interfaces : comment the bind line in /etc/redis/redis.conf and restart it. The configure script to enter your etherdreams IPs,... is launched during install. You can use anytime, i.e if your network/etherdream setup change : python3 configure.py @@ -176,6 +163,7 @@ The configure script to enter your etherdreams IPs,... is launched during instal A webserver is useful if you want to use the webUI remotely. Bring Your Own Webserver. + # # To run # @@ -233,6 +221,17 @@ redis-cli -h redisserverIP monitor + +# +# Plugin +# + +A "plugin" is a software that send any number of pointlist(s) to redis and . LJ comes with different plugins in python 3 : + +- artnet receiver : port 6454 +- Aurora : Fill the input form and it's displayed. One word / laser. +- custom1 and square.py. + # # Client Side : Program your own "plugin" # @@ -247,18 +246,6 @@ The server approach is based on redis, so you can write and run your laser clien Currently the WebUI (www/index.html) is static. - -# -# Plugins -# - - LJ comes with different plugins in python 3 : - -- artnet receiver : port 6454 -- custom1 and square.py are programming examples. -- Aurora : Display basic shape/text. Say you want a word in front of starfield. For text, fill the input form and it's displayed. One word / laser. - - # # Client side dope mode for python 3 generators : How to use lj23 # @@ -279,7 +266,7 @@ Dest1 = lj.DestObject('1', 1, True, 0 , 1, 1) Dest1 will also send layer 0 points to scene 1, laser 1 -![Layers](https://www.protonphoton.art/ljweb/images/layer.png) +![Layers](https://www.teamlaser.fr/lj/images/layer.png) 2/ Different layers to different lasers ? @@ -370,17 +357,13 @@ Our "always working solution", as we regularly move our gear for different venue By default LJ uses on 127.0.0.1 (localhost) : - A websocket on port 9001 for WebUI interaction. -- The redis server on port 6379 ('RediServerIP'). +- The redis server on port 6379 ('ljayserverip'). - An OSC server on port 8002 for remote control via OSC and plugins. - Some OSC clients defined in LJ.conf to forward commands to defined plugins. The need for a dedicated computer to act as "laser server" usually depends on how many lasers you want to control and your main computer load. If you seen flickering with small point lists, try the dedicated computer idea and/or stop process interfering like redis monitoring,... - -LJ is meant to be on a *closed wired IP network* dedicated for laser purpose. There is no https, authentication, account management, security... Add a wifi/internet bridge at your own risk : some dude can scan your network and ddos LJ server and/or etherdream controllers ruining everything. You're responsible for networking. Recommended setup is computers and etherdreams are connected to a gigabit switch. - - # # Glitch art # @@ -394,14 +377,12 @@ long distance has 3 steps : (0.25, 3), (0.75, 3), (1.0, 10) : means an extra poi For glitching experience you can change resampling strategy live with "resampler" command. See command reference. [short distance, long distance] = [(1.0, 8),(0.25, 3), (0.75, 3), (1.0, 10)] - # # Colors # LJ is compatible with TLL and analog modulation. Each point color is an int value, wich is simply the hex color in decimal. Example : white = #fffff = 16777215 - # # Ether dream DAC # @@ -425,7 +406,6 @@ See links section for great etherdream managing tools. About hardware setup, especially if you have several lasers : ILDA cables are insanely expensive. For each DAC, buy a very small ILDA cable and RJ 45 cable, all DAC goes to a local switch and only one long cable to your You may also consider the Power Over Ethernet 'POE' option. Buy a POE splitter and connect everything to the ether dream fixed near your laser. You can have then a simple and very long network cable and use a Power Over Ethernet injector or switch close to the driving computer. Beware some vendors use 24V POE Injector : POE injectors and splitters must match. - # # Ethertools directory # @@ -434,44 +414,17 @@ About hardware setup, especially if you have several lasers : ILDA cables are in - Sitter will display all real etherdreams available on the network and their state (playing, idle,...). python sitter.py or use the compiled version (for macOS). - Talk : will draw a 4 colors square. python3 talk3.py - -# -# Settings -# - -(Doc in Progress) - -Settings webui is self explanatory. As LJ is controlled via OSC you can build your own interface (see command reference) - - -You can use a midi controller (16 knobs recommended) to change settings. The midi controller like beatstep can be connected to any "computer" in laser IP network. On this computer, run Miredis to relay events to LJ server computer (python3 miredeis.py -q 8002 -o ljserverip) - -Midi implementation : - -- Midi channel is used as laser selection : midi channel 0 is for laser 0,... -- Midi CC (control change) are used to change all LJ parameters. -- See miredis.json to see what cc number control what parameter or change them to your taste. -- Miredis : https://git.interhacker.space/protonphoton/miredis.git - - - -Software controllers examples : - -- Midi tools (https://mountainutilities.eu/miditools) -- Lightning DmxControl. Select Map midi in menu (https://lightning-dmxcontrol.com/lightning-dmxcontrolpro) -- TouchOSC template (LJpad.touchosc in templates directory) - - # # Links # + Generic : ![LJ website](https://www.teamlaser.tk/lj) -![Interactive lasers](https://www.protonphoton.art/ljweb/images/display.png) +![Interactive lasers](https://www.teamlaser.fr/lj/images/display.png) ![Laser Faq](https://www.repairfaq.org/sam/lasersam.htm) @@ -506,7 +459,6 @@ python3 talk3.py -i etherdreamIP The reset button copy the LJ_template.conf to LJ.conf. - # # LJ commands reference # @@ -540,10 +492,6 @@ Every point must be : (x,y,color). Color is the hex color #FFFFFF in decimal. /kpps/lasernumber value : live change of kpps /intens/lasernumber value : increase/decrease intensity for given laser by value. Needs analog modulation laser -/red/lasernumber value (0-255) : -/green/lasernumber value (0-255) : -/blue/lasernumber value (0-255) : -/intensity/lasernumber value (0-255) : /client or /noteon < 8 : change client displayed for Current Laser 23 < /noteon < 32 : PL number displayed on webUI simulator @@ -552,8 +500,6 @@ Every point must be : (x,y,color). Color is the hex color #FFFFFF in decimal. /black/lasernumber value (0 or 1) : set given laser to black on or off -/emergency value (0 or 1) : set all lasers to black on or off - /ip/lasernumber value : change given laser IP i.e '192.168.1.1' /resampler/lasernumber lsteps : change resampling strategy (see glitch art), for given laser @@ -575,7 +521,7 @@ and second line (/line1 or /redline1). Examples of "uicommand arg" : /redline1 Error -![LJ Display](https://www.protonphoton.art/ljweb/images/display.png) +![LJ Display](https://www.teamlaser.fr/lj/images/display.png) Leds colors for each DACs : @@ -598,12 +544,11 @@ FULL -> orange INVALID -> yellow - # # LJ python3 plugin command reference # -See beginning of ljlayers.py in libs3 +See beginning of lj23layers.py in libs3 -![LJ](https://www.protonphoton.art/ljweb/images/calig.png) \ No newline at end of file +![LJ](https://www.teamlaser.fr/lj/images/calig.png) \ No newline at end of file diff --git a/clitools/exports/tosimu.py b/clitools/exports/tosimu.py deleted file mode 100644 index 7bd0a3a..0000000 --- a/clitools/exports/tosimu.py +++ /dev/null @@ -1,273 +0,0 @@ -#!/usr/bin/python3 -# -*- coding: utf-8 -*- -# -*- mode: Python -*- - -''' -tosimu -exporter to simulocal page in www. -v0.1b - -''' -from __future__ import print_function -import websocket -import time -import argparse -import traceback -import sys -from websocket_server import WebsocketServer - -try: - import thread -except ImportError: - import _thread as thread - -name = "exports::tosimu" - -def debug(*args, **kwargs): - if( verbose == False ): - return - print(*args, file=sys.stderr, **kwargs) - - -argsparser = argparse.ArgumentParser(description="toWS v0.1b help mode") -argsparser.add_argument("-v","--verbose",action="store_true",help="Verbose output") -argsparser.add_argument("-s","--server",help="WS server IP (127.0.0.1 by default)", type=str) -argsparser.add_argument("-p","--port",help="WS port to bind to (9001 by default)", type=str) -argsparser.add_argument("-k","--key",help="Redis key to update",default="0",type=str) -args = argsparser.parse_args() - -key = args.key - -if args.verbose: - verbose = True -else: - verbose = False - -if args.server: - serverIP = args.server -else: - serverIP = "127.0.0.1" - -if args.port: - wsPORT = args.port -else: - wsPORT = 9001 - -debug("") -debug("tosimu v0.1b") - -points0 = "[(150.0, 230.0, 65280), (170.0, 170.0, 65280), (230.0, 170.0, 65280), (210.0, 230.0, 65280), (150.0, 230.0, 65280)]" -points1 = "[(180.0, 230.0, 65280), (200.0, 170.0, 65280), (180.0, 230.0, 65280)]" -points2 = "[(170.0, 190.0, 65280), (200.0, 170.0, 65280), (230.0, 190.0, 65280), (230.0, 200.0, 65280), (170.0, 230.0, 65280), (230.0, 230.0, 65280)]" -points3 = "[(170.0, 170.0, 65280), (200.0, 170.0, 65280), (230.0, 190.0, 65280), (200.0, 200.0, 65280), (230.0, 210.0, 65280), (200.0, 230.0, 65280), (170.0, 230.0, 65280)]" -points = [points0, points1, points2, points3] - -LaserNumber = 1 -SceneNumber = 0 -Laser = 0 - - -# Change current laser. -def NoteOn(note): - debug("NoteOn", note) - - # Change laser client - if note < 8: - - Laser = note - debug("Current Laser switched to", Laser) - sendWSall("/status Laser " + str(Laser)) - sendWSall("/simul" +" "+ points[Laser]) - - # Change PL displayed on webui - if note > 23 and note < 32: - if note - 24 > LaserNumber -1: - debug("Only",LaserNumber,"lasers asked, you dum ass !") - sendWSall("/redstatus No Laser"+str(note-24)) - sendWSall("/laser "+str(LaserNumber-1)) - sendWSall("/simul" +" "+ points[LaserNumber-1]) - else: - Laser = note -24 - debug("Current Laser switched to", Laser) - sendWSall("/status Laser " + str(Laser)) - sendWSall("/simul" +" "+ points[Laser]) - -# -# Websocket server -# - - -# Called for every WS client connecting (after handshake) -def new_client(client, wserver): - - - debug("WS server got new client connected and was given id %d" % client['id']) - sendWSall("/status Hello " + str(client['id'])) - sendWSall("/laser "+str(0)) - sendWSall("/lack/" + str(0) + " 3") - sendWSall("/lstt/" + str(0) + " 3") - sendWSall("/simul" +" "+ points[0]) - - -# Called for every WS client disconnecting -def client_left(client, wserver): - - try: - debug("WS server had client(%d) disconnected" % client['id']) - - except: - debug("Something weird is coming from",client,"on the wire...") - pass - - - -# Called for each WS received message. -def message_received(client, wserver, message): - - #if len(message) > 200: - # message = message[:200]+'..' - - oscpath = message.split(" ") - #print "WS Client", client['id'], "said :", message, "splitted in an oscpath :", oscpath - #if( verbose == True ): - # debug("WS server's client", client['id'], "said :", message) - - if message[0:5] == "/simu": - debug("WS server sending to simu page :",message) - sendWSall(message) - - if message[0:7] == "/noteon": - oscpath = message.split(" ") - debug("WS server got new laser", int(oscpath[1])) - NoteOn(int(oscpath[1])) - - -def sendWSall(message): - if ( verbose == True ): - debug("WS server is sending to all : %s" % (message)) - wserver.send_message_to_all(message) - - -def LaunchServer(*args): - global wserver - - try: - - # Websocket server - wserver = WebsocketServer(wsPORT,host=serverIP) - - debug("Launching Websocket server...") - debug("at", serverIP, "port",wsPORT) - wserver.set_fn_new_client(new_client) - wserver.set_fn_client_left(client_left) - wserver.set_fn_message_received(message_received) - debug("LJ local server running...") - debug("") - - # websocket server loop - wserver.run_forever() - - - except EOFError: - debug("break")# no more information - - finally: - - debug("sendWS terminating...") - - - -# -# CLI websocket client -> WS server (nanoLJ) -> webpage -# - -def on_message(ws, message): - pass - #debug("CLI WS client received and dropped "+message) - -def on_error(ws, error): - debug("CLI WS client got error :"+error) - -def on_close(ws): - debug("### CLI WS client WS closed ###") - -def on_open(ws): - - def run(*args): - - try: - while True: - line = sys.stdin.readline() - if line == "": - time.sleep(0.01) - - #debug("CLI string", line) - line = line.rstrip('\n') - line=line[1:-1] - line = line.replace("[",'(') - line = line.replace("]",')') - #debug(line) - line = "[{}]".format(line) - debug("CLI proccess sending : /simul" +" "+ line) - #sendWSall("/simul" +" "+ str(points[laserid].decode('ascii'))) - ws.send("/simul "+line) - #debug("exports::tosimuCLIent "+str(key)+" "+line) - - except EOFError: - debug("tosimu break")# no more information - - finally: - ws.close() - debug("tosimu WS terminating...") - - - thread.start_new_thread(run, ()) - -def handle_timeout(self): - self.timed_out = True - - - - -# -# Launch WS server and CLI client -# - -if __name__ == "__main__": - - try: - - # Websocket server - thread.start_new_thread(LaunchServer, ()) - - # CLI Websocket client - debug("Launching tosimu CLI websocket client...") - #websocket.enableTrace(True) - websocket.enableTrace(False) - ws = websocket.WebSocketApp("ws://"+str(serverIP)+":"+str(wsPORT), - on_message = on_message, - on_error = on_error, - on_close = on_close) - ws.on_open = on_open - ws.run_forever() - - except Exception: - debug("tosimu Exception") - traceback.print_exc() - -''' -if __name__ == "__main__": - websocket.enableTrace(True) - ws = websocket.WebSocketApp("ws://"+str(serverIP)+":"+str(wsPORT), - on_message = on_message, - on_error = on_error, - on_close = on_close) - ws.on_open = on_open - ws.run_forever() -''' - - - - - - diff --git a/clitools/generators/example.py b/clitools/generators/example.py index d8ee010..b1ad01c 100755 --- a/clitools/generators/example.py +++ b/clitools/generators/example.py @@ -29,7 +29,7 @@ sys.path.append(ljpath +'/../../libs/') sys.path.append(ljpath +'/libs/') print(ljpath+'/../libs/') -import lj +import lj23layers as lj sys.path.append('../libs') import math diff --git a/configure.py b/configure.py index ab05edc..a18e6ac 100644 --- a/configure.py +++ b/configure.py @@ -40,7 +40,7 @@ config = configparser.ConfigParser() config.read(gstt.ConfigName) qList = [ - {"q":"The server IP address ","c":"General","k":"RediServerIP"}, + {"q":"The server IP address ","c":"General","k":"ljayserverip"}, {"q":"The IP address for webui ","c":"General","k":"wwwip"}, {"q":"Websocket type (ws or wss?) ","c":"General","k":"wstype"}, {"q":"Websocket port ","c":"General","k":"wsport"}, diff --git a/configureUI.py b/configureUI.py deleted file mode 100755 index 5dd613e..0000000 --- a/configureUI.py +++ /dev/null @@ -1,298 +0,0 @@ - -#!/usr/bin/python3 -# -*- coding: utf-8 -*- -# -*- mode: Python -*- -''' -LJ -v0.7.0 - -Config UI - -brew install python-tk - -LICENCE : CC -''' - -import os -import configparser as cp -import tkinter as tk -import configparser -from libs3 import gstt -import ast -import numpy as np -import fileinput -from shutil import copyfile - -config = configparser.ConfigParser() -config.read(gstt.ConfigName) - -ljpath = r'%s' % os.getcwd().replace('\\','/') - -def Write(): - - print('Saving ',gstt.ConfigName) - updateJSConfig(config) - config.set('General', 'lasernumber', lasernumberVal.get()) - config.set('General', 'rediserverip', rediserveripVal.get()) - config.set('General', 'wwwip', wwwipVal.get()) - config.set('General', 'oscserverip', str(gstt.oscIPin)) - config.set('General', 'nozoscip', str(gstt.nozoscIP)) - config.set('General', 'debug',debugVal.get()) - config.set('General', 'autostart', autostartVal.get()) - - for i in range(gstt.LaserNumber): - laser = 'laser' + str(i) - config.set(laser, 'ip', str(gstt.lasersIPS[i])) - config.set(laser, 'type', str(gstt.lasertype[i])) - config.set(laser, 'dac_family', str(gstt.dacs[i])) - config.set(laser, 'kpps', str(gstt.kpps[i])) - config.set(laser, 'centerx', str(gstt.centerX[i])) - config.set(laser, 'centery', str(gstt.centerY[i])) - config.set(laser, 'zoomx', str(gstt.zoomX[i])) - config.set(laser, 'zoomy', str(gstt.zoomY[i])) - config.set(laser, 'sizex', str(gstt.sizeX[i])) - config.set(laser, 'sizey', str(gstt.sizeY[i])) - config.set(laser, 'finangle', str(gstt.finANGLE[i])) - config.set(laser, 'swapx', str(gstt.swapX[i])) - config.set(laser, 'swapy', str(gstt.swapY[i])) - config.set(laser, 'warpdest', np.array2string(gstt.warpdest[i], precision=2, separator=',',suppress_small=True)) - config.write(open(gstt.ConfigName,'w')) - - -def Read(): - - gstt.LaserNumber = config.getint('General', 'lasernumber') - gstt.RediServerIP= config.get('General', 'rediserverip') - gstt.wwwIP= config.get('General', 'wwwip') - gstt.oscIPin = config.get('General', 'oscserverip') - gstt.nozoscIP = config.get('General', 'nozoscip') - gstt.debug = config.get('General', 'debug') - gstt.plugins = ast.literal_eval(config.get('plugins', 'plugins')) - gstt.autostart = config.get('General', 'autostart') - - for i in range(4): - laser = 'laser' + str(i) - gstt.lasersIPS[i]= config.get(laser, 'ip') - gstt.lasertype[i]= config.get(laser, 'type') - gstt.kpps[i] = config.getint(laser, 'kpps') - gstt.dacs[i] = config.get(laser, 'dac_family') - #gstt.lasersPLcolor[i] = config.getint(laser, 'color') - gstt.centerX[i]= config.getfloat(laser, 'centerx') - gstt.centerY[i] = config.getfloat(laser, 'centery') - gstt.zoomX[i] = config.getfloat(laser, 'zoomx') - gstt.zoomY[i] = config.getfloat(laser, 'zoomy') - gstt.sizeX[i] = config.getfloat(laser, 'sizex') - gstt.sizeY[i] = config.getfloat(laser, 'sizey') - gstt.finANGLE[i] = config.getfloat(laser, 'finangle') - gstt.swapX[i] = config.getint(laser, 'swapx') - gstt.swapY[i] = config.getint(laser, 'swapy') - gstt.lsteps[i] = ast.literal_eval(config.get(laser, 'lsteps')) - gstt.warpdest[i]= np.array(ast.literal_eval(config.get(laser, 'warpdest'))) - -# -# UI -# - -def UIelements(currentLaser): - - tk.Label(UI, text='Lasers', fg='#FFFFB0',width = 10).grid(row=0, column=0) - tk.Label(UI, text='LJ IP',fg='#FFFF90').grid(row=0, column=2) - tk.Label(UI, text='www IP',fg='#FFFF80').grid(row=1, column=0) - tk.Label(UI, text='debug',fg='#FFFF90').grid(row=1, column=2) - tk.Label(UI, text='autostart',fg='#FFFF90').grid(row=2, column=0) - - tk.Label(UI, text='Laser').grid(row=3, column=0) - tk.Label(UI, text='IP').grid(row=3, column=2) - tk.Label(UI, text='type').grid(row=4, column=0) - tk.Label(UI, text='dac').grid(row=4, column=2) - tk.Label(UI, text='kpps').grid(row=5, column=0) - tk.Label(UI, text='finangle').grid(row=5, column=2) - tk.Label(UI, text='centerx').grid(row=6, column=0) - tk.Label(UI, text='centery').grid(row=6, column=2) - tk.Label(UI, text='zoomx').grid(row=7, column=0) - tk.Label(UI, text='zoomy').grid(row=7, column=2) - tk.Label(UI, text='sizex').grid(row=8, column=0) - tk.Label(UI, text='sizey').grid(row=8, column=2) - tk.Label(UI, text='swapx').grid(row=9, column=0) - tk.Label(UI, text='swapy').grid(row=9, column=2) - tk.Label(UI, text='lsteps').grid(row=10, column=0) - tk.Label(UI, text='warpdest').grid(row=10, column=2) - tk.Label(UI, text='color').grid(row=11, column=0) - lasernumberVal.set(str(gstt.LaserNumber)) - rediserveripVal.set(str(gstt.RediServerIP)) - wwwipVal.set(str(gstt.wwwIP)) - debugVal.set(str(gstt.debug)) - autostartVal.set(str(gstt.autostart)) - laserVal.set(str(currentLaser)) - - lasernumber = tk.Entry(UI,fg='#FFFFA0', textvariable = lasernumberVal) - rediserverip = tk.Entry(UI,textvariable =rediserveripVal) - wwwip = tk.Entry(UI, textvariable =wwwipVal) - oscserverip = tk.Entry(UI) - nozoscip = tk.Entry(UI) - debug = tk.Entry(UI, textvariable =debugVal) - autostart = tk.Entry(UI, textvariable =autostartVal) - dac = tk.Entry(UI, textvariable =dacVal) - laser = tk.Entry(UI, textvariable =laserVal) - #laser.bind('', validate(laserVal.get())) - #laser.bind('', validate(laserVal.get())) - laser.bind('', (lambda _: validate(laserVal.get()))) - laser.bind('', (lambda _: validate(laserVal.get()))) - - #ipVal = tk.StringVar() - ip = tk.Entry(UI, textvariable =ipVal) - ip.bind('', (lambda _: Update('ip', ipVal.get()))) - type = tk.Entry(UI, textvariable =typeVal) - dac = tk.Entry(UI, textvariable =dacVal) - kpps = tk.Entry(UI, textvariable =kppsVal) - color = tk.Entry(UI, textvariable =colorVal) - centerx = tk.Entry(UI, textvariable =centerxVal) - centery = tk.Entry(UI, textvariable =centeryVal) - zoomxVal.set(str(gstt.zoomX[currentLaser])) - zoomx = tk.Entry(UI, textvariable =zoomxVal) - zoomy = tk.Entry(UI, textvariable =zoomyVal) - sizexVal.set(str(gstt.sizeX[currentLaser])) - sizex = tk.Entry(UI, textvariable =sizexVal) - sizey = tk.Entry(UI, textvariable =sizeyVal) - finangle = tk.Entry(UI, textvariable =finangleVal) - swapx = tk.Entry(UI, textvariable =swapxVal) - swapy = tk.Entry(UI, textvariable =swapyVal) - lsteps = tk.Entry(UI, textvariable =lstepsVal) - warpdest = tk.Entry(UI, textvariable =warpdestVal) - - lasernumber.grid(row=0, column=1,padx=10) - rediserverip.grid(row=0, column=3,padx=10) - wwwip.grid(row=1, column=1) - debug.grid(row=1, column=3) - autostart.grid(row=2, column=1) - - laser.grid(row=3, column=1) - ip.grid(row=3, column=3) - type.grid(row=4, column=1) - dac.grid(row=4, column=3) - kpps.grid(row=5, column=1) - finangle.grid(row=5, column=3) - centerx.grid(row=6, column=1) - centery.grid(row=6, column=3) - zoomx.grid(row=7, column=1) - zoomy.grid(row=7, column=3) - sizex.grid(row=8, column=1) - sizey.grid(row=8, column=3) - swapx.grid(row=9, column=1) - swapy.grid(row=9, column=3) - lsteps.grid(row=10, column=1) - warpdest.grid(row=10, column=3) - color.grid(row=11, column=1) - - save = tk.Button(UI, text="Save", command=Write).grid(row=12, column=1) - ok = tk.Button(UI, text="Ok", command=Exit).grid(row=12, column=3) - - UI.title(string='LJ config') - - -def Exit(): - UI.destroy() - quit() - -def validate(input): - - - data =str(input) - if data.isdigit(): - #print(input+" is digit") - UIpdateLaser(int(data)) - return True - - elif input == "": - print(input+ "is null") - return True - - else: - print(input) - return False - -def updateJSConfig(config): - global ljpath - - - wwwip = config.get('General','wwwip') - wstype = config.get('General','wstype') - wsport = config.get('General','wsport') - # copy template - src = ljpath + "/templates/config.js" - dst = ljpath + "/www/config.js" - copyfile(src, dst) - # Interpolate variables - with fileinput.FileInput(dst, inplace=True) as file: - for line in file: - line = line.replace("%wstype%", wstype) - line = line.replace("%wsport%", wsport) - line = line.replace("%wwwip%", wwwip) - print(line, end='') - print('www UI updated.') - -def Updategstt(var, value): - print("modify ",var," with ",value) - #var=value - config.set('laser' + laserVal.get(), var, value) - config.write - -def Update(var, value): - print("modify ",var," with ",value) - #var=value - config.set('laser' + laserVal.get(), var, value) - config.write - -def UIpdateLaser(number): - - #print('updating with laser : ', number) - ipVal.set(str(gstt.lasersIPS[number])) - typeVal.set(str(gstt.lasertype[number])) - dacVal.set(str(gstt.dacs[number])) - kppsVal.set(str(gstt.kpps[number])) - colorVal.set("Not implemented") - dacVal.set(str(gstt.dacs[number])) - centerxVal.set(str(gstt.centerX[number])) - centeryVal.set(str(gstt.centerY[number])) - zoomxVal.set(str(gstt.zoomX[number])) - zoomyVal.set(str(gstt.zoomY[number])) - sizexVal.set(str(gstt.sizeX[number])) - sizeyVal.set(str(gstt.sizeY[number])) - finangleVal.set(str(gstt.finANGLE[number])) - swapxVal.set(str(gstt.swapX[number])) - swapyVal.set(str(gstt.swapY[number])) - lstepsVal.set(str(gstt.lsteps[number])) - warpdestVal.set(str(gstt.warpdest[number])) - -UI = tk.Tk() - -lasernumberVal = tk.StringVar() -rediserveripVal = tk.StringVar() -wwwipVal = tk.StringVar() -debugVal = tk.StringVar() -autostartVal = tk.StringVar() - -laserVal = tk.StringVar() -ipVal = tk.StringVar() -typeVal = tk.StringVar() -dacVal = tk.StringVar() -kppsVal = tk.StringVar() -colorVal = tk.StringVar() -centerxVal = tk.StringVar() -centeryVal = tk.StringVar() -zoomxVal = tk.StringVar() -zoomyVal = tk.StringVar() -sizexVal = tk.StringVar() -sizeyVal = tk.StringVar() -finangleVal = tk.StringVar() -swapxVal = tk.StringVar() -swapyVal = tk.StringVar() -lstepsVal = tk.StringVar() -warpdestVal = tk.StringVar() - -currentLaser =0 -Read() -UIelements(currentLaser) -UIpdateLaser(currentLaser) -#UI.update_lasernumber(str(gstt.LaserNumber)) -UI.mainloop() \ No newline at end of file diff --git a/doc/.DS_Store b/doc/.DS_Store deleted file mode 100644 index 31ba133..0000000 Binary files a/doc/.DS_Store and /dev/null differ diff --git a/doc/.sync-conflict-20200920-093614-TAXKCAL.DS_Store b/doc/.sync-conflict-20200920-093614-TAXKCAL.DS_Store deleted file mode 100644 index 026b8f2..0000000 Binary files a/doc/.sync-conflict-20200920-093614-TAXKCAL.DS_Store and /dev/null differ diff --git a/doc/.sync-conflict-20210417-043925-C44RY46.DS_Store b/doc/.sync-conflict-20210417-043925-C44RY46.DS_Store deleted file mode 100644 index ef63520..0000000 Binary files a/doc/.sync-conflict-20210417-043925-C44RY46.DS_Store and /dev/null differ diff --git a/doc/assets/css/font-awesome.min.css b/doc/assets/css/font-awesome.min.css deleted file mode 100644 index ebcf24a..0000000 --- a/doc/assets/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.6.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-rbs:before,.fa-paper-plane:before{content:"\f1d8"}.fa-rbs-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/doc/assets/css/ie8.css b/doc/assets/css/ie8.css deleted file mode 100644 index 2aa7525..0000000 --- a/doc/assets/css/ie8.css +++ /dev/null @@ -1,52 +0,0 @@ -/* - Prologue by HTML5 UP - html5up.net | @ajlkn - Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) -*/ - -/* Section/Article */ - - section > .last-child, section.last-child, article > .last-child, article.last-child { - margin-bottom: 0; - } - -/* Form */ - - form input[type="text"], - form input[type="email"], - form input[type="password"], - form select, - form textarea { - -ms-behavior: url("assets/js/ie/PIE.htc"); - } - -/* Button */ - - input[type="button"], - input[type="submit"], - input[type="reset"], - button, - .button { - -ms-behavior: url("assets/js/ie/PIE.htc"); - } - -/* Header */ - - #nav ul li a { - color: #888; - } - - #nav ul li a.active { - background: #1C2022; - } - - #headerToggle .toggle { - background-color: #888; - } - -/* Main */ - - #main > section.cover { - background-position: auto; - -ms-behavior: url("assets/js/ie/backgroundsize.min.htc"); - } \ No newline at end of file diff --git a/doc/assets/css/ie9.css b/doc/assets/css/ie9.css deleted file mode 100644 index dc038a0..0000000 --- a/doc/assets/css/ie9.css +++ /dev/null @@ -1,15 +0,0 @@ -/* - Prologue by HTML5 UP - html5up.net | @ajlkn - Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) -*/ - -/* Button */ - - input[type="button"], - input[type="submit"], - input[type="reset"], - button, - .button { - background-image: url("images/ie/grad0-15.svg"); - } \ No newline at end of file diff --git a/doc/assets/css/images/ie/grad0-15.svg b/doc/assets/css/images/ie/grad0-15.svg deleted file mode 100644 index e8efd0d..0000000 --- a/doc/assets/css/images/ie/grad0-15.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/doc/assets/css/images/overlay.png b/doc/assets/css/images/overlay.png deleted file mode 100644 index bc6aa7e..0000000 Binary files a/doc/assets/css/images/overlay.png and /dev/null differ diff --git a/doc/assets/css/main.css b/doc/assets/css/main.css deleted file mode 100644 index 9652002..0000000 --- a/doc/assets/css/main.css +++ /dev/null @@ -1,2543 +0,0 @@ -@import url("font-awesome.min.css"); -@import url("http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,400,600"); - -/* - Prologue by HTML5 UP - html5up.net | @ajlkn - Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) -*/ - -/* Reset */ - - html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline; - } - - article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section { - display: block; - } - - body { - background-color: #222; - line-height: 1; - } - - ol, ul { - list-style: none; - } - - blockquote, q { - quotes: none; - } - - blockquote:before, blockquote:after, q:before, q:after { - content: ''; - content: none; - } - - table { - border-collapse: collapse; - border-spacing: 0; - } - - body { - -webkit-text-size-adjust: none; - } - -/* Box Model */ - - *, *:before, *:after { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - } - -/* Containers */ - - .container { - margin-left: auto; - margin-right: auto; - } - - .container.\31 25\25 { - width: 100%; - max-width: 1750px; - min-width: 1400px; - } - - .container.\37 5\25 { - width: 1050px; - } - - .container.\35 0\25 { - width: 700px; - } - - .container.\32 5\25 { - width: 350px; - } - - .container { - width: 1400px; - } - - @media screen and (min-width: 961px) and (max-width: 1880px) { - - .container.\31 25\25 { - width: 100%; - max-width: 1500px; - min-width: 1200px; - } - - .container.\37 5\25 { - width: 900px; - } - - .container.\35 0\25 { - width: 600px; - } - - .container.\32 5\25 { - width: 300px; - } - - .container { - width: 1200px; - } - - } - - @media screen and (min-width: 961px) and (max-width: 1620px) { - - .container.\31 25\25 { - width: 100%; - max-width: 1200px; - min-width: 960px; - } - - .container.\37 5\25 { - width: 720px; - } - - .container.\35 0\25 { - width: 480px; - } - - .container.\32 5\25 { - width: 240px; - } - - .container { - width: 960px; - } - - } - - @media screen and (min-width: 961px) and (max-width: 1320px) { - - .container.\31 25\25 { - width: 100%; - max-width: 125%; - min-width: 100%; - } - - .container.\37 5\25 { - width: 75%; - } - - .container.\35 0\25 { - width: 50%; - } - - .container.\32 5\25 { - width: 25%; - } - - .container { - width: 100%; - } - - } - - @media screen and (max-width: 960px) { - - .container.\31 25\25 { - width: 100%; - max-width: 125%; - min-width: 100%; - } - - .container.\37 5\25 { - width: 75%; - } - - .container.\35 0\25 { - width: 50%; - } - - .container.\32 5\25 { - width: 25%; - } - - .container { - width: 100%; - } - - } - - @media screen and (max-width: 736px) { - - .container.\31 25\25 { - width: 100%; - max-width: 125%; - min-width: 100%; - } - - .container.\37 5\25 { - width: 75%; - } - - .container.\35 0\25 { - width: 50%; - } - - .container.\32 5\25 { - width: 25%; - } - - .container { - width: 100% !important; - } - - } - -/* Grid */ - - .row { - border-bottom: solid 1px transparent; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - } - - .row > * { - float: left; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - } - - .row:after, .row:before { - content: ''; - display: block; - clear: both; - height: 0; - } - - .row.uniform > * > :first-child { - margin-top: 0; - } - - .row.uniform > * > :last-child { - margin-bottom: 0; - } - - .row.\30 \25 > * { - padding: 0px 0 0 0px; - } - - .row.\30 \25 { - margin: 0px 0 -1px 0px; - } - - .row.uniform.\30 \25 > * { - padding: 0px 0 0 0px; - } - - .row.uniform.\30 \25 { - margin: 0px 0 -1px 0px; - } - - .row > * { - padding: 40px 0 0 40px; - } - - .row { - margin: -40px 0 -1px -40px; - } - - .row.uniform > * { - padding: 40px 0 0 40px; - } - - .row.uniform { - margin: -40px 0 -1px -40px; - } - - .row.\32 00\25 > * { - padding: 80px 0 0 80px; - } - - .row.\32 00\25 { - margin: -80px 0 -1px -80px; - } - - .row.uniform.\32 00\25 > * { - padding: 80px 0 0 80px; - } - - .row.uniform.\32 00\25 { - margin: -80px 0 -1px -80px; - } - - .row.\31 50\25 > * { - padding: 60px 0 0 60px; - } - - .row.\31 50\25 { - margin: -60px 0 -1px -60px; - } - - .row.uniform.\31 50\25 > * { - padding: 60px 0 0 60px; - } - - .row.uniform.\31 50\25 { - margin: -60px 0 -1px -60px; - } - - .row.\35 0\25 > * { - padding: 20px 0 0 20px; - } - - .row.\35 0\25 { - margin: -20px 0 -1px -20px; - } - - .row.uniform.\35 0\25 > * { - padding: 20px 0 0 20px; - } - - .row.uniform.\35 0\25 { - margin: -20px 0 -1px -20px; - } - - .row.\32 5\25 > * { - padding: 10px 0 0 10px; - } - - .row.\32 5\25 { - margin: -10px 0 -1px -10px; - } - - .row.uniform.\32 5\25 > * { - padding: 10px 0 0 10px; - } - - .row.uniform.\32 5\25 { - margin: -10px 0 -1px -10px; - } - - .\31 2u, .\31 2u\24 { - width: 100%; - clear: none; - margin-left: 0; - } - - .\31 1u, .\31 1u\24 { - width: 91.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 0u, .\31 0u\24 { - width: 83.3333333333%; - clear: none; - margin-left: 0; - } - - .\39 u, .\39 u\24 { - width: 75%; - clear: none; - margin-left: 0; - } - - .\38 u, .\38 u\24 { - width: 66.6666666667%; - clear: none; - margin-left: 0; - } - - .\37 u, .\37 u\24 { - width: 58.3333333333%; - clear: none; - margin-left: 0; - } - - .\36 u, .\36 u\24 { - width: 50%; - clear: none; - margin-left: 0; - } - - .\35 u, .\35 u\24 { - width: 41.6666666667%; - clear: none; - margin-left: 0; - } - - .\34 u, .\34 u\24 { - width: 33.3333333333%; - clear: none; - margin-left: 0; - } - - .\33 u, .\33 u\24 { - width: 25%; - clear: none; - margin-left: 0; - } - - .\32 u, .\32 u\24 { - width: 16.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 u, .\31 u\24 { - width: 8.3333333333%; - clear: none; - margin-left: 0; - } - - .\31 2u\24 + *, - .\31 1u\24 + *, - .\31 0u\24 + *, - .\39 u\24 + *, - .\38 u\24 + *, - .\37 u\24 + *, - .\36 u\24 + *, - .\35 u\24 + *, - .\34 u\24 + *, - .\33 u\24 + *, - .\32 u\24 + *, - .\31 u\24 + * { - clear: left; - } - - .\-11u { - margin-left: 91.66667%; - } - - .\-10u { - margin-left: 83.33333%; - } - - .\-9u { - margin-left: 75%; - } - - .\-8u { - margin-left: 66.66667%; - } - - .\-7u { - margin-left: 58.33333%; - } - - .\-6u { - margin-left: 50%; - } - - .\-5u { - margin-left: 41.66667%; - } - - .\-4u { - margin-left: 33.33333%; - } - - .\-3u { - margin-left: 25%; - } - - .\-2u { - margin-left: 16.66667%; - } - - .\-1u { - margin-left: 8.33333%; - } - - @media screen and (min-width: 961px) and (max-width: 1880px) { - - .row > * { - padding: 40px 0 0 40px; - } - - .row { - margin: -40px 0 -1px -40px; - } - - .row.uniform > * { - padding: 40px 0 0 40px; - } - - .row.uniform { - margin: -40px 0 -1px -40px; - } - - .row.\32 00\25 > * { - padding: 80px 0 0 80px; - } - - .row.\32 00\25 { - margin: -80px 0 -1px -80px; - } - - .row.uniform.\32 00\25 > * { - padding: 80px 0 0 80px; - } - - .row.uniform.\32 00\25 { - margin: -80px 0 -1px -80px; - } - - .row.\31 50\25 > * { - padding: 60px 0 0 60px; - } - - .row.\31 50\25 { - margin: -60px 0 -1px -60px; - } - - .row.uniform.\31 50\25 > * { - padding: 60px 0 0 60px; - } - - .row.uniform.\31 50\25 { - margin: -60px 0 -1px -60px; - } - - .row.\35 0\25 > * { - padding: 20px 0 0 20px; - } - - .row.\35 0\25 { - margin: -20px 0 -1px -20px; - } - - .row.uniform.\35 0\25 > * { - padding: 20px 0 0 20px; - } - - .row.uniform.\35 0\25 { - margin: -20px 0 -1px -20px; - } - - .row.\32 5\25 > * { - padding: 10px 0 0 10px; - } - - .row.\32 5\25 { - margin: -10px 0 -1px -10px; - } - - .row.uniform.\32 5\25 > * { - padding: 10px 0 0 10px; - } - - .row.uniform.\32 5\25 { - margin: -10px 0 -1px -10px; - } - - .\31 2u\28wide\29, .\31 2u\24\28wide\29 { - width: 100%; - clear: none; - margin-left: 0; - } - - .\31 1u\28wide\29, .\31 1u\24\28wide\29 { - width: 91.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 0u\28wide\29, .\31 0u\24\28wide\29 { - width: 83.3333333333%; - clear: none; - margin-left: 0; - } - - .\39 u\28wide\29, .\39 u\24\28wide\29 { - width: 75%; - clear: none; - margin-left: 0; - } - - .\38 u\28wide\29, .\38 u\24\28wide\29 { - width: 66.6666666667%; - clear: none; - margin-left: 0; - } - - .\37 u\28wide\29, .\37 u\24\28wide\29 { - width: 58.3333333333%; - clear: none; - margin-left: 0; - } - - .\36 u\28wide\29, .\36 u\24\28wide\29 { - width: 50%; - clear: none; - margin-left: 0; - } - - .\35 u\28wide\29, .\35 u\24\28wide\29 { - width: 41.6666666667%; - clear: none; - margin-left: 0; - } - - .\34 u\28wide\29, .\34 u\24\28wide\29 { - width: 33.3333333333%; - clear: none; - margin-left: 0; - } - - .\33 u\28wide\29, .\33 u\24\28wide\29 { - width: 25%; - clear: none; - margin-left: 0; - } - - .\32 u\28wide\29, .\32 u\24\28wide\29 { - width: 16.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 u\28wide\29, .\31 u\24\28wide\29 { - width: 8.3333333333%; - clear: none; - margin-left: 0; - } - - .\31 2u\24\28wide\29 + *, - .\31 1u\24\28wide\29 + *, - .\31 0u\24\28wide\29 + *, - .\39 u\24\28wide\29 + *, - .\38 u\24\28wide\29 + *, - .\37 u\24\28wide\29 + *, - .\36 u\24\28wide\29 + *, - .\35 u\24\28wide\29 + *, - .\34 u\24\28wide\29 + *, - .\33 u\24\28wide\29 + *, - .\32 u\24\28wide\29 + *, - .\31 u\24\28wide\29 + * { - clear: left; - } - - .\-11u\28wide\29 { - margin-left: 91.66667%; - } - - .\-10u\28wide\29 { - margin-left: 83.33333%; - } - - .\-9u\28wide\29 { - margin-left: 75%; - } - - .\-8u\28wide\29 { - margin-left: 66.66667%; - } - - .\-7u\28wide\29 { - margin-left: 58.33333%; - } - - .\-6u\28wide\29 { - margin-left: 50%; - } - - .\-5u\28wide\29 { - margin-left: 41.66667%; - } - - .\-4u\28wide\29 { - margin-left: 33.33333%; - } - - .\-3u\28wide\29 { - margin-left: 25%; - } - - .\-2u\28wide\29 { - margin-left: 16.66667%; - } - - .\-1u\28wide\29 { - margin-left: 8.33333%; - } - - } - - @media screen and (min-width: 961px) and (max-width: 1620px) { - - .row > * { - padding: 40px 0 0 40px; - } - - .row { - margin: -40px 0 -1px -40px; - } - - .row.uniform > * { - padding: 40px 0 0 40px; - } - - .row.uniform { - margin: -40px 0 -1px -40px; - } - - .row.\32 00\25 > * { - padding: 80px 0 0 80px; - } - - .row.\32 00\25 { - margin: -80px 0 -1px -80px; - } - - .row.uniform.\32 00\25 > * { - padding: 80px 0 0 80px; - } - - .row.uniform.\32 00\25 { - margin: -80px 0 -1px -80px; - } - - .row.\31 50\25 > * { - padding: 60px 0 0 60px; - } - - .row.\31 50\25 { - margin: -60px 0 -1px -60px; - } - - .row.uniform.\31 50\25 > * { - padding: 60px 0 0 60px; - } - - .row.uniform.\31 50\25 { - margin: -60px 0 -1px -60px; - } - - .row.\35 0\25 > * { - padding: 20px 0 0 20px; - } - - .row.\35 0\25 { - margin: -20px 0 -1px -20px; - } - - .row.uniform.\35 0\25 > * { - padding: 20px 0 0 20px; - } - - .row.uniform.\35 0\25 { - margin: -20px 0 -1px -20px; - } - - .row.\32 5\25 > * { - padding: 10px 0 0 10px; - } - - .row.\32 5\25 { - margin: -10px 0 -1px -10px; - } - - .row.uniform.\32 5\25 > * { - padding: 10px 0 0 10px; - } - - .row.uniform.\32 5\25 { - margin: -10px 0 -1px -10px; - } - - .\31 2u\28normal\29, .\31 2u\24\28normal\29 { - width: 100%; - clear: none; - margin-left: 0; - } - - .\31 1u\28normal\29, .\31 1u\24\28normal\29 { - width: 91.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 0u\28normal\29, .\31 0u\24\28normal\29 { - width: 83.3333333333%; - clear: none; - margin-left: 0; - } - - .\39 u\28normal\29, .\39 u\24\28normal\29 { - width: 75%; - clear: none; - margin-left: 0; - } - - .\38 u\28normal\29, .\38 u\24\28normal\29 { - width: 66.6666666667%; - clear: none; - margin-left: 0; - } - - .\37 u\28normal\29, .\37 u\24\28normal\29 { - width: 58.3333333333%; - clear: none; - margin-left: 0; - } - - .\36 u\28normal\29, .\36 u\24\28normal\29 { - width: 50%; - clear: none; - margin-left: 0; - } - - .\35 u\28normal\29, .\35 u\24\28normal\29 { - width: 41.6666666667%; - clear: none; - margin-left: 0; - } - - .\34 u\28normal\29, .\34 u\24\28normal\29 { - width: 33.3333333333%; - clear: none; - margin-left: 0; - } - - .\33 u\28normal\29, .\33 u\24\28normal\29 { - width: 25%; - clear: none; - margin-left: 0; - } - - .\32 u\28normal\29, .\32 u\24\28normal\29 { - width: 16.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 u\28normal\29, .\31 u\24\28normal\29 { - width: 8.3333333333%; - clear: none; - margin-left: 0; - } - - .\31 2u\24\28normal\29 + *, - .\31 1u\24\28normal\29 + *, - .\31 0u\24\28normal\29 + *, - .\39 u\24\28normal\29 + *, - .\38 u\24\28normal\29 + *, - .\37 u\24\28normal\29 + *, - .\36 u\24\28normal\29 + *, - .\35 u\24\28normal\29 + *, - .\34 u\24\28normal\29 + *, - .\33 u\24\28normal\29 + *, - .\32 u\24\28normal\29 + *, - .\31 u\24\28normal\29 + * { - clear: left; - } - - .\-11u\28normal\29 { - margin-left: 91.66667%; - } - - .\-10u\28normal\29 { - margin-left: 83.33333%; - } - - .\-9u\28normal\29 { - margin-left: 75%; - } - - .\-8u\28normal\29 { - margin-left: 66.66667%; - } - - .\-7u\28normal\29 { - margin-left: 58.33333%; - } - - .\-6u\28normal\29 { - margin-left: 50%; - } - - .\-5u\28normal\29 { - margin-left: 41.66667%; - } - - .\-4u\28normal\29 { - margin-left: 33.33333%; - } - - .\-3u\28normal\29 { - margin-left: 25%; - } - - .\-2u\28normal\29 { - margin-left: 16.66667%; - } - - .\-1u\28normal\29 { - margin-left: 8.33333%; - } - - } - - @media screen and (min-width: 961px) and (max-width: 1320px) { - - .row > * { - padding: 20px 0 0 20px; - } - - .row { - margin: -20px 0 -1px -20px; - } - - .row.uniform > * { - padding: 20px 0 0 20px; - } - - .row.uniform { - margin: -20px 0 -1px -20px; - } - - .row.\32 00\25 > * { - padding: 40px 0 0 40px; - } - - .row.\32 00\25 { - margin: -40px 0 -1px -40px; - } - - .row.uniform.\32 00\25 > * { - padding: 40px 0 0 40px; - } - - .row.uniform.\32 00\25 { - margin: -40px 0 -1px -40px; - } - - .row.\31 50\25 > * { - padding: 30px 0 0 30px; - } - - .row.\31 50\25 { - margin: -30px 0 -1px -30px; - } - - .row.uniform.\31 50\25 > * { - padding: 30px 0 0 30px; - } - - .row.uniform.\31 50\25 { - margin: -30px 0 -1px -30px; - } - - .row.\35 0\25 > * { - padding: 10px 0 0 10px; - } - - .row.\35 0\25 { - margin: -10px 0 -1px -10px; - } - - .row.uniform.\35 0\25 > * { - padding: 10px 0 0 10px; - } - - .row.uniform.\35 0\25 { - margin: -10px 0 -1px -10px; - } - - .row.\32 5\25 > * { - padding: 5px 0 0 5px; - } - - .row.\32 5\25 { - margin: -5px 0 -1px -5px; - } - - .row.uniform.\32 5\25 > * { - padding: 5px 0 0 5px; - } - - .row.uniform.\32 5\25 { - margin: -5px 0 -1px -5px; - } - - .\31 2u\28narrow\29, .\31 2u\24\28narrow\29 { - width: 100%; - clear: none; - margin-left: 0; - } - - .\31 1u\28narrow\29, .\31 1u\24\28narrow\29 { - width: 91.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 0u\28narrow\29, .\31 0u\24\28narrow\29 { - width: 83.3333333333%; - clear: none; - margin-left: 0; - } - - .\39 u\28narrow\29, .\39 u\24\28narrow\29 { - width: 75%; - clear: none; - margin-left: 0; - } - - .\38 u\28narrow\29, .\38 u\24\28narrow\29 { - width: 66.6666666667%; - clear: none; - margin-left: 0; - } - - .\37 u\28narrow\29, .\37 u\24\28narrow\29 { - width: 58.3333333333%; - clear: none; - margin-left: 0; - } - - .\36 u\28narrow\29, .\36 u\24\28narrow\29 { - width: 50%; - clear: none; - margin-left: 0; - } - - .\35 u\28narrow\29, .\35 u\24\28narrow\29 { - width: 41.6666666667%; - clear: none; - margin-left: 0; - } - - .\34 u\28narrow\29, .\34 u\24\28narrow\29 { - width: 33.3333333333%; - clear: none; - margin-left: 0; - } - - .\33 u\28narrow\29, .\33 u\24\28narrow\29 { - width: 25%; - clear: none; - margin-left: 0; - } - - .\32 u\28narrow\29, .\32 u\24\28narrow\29 { - width: 16.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 u\28narrow\29, .\31 u\24\28narrow\29 { - width: 8.3333333333%; - clear: none; - margin-left: 0; - } - - .\31 2u\24\28narrow\29 + *, - .\31 1u\24\28narrow\29 + *, - .\31 0u\24\28narrow\29 + *, - .\39 u\24\28narrow\29 + *, - .\38 u\24\28narrow\29 + *, - .\37 u\24\28narrow\29 + *, - .\36 u\24\28narrow\29 + *, - .\35 u\24\28narrow\29 + *, - .\34 u\24\28narrow\29 + *, - .\33 u\24\28narrow\29 + *, - .\32 u\24\28narrow\29 + *, - .\31 u\24\28narrow\29 + * { - clear: left; - } - - .\-11u\28narrow\29 { - margin-left: 91.66667%; - } - - .\-10u\28narrow\29 { - margin-left: 83.33333%; - } - - .\-9u\28narrow\29 { - margin-left: 75%; - } - - .\-8u\28narrow\29 { - margin-left: 66.66667%; - } - - .\-7u\28narrow\29 { - margin-left: 58.33333%; - } - - .\-6u\28narrow\29 { - margin-left: 50%; - } - - .\-5u\28narrow\29 { - margin-left: 41.66667%; - } - - .\-4u\28narrow\29 { - margin-left: 33.33333%; - } - - .\-3u\28narrow\29 { - margin-left: 25%; - } - - .\-2u\28narrow\29 { - margin-left: 16.66667%; - } - - .\-1u\28narrow\29 { - margin-left: 8.33333%; - } - - } - - @media screen and (max-width: 960px) { - - .row > * { - padding: 20px 0 0 20px; - } - - .row { - margin: -20px 0 -1px -20px; - } - - .row.uniform > * { - padding: 20px 0 0 20px; - } - - .row.uniform { - margin: -20px 0 -1px -20px; - } - - .row.\32 00\25 > * { - padding: 40px 0 0 40px; - } - - .row.\32 00\25 { - margin: -40px 0 -1px -40px; - } - - .row.uniform.\32 00\25 > * { - padding: 40px 0 0 40px; - } - - .row.uniform.\32 00\25 { - margin: -40px 0 -1px -40px; - } - - .row.\31 50\25 > * { - padding: 30px 0 0 30px; - } - - .row.\31 50\25 { - margin: -30px 0 -1px -30px; - } - - .row.uniform.\31 50\25 > * { - padding: 30px 0 0 30px; - } - - .row.uniform.\31 50\25 { - margin: -30px 0 -1px -30px; - } - - .row.\35 0\25 > * { - padding: 10px 0 0 10px; - } - - .row.\35 0\25 { - margin: -10px 0 -1px -10px; - } - - .row.uniform.\35 0\25 > * { - padding: 10px 0 0 10px; - } - - .row.uniform.\35 0\25 { - margin: -10px 0 -1px -10px; - } - - .row.\32 5\25 > * { - padding: 5px 0 0 5px; - } - - .row.\32 5\25 { - margin: -5px 0 -1px -5px; - } - - .row.uniform.\32 5\25 > * { - padding: 5px 0 0 5px; - } - - .row.uniform.\32 5\25 { - margin: -5px 0 -1px -5px; - } - - .\31 2u\28narrower\29, .\31 2u\24\28narrower\29 { - width: 100%; - clear: none; - margin-left: 0; - } - - .\31 1u\28narrower\29, .\31 1u\24\28narrower\29 { - width: 91.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 0u\28narrower\29, .\31 0u\24\28narrower\29 { - width: 83.3333333333%; - clear: none; - margin-left: 0; - } - - .\39 u\28narrower\29, .\39 u\24\28narrower\29 { - width: 75%; - clear: none; - margin-left: 0; - } - - .\38 u\28narrower\29, .\38 u\24\28narrower\29 { - width: 66.6666666667%; - clear: none; - margin-left: 0; - } - - .\37 u\28narrower\29, .\37 u\24\28narrower\29 { - width: 58.3333333333%; - clear: none; - margin-left: 0; - } - - .\36 u\28narrower\29, .\36 u\24\28narrower\29 { - width: 50%; - clear: none; - margin-left: 0; - } - - .\35 u\28narrower\29, .\35 u\24\28narrower\29 { - width: 41.6666666667%; - clear: none; - margin-left: 0; - } - - .\34 u\28narrower\29, .\34 u\24\28narrower\29 { - width: 33.3333333333%; - clear: none; - margin-left: 0; - } - - .\33 u\28narrower\29, .\33 u\24\28narrower\29 { - width: 25%; - clear: none; - margin-left: 0; - } - - .\32 u\28narrower\29, .\32 u\24\28narrower\29 { - width: 16.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 u\28narrower\29, .\31 u\24\28narrower\29 { - width: 8.3333333333%; - clear: none; - margin-left: 0; - } - - .\31 2u\24\28narrower\29 + *, - .\31 1u\24\28narrower\29 + *, - .\31 0u\24\28narrower\29 + *, - .\39 u\24\28narrower\29 + *, - .\38 u\24\28narrower\29 + *, - .\37 u\24\28narrower\29 + *, - .\36 u\24\28narrower\29 + *, - .\35 u\24\28narrower\29 + *, - .\34 u\24\28narrower\29 + *, - .\33 u\24\28narrower\29 + *, - .\32 u\24\28narrower\29 + *, - .\31 u\24\28narrower\29 + * { - clear: left; - } - - .\-11u\28narrower\29 { - margin-left: 91.66667%; - } - - .\-10u\28narrower\29 { - margin-left: 83.33333%; - } - - .\-9u\28narrower\29 { - margin-left: 75%; - } - - .\-8u\28narrower\29 { - margin-left: 66.66667%; - } - - .\-7u\28narrower\29 { - margin-left: 58.33333%; - } - - .\-6u\28narrower\29 { - margin-left: 50%; - } - - .\-5u\28narrower\29 { - margin-left: 41.66667%; - } - - .\-4u\28narrower\29 { - margin-left: 33.33333%; - } - - .\-3u\28narrower\29 { - margin-left: 25%; - } - - .\-2u\28narrower\29 { - margin-left: 16.66667%; - } - - .\-1u\28narrower\29 { - margin-left: 8.33333%; - } - - } - - @media screen and (max-width: 736px) { - - .row > * { - padding: 20px 0 0 20px; - } - - .row { - margin: -20px 0 -1px -20px; - } - - .row.uniform > * { - padding: 20px 0 0 20px; - } - - .row.uniform { - margin: -20px 0 -1px -20px; - } - - .row.\32 00\25 > * { - padding: 40px 0 0 40px; - } - - .row.\32 00\25 { - margin: -40px 0 -1px -40px; - } - - .row.uniform.\32 00\25 > * { - padding: 40px 0 0 40px; - } - - .row.uniform.\32 00\25 { - margin: -40px 0 -1px -40px; - } - - .row.\31 50\25 > * { - padding: 30px 0 0 30px; - } - - .row.\31 50\25 { - margin: -30px 0 -1px -30px; - } - - .row.uniform.\31 50\25 > * { - padding: 30px 0 0 30px; - } - - .row.uniform.\31 50\25 { - margin: -30px 0 -1px -30px; - } - - .row.\35 0\25 > * { - padding: 10px 0 0 10px; - } - - .row.\35 0\25 { - margin: -10px 0 -1px -10px; - } - - .row.uniform.\35 0\25 > * { - padding: 10px 0 0 10px; - } - - .row.uniform.\35 0\25 { - margin: -10px 0 -1px -10px; - } - - .row.\32 5\25 > * { - padding: 5px 0 0 5px; - } - - .row.\32 5\25 { - margin: -5px 0 -1px -5px; - } - - .row.uniform.\32 5\25 > * { - padding: 5px 0 0 5px; - } - - .row.uniform.\32 5\25 { - margin: -5px 0 -1px -5px; - } - - .\31 2u\28mobile\29, .\31 2u\24\28mobile\29 { - width: 100%; - clear: none; - margin-left: 0; - } - - .\31 1u\28mobile\29, .\31 1u\24\28mobile\29 { - width: 91.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 0u\28mobile\29, .\31 0u\24\28mobile\29 { - width: 83.3333333333%; - clear: none; - margin-left: 0; - } - - .\39 u\28mobile\29, .\39 u\24\28mobile\29 { - width: 75%; - clear: none; - margin-left: 0; - } - - .\38 u\28mobile\29, .\38 u\24\28mobile\29 { - width: 66.6666666667%; - clear: none; - margin-left: 0; - } - - .\37 u\28mobile\29, .\37 u\24\28mobile\29 { - width: 58.3333333333%; - clear: none; - margin-left: 0; - } - - .\36 u\28mobile\29, .\36 u\24\28mobile\29 { - width: 50%; - clear: none; - margin-left: 0; - } - - .\35 u\28mobile\29, .\35 u\24\28mobile\29 { - width: 41.6666666667%; - clear: none; - margin-left: 0; - } - - .\34 u\28mobile\29, .\34 u\24\28mobile\29 { - width: 33.3333333333%; - clear: none; - margin-left: 0; - } - - .\33 u\28mobile\29, .\33 u\24\28mobile\29 { - width: 25%; - clear: none; - margin-left: 0; - } - - .\32 u\28mobile\29, .\32 u\24\28mobile\29 { - width: 16.6666666667%; - clear: none; - margin-left: 0; - } - - .\31 u\28mobile\29, .\31 u\24\28mobile\29 { - width: 8.3333333333%; - clear: none; - margin-left: 0; - } - - .\31 2u\24\28mobile\29 + *, - .\31 1u\24\28mobile\29 + *, - .\31 0u\24\28mobile\29 + *, - .\39 u\24\28mobile\29 + *, - .\38 u\24\28mobile\29 + *, - .\37 u\24\28mobile\29 + *, - .\36 u\24\28mobile\29 + *, - .\35 u\24\28mobile\29 + *, - .\34 u\24\28mobile\29 + *, - .\33 u\24\28mobile\29 + *, - .\32 u\24\28mobile\29 + *, - .\31 u\24\28mobile\29 + * { - clear: left; - } - - .\-11u\28mobile\29 { - margin-left: 91.66667%; - } - - .\-10u\28mobile\29 { - margin-left: 83.33333%; - } - - .\-9u\28mobile\29 { - margin-left: 75%; - } - - .\-8u\28mobile\29 { - margin-left: 66.66667%; - } - - .\-7u\28mobile\29 { - margin-left: 58.33333%; - } - - .\-6u\28mobile\29 { - margin-left: 50%; - } - - .\-5u\28mobile\29 { - margin-left: 41.66667%; - } - - .\-4u\28mobile\29 { - margin-left: 33.33333%; - } - - .\-3u\28mobile\29 { - margin-left: 25%; - } - - .\-2u\28mobile\29 { - margin-left: 16.66667%; - } - - .\-1u\28mobile\29 { - margin-left: 8.33333%; - } - - } - -/* Basic */ - - body { - background: #000; - font-family: 'Source Sans Pro', sans-serif; - font-size: 19pt; - font-weight: 300; - line-height: 1.75em; - color: #888; - } - - body.is-loading * { - -moz-transition: none !important; - -webkit-transition: none !important; - -ms-transition: none !important; - transition: none !important; - -moz-animation: none !important; - -webkit-animation: none !important; - -ms-animation: none !important; - animation: none !important; - } - - input, textarea, select { - font-family: 'Source Sans Pro', sans-serif; - font-size: 19pt; - font-weight: 300; - line-height: 1.75em; - color: #888; - } - - h1, h2, h3, h4, h5, h6 { - font-weight: 300; - color: #ddd; - line-height: 1.5em; - } - - h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { - color: inherit; - text-decoration: none; - } - - h1 a strong, h2 a strong, h3 a strong, h4 a strong, h5 a strong, h6 a strong { - color: #fff; - } - - h2 { - font-size: 1.7em; - letter-spacing: -1px; - } - - h2.alt { - color: #888; - } - - h2.alt strong { - color: #666; - } - - h3 { - font-size: 1.5em; - } - - header { - margin: 0 0 2em 0; - } - - header > p { - margin: 1em 0 0 0; - } - - footer { - margin: 2em 0 0 0; - } - - strong, b { - font-weight: 300; - color: #eee; - } - - em, i { - font-style: italic; - } - - a { - text-decoration: none; - color: inherit; - border-bottom: dotted 1px rgba(128, 128, 128, 0.5); - -moz-transition: color 0.35s ease-in-out, border-bottom-color 0.35s ease-in-out; - -webkit-transition: color 0.35s ease-in-out, border-bottom-color 0.35s ease-in-out; - -ms-transition: color 0.35s ease-in-out, border-bottom-color 0.35s ease-in-out; - transition: color 0.35s ease-in-out, border-bottom-color 0.35s ease-in-out; - outline: 0; - } - - a:hover { - color: #bcd2e4; - border-bottom-color: rgba(255, 255, 255, 0); - } - - sub { - position: relative; - top: 0.5em; - font-size: 0.8em; - } - - sup { - position: relative; - top: -0.5em; - font-size: 0.8em; - } - - hr { - border: 0; - border-top: solid 1px #000; - } - - blockquote { - border-left: solid 0.5em #ddd; - padding: 1em 0 1em 2em; - font-style: italic; - } - - p, ul, ol, dl, table { - margin-bottom: 2em; - } - - br.clear { - clear: both; - } - -/* Sections/Article */ - - section, article { - margin-bottom: 3em; - } - - section > :last-child, - section > .container, section:last-child, article > :last-child, - article > .container, article:last-child { - margin-bottom: 0; - } - - .row > section, .row > article { - margin-bottom: 0; - } - -/* Image */ - - .image { - display: inline-block; - border: 0; - } - - .image img { - display: block; - width: 100%; - } - - .image.avatar48 { - width: 48px; - height: 48px; - background: #f00; - } - - .image.avatar48 img { - width: 48px; - height: 48px; - } - - .image.fit { - display: block; - width: 100%; - } - - .image.featured { - display: block; - width: 100%; - margin: 0 0 2em 0; - } - - .image.left { - float: left; - margin: 0 2em 2em 0; - } - - .image.centered { - display: block; - margin: 0 0 2em 0; - } - - .image.centered img { - margin: 0 auto; - width: auto; - } - -/* List */ - - ul.default { - list-style: disc; - padding-left: 1em; - } - - ul.default li { - padding-left: 0.5em; - } - - ul.icons { - cursor: default; - } - - ul.icons li { - display: inline-block; - } - - ul.icons a { - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - text-align: center; - border: 0; - } - - ol.default { - list-style: decimal; - padding-left: 1.25em; - } - - ol.default li { - padding-left: 0.25em; - } - -/* Form */ - - form label { - display: block; - text-align: left; - margin-bottom: 0.5em; - } - - form input[type="text"], - form input[type="email"], - form input[type="password"], - form select, - form textarea { - position: relative; - -webkit-appearance: none; - display: block; - border: 0; - outline: 0; - background: #fff; - background: rgba(255, 255, 255, 0.75); - width: 100%; - border-radius: 0.35em; - padding: 0.75em 1em 0.75em 1em; - box-shadow: inset 0 0.1em 0.1em 0 rgba(0, 0, 0, 0.05); - border: solid 1px rgba(0, 0, 0, 0.15); - -moz-transition: all 0.35s ease-in-out; - -webkit-transition: all 0.35s ease-in-out; - -ms-transition: all 0.35s ease-in-out; - transition: all 0.35s ease-in-out; - } - - form input[type="text"]:focus, - form input[type="email"]:focus, - form input[type="password"]:focus, - form select:focus, - form textarea:focus { - box-shadow: 0 0 2px 1px #8ebebc; - background: #fff; - } - - form input[type="text"], - form input[type="email"], - form input[type="password"], - form select { - line-height: 1.25em; - } - - form textarea { - min-height: 14em; - } - - form .formerize-placeholder { - color: #555 !important; - } - - form ::-webkit-input-placeholder { - color: #555 !important; - } - - form :-moz-placeholder { - color: #555 !important; - } - - form ::-moz-placeholder { - color: #555 !important; - } - - form :-ms-input-placeholder { - color: #555 !important; - } - - form ::-moz-focus-inner { - border: 0; - } - -/* Table */ - - table { - width: 100%; - } - - table.default { - width: 100%; - text-align: left; - } - - table.default tbody tr:nth-child(2n+2) { - background: #f4f4f4; - } - - table.default td { - padding: 0.5em 1em 0.5em 1em; - } - - table.default th { - text-align: left; - padding: 0.5em 1em 0.5em 1em; - color: #fff; - background: #222729 url("images/overlay.png"); - } - - table.default thead { - background: #444; - color: #fff; - } - - table.default tfoot { - background: #eee; - } - -/* Button */ - - input[type="button"], - input[type="submit"], - input[type="reset"], - button, - .button { - position: relative; - display: inline-block; - border-radius: 0.35em; - color: #fff !important; - text-decoration: none; - padding: 0.75em 2.5em 0.75em 2.5em; - background-color: #82b8f1; - border: 0; - cursor: pointer; - background-image: -moz-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)), url("images/overlay.png"); - background-image: -webkit-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)), url("images/overlay.png"); - background-image: -ms-linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)), url("images/overlay.png"); - background-image: linear-gradient(top, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.15)), url("images/overlay.png"); - -moz-transition: background-color 0.35s ease-in-out; - -webkit-transition: background-color 0.35s ease-in-out; - -ms-transition: background-color 0.35s ease-in-out; - transition: background-color 0.35s ease-in-out; - } - - input[type="button"]:hover, - input[type="submit"]:hover, - input[type="reset"]:hover, - button:hover, - .button:hover { - background-color: #7aa0d2; - } - - input[type="button"]:active, - input[type="submit"]:active, - input[type="reset"]:active, - button:active, - .button:active { - background-color: #98d7fd; - } - -/* Item */ - - .item { - text-align: center; - box-shadow: 0 0.05em 0.15em 0 rgba(0, 0, 0, 0.05); - margin-bottom: 40px; - } - - .item header { - background: #fff; - margin: 0; - padding: 1em 0 1em 0; - font-size: 0.8em; - } - - .item header h3 { - text-align: center; - font-size: 1em; - } - -/* Icons */ - - .icon { - text-decoration: none; - } - - .icon:before { - display: inline-block; - font-family: FontAwesome; - font-size: 1.25em; - text-decoration: none; - font-style: normal; - font-weight: normal; - line-height: 1; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - - .icon > .label { - display: none; - } - -/* Header */ - - #header { - position: fixed; - top: 0; - left: 0; - width: 375px; - height: 100%; - color: #fff; - background-image: linear-gradient(174deg, #222,#000); - box-shadow: 4px 6px 24px -1px rgba(0,0,0,0.72); - text-align: right; - } - - #header .top { - position: absolute; - left: 0; - top: 0; - width: 100%; - } - - #header .bottom { - position: absolute; - left: 0; - bottom: 0; - width: 100%; - } - - #header .icons { - font-size: 0.8em; - margin: 0 0 1em 0; - text-align: center; - } - - #header .icons a { - color: #41484c; - -moz-transition: color 0.35s ease-in-out; - -webkit-transition: color 0.35s ease-in-out; - -ms-transition: color 0.35s ease-in-out; - transition: color 0.35s ease-in-out; - } - - #header .icons a:hover { - color: #fff; - } - - #logo { - position: relative; - margin: 1.75em 1.5em 1.5em 1.5em; - min-height: 48px; - cursor: default; - } - - #logo h1 { - position: relative; - color: #fff; - font-weight: 600; - font-size: 1em; - line-height: 1em; - } - - #logo p { - position: relative; - display: block; - font-size: 0.6em; - color: rgba(255, 255, 255, 0.5); - line-height: 1.25em; - margin: 0.5em 0 0 0; - } - - #logo .image { - position: absolute; - left: 0; - top: 0; - } - - #nav ul li a { - display: block; - padding: 0.5em 1.5em 0.5em 1.5em; - color: rgba(255, 255, 255, 0.5); - text-decoration: none; - outline: 0; - border: 0; - -moz-transition: none; - -webkit-transition: none; - -ms-transition: none; - transition: none; - } - - #nav ul li a span { - position: relative; - display: block; - font-size: 0.8em; - } - - #nav ul li a span:before { - position: absolute; - left: 0; - color: #41484c; - text-align: center; - width: 1.25em; - line-height: 1.75em; - } - - #nav ul li a.active { - background: rgba(0, 0, 0, 0.15); - box-shadow: inset 0 0 0.25em 0 rgba(0, 0, 0, 0.125); - color: #fff; - } - - #nav ul li a.active span:before { - color: #e27689; - } - -/* Footer */ - - #footer { - margin-left: 375px; - text-align: center; - background-color: #000); - padding: 3em 0 4em 0; - box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.05), inset 0 0.1em 0.1em 0 rgba(0, 0, 0, 0.025); - font-size: 0.8em; - } - - #footer .copyright { - cursor: default; - margin: 0; - } - - #footer .copyright li { - display: inline-block; - line-height: 1em; - border-left: solid 1px rgba(128, 128, 128, 0.35); - padding: 0 0 0 0.5em; - margin: 0 0 0 0.5em; - } - - #footer .copyright li:first-child { - border-left: 0; - padding-left: 0; - margin-left: 0; - } - -/* Main */ - - #main { - margin-left: 375px; - } - - #main > section { - margin: 0; - overflow: hidden; - padding: 4em 0; - box-shadow: inset 0 1px 0 0 rgba(0, 0, 0, 0.05), inset 0 0.1em 0.1em 0 rgba(0, 0, 0, 0.025); - text-align: center; - background-image: url("images/overlay.png"); - } - - #main > section.dark { - color: #ccc; - color: rgba(255, 255, 255, 0.75); - } - - #main > section.dark h2, #main > section.dark h3, #main > section.dark h4, #main > section.dark h5, #main > section.dark h6 { - color: inherit; - } - - #main > section.dark strong { - color: #fff; - border-color: inherit; - } - - #main > section.dark a { - color: #fff; - border-color: inherit; - } - - #main > section.dark a:hover { - border-bottom-color: rgba(255, 255, 255, 0); - } - - #main > section.cover { - padding: 6em 0; - background-size: cover; - background-position: center center; - } - - #main > section.one { - background-color: #667291; - background-image: url("../../images/calig.jpg"); - } - - #main > section.two { - background-color: #f5fafa; - } - - #main > section.three { - background-image: linear-gradient(174deg, #111,#000); - color: #ccc; - } - - #main > section.four { - background-color: #e8edec; - } - -/* Wide */ - - @media screen and (min-width: 961px) and (max-width: 1880px) { - - /* Basic */ - - body, input, textarea, select { - font-size: 14pt; - } - - /* Header */ - - #header { - width: 300px; - font-size: 17pt; - } - - /* Footer */ - - #footer { - margin-left: 300px; - } - - /* Main */ - - #main { - margin-left: 300px; - } - - } - -/* Normal */ - - @media screen and (min-width: 961px) and (max-width: 1620px) { - - /* Main */ - - #main > section { - padding: 3em 0; - } - - #main section.cover { - padding: 5em 0; - } - - } - -/* Narrow */ - - @media screen and (min-width: 961px) and (max-width: 1320px) { - - /* Basic */ - - body, input, textarea, select { - font-size: 16pt; - } - - .container { - padding: 0 2em 0 2em; - } - - /* List */ - - ul.icons li a { - width: 1.75em; - } - - /* Item */ - - .item { - margin-bottom: 20px; - } - - /* Header */ - - #header { - width: 20%; - } - - #logo .image { - position: relative; - margin: 0 0 0.5em 0; - } - - #nav ul li a { - font-size: 0.8em; - padding-top: 0.5em; - padding-bottom: 0.5em; - } - - #nav ul li a span { - padding-right: 2.25em; - } - - #nav ul li a span:before { - left: 100%; - margin-left: -1.25em; - line-height: 2.25em; - } - - /* Footer */ - - #footer { - margin-left: 20%; - } - - /* Main */ - - #main { - margin-left: 20%; - } - - } - -/* Narrower */ - - #headerToggle { - display: none; - } - - @media screen and (max-width: 960px) { - - /* Basic */ - - html, body { - overflow-x: hidden; - } - - body, input, textarea, select { - font-size: 16pt; - } - - header br { - display: none; - } - - .container { - padding: 0 2em 0 2em; - } - - /* Item */ - - .item { - margin-bottom: 15px; - } - - /* List */ - - ul.icons a { - width: 1.75em; - font-size: 1.25em; - } - - /* Header */ - - #header { - -moz-backface-visibility: hidden; - -webkit-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - -moz-transform: translateX(-275px); - -webkit-transform: translateX(-275px); - -ms-transform: translateX(-275px); - transform: translateX(-275px); - -moz-transition: -moz-transform 0.5s ease; - -webkit-transition: -webkit-transform 0.5s ease; - -ms-transition: -ms-transform 0.5s ease; - transition: transform 0.5s ease; - display: block; - height: 100%; - left: 0; - overflow-y: auto; - position: fixed; - top: 0; - width: 275px; - z-index: 10002; - width: 275px; - background-image: linear-gradient(174deg, #222,#000); - box-shadow: inset -0.25em 0 0.25em 0 rgba(0, 0, 0, 0.125); - } - - #header .top { - position: relative; - } - - #header .bottom { - border-top: solid 1px rgba(255, 255, 255, 0.05); - box-shadow: 0 -1px 0 0 rgba(0, 0, 0, 0.15); - padding-top: 2em; - margin-top: 1em; - position: relative; - } - - #logo { - margin: 1.5em 1.25em 1.25em 1.25em; - } - - #nav ul li a { - padding: 0.5em 1.25em 0.5em 1.25em; - } - - #headerToggle { - -moz-backface-visibility: hidden; - -webkit-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - -moz-transition: -moz-transform 0.5s ease; - -webkit-transition: -webkit-transform 0.5s ease; - -ms-transition: -ms-transform 0.5s ease; - transition: transform 0.5s ease; - display: block; - height: 2.25em; - left: 0; - position: fixed; - top: 0; - width: 3.25em; - z-index: 10001; - } - - #headerToggle .toggle { - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - outline: 0; - border: 0; - } - - #headerToggle .toggle:before { - font-family: FontAwesome; - text-decoration: none; - font-style: normal; - font-weight: normal; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - content: '\f0c9'; - color: #fff; - font-size: 18px; - line-height: 2.25em; - background: rgba(128, 136, 144, 0.5); - border-radius: 0.35em; - text-align: center; - position: absolute; - left: 0.5em; - top: 0.5em; - display: block; - width: 3.25em; - height: 2.25em; - line-height: 2.25em; - } - - body.header-visible #main { - -moz-transform: translateX(275px); - -webkit-transform: translateX(275px); - -ms-transform: translateX(275px); - transform: translateX(275px); - } - - body.header-visible #headerToggle { - -moz-transform: translateX(275px); - -webkit-transform: translateX(275px); - -ms-transform: translateX(275px); - transform: translateX(275px); - } - - body.header-visible #header { - -moz-transform: translateX(0); - -webkit-transform: translateX(0); - -ms-transform: translateX(0); - transform: translateX(0); - } - - /* Footer */ - - #footer { - margin-left: 0; - } - - /* Main */ - - #main { - -moz-backface-visibility: hidden; - -webkit-backface-visibility: hidden; - -ms-backface-visibility: hidden; - backface-visibility: hidden; - -moz-transition: -moz-transform 0.5s ease; - -webkit-transition: -webkit-transform 0.5s ease; - -ms-transition: -ms-transform 0.5s ease; - transition: transform 0.5s ease; - padding-bottom: 1px; - margin-left: 0; - } - - #main > section { - padding: 3em 0; - } - - #main section.cover { - padding: 4em 0; - } - - } - -/* Mobile */ - - @media screen and (max-width: 736px) { - - /* Basic */ - - body, input, textarea, select { - font-size: 14pt; - } - - h2 { - font-size: 1.5em; - letter-spacing: 0; - font-weight: 300; - } - - .container { - padding: 0 15px 0 15px; - } - - /* List */ - - ul.icons a { - width: 1.75em; - font-size: 1.5em; - } - - /* Main */ - - #main > section { - padding: 2em 0; - } - - #main section.cover { - padding: 4em 0em; - } - - #main section.cover header { - padding: 0 1em; - } - - /* Footer */ - - #footer .copyright li { - display: block; - line-height: 1.25em; - border: 0; - padding: 0; - margin: 1em 0 0 0; - } - - #footer .copyright li:first-child { - margin-top: 0; - } - - } \ No newline at end of file diff --git a/doc/assets/fonts/FontAwesome.otf b/doc/assets/fonts/FontAwesome.otf deleted file mode 100644 index d4de13e..0000000 Binary files a/doc/assets/fonts/FontAwesome.otf and /dev/null differ diff --git a/doc/assets/fonts/fontawesome-webfont.eot b/doc/assets/fonts/fontawesome-webfont.eot deleted file mode 100644 index c7b00d2..0000000 Binary files a/doc/assets/fonts/fontawesome-webfont.eot and /dev/null differ diff --git a/doc/assets/fonts/fontawesome-webfont.svg b/doc/assets/fonts/fontawesome-webfont.svg deleted file mode 100644 index 8b66187..0000000 --- a/doc/assets/fonts/fontawesome-webfont.svg +++ /dev/null @@ -1,685 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/assets/fonts/fontawesome-webfont.ttf b/doc/assets/fonts/fontawesome-webfont.ttf deleted file mode 100644 index f221e50..0000000 Binary files a/doc/assets/fonts/fontawesome-webfont.ttf and /dev/null differ diff --git a/doc/assets/fonts/fontawesome-webfont.woff b/doc/assets/fonts/fontawesome-webfont.woff deleted file mode 100644 index 6e7483c..0000000 Binary files a/doc/assets/fonts/fontawesome-webfont.woff and /dev/null differ diff --git a/doc/assets/fonts/fontawesome-webfont.woff2 b/doc/assets/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 7eb74fd..0000000 Binary files a/doc/assets/fonts/fontawesome-webfont.woff2 and /dev/null differ diff --git a/doc/assets/js/ie/PIE.htc b/doc/assets/js/ie/PIE.htc deleted file mode 100644 index ca3b547..0000000 --- a/doc/assets/js/ie/PIE.htc +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - diff --git a/doc/assets/js/ie/backgroundsize.min.htc b/doc/assets/js/ie/backgroundsize.min.htc deleted file mode 100644 index 3d9960d..0000000 --- a/doc/assets/js/ie/backgroundsize.min.htc +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/doc/assets/js/ie/html5shiv.js b/doc/assets/js/ie/html5shiv.js deleted file mode 100644 index dcf351c..0000000 --- a/doc/assets/js/ie/html5shiv.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed -*/ -(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); -a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; -c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| -"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment(); -for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d #mq-test-1 { width: 42px; }',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){v(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.rbs(null))},g=function(a){return a.replace(c.regex.minmaxwh,"").match(c.regex.other)};if(c.ajax=f,c.queue=d,c.unsupportedmq=g,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var h,i,j,k=a.document,l=k.documentElement,m=[],n=[],o=[],p={},q=30,r=k.getElementsByTagName("head")[0]||l,s=k.getElementsByTagName("base")[0],t=r.getElementsByTagName("link"),u=function(){var a,b=k.createElement("div"),c=k.body,d=l.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=k.createElement("body"),c.style.background="none"),l.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&l.insertBefore(c,l.firstChild),a=b.offsetWidth,f?l.removeChild(c):c.removeChild(b),l.style.fontSize=d,e&&(c.style.fontSize=e),a=j=parseFloat(a)},v=function(b){var c="clientWidth",d=l[c],e="CSS1Compat"===k.compatMode&&d||k.body[c]||d,f={},g=t[t.length-1],p=(new Date).getTime();if(b&&h&&q>p-h)return a.clearTimeout(i),i=a.setTimeout(v,q),void 0;h=p;for(var s in m)if(m.hasOwnProperty(s)){var w=m[s],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?j||u():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?j||u():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(n[w.rules]))}for(var C in o)o.hasOwnProperty(C)&&o[C]&&o[C].parentNode===r&&r.removeChild(o[C]);o.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=k.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,r.insertBefore(E,g.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(k.createTextNode(F)),o.push(E)}},w=function(a,b,d){var e=a.replace(c.regex.comments,"").replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},i=!f&&d;b.length&&(b+="/"),i&&(f=1);for(var j=0;f>j;j++){var k,l,o,p;i?(k=d,n.push(h(a))):(k=e[j].match(c.regex.findStyles)&&RegExp.$1,n.push(RegExp.$2&&h(RegExp.$2))),o=k.split(","),p=o.length;for(var q=0;p>q;q++)l=o[q],g(l)||m.push({media:l.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:n.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}v()},x=function(){if(d.length){var b=d.shift();f(b.href,function(c){w(c,b.href,b.media),p[b.href]=!0,a.setTimeout(function(){x()},0)})}},y=function(){for(var b=0;ba?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; - -return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:k.htmlSerialize?[0,"",""]:[1,"X
","
"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("