From 24076f5b109723ce944b20d37b1b38aebb217a47 Mon Sep 17 00:00:00 2001 From: Frank Rousseau Date: Wed, 23 Sep 2015 19:01:41 +0200 Subject: [PATCH 01/11] build --- build/client/public/scripts/app.js | 251 +---- build/client/public/scripts/app.js.map | 2 +- build/client/public/scripts/vendor.js | 1227 ++++++++++----------- build/client/public/scripts/vendor.js.map | 2 +- 4 files changed, 624 insertions(+), 858 deletions(-) diff --git a/build/client/public/scripts/app.js b/build/client/public/scripts/app.js index 6cc66413..46f36095 100644 --- a/build/client/public/scripts/app.js +++ b/build/client/public/scripts/app.js @@ -1,42 +1,59 @@ -(function(/*! Brunch !*/) { +(function() { 'use strict'; - var globals = typeof window !== 'undefined' ? window : global; + var globals = typeof window === 'undefined' ? global : window; if (typeof globals.require === 'function') return; var modules = {}; var cache = {}; + var has = ({}).hasOwnProperty; - var has = function(object, name) { - return ({}).hasOwnProperty.call(object, name); + var aliases = {}; + + var endsWith = function(str, suffix) { + return str.indexOf(suffix, str.length - suffix.length) !== -1; }; - var expand = function(root, name) { - var results = [], parts, part; - if (/^\.\.?(\/|$)/.test(name)) { - parts = [root, name].join('/').split('/'); - } else { - parts = name.split('/'); - } - for (var i = 0, length = parts.length; i < length; i++) { - part = parts[i]; - if (part === '..') { - results.pop(); - } else if (part !== '.' && part !== '') { - results.push(part); + var unalias = function(alias, loaderPath) { + var start = 0; + if (loaderPath) { + if (loaderPath.indexOf('components/' === 0)) { + start = 'components/'.length; + } + if (loaderPath.indexOf('/', start) > 0) { + loaderPath = loaderPath.substring(start, loaderPath.indexOf('/', start)); } } - return results.join('/'); - }; - + var result = aliases[alias + '/index.js'] || aliases[loaderPath + '/deps/' + alias + '/index.js']; + if (result) { + return 'components/' + result.substring(0, result.length - '.js'.length); + } + return alias; + }; + + var expand = (function() { + var reg = /^\.\.?(\/|$)/; + return function(root, name) { + var results = [], parts, part; + parts = (reg.test(name) ? root + '/' + name : name).split('/'); + for (var i = 0, length = parts.length; i < length; i++) { + part = parts[i]; + if (part === '..') { + results.pop(); + } else if (part !== '.' && part !== '') { + results.push(part); + } + } + return results.join('/'); + }; + })(); var dirname = function(path) { return path.split('/').slice(0, -1).join('/'); }; var localRequire = function(path) { return function(name) { - var dir = dirname(path); - var absolute = expand(dir, name); + var absolute = expand(dirname(path), name); return globals.require(absolute, path); }; }; @@ -51,21 +68,26 @@ var require = function(name, loaderPath) { var path = expand(name, '.'); if (loaderPath == null) loaderPath = '/'; + path = unalias(name, loaderPath); - if (has(cache, path)) return cache[path].exports; - if (has(modules, path)) return initModule(path, modules[path]); + if (has.call(cache, path)) return cache[path].exports; + if (has.call(modules, path)) return initModule(path, modules[path]); var dirIndex = expand(path, './index'); - if (has(cache, dirIndex)) return cache[dirIndex].exports; - if (has(modules, dirIndex)) return initModule(dirIndex, modules[dirIndex]); + if (has.call(cache, dirIndex)) return cache[dirIndex].exports; + if (has.call(modules, dirIndex)) return initModule(dirIndex, modules[dirIndex]); throw new Error('Cannot find module "' + name + '" from '+ '"' + loaderPath + '"'); }; - var define = function(bundle, fn) { + require.alias = function(from, to) { + aliases[to] = from; + }; + + require.register = require.define = function(bundle, fn) { if (typeof bundle === 'object') { for (var key in bundle) { - if (has(bundle, key)) { + if (has.call(bundle, key)) { modules[key] = bundle[key]; } } @@ -74,21 +96,18 @@ } }; - var list = function() { + require.list = function() { var result = []; for (var item in modules) { - if (has(modules, item)) { + if (has.call(modules, item)) { result.push(item); } } return result; }; + require.brunch = true; globals.require = require; - globals.require.define = define; - globals.require.register = define; - globals.require.list = list; - globals.require.brunch = true; })(); require.register("application", function(exports, require, module) { @@ -296,170 +315,6 @@ Exposes an array of all available timezones. module.exports = ["Europe/Paris", "Europe/Berlin", "Europe/Madrid", "Europe/Rome", "America/Los_Angeles", "America/New_York", "Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", "Africa/Asmara", "Africa/Bamako", "Africa/Bangui", "Africa/Banjul", "Africa/Bissau", "Africa/Blantyre", "Africa/Brazzaville", "Africa/Bujumbura", "Africa/Cairo", "Africa/Casablanca", "Africa/Ceuta", "Africa/Conakry", "Africa/Dakar", "Africa/Dar_es_Salaam", "Africa/Djibouti", "Africa/Douala", "Africa/El_Aaiun", "Africa/Freetown", "Africa/Gaborone", "Africa/Harare", "Africa/Johannesburg", "Africa/Kampala", "Africa/Khartoum", "Africa/Kigali", "Africa/Kinshasa", "Africa/Lagos", "Africa/Libreville", "Africa/Lome", "Africa/Luanda", "Africa/Lubumbashi", "Africa/Lusaka", "Africa/Malabo", "Africa/Maputo", "Africa/Maseru", "Africa/Mbabane", "Africa/Mogadishu", "Africa/Monrovia", "Africa/Nairobi", "Africa/Ndjamena", "Africa/Niamey", "Africa/Nouakchott", "Africa/Ouagadougou", "Africa/Porto-Novo", "Africa/Sao_Tome", "Africa/Tripoli", "Africa/Tunis", "Africa/Windhoek", "America/Adak", "America/Anchorage", "America/Anguilla", "America/Antigua", "America/Araguaina", "America/Argentina/Buenos_Aires", "America/Argentina/Catamarca", "America/Argentina/Cordoba", "America/Argentina/Jujuy", "America/Argentina/La_Rioja", "America/Argentina/Mendoza", "America/Argentina/Rio_Gallegos", "America/Argentina/Salta", "America/Argentina/San_Juan", "America/Argentina/San_Luis", "America/Argentina/Tucuman", "America/Argentina/Ushuaia", "America/Aruba", "America/Asuncion", "America/Atikokan", "America/Bahia", "America/Barbados", "America/Belem", "America/Belize", "America/Blanc-Sablon", "America/Boa_Vista", "America/Bogota", "America/Boise", "America/Cambridge_Bay", "America/Campo_Grande", "America/Cancun", "America/Caracas", "America/Cayenne", "America/Cayman", "America/Chicago", "America/Chihuahua", "America/Costa_Rica", "America/Cuiaba", "America/Curacao", "America/Danmarkshavn", "America/Dawson", "America/Dawson_Creek", "America/Denver", "America/Detroit", "America/Dominica", "America/Edmonton", "America/Eirunepe", "America/El_Salvador", "America/Fortaleza", "America/Glace_Bay", "America/Godthab", "America/Goose_Bay", "America/Grand_Turk", "America/Grenada", "America/Guadeloupe", "America/Guatemala", "America/Guayaquil", "America/Guyana", "America/Halifax", "America/Havana", "America/Hermosillo", "America/Indiana/Indianapolis", "America/Indiana/Knox", "America/Indiana/Marengo", "America/Indiana/Petersburg", "America/Indiana/Tell_City", "America/Indiana/Vevay", "America/Indiana/Vincennes", "America/Indiana/Winamac", "America/Inuvik", "America/Iqaluit", "America/Jamaica", "America/Juneau", "America/Kentucky/Louisville", "America/Kentucky/Monticello", "America/La_Paz", "America/Lima", "America/Los_Angeles", "America/Maceio", "America/Managua", "America/Manaus", "America/Martinique", "America/Matamoros", "America/Mazatlan", "America/Menominee", "America/Merida", "America/Mexico_City", "America/Miquelon", "America/Moncton", "America/Monterrey", "America/Montevideo", "America/Montreal", "America/Montserrat", "America/Nassau", "America/New_York", "America/Nipigon", "America/Nome", "America/Noronha", "America/North_Dakota/Center", "America/North_Dakota/New_Salem", "America/Ojinaga", "America/Panama", "America/Pangnirtung", "America/Paramaribo", "America/Phoenix", "America/Port-au-Prince", "America/Port_of_Spain", "America/Porto_Velho", "America/Puerto_Rico", "America/Rainy_River", "America/Rankin_Inlet", "America/Recife", "America/Regina", "America/Resolute", "America/Rio_Branco", "America/Santa_Isabel", "America/Santarem", "America/Santiago", "America/Santo_Domingo", "America/Sao_Paulo", "America/Scoresbysund", "America/St_Johns", "America/St_Kitts", "America/St_Lucia", "America/St_Thomas", "America/St_Vincent", "America/Swift_Current", "America/Tegucigalpa", "America/Thule", "America/Thunder_Bay", "America/Tijuana", "America/Toronto", "America/Tortola", "America/Vancouver", "America/Whitehorse", "America/Winnipeg", "America/Yakutat", "America/Yellowknife", "Antarctica/Casey", "Antarctica/Davis", "Antarctica/DumontDUrville", "Antarctica/Mawson", "Antarctica/McMurdo", "Antarctica/Palmer", "Antarctica/Rothera", "Antarctica/Syowa", "Antarctica/Vostok", "Asia/Aden", "Asia/Almaty", "Asia/Amman", "Asia/Anadyr", "Asia/Aqtau", "Asia/Aqtobe", "Asia/Ashgabat", "Asia/Baghdad", "Asia/Bahrain", "Asia/Baku", "Asia/Bangkok", "Asia/Beirut", "Asia/Bishkek", "Asia/Brunei", "Asia/Choibalsan", "Asia/Chongqing", "Asia/Colombo", "Asia/Damascus", "Asia/Dhaka", "Asia/Dili", "Asia/Dubai", "Asia/Dushanbe", "Asia/Gaza", "Asia/Harbin", "Asia/Ho_Chi_Minh", "Asia/Hong_Kong", "Asia/Hovd", "Asia/Irkutsk", "Asia/Jakarta", "Asia/Jayapura", "Asia/Jerusalem", "Asia/Kabul", "Asia/Kamchatka", "Asia/Karachi", "Asia/Kashgar", "Asia/Kathmandu", "Asia/Kolkata", "Asia/Krasnoyarsk", "Asia/Kuala_Lumpur", "Asia/Kuching", "Asia/Kuwait", "Asia/Macau", "Asia/Magadan", "Asia/Makassar", "Asia/Manila", "Asia/Muscat", "Asia/Nicosia", "Asia/Novokuznetsk", "Asia/Novosibirsk", "Asia/Omsk", "Asia/Oral", "Asia/Phnom_Penh", "Asia/Pontianak", "Asia/Pyongyang", "Asia/Qatar", "Asia/Qyzylorda", "Asia/Rangoon", "Asia/Riyadh", "Asia/Sakhalin", "Asia/Samarkand", "Asia/Seoul", "Asia/Shanghai", "Asia/Singapore", "Asia/Taipei", "Asia/Tashkent", "Asia/Tbilisi", "Asia/Tehran", "Asia/Thimphu", "Asia/Tokyo", "Asia/Ulaanbaatar", "Asia/Urumqi", "Asia/Vientiane", "Asia/Vladivostok", "Asia/Yakutsk", "Asia/Yekaterinburg", "Asia/Yerevan", "Atlantic/Azores", "Atlantic/Bermuda", "Atlantic/Canary", "Atlantic/Cape_Verde", "Atlantic/Faroe", "Atlantic/Madeira", "Atlantic/Reykjavik", "Atlantic/South_Georgia", "Atlantic/St_Helena", "Atlantic/Stanley", "Australia/Adelaide", "Australia/Brisbane", "Australia/Broken_Hill", "Australia/Currie", "Australia/Darwin", "Australia/Eucla", "Australia/Hobart", "Australia/Lindeman", "Australia/Lord_Howe", "Australia/Melbourne", "Australia/Perth", "Australia/Sydney", "Canada/Atlantic", "Canada/Central", "Canada/Eastern", "Canada/Mountain", "Canada/Newfoundland", "Canada/Pacific", "Europe/Amsterdam", "Europe/Andorra", "Europe/Athens", "Europe/Belgrade", "Europe/Berlin", "Europe/Brussels", "Europe/Bucharest", "Europe/Budapest", "Europe/Chisinau", "Europe/Copenhagen", "Europe/Dublin", "Europe/Gibraltar", "Europe/Helsinki", "Europe/Istanbul", "Europe/Kaliningrad", "Europe/Kiev", "Europe/Lisbon", "Europe/London", "Europe/Luxembourg", "Europe/Madrid", "Europe/Malta", "Europe/Minsk", "Europe/Monaco", "Europe/Moscow", "Europe/Oslo", "Europe/Paris", "Europe/Prague", "Europe/Riga", "Europe/Rome", "Europe/Samara", "Europe/Simferopol", "Europe/Sofia", "Europe/Stockholm", "Europe/Tallinn", "Europe/Tirane", "Europe/Uzhgorod", "Europe/Vaduz", "Europe/Vienna", "Europe/Vilnius", "Europe/Volgograd", "Europe/Warsaw", "Europe/Zaporozhye", "Europe/Zurich", "GMT", "Indian/Antananarivo", "Indian/Chagos", "Indian/Christmas", "Indian/Cocos", "Indian/Comoro", "Indian/Kerguelen", "Indian/Mahe", "Indian/Maldives", "Indian/Mauritius", "Indian/Mayotte", "Indian/Reunion", "Pacific/Apia", "Pacific/Auckland", "Pacific/Chatham", "Pacific/Easter", "Pacific/Efate", "Pacific/Enderbury", "Pacific/Fakaofo", "Pacific/Fiji", "Pacific/Funafuti", "Pacific/Galapagos", "Pacific/Gambier", "Pacific/Guadalcanal", "Pacific/Guam", "Pacific/Honolulu", "Pacific/Johnston", "Pacific/Kiritimati", "Pacific/Kosrae", "Pacific/Kwajalein", "Pacific/Majuro", "Pacific/Marquesas", "Pacific/Midway", "Pacific/Nauru", "Pacific/Niue", "Pacific/Norfolk", "Pacific/Noumea", "Pacific/Pago_Pago", "Pacific/Palau", "Pacific/Pitcairn", "Pacific/Ponape", "Pacific/Port_Moresby", "Pacific/Rarotonga", "Pacific/Saipan", "Pacific/Tahiti", "Pacific/Tarawa", "Pacific/Tongatapu", "Pacific/Truk", "Pacific/Wake", "Pacific/Wallis", "US/Alaska", "US/Arizona", "US/Central", "US/Eastern", "US/Hawaii", "US/Mountain", "US/Pacific", "UTC"]; }); -;require.register("locales/en", function(exports, require, module) { - -/* -en_US locale - */ -module.exports = { - 'next': "next", - 'skip': "skip", - 'cancel': "cancel", - 'sign up': "create my Cozy", - 'add email': "add email account", - 'welcome': "let me in!", - 'confirm': "confirm", - 'step preset': "settings", - 'step import': "import your datas", - 'step email settings': "configure your email", - 'preset email': "e-mail", - 'preset email tip': "It will be used to contact you if you lose your password.", - 'preset name': "name", - 'preset name tip': "It's displayed when you share files with people or invite them to events.", - 'preset password': "password", - 'preset password tip': "A strong password of at least 8 characters is required (special characters recommended).", - 'preset timezone': "timezone", - 'preset timezone tip': "It's needed to properly display your calendar.", - 'preset opt-in help': "Allow Cozy to use my usage stats to improve the product.", - 'preset opt-out newsletter': "Subscribe to the Beta Cozy Newsletter (highly recommended).", - 'import google account': "Synchronize your Gmail account & import calendar, contacts and photos from Google", - 'import google account tip': "You'll need to sign in to your Google account to allow your Cozy to access to data hosted on Google", - 'import google account sign in': "Sign in to Google", - 'leave google title': "Feed your data into Cozy", - 'leave google code content': "Paste the code from Google below:", - 'leave google code': "google code", - 'leave google choice': "Choose what you want to do with your data stored on Google servers:", - 'leave google choice sync gmail': "GMail - Access your email from Cozy", - 'leave google choice contacts': "One-time import of Google Contacts", - 'leave google choice calendar': "One-time import of Google Calendar", - 'leave google choice photos': "One-time import of Google Photos", - 'leave google confirm': "Import data", - 'email caption': "If you want to be able to read your email from your Cozy, we need to set it up.", - 'email email': "e-mail", - 'email email tip': "You can add more emails accounts later.", - 'email password': "password", - 'email imap server': "imap server", - 'email imap port': "port", - 'email imap ssl': "Using SSL?", - 'email show advanced': "Show advanced parameters", - 'email imap login': "imap login", - 'email imap login tip': "Add your IMAP username, if it is different from your email address", - 'email smtp server': "smtp server", - 'email smtp port': "smtp port", - 'email smtp ssl': "Using SSL?", - 'email smtp login': "smtp login", - 'email smtp login tip': "Leave empty to use the same username as for the imap server", - 'email smtp password': "smtp password", - 'email smtp password tip': "Leave empty to use the same password as for the imap server", - 'login welcome': "Welcome", - 'login enter your password': "Please enter your password to access to your Cozy:", - 'login password': "password", - 'login submit': "sign in", - 'login auth success': "Authentication successful, let's go in!", - 'login recover': "Forget password? Email me instructions", - 'login recover again': "Did not receive it? Send it again", - 'login recover sent title': "Email sent", - 'login recover sent message': "Please check your email, follow instructions to reset your password", - 'login wrong password title': "Wrong password", - 'login wrong password message': "The pasword you entered is incorrect, please try again", - 'reset welcome': "Reset password", - 'reset enter your password': "Please enter your new password to reset it", - 'reset password': "password", - 'reset submit': "reset your password", - 'reset auth success': "password successfully resetted", - 'reset wrong password title': "Your password can't be resetted", - 'reset wrong password message': "The pasword you entered is incorrect, or your reset token is expired", - 'setup title': "We're setting up your Cozy…", - 'setup message': "You are now close to have your own personal cloud where your data are stored.", - 'setup on mobile title': "Use Cozy on your Android device!", - 'setup on mobile message': "Check out our mobile app on Google Play:", - 'welcome title': "Congratulations on taking back control of your personal data.", - 'welcome message': "With Cozy, you can store your data on your personal Cloud that you control. As opposed to most commercial Cloud services, there is no data-mining taking place on your Cozy Cloud, so no large corporation is trying to learn everything from you by searching through your data." -}; -}); - -;require.register("locales/fr", function(exports, require, module) { - -/* -fr_FR locale - */ -module.exports = { - 'next': "suivant", - 'skip': "passer", - 'cancel': "annuler", - 'sign up': "créer mon Cozy", - 'add email': "ajouter un compte email", - 'welcome': "c'est parti !", - 'confirm': "valider", - 'step preset': "réglages", - 'step import': "importer des données", - 'step email settings': "configurer votre email", - 'preset email': "email", - 'preset email tip': "Cette adresse email sera utilisée pour vous envoyer un message lors d'une récupération de mot de passe.", - 'preset name': "nom", - 'preset name tip': "Le nom sous lequel vous apparaitrez dans les messages de partages et les invitations calendrier.", - 'preset password': "mot de passe", - 'preset password tip': "Un mot de passe de fort d'au-moins 8 caractères (les caractères spéciaux sont recommandés).", - 'preset timezone': "fuseau horaire", - 'preset timezone tip': "Vous permet d'afficher correctement les heures dans les agendas.", - 'preset opt-in help': "Je souhaite aider Cozy à améliorer la plateforme en transmettant des données statistiques anonymes relatives à mon utilisation.", - 'preset opt-out newsletter': "Je souhaite être informé par Cozy des évolutions du produit (recommandé).", - 'import google account': "Synchroniser votre compte Gmail & importer mes calendriers, contacts et photos depuis Google", - 'import google account tip': "Vous devez vous authentifier sur votre compte Google pour autoriser Cozy à accéder aux informations hébergées chez Google", - 'import google account sign in': "S'authentifier chez Google", - 'leave google title': "Importez vos données dans Cozy", - 'leave google code content': "Collez le code transmis par Google ci-dessous :", - 'leave google code': "jeton google", - 'leave google choice': "Sélectionnez les données hébergées chez Google à importer :", - 'leave google choice sync gmail': "GMail - Accédez à vos emails depuis Cozy", - 'leave google choice contacts': "Contacts Google - Copier sur mon Cozy", - 'leave google choice calendar': "Calendriers Google - Copier sur mon Cozy", - 'leave google choice photos': "Photos Google - Copier sur mon Cozy", - 'leave google confirm': "Importer les données", - 'email caption': "Pour accéder à vos emails depuis Cozy, configurez votre compte.", - 'email email': "email", - 'email email tip': "Vous pourrez ajouter d'autres comptes depuis l'application.", - 'email password': "mot de passe", - 'email imap server': "serveur imap", - 'email imap port': "port", - 'email imap ssl': "Utiliser SSL ?", - 'email show advanced': "Configurer des paramètres avancés", - 'email imap login': "nom d'utilisateur imap", - 'email imap login tip': "Nom d'utilisateur, si différent de l'adresse email du compte.", - 'email smtp server': "serveur smtp", - 'email smtp port': "port smtp", - 'email smtp ssl': "Utiliser SSL ?", - 'email smtp login': "nom d'utilisateur smtp", - 'email smtp login tip': "Laisser vide pour utiliser le même nom d'utilisateur que pour le serveur imap", - 'email smtp password': "mot de passe smtp", - 'email smtp password tip': "Laisser vide pour utiliser le même mot de passe que pour le serveur imap", - 'login welcome': "Bienvenue", - 'login enter your password': "Entrez votre mot de passe pour accéder à votre Cozy :", - 'login password': "mot de passe", - 'login submit': "s'authentifier", - 'login auth success': "Authentification réussie, entrons !", - 'login recover': "Mot de passe oublié ? Envoyez-moi un email de restauration.", - 'login recover again': "Vous ne l'avez pas reçu ? Remvoyez-le moi.", - 'login recover sent title': "Email envoyé", - 'login recover sent message': "Un email contenant les instructions pour restaurer votre mot de passe vous a été envoyé.", - 'login wrong password title': "Mot de passe erroné", - 'login wrong password message': "Le mot de passe que vous avez saisi n'est pas correct, veuillez réessayer.", - 'reset welcome': "Restauration du mot de passe", - 'reset enter your password': "Entrez un nouveau mot de passe pour le restaurer", - 'reset password': "mot de passe", - 'reset submit': "restaurer votre mot de passe", - 'reset auth success': "mot de passe restauré", - 'reset wrong password title': "Votre mot de passe n'a pas pu être restauré", - 'reset wrong password message': "Le mot de passe que vous avez entré n'est pas correct, ou votre jeton de restauration est expiré.", - 'setup title': "Nous préparons votre Cozy…", - 'setup message': "Vous y être presque ! Dans quelques instants vous pourrez accéder à votre Cozy et reprendre le contrôle de vos données.", - 'setup on mobile title': "Utilisez Cozy sur votre périphérique Android !", - 'setup on mobile message': "Téléchargez l'app mobile Cozy sur Google Play :", - 'welcome title': "Félicitations ! Vous venez de reprendre le contrôle de vos données.", - 'welcome message': "Avec Cozy, vous pouvez stocker vos données dans votre Cloud personnel, que vous contrôlez, ce qui protège l'intimité de votre vie numérique. En effet, la société Cozy Cloud n'exploite pas les données que vous placez dans votre Cloud !" -}; -}); - ;require.register("routes/index", function(exports, require, module) { /* diff --git a/build/client/public/scripts/app.js.map b/build/client/public/scripts/app.js.map index dc05793d..e6465d49 100644 --- a/build/client/public/scripts/app.js.map +++ b/build/client/public/scripts/app.js.map @@ -1 +1 @@ -{"version":3,"sources":["app/application.coffee","app/initialize.coffee","app/lib/state_model.coffee","app/lib/timezones.coffee","app/locales/en.coffee","app/locales/fr.coffee","app/routes/index.coffee","app/states/auth.coffee","app/states/registration.coffee","app/views/app_layout.coffee","app/views/auth/feedback.coffee","app/views/auth/index.coffee","app/views/lib/form_view.coffee","app/views/register/controls.coffee","app/views/register/email.coffee","app/views/register/feedback.coffee","app/views/register/import.coffee","app/views/register/import_google.coffee","app/views/register/index.coffee","app/views/register/preset.coffee","app/views/register/setup.coffee","app/views/register/welcome.coffee","app/views/templates/layout_app.jade","app/views/templates/view_auth.jade","app/views/templates/view_auth_feedback.jade","app/views/templates/view_base.jade","app/views/templates/view_register_controls.jade","app/views/templates/view_register_email.jade","app/views/templates/view_register_feedback.jade","app/views/templates/view_register_import.jade","app/views/templates/view_register_import_google.jade","app/views/templates/view_register_preset.jade","app/views/templates/view_register_setup.jade","app/views/templates/view_register_welcome.jade"],"names":[],"mappings":"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;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtCA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA","file":"public/scripts/app.js","sourcesContent":["###\napplication\n\nMain application that create a Mn.Application singleton and exposes it. Needs\nrouter and app_layout view.\n###\n\nRouter = require 'routes'\nAppLayout = require 'views/app_layout'\n\n\nclass Application extends Backbone.Marionette.Application\n\n ###\n Sets application\n\n We instanciate root application components\n - router: we pass the app reference to it to easily get it without requiring\n application module later.\n - layout: the application layout view, rendered.\n ###\n initialize: ->\n @on 'start', (options) =>\n @router = new Router app: @\n\n @layout = new AppLayout()\n @layout.render()\n\n # Use pushState because URIs do *not* rely on fragment (see\n # `server/controllers/routes.coffee` file)\n Backbone.history.start pushState: true if Backbone.history\n Object.freeze @ if typeof Object.freeze is 'function'\n\n\n# Exports Application singleton instance\nmodule.exports = new Application()\n","###\nApplication bootstrap\n\nSets the browser environment to prepare it to launch the app, and then require\nthe application.\n###\n\napplication = require './application'\n\n\n###\nPolyglot initialization\n\nLocales need to be loaded in Polyglot before using it. We need to declares a\nglobal translator `t` method to use it in Marionette templates.\n\nWe use the `html[lang]` attribute to get the correct locale.\n###\ninitLocale = ->\n locale = $('html').attr 'lang'\n try phrases = require \"locales/#{locale}\"\n catch e\n phrases = require 'locales/en'\n polyglot = new Polyglot phrases: phrases, locale: locale\n # Temporary use a global variable to store the `t` helpers, waiting for\n # Marionette allow to register global helpers.\n # see https://github.com/marionettejs/backbone.marionette/issues/2164\n window.t = polyglot.t.bind polyglot\n\n###\nStarts\n\nTrigger locale initilization and starts application singleton.\n###\n$ ->\n initLocale()\n application.start()\n","###\nState-Machines top-level class\n\nWhen building a state-machine (a viewModel object propulsed by Bacon), this\ntop-level class is used to provides common methods an properties.\n###\n\nmodule.exports = class StateModel\n\n # Properties stores to state-machines Bacon properties\n properties: {}\n\n # The internal _cache object stores the properties values. Not really the\n # good way to do it, but useful for the toJSON method called in\n # Backbone.View.render method.\n #\n # TODO: find a new way to get properties values instead of caching them\n # (which is totally contradictory with the FRP philosophy).\n _cache: {}\n\n\n ###\n Initialize\n\n If a hash of key:values is passed at initialization, they're added to the\n state-machine properties as a Bacon.constant property.\n ###\n constructor: (options) ->\n @add key, Bacon.constant(value) for key, value of options\n @initialize()\n\n\n initialize: ->\n\n\n ###\n Get property\n\n Returns the property from the `properties` object\n ###\n get: (name) ->\n if @properties[name] then @properties[name]\n else Bacon.constant(undefined)\n\n\n ###\n Add property\n\n Add a property to the `properties` object. When a new property is added, a\n handler is binded to its changes to updates the internal `_cache` object\n with its new value.\n ###\n add: (name, property) ->\n unless @properties[name]\n @properties[name] = property\n property.onValue (value) =>\n @_cache[name] = value\n return property\n\n\n ###\n `toJSON` simplies returns the `_cache` object to get current properties\n values.\n ###\n toJSON: ->\n return @_cache\n","###\nTimezones\n\nExposes an array of all available timezones.\n###\n\nmodule.exports = [\n \"Europe/Paris\"\n \"Europe/Berlin\"\n \"Europe/Madrid\"\n \"Europe/Rome\"\n \"America/Los_Angeles\"\n \"America/New_York\"\n \"Africa/Abidjan\"\n \"Africa/Accra\"\n \"Africa/Addis_Ababa\"\n \"Africa/Algiers\"\n \"Africa/Asmara\"\n \"Africa/Bamako\"\n \"Africa/Bangui\"\n \"Africa/Banjul\"\n \"Africa/Bissau\"\n \"Africa/Blantyre\"\n \"Africa/Brazzaville\"\n \"Africa/Bujumbura\"\n \"Africa/Cairo\"\n \"Africa/Casablanca\"\n \"Africa/Ceuta\"\n \"Africa/Conakry\"\n \"Africa/Dakar\"\n \"Africa/Dar_es_Salaam\"\n \"Africa/Djibouti\"\n \"Africa/Douala\"\n \"Africa/El_Aaiun\"\n \"Africa/Freetown\"\n \"Africa/Gaborone\"\n \"Africa/Harare\"\n \"Africa/Johannesburg\"\n \"Africa/Kampala\"\n \"Africa/Khartoum\"\n \"Africa/Kigali\"\n \"Africa/Kinshasa\"\n \"Africa/Lagos\"\n \"Africa/Libreville\"\n \"Africa/Lome\"\n \"Africa/Luanda\"\n \"Africa/Lubumbashi\"\n \"Africa/Lusaka\"\n \"Africa/Malabo\"\n \"Africa/Maputo\"\n \"Africa/Maseru\"\n \"Africa/Mbabane\"\n \"Africa/Mogadishu\"\n \"Africa/Monrovia\"\n \"Africa/Nairobi\"\n \"Africa/Ndjamena\"\n \"Africa/Niamey\"\n \"Africa/Nouakchott\"\n \"Africa/Ouagadougou\"\n \"Africa/Porto-Novo\"\n \"Africa/Sao_Tome\"\n \"Africa/Tripoli\"\n \"Africa/Tunis\"\n \"Africa/Windhoek\"\n \"America/Adak\"\n \"America/Anchorage\"\n \"America/Anguilla\"\n \"America/Antigua\"\n \"America/Araguaina\"\n \"America/Argentina/Buenos_Aires\"\n \"America/Argentina/Catamarca\"\n \"America/Argentina/Cordoba\"\n \"America/Argentina/Jujuy\"\n \"America/Argentina/La_Rioja\"\n \"America/Argentina/Mendoza\"\n \"America/Argentina/Rio_Gallegos\"\n \"America/Argentina/Salta\"\n \"America/Argentina/San_Juan\"\n \"America/Argentina/San_Luis\"\n \"America/Argentina/Tucuman\"\n \"America/Argentina/Ushuaia\"\n \"America/Aruba\"\n \"America/Asuncion\"\n \"America/Atikokan\"\n \"America/Bahia\"\n \"America/Barbados\"\n \"America/Belem\"\n \"America/Belize\"\n \"America/Blanc-Sablon\"\n \"America/Boa_Vista\"\n \"America/Bogota\"\n \"America/Boise\"\n \"America/Cambridge_Bay\"\n \"America/Campo_Grande\"\n \"America/Cancun\"\n \"America/Caracas\"\n \"America/Cayenne\"\n \"America/Cayman\"\n \"America/Chicago\"\n \"America/Chihuahua\"\n \"America/Costa_Rica\"\n \"America/Cuiaba\"\n \"America/Curacao\"\n \"America/Danmarkshavn\"\n \"America/Dawson\"\n \"America/Dawson_Creek\"\n \"America/Denver\"\n \"America/Detroit\"\n \"America/Dominica\"\n \"America/Edmonton\"\n \"America/Eirunepe\"\n \"America/El_Salvador\"\n \"America/Fortaleza\"\n \"America/Glace_Bay\"\n \"America/Godthab\"\n \"America/Goose_Bay\"\n \"America/Grand_Turk\"\n \"America/Grenada\"\n \"America/Guadeloupe\"\n \"America/Guatemala\"\n \"America/Guayaquil\"\n \"America/Guyana\"\n \"America/Halifax\"\n \"America/Havana\"\n \"America/Hermosillo\"\n \"America/Indiana/Indianapolis\"\n \"America/Indiana/Knox\"\n \"America/Indiana/Marengo\"\n \"America/Indiana/Petersburg\"\n \"America/Indiana/Tell_City\"\n \"America/Indiana/Vevay\"\n \"America/Indiana/Vincennes\"\n \"America/Indiana/Winamac\"\n \"America/Inuvik\"\n \"America/Iqaluit\"\n \"America/Jamaica\"\n \"America/Juneau\"\n \"America/Kentucky/Louisville\"\n \"America/Kentucky/Monticello\"\n \"America/La_Paz\"\n \"America/Lima\"\n \"America/Los_Angeles\"\n \"America/Maceio\"\n \"America/Managua\"\n \"America/Manaus\"\n \"America/Martinique\"\n \"America/Matamoros\"\n \"America/Mazatlan\"\n \"America/Menominee\"\n \"America/Merida\"\n \"America/Mexico_City\"\n \"America/Miquelon\"\n \"America/Moncton\"\n \"America/Monterrey\"\n \"America/Montevideo\"\n \"America/Montreal\"\n \"America/Montserrat\"\n \"America/Nassau\"\n \"America/New_York\"\n \"America/Nipigon\"\n \"America/Nome\"\n \"America/Noronha\"\n \"America/North_Dakota/Center\"\n \"America/North_Dakota/New_Salem\"\n \"America/Ojinaga\"\n \"America/Panama\"\n \"America/Pangnirtung\"\n \"America/Paramaribo\"\n \"America/Phoenix\"\n \"America/Port-au-Prince\"\n \"America/Port_of_Spain\"\n \"America/Porto_Velho\"\n \"America/Puerto_Rico\"\n \"America/Rainy_River\"\n \"America/Rankin_Inlet\"\n \"America/Recife\"\n \"America/Regina\"\n \"America/Resolute\"\n \"America/Rio_Branco\"\n \"America/Santa_Isabel\"\n \"America/Santarem\"\n \"America/Santiago\"\n \"America/Santo_Domingo\"\n \"America/Sao_Paulo\"\n \"America/Scoresbysund\"\n \"America/St_Johns\"\n \"America/St_Kitts\"\n \"America/St_Lucia\"\n \"America/St_Thomas\"\n \"America/St_Vincent\"\n \"America/Swift_Current\"\n \"America/Tegucigalpa\"\n \"America/Thule\"\n \"America/Thunder_Bay\"\n \"America/Tijuana\"\n \"America/Toronto\"\n \"America/Tortola\"\n \"America/Vancouver\"\n \"America/Whitehorse\"\n \"America/Winnipeg\"\n \"America/Yakutat\"\n \"America/Yellowknife\"\n \"Antarctica/Casey\"\n \"Antarctica/Davis\"\n \"Antarctica/DumontDUrville\"\n \"Antarctica/Mawson\"\n \"Antarctica/McMurdo\"\n \"Antarctica/Palmer\"\n \"Antarctica/Rothera\"\n \"Antarctica/Syowa\"\n \"Antarctica/Vostok\"\n \"Asia/Aden\"\n \"Asia/Almaty\"\n \"Asia/Amman\"\n \"Asia/Anadyr\"\n \"Asia/Aqtau\"\n \"Asia/Aqtobe\"\n \"Asia/Ashgabat\"\n \"Asia/Baghdad\"\n \"Asia/Bahrain\"\n \"Asia/Baku\"\n \"Asia/Bangkok\"\n \"Asia/Beirut\"\n \"Asia/Bishkek\"\n \"Asia/Brunei\"\n \"Asia/Choibalsan\"\n \"Asia/Chongqing\"\n \"Asia/Colombo\"\n \"Asia/Damascus\"\n \"Asia/Dhaka\"\n \"Asia/Dili\"\n \"Asia/Dubai\"\n \"Asia/Dushanbe\"\n \"Asia/Gaza\"\n \"Asia/Harbin\"\n \"Asia/Ho_Chi_Minh\"\n \"Asia/Hong_Kong\"\n \"Asia/Hovd\"\n \"Asia/Irkutsk\"\n \"Asia/Jakarta\"\n \"Asia/Jayapura\"\n \"Asia/Jerusalem\"\n \"Asia/Kabul\"\n \"Asia/Kamchatka\"\n \"Asia/Karachi\"\n \"Asia/Kashgar\"\n \"Asia/Kathmandu\"\n \"Asia/Kolkata\"\n \"Asia/Krasnoyarsk\"\n \"Asia/Kuala_Lumpur\"\n \"Asia/Kuching\"\n \"Asia/Kuwait\"\n \"Asia/Macau\"\n \"Asia/Magadan\"\n \"Asia/Makassar\"\n \"Asia/Manila\"\n \"Asia/Muscat\"\n \"Asia/Nicosia\"\n \"Asia/Novokuznetsk\"\n \"Asia/Novosibirsk\"\n \"Asia/Omsk\"\n \"Asia/Oral\"\n \"Asia/Phnom_Penh\"\n \"Asia/Pontianak\"\n \"Asia/Pyongyang\"\n \"Asia/Qatar\"\n \"Asia/Qyzylorda\"\n \"Asia/Rangoon\"\n \"Asia/Riyadh\"\n \"Asia/Sakhalin\"\n \"Asia/Samarkand\"\n \"Asia/Seoul\"\n \"Asia/Shanghai\"\n \"Asia/Singapore\"\n \"Asia/Taipei\"\n \"Asia/Tashkent\"\n \"Asia/Tbilisi\"\n \"Asia/Tehran\"\n \"Asia/Thimphu\"\n \"Asia/Tokyo\"\n \"Asia/Ulaanbaatar\"\n \"Asia/Urumqi\"\n \"Asia/Vientiane\"\n \"Asia/Vladivostok\"\n \"Asia/Yakutsk\"\n \"Asia/Yekaterinburg\"\n \"Asia/Yerevan\"\n \"Atlantic/Azores\"\n \"Atlantic/Bermuda\"\n \"Atlantic/Canary\"\n \"Atlantic/Cape_Verde\"\n \"Atlantic/Faroe\"\n \"Atlantic/Madeira\"\n \"Atlantic/Reykjavik\"\n \"Atlantic/South_Georgia\"\n \"Atlantic/St_Helena\"\n \"Atlantic/Stanley\"\n \"Australia/Adelaide\"\n \"Australia/Brisbane\"\n \"Australia/Broken_Hill\"\n \"Australia/Currie\"\n \"Australia/Darwin\"\n \"Australia/Eucla\"\n \"Australia/Hobart\"\n \"Australia/Lindeman\"\n \"Australia/Lord_Howe\"\n \"Australia/Melbourne\"\n \"Australia/Perth\"\n \"Australia/Sydney\"\n \"Canada/Atlantic\"\n \"Canada/Central\"\n \"Canada/Eastern\"\n \"Canada/Mountain\"\n \"Canada/Newfoundland\"\n \"Canada/Pacific\"\n \"Europe/Amsterdam\"\n \"Europe/Andorra\"\n \"Europe/Athens\"\n \"Europe/Belgrade\"\n \"Europe/Berlin\"\n \"Europe/Brussels\"\n \"Europe/Bucharest\"\n \"Europe/Budapest\"\n \"Europe/Chisinau\"\n \"Europe/Copenhagen\"\n \"Europe/Dublin\"\n \"Europe/Gibraltar\"\n \"Europe/Helsinki\"\n \"Europe/Istanbul\"\n \"Europe/Kaliningrad\"\n \"Europe/Kiev\"\n \"Europe/Lisbon\"\n \"Europe/London\"\n \"Europe/Luxembourg\"\n \"Europe/Madrid\"\n \"Europe/Malta\"\n \"Europe/Minsk\"\n \"Europe/Monaco\"\n \"Europe/Moscow\"\n \"Europe/Oslo\"\n \"Europe/Paris\"\n \"Europe/Prague\"\n \"Europe/Riga\"\n \"Europe/Rome\"\n \"Europe/Samara\"\n \"Europe/Simferopol\"\n \"Europe/Sofia\"\n \"Europe/Stockholm\"\n \"Europe/Tallinn\"\n \"Europe/Tirane\"\n \"Europe/Uzhgorod\"\n \"Europe/Vaduz\"\n \"Europe/Vienna\"\n \"Europe/Vilnius\"\n \"Europe/Volgograd\"\n \"Europe/Warsaw\"\n \"Europe/Zaporozhye\"\n \"Europe/Zurich\"\n \"GMT\"\n \"Indian/Antananarivo\"\n \"Indian/Chagos\"\n \"Indian/Christmas\"\n \"Indian/Cocos\"\n \"Indian/Comoro\"\n \"Indian/Kerguelen\"\n \"Indian/Mahe\"\n \"Indian/Maldives\"\n \"Indian/Mauritius\"\n \"Indian/Mayotte\"\n \"Indian/Reunion\"\n \"Pacific/Apia\"\n \"Pacific/Auckland\"\n \"Pacific/Chatham\"\n \"Pacific/Easter\"\n \"Pacific/Efate\"\n \"Pacific/Enderbury\"\n \"Pacific/Fakaofo\"\n \"Pacific/Fiji\"\n \"Pacific/Funafuti\"\n \"Pacific/Galapagos\"\n \"Pacific/Gambier\"\n \"Pacific/Guadalcanal\"\n \"Pacific/Guam\"\n \"Pacific/Honolulu\"\n \"Pacific/Johnston\"\n \"Pacific/Kiritimati\"\n \"Pacific/Kosrae\"\n \"Pacific/Kwajalein\"\n \"Pacific/Majuro\"\n \"Pacific/Marquesas\"\n \"Pacific/Midway\"\n \"Pacific/Nauru\"\n \"Pacific/Niue\"\n \"Pacific/Norfolk\"\n \"Pacific/Noumea\"\n \"Pacific/Pago_Pago\"\n \"Pacific/Palau\"\n \"Pacific/Pitcairn\"\n \"Pacific/Ponape\"\n \"Pacific/Port_Moresby\"\n \"Pacific/Rarotonga\"\n \"Pacific/Saipan\"\n \"Pacific/Tahiti\"\n \"Pacific/Tarawa\"\n \"Pacific/Tongatapu\"\n \"Pacific/Truk\"\n \"Pacific/Wake\"\n \"Pacific/Wallis\"\n \"US/Alaska\"\n \"US/Arizona\"\n \"US/Central\"\n \"US/Eastern\"\n \"US/Hawaii\"\n \"US/Mountain\"\n \"US/Pacific\"\n \"UTC\"\n]\n","###\nen_US locale\n###\n\nmodule.exports =\n 'next': \"next\"\n 'skip': \"skip\"\n 'cancel': \"cancel\"\n 'sign up': \"create my Cozy\"\n 'add email': \"add email account\"\n 'welcome': \"let me in!\"\n 'confirm': \"confirm\"\n 'step preset': \"settings\"\n 'step import': \"import your datas\"\n 'step email settings': \"configure your email\"\n\n 'preset email': \"e-mail\"\n 'preset email tip': \"It will be used to contact you if you lose your password.\"\n 'preset name': \"name\"\n 'preset name tip': \"It's displayed when you share files with people or invite them to events.\"\n 'preset password': \"password\"\n 'preset password tip': \"A strong password of at least 8 characters is required (special characters recommended).\"\n 'preset timezone': \"timezone\"\n 'preset timezone tip': \"It's needed to properly display your calendar.\"\n 'preset opt-in help': \"Allow Cozy to use my usage stats to improve the product.\"\n 'preset opt-out newsletter': \"Subscribe to the Beta Cozy Newsletter (highly recommended).\"\n\n 'import google account': \"Synchronize your Gmail account & import calendar, contacts and photos from Google\"\n 'import google account tip': \"You'll need to sign in to your Google account to allow your Cozy to access to data hosted on Google\"\n 'import google account sign in': \"Sign in to Google\"\n\n 'leave google title': \"Feed your data into Cozy\"\n 'leave google code content': \"Paste the code from Google below:\"\n 'leave google code': \"google code\"\n 'leave google choice': \"Choose what you want to do with your data stored on Google servers:\"\n 'leave google choice sync gmail': \"GMail - Access your email from Cozy\"\n 'leave google choice contacts': \"One-time import of Google Contacts\"\n 'leave google choice calendar': \"One-time import of Google Calendar\"\n 'leave google choice photos': \"One-time import of Google Photos\"\n 'leave google confirm': \"Import data\"\n\n 'email caption': \"If you want to be able to read your email from your Cozy, we need to set it up.\"\n 'email email': \"e-mail\"\n 'email email tip': \"You can add more emails accounts later.\"\n 'email password': \"password\"\n 'email imap server': \"imap server\"\n 'email imap port': \"port\"\n 'email imap ssl': \"Using SSL?\"\n 'email show advanced': \"Show advanced parameters\"\n 'email imap login': \"imap login\"\n 'email imap login tip': \"Add your IMAP username, if it is different from your email address\"\n 'email smtp server': \"smtp server\"\n 'email smtp port': \"smtp port\"\n 'email smtp ssl': \"Using SSL?\"\n 'email smtp login': \"smtp login\"\n 'email smtp login tip': \"Leave empty to use the same username as for the imap server\"\n 'email smtp password': \"smtp password\"\n 'email smtp password tip': \"Leave empty to use the same password as for the imap server\"\n\n 'login welcome': \"Welcome\"\n 'login enter your password': \"Please enter your password to access to your Cozy:\"\n 'login password': \"password\"\n 'login submit': \"sign in\"\n 'login auth success': \"Authentication successful, let's go in!\"\n 'login recover': \"Forget password? Email me instructions\"\n 'login recover again': \"Did not receive it? Send it again\"\n 'login recover sent title': \"Email sent\"\n 'login recover sent message': \"Please check your email, follow instructions to reset your password\"\n 'login wrong password title': \"Wrong password\"\n 'login wrong password message': \"The pasword you entered is incorrect, please try again\"\n\n 'reset welcome': \"Reset password\"\n 'reset enter your password': \"Please enter your new password to reset it\"\n 'reset password': \"password\"\n 'reset submit': \"reset your password\"\n 'reset auth success': \"password successfully resetted\"\n 'reset wrong password title': \"Your password can't be resetted\"\n 'reset wrong password message': \"The pasword you entered is incorrect, or your reset token is expired\"\n\n 'setup title': \"We're setting up your Cozy…\"\n 'setup message': \"You are now close to have your own personal cloud where your data are stored.\"\n 'setup on mobile title': \"Use Cozy on your Android device!\"\n 'setup on mobile message': \"Check out our mobile app on Google Play:\"\n\n 'welcome title': \"Congratulations on taking back control of your personal data.\"\n 'welcome message': \"With Cozy, you can store your data on your personal Cloud that you control. As opposed to most commercial Cloud services, there is no data-mining taking place on your Cozy Cloud, so no large corporation is trying to learn everything from you by searching through your data.\"\n","###\nfr_FR locale\n###\n\nmodule.exports =\n 'next': \"suivant\"\n 'skip': \"passer\"\n 'cancel': \"annuler\"\n 'sign up': \"créer mon Cozy\"\n 'add email': \"ajouter un compte email\"\n 'welcome': \"c'est parti !\"\n 'confirm': \"valider\"\n 'step preset': \"réglages\"\n 'step import': \"importer des données\"\n 'step email settings': \"configurer votre email\"\n\n 'preset email': \"email\"\n 'preset email tip': \"Cette adresse email sera utilisée pour vous envoyer un message lors d'une récupération de mot de passe.\"\n 'preset name': \"nom\"\n 'preset name tip': \"Le nom sous lequel vous apparaitrez dans les messages de partages et les invitations calendrier.\"\n 'preset password': \"mot de passe\"\n 'preset password tip': \"Un mot de passe de fort d'au-moins 8 caractères (les caractères spéciaux sont recommandés).\"\n 'preset timezone': \"fuseau horaire\"\n 'preset timezone tip': \"Vous permet d'afficher correctement les heures dans les agendas.\"\n 'preset opt-in help': \"Je souhaite aider Cozy à améliorer la plateforme en transmettant des données statistiques anonymes relatives à mon utilisation.\"\n 'preset opt-out newsletter': \"Je souhaite être informé par Cozy des évolutions du produit (recommandé).\"\n\n 'import google account': \"Synchroniser votre compte Gmail & importer mes calendriers, contacts et photos depuis Google\"\n 'import google account tip': \"Vous devez vous authentifier sur votre compte Google pour autoriser Cozy à accéder aux informations hébergées chez Google\"\n 'import google account sign in': \"S'authentifier chez Google\"\n\n 'leave google title': \"Importez vos données dans Cozy\"\n 'leave google code content': \"Collez le code transmis par Google ci-dessous :\"\n 'leave google code': \"jeton google\"\n 'leave google choice': \"Sélectionnez les données hébergées chez Google à importer :\"\n 'leave google choice sync gmail': \"GMail - Accédez à vos emails depuis Cozy\"\n 'leave google choice contacts': \"Contacts Google - Copier sur mon Cozy\"\n 'leave google choice calendar': \"Calendriers Google - Copier sur mon Cozy\"\n 'leave google choice photos': \"Photos Google - Copier sur mon Cozy\"\n 'leave google confirm': \"Importer les données\"\n\n 'email caption': \"Pour accéder à vos emails depuis Cozy, configurez votre compte.\"\n 'email email': \"email\"\n 'email email tip': \"Vous pourrez ajouter d'autres comptes depuis l'application.\"\n 'email password': \"mot de passe\"\n 'email imap server': \"serveur imap\"\n 'email imap port': \"port\"\n 'email imap ssl': \"Utiliser SSL ?\"\n 'email show advanced': \"Configurer des paramètres avancés\"\n 'email imap login': \"nom d'utilisateur imap\"\n 'email imap login tip': \"Nom d'utilisateur, si différent de l'adresse email du compte.\"\n 'email smtp server': \"serveur smtp\"\n 'email smtp port': \"port smtp\"\n 'email smtp ssl': \"Utiliser SSL ?\"\n 'email smtp login': \"nom d'utilisateur smtp\"\n 'email smtp login tip': \"Laisser vide pour utiliser le même nom d'utilisateur que pour le serveur imap\"\n 'email smtp password': \"mot de passe smtp\"\n 'email smtp password tip': \"Laisser vide pour utiliser le même mot de passe que pour le serveur imap\"\n\n 'login welcome': \"Bienvenue\"\n 'login enter your password': \"Entrez votre mot de passe pour accéder à votre Cozy :\"\n 'login password': \"mot de passe\"\n 'login submit': \"s'authentifier\"\n 'login auth success': \"Authentification réussie, entrons !\"\n 'login recover': \"Mot de passe oublié ? Envoyez-moi un email de restauration.\"\n 'login recover again': \"Vous ne l'avez pas reçu ? Remvoyez-le moi.\"\n 'login recover sent title': \"Email envoyé\"\n 'login recover sent message': \"Un email contenant les instructions pour restaurer votre mot de passe vous a été envoyé.\"\n 'login wrong password title': \"Mot de passe erroné\"\n 'login wrong password message': \"Le mot de passe que vous avez saisi n'est pas correct, veuillez réessayer.\"\n\n 'reset welcome': \"Restauration du mot de passe\"\n 'reset enter your password': \"Entrez un nouveau mot de passe pour le restaurer\"\n 'reset password': \"mot de passe\"\n 'reset submit': \"restaurer votre mot de passe\"\n 'reset auth success': \"mot de passe restauré\"\n 'reset wrong password title': \"Votre mot de passe n'a pas pu être restauré\"\n 'reset wrong password message': \"Le mot de passe que vous avez entré n'est pas correct, ou votre jeton de restauration est expiré.\"\n\n 'setup title': \"Nous préparons votre Cozy…\"\n 'setup message': \"Vous y être presque ! Dans quelques instants vous pourrez accéder à votre Cozy et reprendre le contrôle de vos données.\"\n 'setup on mobile title': \"Utilisez Cozy sur votre périphérique Android !\"\n 'setup on mobile message': \"Téléchargez l'app mobile Cozy sur Google Play :\"\n\n 'welcome title': \"Félicitations ! Vous venez de reprendre le contrôle de vos données.\"\n 'welcome message': \"Avec Cozy, vous pouvez stocker vos données dans votre Cloud personnel, que vous contrôlez, ce qui protège l'intimité de votre vie numérique. En effet, la société Cozy Cloud n'exploite pas les données que vous placez dans votre Cloud !\"\n","###\nMain application Router\n\nHandles routes exposed by the application. It generate views/viewModels couples\nwhen needed and show them in the app_layout regions.\n###\n\nRegisterView = require 'views/register'\nRegistrationModel = require 'states/registration'\n\nAuthView = require 'views/auth'\nAuthModel = require 'states/auth'\n\n\nmodule.exports = class Router extends Backbone.Router\n\n routes:\n 'login(?next=*path)': 'login'\n 'login(/*path)': 'login'\n 'password/reset/:key': 'resetPassword'\n 'register(?step=:step)': 'register'\n\n\n ###\n Initialize stores the application reference for a later use inside the\n router.\n ###\n initialize: (options) ->\n @app = options.app\n\n\n ###\n Auth view generation\n\n Login and ResetPassword views are basically the same ones and uses the same\n logics. So they use the same view/state-model class and we switch the\n rendering mode at launch by passing a `type` option.\n\n View options also contains a `backend` url which is the endpoint called by\n the submitted form.\n ###\n auth: (path, options) ->\n # The `next` state-model option contains the path where the app must\n # redirect after a successful login.\n auth = new AuthModel next: path\n @app.layout.showChildView 'content', new AuthView _.extend options,\n model: auth\n\n\n ###\n login route\n\n `path` will be extracted from url:\n - the part after the `/login` (e.g. /login/foo/bar => /foo/bar)\n - a `next` query string parameter (the new and more cleaner way, see\n server/middlewares/authentication.coffee#L36)\n ###\n login: (path = '/') ->\n if window.location.hash\n path = window.location.hash\n @auth path,\n backend: '/login'\n type: 'login'\n\n\n resetPassword: (key) ->\n @auth '/login',\n backend: window.location.pathname\n type: 'reset'\n\n\n ###\n Register route\n\n Register views uses the same layout view and the step content is a subview\n component determined by the step param.\n ###\n register: (step = 'preset') ->\n currentView = @app.layout.getChildView 'content'\n\n # Ensure the current view in the app layout is a RegisterView. If not,\n # then creates a new RegistrationModel state-machine and a RegisterView\n # and show it in the main AppLayout Region\n unless currentView? and currentView instanceof RegisterView\n registration = new RegistrationModel()\n # We assign the step property to the router's navigate method to\n # update the URL each time the step changes.\n registration.get('step')\n .map (step) -> \"register?step=#{step}\" if step\n .assign @, 'navigate'\n\n currentView = new RegisterView model: registration\n @app.layout.showChildView 'content', currentView\n\n # When the RegisterView is render in the AppLayout, set its current\n # step (default to `preset`).\n currentView.model.setStep step\n","###\nAuth state-machine\n\nExposed streams and properties used by the Login and ResetPassword views.\n###\n\nStateModel = require 'lib/state_model'\n\n\nmodule.exports = class Auth extends StateModel\n\n initialize: ->\n # Declares all buses used to organize streams\n @isBusy = new Bacon.Bus() # enable/disable button busy state\n @alert = new Bacon.Bus() # alerts updates after submissions\n @success = new Bacon.Bus() # receive success returns after submit\n @signin = new Bacon.Bus() # form submission bus\n @sendReset = new Bacon.Bus() # reset link submission\n\n # Adding an `alert` property that can be used in view rendering\n @add 'alert', @alert.toProperty()\n\n # Register the submission methods to their buses\n @signin.onValue @signinSubmit\n @sendReset.onValue @sendResetSubmit\n\n ###\n Redirect handler\n\n When a success respond to a sign in form submission, then get the `next`\n property value and redirect the user to this URL.\n ###\n @success.map @get 'next'\n .onValue (next) ->\n setTimeout ->\n window.location.pathname = next\n , 500\n\n\n ###\n Sign in submission\n\n Submit a form in an ajax request and handle its response in a Bacon stream.\n\n - `form`: an object containing the form values\n ###\n signinSubmit: (form) =>\n data = JSON.stringify password: form.password\n req = Bacon.fromPromise $.post form.action, data\n\n # Plug success response to `@success` stream and set `@alert` to false\n # to reset it.\n @success.plug req.map '.success'\n @alert.plug req.map false\n\n # Plug error response to `@alert` stream. We assume it's always because\n # password isn't correct.\n @alert.plug req.errors().mapError\n status: 'error'\n title: 'wrong password title'\n message: 'wrong password message'\n\n # Plug ajax request end to reset the button `busy` state\n @isBusy.plug req.mapEnd false\n\n\n ###\n Reset link submission\n\n Submit the request to get a password recover link.\n ###\n sendResetSubmit: =>\n reset = Bacon.fromPromise $.post '/login/forgot'\n\n # Plug the request response to the `@alert` bus to display a message to\n # user that confirm the email sending.\n @alert.plug reset.map\n status: 'success'\n title: 'recover sent title'\n message: 'recover sent message'\n","###\nRegistration state-machine\n\nExposed streams and properties to the Register* views.\n###\n\nStateModel = require 'lib/state_model'\n\n\nmodule.exports = class Registration extends StateModel\n\n ###\n Registration process consists of a progress across many screens, in a\n non-linear mode. So, to keep it consistent, we declare the flow between\n screens in this step var. Each step can declares:\n - next: the step that comes after\n - nextLabel: the label for the next button flow control\n - nocontrols: hide the flow controls\n ###\n steps:\n preset:\n next: 'import'\n nextLabel: 'sign up'\n import:\n next: 'email'\n nextLabel: 'skip'\n import_google:\n nocontrols: true\n email:\n next: 'setup'\n nextLabel: 'skip'\n setup:\n next: 'welcome'\n nocontrols: true\n welcome:\n nextLabel: 'welcome'\n\n\n initialize: ->\n # Initialize the bus to stream errors\n @errors = new Bacon.Bus()\n\n # Initialize each parts of registration process\n @initStep()\n @initControls()\n @initSignup()\n @initSetEmail()\n\n\n ###\n Set step property\n\n A simple wrapper to push the new step value in the `step` property.\n ###\n setStep: (newStep) ->\n @setStepBus.push newStep\n\n\n ###\n Initialize step flow\n\n Declares the streams and properties that'll be used to control step flow.\n ###\n initStep: ->\n @setStepBus = new Bacon.Bus() # receive step updates\n @stepValve = new Bacon.Bus() # a valve property that can temporary\n # interrupt the step flow\n\n # `step` property (added to the state-machine below) is streamed by the\n # `setStepBus` stream, which is controlled by the `stepValve`, and\n # filtered to ensure that the step exists (i.e step exists in the\n # `steps` var)\n step = @setStepBus\n .holdWhen @stepValve.startWith(false).toProperty()\n .filter (step) => step in Object.keys @steps\n .toProperty null\n\n @add 'step', step\n # `nextStep` property contains the next step to come\n @add 'nextStep', step.map (step) => @steps[step]?.next or null\n\n\n ###\n Initialize the controls flow\n ###\n initControls: ->\n # Creates streams to handle controls state changes\n @nextEnabled = new Bacon.Bus() # enable/disable the next button\n @nextBusy = new Bacon.Bus() # set next button busy state\n @nextLabel = new Bacon.Bus() # set next button label\n\n # To simply get next button state, we combine all streams / properties\n # that represents it in a complex coombined property. It can be easily\n # mapped to get state (e.g. `nextControl.map '.visible'` returns a\n # boolean that describes if the control should be visible or not, using\n # the `nocontrol` key declared in the `steps` var).\n nextControl = Bacon.combineTemplate\n enabled: @nextEnabled.startWith(true).toProperty()\n busy: @nextBusy.startWith(false).toProperty()\n label: @nextLabel.startWith('next').toProperty()\n visible: @get('step').map (step) => not @steps[step]?.nocontrols\n\n # We update the next button label using the `nextLabel` key in the\n # `steps` var. We use a Bus to stream the value (rather than map is like\n # the visible property above) to let views decides to update the label\n # themselves.\n @nextLabel.plug @get('step').map (step) => @steps[step]?.nextLabel\n\n # In case the next called step isn't declared in the `steps` var, we\n # assume it's a URL and navigate to it.\n @setStepBus\n .filter (value) => !(value in Object.keys @steps)\n .onValue (path) ->\n window.location.pathname = path\n\n\n # Add the `nextControl` property ti the state-machine\n @add 'nextControl', nextControl\n\n\n ###\n Initialize sign up form\n ###\n initSignup: ->\n # Declares a stream to receive the form submission\n @signup = new Bacon.Bus()\n\n # If the current step is `preset`, set the valve to block the step flow:\n # it will resume when the sign up form request returns a success.\n @stepValve.plug @get('step').map (step) -> step is 'preset'\n # Disable the next button when enter in the `preset` step, it will be\n # re-enabled when all required inputs are filled\n @nextEnabled.plug @get('step').map (step) -> step isnt 'preset'\n # Subscribe the `onSignupSubmit` handler to the sign up stream\n @signup.onValue @signupSubmit\n\n\n ###\n Treats signup submission\n\n - data: an object containing the form input entries as key/values pairs\n ###\n signupSubmit: (data) =>\n # Submit the form content to the register endpoint and creates a stream\n # with the ajax promise\n req = Bacon.fromPromise $.post '/register', JSON.stringify data\n # If the request is successful, we stores the username in the global\n # scope to prepare the login view.\n req.subscribe -> window.username = data['public_name']\n # Unblock the step flow valve when the response is successful\n @stepValve.plug req.map false\n # Map request errors in the `errors` stream\n @errors.plug req.errors().mapError '.responseJSON.errors'\n # Map the request end to the next button busy state\n @nextBusy.plug req.mapEnd false\n\n\n ###\n Initialize email account creation form\n\n Simply creates a bus to get the form submission and subscribe the submission\n handler to this stream.\n ###\n initSetEmail: ->\n @setEmail = new Bacon.Bus()\n @setEmail.onValue @setEmailSubmit\n\n\n ###\n Treats email account creation form\n\n - data: an object containing the form input entries as key/values pairs\n ###\n setEmailSubmit: (data) =>\n # Map form data to the _email_ app endpoint expected form\n login = data['imap-login'] or data.email\n accountData =\n id: null\n label: data.email\n name: data.email.split('@')[0]\n login: login\n password: data.password\n accountType: \"IMAP\"\n draftMailbox: \"\"\n favoriteMailboxes: null\n imapPort: data['imap-port']\n imapSSL: data['imap-ssl']\n imapServer: data['imap-server']\n imapTLS: false\n smtpLogin: data['smtp-login'] or login\n smtpMethod: \"PLAIN\"\n smtpPassword: data['smtp-password'] or data.password\n smtpPort: data['smtp-port']\n smtpSSL: data['smtp-ssl']\n smtpServer: data['smtp-server'] or data['imap-server']\n smtpTLS: false\n mailboxes: \"\"\n sentMailbox: \"\"\n trashMailbox: \"\"\n\n # We directly call the _emails_ app account creation endpoint and submit\n # the accountData. We do not attach any handler to the response as we\n # don't want to treat responses nor errors in onboarding: user will fix\n # a wrong setup in the _emails_ app directly.\n $.ajax\n type: 'POST'\n url: '/apps/emails/account'\n data: JSON.stringify accountData\n contentType: \"application/json; charset=utf-8\",\n dataType: 'json'\n","###\nApp Layout\n\nAttach itself to the `[role=application] DOM node and declares the application\nmain region for its subviews.\n###\n\nmodule.exports = class AppLayout extends Mn.LayoutView\n\n template: require 'views/templates/layout_app'\n\n el: '[role=application]'\n\n regions:\n content: '.container'\n","module.exports = class AuthFeedbackView extends Mn.ItemView\n\n template: require 'views/templates/view_auth_feedback'\n\n ui:\n forgot: 'a.forgot'\n\n\n serializeData: ->\n _.extend @model.toJSON(),\n forgot: @options.forgot\n prefix: @options.prefix\n\n\n initialize: ->\n @model.get('alert').subscribe @render\n\n @model.alert\n .map (res) ->\n if res.status then res.status else null\n .assign @$el, 'attr', 'class'\n\n if @options.forgot\n sendLink = @$el.asEventStream 'click', @ui.forgot\n .doAction '.preventDefault'\n @model.sendReset.plug sendLink\n","###\nMain Login/ResetPassword view\n\nCreates a view form that display the form to submit password (in sign in and\nreset password mode). It inherits from `Mn.LayoutView` because it declares a\nregion to host form feedbacks (state-machine `alert` property).\n###\n\nFeedbackView = require 'views/auth/feedback'\n\n\nmodule.exports = class AuthView extends Mn.LayoutView\n\n tagName: 'form'\n\n className: ->\n \"#{@options.type} auth\"\n\n attributes: ->\n data =\n method: 'POST'\n action: @options.backend\n\n template: require 'views/templates/view_auth'\n\n regions:\n 'feedback': '.feedback'\n\n ui:\n passwd: 'input[type=password]'\n submit: '.controls button[type=submit]'\n\n\n ###\n Data exposed to template\n\n - username: username to display, gets from global vars\n (see server/views/index.jade#L14)\n - prefix: type is passed as prefix for locales translations\n ###\n serializeData: ->\n username: window.username\n prefix: @options.type\n\n\n ###\n Initialize internals\n\n - streams outputted from DOM elements\n - properties extracted from streams\n ###\n initialize: ->\n # Create property for password input, delegated from the input element\n # events, mapped to its value\n password = @$el.asEventStream 'focus keyup blur', @ui.passwd\n .map '.target.value'\n .toProperty('')\n\n # Boolean property that confirms if the input is filled or not\n @passwordEntered = password.map (value) -> !!value\n\n # Submit stream, delegated from the submission event, and filtered by\n # the password input (submit can only be triggered if the password field\n # is not empty)\n submit = @$el.asEventStream 'click', @ui.submit\n .doAction '.preventDefault'\n .filter @passwordEntered\n\n # A complex property that contains the value of the form fields (here,\n # password only), and the action URL.\n # The property is sampled (changes occurs) by the form submit stream.\n formTpl =\n password: password\n action: @options.backend\n form = Bacon.combineTemplate formTpl\n .sampledBy submit\n\n # Plug the form submission to the busy bus (set the button busy state\n # to true) and to the sign in bus to trigger the form submission in the\n # state-machine.\n @model.isBusy.plug form.map true\n @model.signin.plug form\n\n\n ###\n After rendering\n\n When template is rendered into the DOM, attach reactive actions to its\n elements.\n ###\n onRender: ->\n # Render the feedback child view\n @showChildView 'feedback', new FeedbackView\n forgot: @options.type is 'login'\n prefix: @options.type\n model: @model\n\n # Select all password field content at focus\n @ui.passwd.asEventStream 'focus'\n .assign @ui.passwd[0], 'select'\n\n # This is a ugly workaround to the autofocus issue: the field is marked\n # as `[autofocus]` so it gets the focus when the page loads. But if the\n # field is already filled (i.e. by the browser password manager), the\n # focus is properly given *but* the focus event isn't triggered, so the\n # select handler declared above isn't executed and the field content is\n # not selected.\n # So we force the focus after a short time (to let the DOM breath), to\n # trigger the `onFocus` event subscribers.\n setTimeout =>\n @ui.passwd.focus()\n , 100\n\n # Focus again to avoid blinks and ensure that everything is\n # selected.\n # Without it Firefox doesn't select the field content in every\n # cases.\n setTimeout =>\n @ui.passwd.focus()\n , 300\n\n # Assign the button busy state to the state-machine busy state\n @model.isBusy\n .assign @ui.submit, 'attr', 'aria-busy'\n\n # When the form is successfully submitted, change the submit button\n # content to a check mark…\n @model.success\n .map =>\n $ '',\n class: 'fa fa-check'\n text: t \"#{@options.type} auth success\"\n .assign @ui.submit, 'html'\n\n # …and change its class to reflect success\n @model.success\n .assign @ui.submit, 'toggleClass', 'btn-success'\n\n # Re select all password field on failure.\n @model.alert\n .assign @ui.passwd[0], 'select'\n\n","###\nForm View\n\nThis is a top-level class that contains helpers for FormViews. It is not\nintended to be used directly.\n###\n\nmodule.exports = class FormView extends Mn.ItemView\n\n tagName: 'form'\n\n ui:\n labels: 'label.with-input'\n inputs: 'label input'\n\n\n ###\n Prepare internal streams\n ###\n constructor: ->\n super\n\n # inputsStream is a stream containing all inputs events, delegated\n @inputsStream = @$el.asEventStream 'keyup blur change', @ui.inputs\n # submitStream receive the submit event, prevent the natural submission,\n # and is filtered onto the next button enable state (form can't be\n # submitted if the control is disabled)\n @submitStream = @$el.asEventStream 'submit'\n .doAction '.preventDefault'\n .filter => @model.get('nextControl').map '.enabled'\n\n\n ###\n Initialize the form streams and properties\n\n This helper needs to be explicitely called in the child-class `onRender`\n method.\n ###\n initForm: ->\n # Prepare a template that contains all fields properties\n inputs = {}\n # Prepare a property that describes if all required fields are filled\n required = Bacon.constant true\n\n # A simple helper to get the value in regard of input type\n getValue = (el) ->\n if el.type is 'checkbox' then el.checked else el.value\n\n # For each input in the form…\n @ui.inputs.map (index, el) =>\n # React to the inputStream (which is a delegate stream from the top\n # `form` element), filter to ensure the target is the current input\n # and get its value.\n property = @inputsStream.map '.target'\n .filter (target) -> target is el\n .map getValue\n .toProperty getValue el\n # STores the property in the template\n inputs[el.name] = property\n # If the field is required, then combine its value to all others\n # required fields\n required = required.and(property.map (val) -> !!val) if el.required\n\n # Combine a `form` property that is a complex property combined from the\n # template, which is useful to get all form fields values in the stream.\n # We sampled the property by the submit stream (i.e. the form property\n # is converted as a stream which trigger a message each time the submit\n # event occurs or the next control button is clicked).\n # The stream is filtered by required to ensure the form is submitted\n # only if required inputs are filled.\n @model.setStepBus.plug @submitStream.map @model.get 'nextStep'\n @form = Bacon.combineTemplate inputs\n .sampledBy @model.nextClickStream.merge @submitStream\n .filter required\n\n # Exposes the required property into the prototype\n @required = required\n\n\n ###\n Initialize the errors streams and actions\n\n This helper needs to be explicitely called in the child-class `onRender`\n method.\n ###\n initErrors: ->\n # Simple helper to get a boolean from value\n isTruthy = (value) -> !!value\n # Simple helper that creates an error message DOM node\n createMsg = (msg) -> $('

', {class: 'error', text: msg})\n\n # Remove all errors messages into the DOM when receive new errors (e.g.\n # user just submitted a new form also containing errors). We filter on\n # errors te ensure the signal contains new errors.\n @model.errors\n .filter (errors) -> !!errors\n .subscribe =>\n @ui.labels.find('.error').remove()\n\n # For each couple of key: message in the error stream…\n for name, property of @errors\n # get the correct DOM element that host the faulty input\n $el = @ui.labels.filter(\"[for=preset-#{name}]\")\n # Map the message value to its invalid state\n property.map isTruthy\n .assign $el, 'attr', 'aria-invalid'\n # And creates and append to it the error message\n property.filter(isTruthy).map createMsg\n .assign $el, 'append'\n","###\nRegister controls\n\nA view dedicated to register flow control between its screens.\n###\n\nmodule.exports = class RegisterControlsView extends Mn.ItemView\n\n template: require 'views/templates/view_register_controls'\n\n ui:\n 'next': 'a.btn'\n\n\n ###\n Initialize the view streams\n ###\n initialize: ->\n # The clickStream is the stream trigerred by click on next button\n # control. It:\n # - stops the natural event\n # - gets its step/route/url from href\n # - ensure the button is enabled (if not, the event isn't propagated\n # into the stream)\n clickStream = @$el.asEventStream 'click', @ui.next\n .doAction '.preventDefault'\n .map (e) -> e.target.href.split('=')[1] or '/'\n .filter => @model.get('nextControl').map '.enabled'\n\n # We store the stream into the state-machine to get it accessible to\n # other views and plug it in the stepStepBus stream (as long as it\n # returns a step to route to)\n @model.nextClickStream = clickStream\n @model.setStepBus.plug clickStream\n\n\n ###\n Assign reactive logics after rendering template\n ###\n onRender: ->\n # Assign the disable state to the next button\n @model.get 'nextControl'\n .map('.enabled').not()\n .assign @ui.next, 'attr', 'aria-disabled'\n\n # Assign the busy state to the next button\n @model.get 'nextControl'\n .map '.busy'\n .assign @ui.next, 'attr', 'aria-busy'\n\n # Assign the nextStep value to the next button URL\n @model.get 'nextStep'\n .map (step) -> if step then \"register?step=#{step}\" else '/'\n .assign @ui.next, 'attr', 'href'\n\n # Assign the label to the next button\n @model.get 'nextControl'\n .map '.label'\n .map (text) -> return -> t text\n .assign @ui.next, 'text'\n\n # When the next button is a \"skip\" button (i.e. go the the next step w/o\n # doing anything in the current screen) then pass its class to\n # `btn-secondary`\n isSkip = @model.get 'nextControl'\n .map '.label'\n .map (text) -> text is 'skip'\n isSkip.assign @ui.next, 'toggleClass', 'btn-secondary'\n isSkip.not().assign @ui.next, 'toggleClass', 'btn-primary'\n","###\nEmail account setting view\n\nA view that contains a setup form for a primary email adress.\n###\n\nFormView = require 'views/lib/form_view'\n\n\nmodule.exports = class RegisterEmailView extends FormView\n\n className: 'email'\n\n template: require 'views/templates/view_register_email'\n\n\n ###\n Initialize internal streams\n ###\n initialize: ->\n # Extends the FormView `@ui` object with specific selectors.\n @ui.legend = '.advanced legend'\n @ui.adv = '.advanced .content'\n @ui.ssl = 'input[type=checkbox][aria-controls]'\n\n # Creates a stream from the `fieldset > legend` element that returns if\n # the fieldset content is visible or not\n @showAdv = @$el.asEventStream 'click', @ui.legend\n .scan false, (visible) -> not visible\n # Creates a stream that returns the SSL checkbox value when this one\n # changed\n @sslCheck = @$el.asEventStream 'change', @ui.ssl\n .map '.target'\n\n\n ###\n Assign reactive actions\n ###\n onRender: ->\n # Show fieldset content and hide legend element when click on this last\n # one\n @showAdv.not().assign @ui.adv, 'attr', 'aria-hidden'\n @showAdv.assign @ui.legend, 'attr', 'aria-hidden'\n\n # Pre-fill the email input with the value of the email property from the\n # state-machine\n @model.get('email')?.assign @ui.inputs.filter('#email-email'), 'val'\n\n @initSSLCheckboxes()\n @bindSMTPServer()\n\n @initForm()\n\n # Create a submission stream from the form one that is filitered to the\n # step (can be triggered when we are in the email or setup step), and\n # plug it to the setEmail stream\n @model.setEmail.plug @form.filter =>\n @model.get('step').map (cur) -> cur in ['email', 'setup']\n\n # Create a stream based on the required inputs that transform the next\n # control button from 'skip' to 'add email acount' when they're all\n # filled\n @model.nextLabel.plug @required.map (bool) ->\n if bool then 'add email' else 'skip'\n\n\n ###\n Initialize the SSL checkboxes\n\n When clicking on a checkbox that controls an ssl-port input, then change\n this input value to pre-fill a right value, depending of the service and the\n state of the SSL checkbox.\n ###\n initSSLCheckboxes: ->\n @ui.ssl.each (indexs, el) =>\n service = el.id.match(/email-([a-z]{4})-ssl/i)[1]\n control = @$(\"##{el.getAttribute 'aria-controls'}\")\n\n @sslCheck\n .filter (target) -> target is el\n .map (target) ->\n ssl = target.checked\n switch service\n when 'imap' then (if ssl then 993 else 143)\n when 'smtp' then (if ssl then 465 else 25)\n .assign control, 'val'\n\n\n ###\n Initialize smtp server input logic\n\n When fill the imap-server input, if the smtp-server input is empty or was\n never edited, then is takes the same value as the imap-server input. If it\n contains a custom value, it doesn't change.\n ###\n bindSMTPServer: ->\n imapServer = @ui.inputs.filter('#email-imap-server')\n smtpServer = @ui.inputs.filter('#email-smtp-server')\n\n smtpServer.asEventStream 'keyup'\n .map (e) -> !!e.target.value.length\n .assign smtpServer, 'data', 'edited'\n\n imapServer.asEventStream 'keyup'\n .map '.target.value'\n .filter -> smtpServer.data('edited')\n .assign smtpServer, 'val'\n","###\nRegister feedback\n\nA view that display the current step in the register flow\n###\n\nmodule.exports = class RegisterFeedbackView extends Mn.ItemView\n\n template: require 'views/templates/view_register_feedback'\n\n\n onRender: ->\n # Check for each bullet point if it has the class of the current step.\n # If true, then toggle its selected state.\n @model.get('step').map (value) -> return -> @classList.contains value\n .assign @$('li'), 'attr', 'aria-selected'\n\n # On last scree (welcome) screen, hide the feedback to only display\n # controls.\n @model.get('step').map (step) -> /^welcome/.test step\n .assign @$el, 'attr', 'aria-hidden'\n","module.exports = class RegisterImportView extends Mn.ItemView\n\n className: 'import'\n\n template: require 'views/templates/view_register_import'\n\n ui:\n google: '#import-google'\n\n\n initialize: ->\n # We create a new stream on the _Import Google_ button that streams the\n # next step as `import_google` in the state machine\n #\n # NOTE: when we'll add more import choices, this code can already\n # streams right step depending on the element `[href]` attribute.\n stream = @$el.asEventStream 'click', @ui.google\n .doAction '.preventDefault'\n .map (e) -> e.target.href.split('=')[1]\n @model.setStepBus.plug stream\n","###\nImport Google step\n\nThis view do **not** rely on the machine state (except for the next stream push)\nand uses basical Marionette logics to handle its internal events\n###\n\n\nmodule.exports = class RegisterImportGoogleView extends Mn.ItemView\n\n className: 'import-google'\n\n template: require 'views/templates/view_register_import_google'\n\n events:\n 'click #lg-ok': 'selectedScopes'\n 'click #step-pastecode-ok': 'pastedCode'\n 'click #cancel': 'cancel'\n\n\n pastedCode: (event)->\n event.preventDefault()\n @popup?.close()\n @changeStep 'pickscope'\n\n @auth_code = @$(\"input:text[name=auth_code]\").val()\n @$(\"input:text[name=auth_code]\").val(\"\")\n\n\n selectedScopes: (event)->\n event.preventDefault()\n\n scope =\n photos: false\n calendars: @$(\"input:checkbox[name=calendars]\").prop(\"checked\")\n contacts: @$(\"input:checkbox[name=contacts]\").prop(\"checked\")\n sync_gmail: false\n # Currently the Gmail sync is broken. So we remove it from the\n # scope until it's fixed.\n #sync_gmail: @$(\"input:checkbox[name=sync_gmail]\").prop(\"checked\")\n\n data = auth_code: @auth_code, scope: scope\n $.post \"/apps/import-from-google/lg\", data\n\n # Creates an array that represents the current imports and stores it\n # in the machine state if not empty\n imports = []\n imports.push 'contacts' if scope.contacts\n imports.push 'calendars' if scope.calendars\n @model.add 'imports', Bacon.constant(imports) if imports.length\n\n # Go to the next step\n @model.setStep 'setup'\n\n\n changeStep: (step) ->\n @$('.step').hide()\n @$(\"#step-#{step}\").show()\n @$('#auth_code').focus() if step is 'pastecode'\n\n\n cancel: ->\n @model.setStep 'import'\n\n\n onRender: ->\n @changeStep 'pastecode'\n opts = [\n 'toolbars=0'\n 'width=700'\n 'height=600'\n 'left=200'\n 'top=200'\n 'scrollbars=1'\n 'resizable=1'\n ].join(',')\n\n scopes = [\n 'https://www.googleapis.com/auth/calendar.readonly'\n 'https://picasaweb.google.com/data/'\n 'https://www.googleapis.com/auth/contacts.readonly'\n 'email'\n 'https://mail.google.com/'\n 'profile'\n ].join(' ')\n\n\n clientID = '260645850650-2oeufakc8ddbrn8p4o58emsl7u0r0c8s'\n clientID += '.apps.googleusercontent.com'\n\n oauthUrl = \"https://accounts.google.com/o/oauth2/auth\"\n oauthUrl += '?scope=' + encodeURIComponent(scopes)\n oauthUrl += '&response_type=code'\n oauthUrl += '&client_id=' + clientID\n oauthUrl += '&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob'\n @popup = window.open oauthUrl, 'Google OAuth',opts\n @changeStep 'pastecode'\n","###\nRegister root view\n\nA Mn.LayoutView to handle the registration process and manipulates its views\nflow easily. It declares 3 regions:\n- a main region in which the current step view takes place\n- a control region to display flow controls elements\n- a feedback region to display the progression\n###\n\nControlsView = require 'views/register/controls'\nFeedbackView = require 'views/register/feedback'\n\n\nmodule.exports = class RegisterView extends Mn.LayoutView\n\n className: 'register'\n\n template: require 'views/templates/view_base'\n\n regions:\n 'content': '[role=region]'\n 'controls': '.controls'\n 'feedback': '.feedback'\n\n ui:\n footer: 'footer'\n\n\n initialize: ->\n # assign the `swapStep` handler to the `step` property.\n @model.get('step').onValue @swapStep\n\n\n ###\n After render template into the DOM\n ###\n onRender: ->\n # attach controls and feedback subviews\n @showChildView 'controls', new ControlsView model: @model\n @showChildView 'feedback', new FeedbackView model: @model\n # assign the controls.visible property to the controls and feedback\n # container aria-hidden state\n @model.get 'nextControl'\n .map('.visible').not()\n .assign @ui.footer, 'attr', 'aria-hidden'\n\n\n ###\n Swap step child view\n ###\n swapStep: (step) =>\n return unless step\n StepView = require \"views/register/#{step}\"\n @showChildView 'content', new StepView model: @model\n","###\nPresets view\n\nThis view display the form for the preset step\n###\n\nFormView = require 'views/lib/form_view'\n\n\nmodule.exports = class RegisterPresetView extends FormView\n\n className: 'preset'\n\n attributes:\n method: 'post'\n action: '/register'\n\n template: require 'views/templates/view_register_preset'\n\n\n serializeData: ->\n timezones: require 'lib/timezones'\n\n\n ###\n Initialize internal streams and properties\n ###\n initialize: ->\n # Creates a new property in the state machine that contains the entered\n # email value to be used in later screens.\n email = @$el.asEventStream 'blur', '#preset-email'\n .map '.target.value'\n .toProperty ''\n @model.add 'email', email\n\n # Create errors properties that will be used in the initError() method\n @errors =\n email: @model.errors.map '.email'\n password: @model.errors.map '.password'\n timezone: @model.errors.map '.timezone'\n\n\n ###\n Assign reactive actions\n ###\n onRender: ->\n @initForm()\n @initErrors()\n\n # Set the next button enable state when all required fields are filled\n @model.nextEnabled.plug @required.changes()\n\n # Create a new stream from the submit one that is filtered onto the step\n # (e.g. the form will not be submitted if we're already not in the step)\n submit = @form.filter => @model.get('step').map (cur) -> cur is 'preset'\n # We plug it to the signup stream and to the next button busy state (e.g\n # the busy state is enable when the form is submitted)\n @model.signup.plug submit\n @model.nextBusy.plug submit.map true\n","###\nSetup step view\n\nThis step display a counter as a progress bar that is:\n- fake if the user do not import content (takes 8 seconds)\n- indicates the import loading state, and have a minimal duration of 8 seconds\n###\n\n###\nHelpers\n\nThis section declares top-level helpers\n###\n\n# Creates a stream from socket.io callbacks\nsocket = null\n\nfromSocket = (event) ->\n # If the socket.io socket isn't available, open it\n unless socket\n socket = window.io window.location.origin,\n path: '/apps/import-from-google/socket.io'\n reconnectionDelayMax: 60000\n reconectionDelay: 2000\n reconnectionAttempts: 3\n\n # Exception: end events is named `contacts.end` for contacts, but\n # `events.end` for calendars. So we compute the end event name\n endEvent = if event is 'calendars' then 'events' else event\n\n # Creates a stream from the socket.io socket\n Bacon.fromBinder (sink) ->\n # Start the stream with a 0 value\n sink 0\n\n # On each socket event, send to the sink a progress percentage\n socket.on event, (data) ->\n sink Math.floor data.number / data.total * 100\n\n # On end event, send to the sink `100` and close the stream\n socket.on \"#{endEvent}.end\", ->\n sink 100\n sink new Bacon.End()\n\n # Returns an empty unsubscribe function\n return ->\n\n# Returns the median value of arguments values\ngetProgress = ->\n sum = [].reduce.call arguments, ((memo, val) -> memo + val), 0\n sum / arguments.length\n\n\n###\nSetup View\n###\n\nmodule.exports = class RegisterSetupView extends Mn.ItemView\n\n className: 'setup'\n\n template: require 'views/templates/view_register_setup'\n\n ui:\n bar: 'progress'\n\n\n ###\n Initialize counter\n\n it takes care of the imported elements state (do we import something or not)\n ###\n initialize: ->\n @model.get 'imports'\n .onValue @initCounter\n\n\n ###\n Assign the internal counter property to the progress bar\n ###\n onRender: ->\n @progress.assign @ui.bar, 'val'\n\n\n ###\n Creates a counter property from\n - a timer of 8 seconds\n - each imports feedbacks\n ###\n initCounter: (imports) =>\n # Creates a simple stream that goes from 0 to 100 in 8 seconds\n timer = Bacon.interval(80, 1)\n .take 100\n .scan 0, (a, b) -> a + b\n\n # If there's imports, the `progress` property is a median of the timer\n # and imports progress ; otherwise it's just a reference to the timer\n if imports\n args = [getProgress, timer.toProperty()]\n if 'contacts' in imports\n args.push fromSocket('contacts').toProperty()\n if 'calendars' in imports\n args.push fromSocket('calendars').toProperty()\n\n @progress = Bacon.combineWith.apply Bacon, args\n else\n @progress = timer.toProperty()\n\n # Creates an `end` event that is streamed when the progress is `100`,\n # mapped to the `nextStep` property. This stream is plugged to the\n # setBusPlug stream (i.e. when progress is `100` we go to the next step)\n end = @progress.filter (n) -> n >= 100\n .map @model.steps['setup'].next\n @model.setStepBus.plug end\n","###\nWelcome (last) step view\n\nThis view display the welcome wording and permit to pass to the login screen\n###\n\nmodule.exports = class RegisterWelcdomeView extends Mn.ItemView\n\n className: 'welcome'\n\n template: require 'views/templates/view_register_welcome'\n","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\nvar locals_ = (locals || {}),prefix = locals_.prefix,username = locals_.username;\nbuf.push(\"

\" + (jade.escape((jade_interp = t(prefix + ' welcome')) == null ? '' : jade_interp)) + \" \" + (jade.escape((jade_interp = username) == null ? '' : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t(prefix + ' enter your password')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t(prefix + ' password')) ? \"\" : jade_interp)) + \"
\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\nvar locals_ = (locals || {}),alert = locals_.alert,prefix = locals_.prefix,forgot = locals_.forgot,label = locals_.label;\nif ( alert)\n{\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t(prefix + ' ' + alert.title)) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t(prefix + ' ' + alert.message)) ? \"\" : jade_interp)) + \"

\");\n}\nif ( forgot)\n{\nbuf.push(\"
\");\nlabel = t(alert && alert.status == 'success'? 'login recover again' : 'login recover')\nbuf.push(\"\" + (jade.escape(null == (jade_interp = label) ? \"\" : jade_interp)) + \"
\");\n};return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"
\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"\" + (jade.escape(null == (jade_interp = t('next')) ? \"\" : jade_interp)) + \"\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('email caption')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('email show advanced')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('email imap login tip')) ? \"\" : jade_interp)) + \"


\" + (jade.escape(null == (jade_interp = t('email smtp login tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('email smtp password tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('email email tip')) ? \"\" : jade_interp)) + \"

\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('import google account')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('import google account tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('import google account sign in')) ? \"\" : jade_interp)) + \"
\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('leave google title')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t(\"leave google code content\")) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('leave google choice')) ? \"\" : jade_interp)) + \"

\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\nvar locals_ = (locals || {}),timezones = locals_.timezones;\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('preset email tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('preset name tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('preset password tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('preset timezone tip')) ? \"\" : jade_interp)) + \"

\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('setup title')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('setup message')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('setup on mobile title')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('setup on mobile message')) ? \"\" : jade_interp)) + \"

\\\"Get\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('welcome title')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('welcome message')) ? \"\" : jade_interp)) + \"

\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}"]} \ No newline at end of file +{"version":3,"sources":["app/application.coffee","app/initialize.coffee","app/lib/state_model.coffee","app/lib/timezones.coffee","app/routes/index.coffee","app/states/auth.coffee","app/states/registration.coffee","app/views/app_layout.coffee","app/views/auth/feedback.coffee","app/views/auth/index.coffee","app/views/lib/form_view.coffee","app/views/register/controls.coffee","app/views/register/email.coffee","app/views/register/feedback.coffee","app/views/register/import.coffee","app/views/register/import_google.coffee","app/views/register/index.coffee","app/views/register/preset.coffee","app/views/register/setup.coffee","app/views/register/welcome.coffee","app/views/templates/layout_app.jade","app/views/templates/view_auth.jade","app/views/templates/view_auth_feedback.jade","app/views/templates/view_base.jade","app/views/templates/view_register_controls.jade","app/views/templates/view_register_email.jade","app/views/templates/view_register_feedback.jade","app/views/templates/view_register_import.jade","app/views/templates/view_register_import_google.jade","app/views/templates/view_register_preset.jade","app/views/templates/view_register_setup.jade","app/views/templates/view_register_welcome.jade"],"names":[],"mappings":"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KAAA;AASI,UAAC,SAAD,GAAY,KAAK,CAAC,UAAN,EAAZ,CATJ;KANA;AAAA,IAoBA,MAAM,IAAC,SAAQ,CAAC,MAAV,CAAiB,SAAC,CAAD;aAAO,KAAK,IAAZ;IAAA,CAAjB,CACF,CAAC,GADC,CACG,IAAC,MAAK,CAAC,KAAM,SAAQ,CAAC,IADzB,CApBN;WAsBA,IAAC,MAAK,CAAC,UAAU,CAAC,IAAlB,CAAuB,GAAvB,EAxBS;EAAA,CA9Bb;;2BAAA;;GAF6C,EAAE,CAAC,SAzDpD;;;;ACAA;AAAA;;;;GAAA;AAAA;EAAA;iSAAA;;AAAA,MAMM,CAAC,OAAP,GAAuB;AAEnB;;;;GAAA;;AAAA,6CAAW,SAAX;;AAAA,iCAEA,WAAU,QAAQ,uCAAR,CAFV;;8BAAA;;GAFgD,EAAE,CAAC,SANvD;;;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAxBA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAtCA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA;CCAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAfA;AAAA","file":"public/scripts/app.js","sourcesContent":["###\napplication\n\nMain application that create a Mn.Application singleton and exposes it. Needs\nrouter and app_layout view.\n###\n\nRouter = require 'routes'\nAppLayout = require 'views/app_layout'\n\n\nclass Application extends Backbone.Marionette.Application\n\n ###\n Sets application\n\n We instanciate root application components\n - router: we pass the app reference to it to easily get it without requiring\n application module later.\n - layout: the application layout view, rendered.\n ###\n initialize: ->\n @on 'start', (options) =>\n @router = new Router app: @\n\n @layout = new AppLayout()\n @layout.render()\n\n # Use pushState because URIs do *not* rely on fragment (see\n # `server/controllers/routes.coffee` file)\n Backbone.history.start pushState: true if Backbone.history\n Object.freeze @ if typeof Object.freeze is 'function'\n\n\n# Exports Application singleton instance\nmodule.exports = new Application()\n","###\nApplication bootstrap\n\nSets the browser environment to prepare it to launch the app, and then require\nthe application.\n###\n\napplication = require './application'\n\n\n###\nPolyglot initialization\n\nLocales need to be loaded in Polyglot before using it. We need to declares a\nglobal translator `t` method to use it in Marionette templates.\n\nWe use the `html[lang]` attribute to get the correct locale.\n###\ninitLocale = ->\n locale = $('html').attr 'lang'\n try phrases = require \"locales/#{locale}\"\n catch e\n phrases = require 'locales/en'\n polyglot = new Polyglot phrases: phrases, locale: locale\n # Temporary use a global variable to store the `t` helpers, waiting for\n # Marionette allow to register global helpers.\n # see https://github.com/marionettejs/backbone.marionette/issues/2164\n window.t = polyglot.t.bind polyglot\n\n###\nStarts\n\nTrigger locale initilization and starts application singleton.\n###\n$ ->\n initLocale()\n application.start()\n","###\nState-Machines top-level class\n\nWhen building a state-machine (a viewModel object propulsed by Bacon), this\ntop-level class is used to provides common methods an properties.\n###\n\nmodule.exports = class StateModel\n\n # Properties stores to state-machines Bacon properties\n properties: {}\n\n # The internal _cache object stores the properties values. Not really the\n # good way to do it, but useful for the toJSON method called in\n # Backbone.View.render method.\n #\n # TODO: find a new way to get properties values instead of caching them\n # (which is totally contradictory with the FRP philosophy).\n _cache: {}\n\n\n ###\n Initialize\n\n If a hash of key:values is passed at initialization, they're added to the\n state-machine properties as a Bacon.constant property.\n ###\n constructor: (options) ->\n @add key, Bacon.constant(value) for key, value of options\n @initialize()\n\n\n initialize: ->\n\n\n ###\n Get property\n\n Returns the property from the `properties` object\n ###\n get: (name) ->\n if @properties[name] then @properties[name]\n else Bacon.constant(undefined)\n\n\n ###\n Add property\n\n Add a property to the `properties` object. When a new property is added, a\n handler is binded to its changes to updates the internal `_cache` object\n with its new value.\n ###\n add: (name, property) ->\n unless @properties[name]\n @properties[name] = property\n property.onValue (value) =>\n @_cache[name] = value\n return property\n\n\n ###\n `toJSON` simplies returns the `_cache` object to get current properties\n values.\n ###\n toJSON: ->\n return @_cache\n","###\nTimezones\n\nExposes an array of all available timezones.\n###\n\nmodule.exports = [\n \"Europe/Paris\"\n \"Europe/Berlin\"\n \"Europe/Madrid\"\n \"Europe/Rome\"\n \"America/Los_Angeles\"\n \"America/New_York\"\n \"Africa/Abidjan\"\n \"Africa/Accra\"\n \"Africa/Addis_Ababa\"\n \"Africa/Algiers\"\n \"Africa/Asmara\"\n \"Africa/Bamako\"\n \"Africa/Bangui\"\n \"Africa/Banjul\"\n \"Africa/Bissau\"\n \"Africa/Blantyre\"\n \"Africa/Brazzaville\"\n \"Africa/Bujumbura\"\n \"Africa/Cairo\"\n \"Africa/Casablanca\"\n \"Africa/Ceuta\"\n \"Africa/Conakry\"\n \"Africa/Dakar\"\n \"Africa/Dar_es_Salaam\"\n \"Africa/Djibouti\"\n \"Africa/Douala\"\n \"Africa/El_Aaiun\"\n \"Africa/Freetown\"\n \"Africa/Gaborone\"\n \"Africa/Harare\"\n \"Africa/Johannesburg\"\n \"Africa/Kampala\"\n \"Africa/Khartoum\"\n \"Africa/Kigali\"\n \"Africa/Kinshasa\"\n \"Africa/Lagos\"\n \"Africa/Libreville\"\n \"Africa/Lome\"\n \"Africa/Luanda\"\n \"Africa/Lubumbashi\"\n \"Africa/Lusaka\"\n \"Africa/Malabo\"\n \"Africa/Maputo\"\n \"Africa/Maseru\"\n \"Africa/Mbabane\"\n \"Africa/Mogadishu\"\n \"Africa/Monrovia\"\n \"Africa/Nairobi\"\n \"Africa/Ndjamena\"\n \"Africa/Niamey\"\n \"Africa/Nouakchott\"\n \"Africa/Ouagadougou\"\n \"Africa/Porto-Novo\"\n \"Africa/Sao_Tome\"\n \"Africa/Tripoli\"\n \"Africa/Tunis\"\n \"Africa/Windhoek\"\n \"America/Adak\"\n \"America/Anchorage\"\n \"America/Anguilla\"\n \"America/Antigua\"\n \"America/Araguaina\"\n \"America/Argentina/Buenos_Aires\"\n \"America/Argentina/Catamarca\"\n \"America/Argentina/Cordoba\"\n \"America/Argentina/Jujuy\"\n \"America/Argentina/La_Rioja\"\n \"America/Argentina/Mendoza\"\n \"America/Argentina/Rio_Gallegos\"\n \"America/Argentina/Salta\"\n \"America/Argentina/San_Juan\"\n \"America/Argentina/San_Luis\"\n \"America/Argentina/Tucuman\"\n \"America/Argentina/Ushuaia\"\n \"America/Aruba\"\n \"America/Asuncion\"\n \"America/Atikokan\"\n \"America/Bahia\"\n \"America/Barbados\"\n \"America/Belem\"\n \"America/Belize\"\n \"America/Blanc-Sablon\"\n \"America/Boa_Vista\"\n \"America/Bogota\"\n \"America/Boise\"\n \"America/Cambridge_Bay\"\n \"America/Campo_Grande\"\n \"America/Cancun\"\n \"America/Caracas\"\n \"America/Cayenne\"\n \"America/Cayman\"\n \"America/Chicago\"\n \"America/Chihuahua\"\n \"America/Costa_Rica\"\n \"America/Cuiaba\"\n \"America/Curacao\"\n \"America/Danmarkshavn\"\n \"America/Dawson\"\n \"America/Dawson_Creek\"\n \"America/Denver\"\n \"America/Detroit\"\n \"America/Dominica\"\n \"America/Edmonton\"\n \"America/Eirunepe\"\n \"America/El_Salvador\"\n \"America/Fortaleza\"\n \"America/Glace_Bay\"\n \"America/Godthab\"\n \"America/Goose_Bay\"\n \"America/Grand_Turk\"\n \"America/Grenada\"\n \"America/Guadeloupe\"\n \"America/Guatemala\"\n \"America/Guayaquil\"\n \"America/Guyana\"\n \"America/Halifax\"\n \"America/Havana\"\n \"America/Hermosillo\"\n \"America/Indiana/Indianapolis\"\n \"America/Indiana/Knox\"\n \"America/Indiana/Marengo\"\n \"America/Indiana/Petersburg\"\n \"America/Indiana/Tell_City\"\n \"America/Indiana/Vevay\"\n \"America/Indiana/Vincennes\"\n \"America/Indiana/Winamac\"\n \"America/Inuvik\"\n \"America/Iqaluit\"\n \"America/Jamaica\"\n \"America/Juneau\"\n \"America/Kentucky/Louisville\"\n \"America/Kentucky/Monticello\"\n \"America/La_Paz\"\n \"America/Lima\"\n \"America/Los_Angeles\"\n \"America/Maceio\"\n \"America/Managua\"\n \"America/Manaus\"\n \"America/Martinique\"\n \"America/Matamoros\"\n \"America/Mazatlan\"\n \"America/Menominee\"\n \"America/Merida\"\n \"America/Mexico_City\"\n \"America/Miquelon\"\n \"America/Moncton\"\n \"America/Monterrey\"\n \"America/Montevideo\"\n \"America/Montreal\"\n \"America/Montserrat\"\n \"America/Nassau\"\n \"America/New_York\"\n \"America/Nipigon\"\n \"America/Nome\"\n \"America/Noronha\"\n \"America/North_Dakota/Center\"\n \"America/North_Dakota/New_Salem\"\n \"America/Ojinaga\"\n \"America/Panama\"\n \"America/Pangnirtung\"\n \"America/Paramaribo\"\n \"America/Phoenix\"\n \"America/Port-au-Prince\"\n \"America/Port_of_Spain\"\n \"America/Porto_Velho\"\n \"America/Puerto_Rico\"\n \"America/Rainy_River\"\n \"America/Rankin_Inlet\"\n \"America/Recife\"\n \"America/Regina\"\n \"America/Resolute\"\n \"America/Rio_Branco\"\n \"America/Santa_Isabel\"\n \"America/Santarem\"\n \"America/Santiago\"\n \"America/Santo_Domingo\"\n \"America/Sao_Paulo\"\n \"America/Scoresbysund\"\n \"America/St_Johns\"\n \"America/St_Kitts\"\n \"America/St_Lucia\"\n \"America/St_Thomas\"\n \"America/St_Vincent\"\n \"America/Swift_Current\"\n \"America/Tegucigalpa\"\n \"America/Thule\"\n \"America/Thunder_Bay\"\n \"America/Tijuana\"\n \"America/Toronto\"\n \"America/Tortola\"\n \"America/Vancouver\"\n \"America/Whitehorse\"\n \"America/Winnipeg\"\n \"America/Yakutat\"\n \"America/Yellowknife\"\n \"Antarctica/Casey\"\n \"Antarctica/Davis\"\n \"Antarctica/DumontDUrville\"\n \"Antarctica/Mawson\"\n \"Antarctica/McMurdo\"\n \"Antarctica/Palmer\"\n \"Antarctica/Rothera\"\n \"Antarctica/Syowa\"\n \"Antarctica/Vostok\"\n \"Asia/Aden\"\n \"Asia/Almaty\"\n \"Asia/Amman\"\n \"Asia/Anadyr\"\n \"Asia/Aqtau\"\n \"Asia/Aqtobe\"\n \"Asia/Ashgabat\"\n \"Asia/Baghdad\"\n \"Asia/Bahrain\"\n \"Asia/Baku\"\n \"Asia/Bangkok\"\n \"Asia/Beirut\"\n \"Asia/Bishkek\"\n \"Asia/Brunei\"\n \"Asia/Choibalsan\"\n \"Asia/Chongqing\"\n \"Asia/Colombo\"\n \"Asia/Damascus\"\n \"Asia/Dhaka\"\n \"Asia/Dili\"\n \"Asia/Dubai\"\n \"Asia/Dushanbe\"\n \"Asia/Gaza\"\n \"Asia/Harbin\"\n \"Asia/Ho_Chi_Minh\"\n \"Asia/Hong_Kong\"\n \"Asia/Hovd\"\n \"Asia/Irkutsk\"\n \"Asia/Jakarta\"\n \"Asia/Jayapura\"\n \"Asia/Jerusalem\"\n \"Asia/Kabul\"\n \"Asia/Kamchatka\"\n \"Asia/Karachi\"\n \"Asia/Kashgar\"\n \"Asia/Kathmandu\"\n \"Asia/Kolkata\"\n \"Asia/Krasnoyarsk\"\n \"Asia/Kuala_Lumpur\"\n \"Asia/Kuching\"\n \"Asia/Kuwait\"\n \"Asia/Macau\"\n \"Asia/Magadan\"\n \"Asia/Makassar\"\n \"Asia/Manila\"\n \"Asia/Muscat\"\n \"Asia/Nicosia\"\n \"Asia/Novokuznetsk\"\n \"Asia/Novosibirsk\"\n \"Asia/Omsk\"\n \"Asia/Oral\"\n \"Asia/Phnom_Penh\"\n \"Asia/Pontianak\"\n \"Asia/Pyongyang\"\n \"Asia/Qatar\"\n \"Asia/Qyzylorda\"\n \"Asia/Rangoon\"\n \"Asia/Riyadh\"\n \"Asia/Sakhalin\"\n \"Asia/Samarkand\"\n \"Asia/Seoul\"\n \"Asia/Shanghai\"\n \"Asia/Singapore\"\n \"Asia/Taipei\"\n \"Asia/Tashkent\"\n \"Asia/Tbilisi\"\n \"Asia/Tehran\"\n \"Asia/Thimphu\"\n \"Asia/Tokyo\"\n \"Asia/Ulaanbaatar\"\n \"Asia/Urumqi\"\n \"Asia/Vientiane\"\n \"Asia/Vladivostok\"\n \"Asia/Yakutsk\"\n \"Asia/Yekaterinburg\"\n \"Asia/Yerevan\"\n \"Atlantic/Azores\"\n \"Atlantic/Bermuda\"\n \"Atlantic/Canary\"\n \"Atlantic/Cape_Verde\"\n \"Atlantic/Faroe\"\n \"Atlantic/Madeira\"\n \"Atlantic/Reykjavik\"\n \"Atlantic/South_Georgia\"\n \"Atlantic/St_Helena\"\n \"Atlantic/Stanley\"\n \"Australia/Adelaide\"\n \"Australia/Brisbane\"\n \"Australia/Broken_Hill\"\n \"Australia/Currie\"\n \"Australia/Darwin\"\n \"Australia/Eucla\"\n \"Australia/Hobart\"\n \"Australia/Lindeman\"\n \"Australia/Lord_Howe\"\n \"Australia/Melbourne\"\n \"Australia/Perth\"\n \"Australia/Sydney\"\n \"Canada/Atlantic\"\n \"Canada/Central\"\n \"Canada/Eastern\"\n \"Canada/Mountain\"\n \"Canada/Newfoundland\"\n \"Canada/Pacific\"\n \"Europe/Amsterdam\"\n \"Europe/Andorra\"\n \"Europe/Athens\"\n \"Europe/Belgrade\"\n \"Europe/Berlin\"\n \"Europe/Brussels\"\n \"Europe/Bucharest\"\n \"Europe/Budapest\"\n \"Europe/Chisinau\"\n \"Europe/Copenhagen\"\n \"Europe/Dublin\"\n \"Europe/Gibraltar\"\n \"Europe/Helsinki\"\n \"Europe/Istanbul\"\n \"Europe/Kaliningrad\"\n \"Europe/Kiev\"\n \"Europe/Lisbon\"\n \"Europe/London\"\n \"Europe/Luxembourg\"\n \"Europe/Madrid\"\n \"Europe/Malta\"\n \"Europe/Minsk\"\n \"Europe/Monaco\"\n \"Europe/Moscow\"\n \"Europe/Oslo\"\n \"Europe/Paris\"\n \"Europe/Prague\"\n \"Europe/Riga\"\n \"Europe/Rome\"\n \"Europe/Samara\"\n \"Europe/Simferopol\"\n \"Europe/Sofia\"\n \"Europe/Stockholm\"\n \"Europe/Tallinn\"\n \"Europe/Tirane\"\n \"Europe/Uzhgorod\"\n \"Europe/Vaduz\"\n \"Europe/Vienna\"\n \"Europe/Vilnius\"\n \"Europe/Volgograd\"\n \"Europe/Warsaw\"\n \"Europe/Zaporozhye\"\n \"Europe/Zurich\"\n \"GMT\"\n \"Indian/Antananarivo\"\n \"Indian/Chagos\"\n \"Indian/Christmas\"\n \"Indian/Cocos\"\n \"Indian/Comoro\"\n \"Indian/Kerguelen\"\n \"Indian/Mahe\"\n \"Indian/Maldives\"\n \"Indian/Mauritius\"\n \"Indian/Mayotte\"\n \"Indian/Reunion\"\n \"Pacific/Apia\"\n \"Pacific/Auckland\"\n \"Pacific/Chatham\"\n \"Pacific/Easter\"\n \"Pacific/Efate\"\n \"Pacific/Enderbury\"\n \"Pacific/Fakaofo\"\n \"Pacific/Fiji\"\n \"Pacific/Funafuti\"\n \"Pacific/Galapagos\"\n \"Pacific/Gambier\"\n \"Pacific/Guadalcanal\"\n \"Pacific/Guam\"\n \"Pacific/Honolulu\"\n \"Pacific/Johnston\"\n \"Pacific/Kiritimati\"\n \"Pacific/Kosrae\"\n \"Pacific/Kwajalein\"\n \"Pacific/Majuro\"\n \"Pacific/Marquesas\"\n \"Pacific/Midway\"\n \"Pacific/Nauru\"\n \"Pacific/Niue\"\n \"Pacific/Norfolk\"\n \"Pacific/Noumea\"\n \"Pacific/Pago_Pago\"\n \"Pacific/Palau\"\n \"Pacific/Pitcairn\"\n \"Pacific/Ponape\"\n \"Pacific/Port_Moresby\"\n \"Pacific/Rarotonga\"\n \"Pacific/Saipan\"\n \"Pacific/Tahiti\"\n \"Pacific/Tarawa\"\n \"Pacific/Tongatapu\"\n \"Pacific/Truk\"\n \"Pacific/Wake\"\n \"Pacific/Wallis\"\n \"US/Alaska\"\n \"US/Arizona\"\n \"US/Central\"\n \"US/Eastern\"\n \"US/Hawaii\"\n \"US/Mountain\"\n \"US/Pacific\"\n \"UTC\"\n]\n","###\nMain application Router\n\nHandles routes exposed by the application. It generate views/viewModels couples\nwhen needed and show them in the app_layout regions.\n###\n\nRegisterView = require 'views/register'\nRegistrationModel = require 'states/registration'\n\nAuthView = require 'views/auth'\nAuthModel = require 'states/auth'\n\n\nmodule.exports = class Router extends Backbone.Router\n\n routes:\n 'login(?next=*path)': 'login'\n 'login(/*path)': 'login'\n 'password/reset/:key': 'resetPassword'\n 'register(?step=:step)': 'register'\n\n\n ###\n Initialize stores the application reference for a later use inside the\n router.\n ###\n initialize: (options) ->\n @app = options.app\n\n\n ###\n Auth view generation\n\n Login and ResetPassword views are basically the same ones and uses the same\n logics. So they use the same view/state-model class and we switch the\n rendering mode at launch by passing a `type` option.\n\n View options also contains a `backend` url which is the endpoint called by\n the submitted form.\n ###\n auth: (path, options) ->\n # The `next` state-model option contains the path where the app must\n # redirect after a successful login.\n auth = new AuthModel next: path\n @app.layout.showChildView 'content', new AuthView _.extend options,\n model: auth\n\n\n ###\n login route\n\n `path` will be extracted from url:\n - the part after the `/login` (e.g. /login/foo/bar => /foo/bar)\n - a `next` query string parameter (the new and more cleaner way, see\n server/middlewares/authentication.coffee#L36)\n ###\n login: (path = '/') ->\n if window.location.hash\n path = window.location.hash\n @auth path,\n backend: '/login'\n type: 'login'\n\n\n resetPassword: (key) ->\n @auth '/login',\n backend: window.location.pathname\n type: 'reset'\n\n\n ###\n Register route\n\n Register views uses the same layout view and the step content is a subview\n component determined by the step param.\n ###\n register: (step = 'preset') ->\n currentView = @app.layout.getChildView 'content'\n\n # Ensure the current view in the app layout is a RegisterView. If not,\n # then creates a new RegistrationModel state-machine and a RegisterView\n # and show it in the main AppLayout Region\n unless currentView? and currentView instanceof RegisterView\n registration = new RegistrationModel()\n # We assign the step property to the router's navigate method to\n # update the URL each time the step changes.\n registration.get('step')\n .map (step) -> \"register?step=#{step}\" if step\n .assign @, 'navigate'\n\n currentView = new RegisterView model: registration\n @app.layout.showChildView 'content', currentView\n\n # When the RegisterView is render in the AppLayout, set its current\n # step (default to `preset`).\n currentView.model.setStep step\n","###\nAuth state-machine\n\nExposed streams and properties used by the Login and ResetPassword views.\n###\n\nStateModel = require 'lib/state_model'\n\n\nmodule.exports = class Auth extends StateModel\n\n initialize: ->\n # Declares all buses used to organize streams\n @isBusy = new Bacon.Bus() # enable/disable button busy state\n @alert = new Bacon.Bus() # alerts updates after submissions\n @success = new Bacon.Bus() # receive success returns after submit\n @signin = new Bacon.Bus() # form submission bus\n @sendReset = new Bacon.Bus() # reset link submission\n\n # Adding an `alert` property that can be used in view rendering\n @add 'alert', @alert.toProperty()\n\n # Register the submission methods to their buses\n @signin.onValue @signinSubmit\n @sendReset.onValue @sendResetSubmit\n\n ###\n Redirect handler\n\n When a success respond to a sign in form submission, then get the `next`\n property value and redirect the user to this URL.\n ###\n @success.map @get 'next'\n .onValue (next) ->\n setTimeout ->\n window.location.pathname = next\n , 500\n\n\n ###\n Sign in submission\n\n Submit a form in an ajax request and handle its response in a Bacon stream.\n\n - `form`: an object containing the form values\n ###\n signinSubmit: (form) =>\n data = JSON.stringify password: form.password\n req = Bacon.fromPromise $.post form.action, data\n\n # Plug success response to `@success` stream and set `@alert` to false\n # to reset it.\n @success.plug req.map '.success'\n @alert.plug req.map false\n\n # Plug error response to `@alert` stream. We assume it's always because\n # password isn't correct.\n @alert.plug req.errors().mapError\n status: 'error'\n title: 'wrong password title'\n message: 'wrong password message'\n\n # Plug ajax request end to reset the button `busy` state\n @isBusy.plug req.mapEnd false\n\n\n ###\n Reset link submission\n\n Submit the request to get a password recover link.\n ###\n sendResetSubmit: =>\n reset = Bacon.fromPromise $.post '/login/forgot'\n\n # Plug the request response to the `@alert` bus to display a message to\n # user that confirm the email sending.\n @alert.plug reset.map\n status: 'success'\n title: 'recover sent title'\n message: 'recover sent message'\n","###\nRegistration state-machine\n\nExposed streams and properties to the Register* views.\n###\n\nStateModel = require 'lib/state_model'\n\n\nmodule.exports = class Registration extends StateModel\n\n ###\n Registration process consists of a progress across many screens, in a\n non-linear mode. So, to keep it consistent, we declare the flow between\n screens in this step var. Each step can declares:\n - next: the step that comes after\n - nextLabel: the label for the next button flow control\n - nocontrols: hide the flow controls\n ###\n steps:\n preset:\n next: 'import'\n nextLabel: 'sign up'\n import:\n next: 'email'\n nextLabel: 'skip'\n import_google:\n nocontrols: true\n email:\n next: 'setup'\n nextLabel: 'skip'\n setup:\n next: 'welcome'\n nocontrols: true\n welcome:\n nextLabel: 'welcome'\n\n\n initialize: ->\n # Initialize the bus to stream errors\n @errors = new Bacon.Bus()\n\n # Initialize each parts of registration process\n @initStep()\n @initControls()\n @initSignup()\n @initSetEmail()\n\n\n ###\n Set step property\n\n A simple wrapper to push the new step value in the `step` property.\n ###\n setStep: (newStep) ->\n @setStepBus.push newStep\n\n\n ###\n Initialize step flow\n\n Declares the streams and properties that'll be used to control step flow.\n ###\n initStep: ->\n @setStepBus = new Bacon.Bus() # receive step updates\n @stepValve = new Bacon.Bus() # a valve property that can temporary\n # interrupt the step flow\n\n # `step` property (added to the state-machine below) is streamed by the\n # `setStepBus` stream, which is controlled by the `stepValve`, and\n # filtered to ensure that the step exists (i.e step exists in the\n # `steps` var)\n step = @setStepBus\n .holdWhen @stepValve.startWith(false).toProperty()\n .filter (step) => step in Object.keys @steps\n .toProperty null\n\n @add 'step', step\n # `nextStep` property contains the next step to come\n @add 'nextStep', step.map (step) => @steps[step]?.next or null\n\n\n ###\n Initialize the controls flow\n ###\n initControls: ->\n # Creates streams to handle controls state changes\n @nextEnabled = new Bacon.Bus() # enable/disable the next button\n @nextBusy = new Bacon.Bus() # set next button busy state\n @nextLabel = new Bacon.Bus() # set next button label\n\n # To simply get next button state, we combine all streams / properties\n # that represents it in a complex coombined property. It can be easily\n # mapped to get state (e.g. `nextControl.map '.visible'` returns a\n # boolean that describes if the control should be visible or not, using\n # the `nocontrol` key declared in the `steps` var).\n nextControl = Bacon.combineTemplate\n enabled: @nextEnabled.startWith(true).toProperty()\n busy: @nextBusy.startWith(false).toProperty()\n label: @nextLabel.startWith('next').toProperty()\n visible: @get('step').map (step) => not @steps[step]?.nocontrols\n\n # We update the next button label using the `nextLabel` key in the\n # `steps` var. We use a Bus to stream the value (rather than map is like\n # the visible property above) to let views decides to update the label\n # themselves.\n @nextLabel.plug @get('step').map (step) => @steps[step]?.nextLabel\n\n # In case the next called step isn't declared in the `steps` var, we\n # assume it's a URL and navigate to it.\n @setStepBus\n .filter (value) => !(value in Object.keys @steps)\n .onValue (path) ->\n window.location.pathname = path\n\n\n # Add the `nextControl` property ti the state-machine\n @add 'nextControl', nextControl\n\n\n ###\n Initialize sign up form\n ###\n initSignup: ->\n # Declares a stream to receive the form submission\n @signup = new Bacon.Bus()\n\n # If the current step is `preset`, set the valve to block the step flow:\n # it will resume when the sign up form request returns a success.\n @stepValve.plug @get('step').map (step) -> step is 'preset'\n # Disable the next button when enter in the `preset` step, it will be\n # re-enabled when all required inputs are filled\n @nextEnabled.plug @get('step').map (step) -> step isnt 'preset'\n # Subscribe the `onSignupSubmit` handler to the sign up stream\n @signup.onValue @signupSubmit\n\n\n ###\n Treats signup submission\n\n - data: an object containing the form input entries as key/values pairs\n ###\n signupSubmit: (data) =>\n # Submit the form content to the register endpoint and creates a stream\n # with the ajax promise\n req = Bacon.fromPromise $.post '/register', JSON.stringify data\n # If the request is successful, we stores the username in the global\n # scope to prepare the login view.\n req.subscribe -> window.username = data['public_name']\n # Unblock the step flow valve when the response is successful\n @stepValve.plug req.map false\n # Map request errors in the `errors` stream\n @errors.plug req.errors().mapError '.responseJSON.errors'\n # Map the request end to the next button busy state\n @nextBusy.plug req.mapEnd false\n\n\n ###\n Initialize email account creation form\n\n Simply creates a bus to get the form submission and subscribe the submission\n handler to this stream.\n ###\n initSetEmail: ->\n @setEmail = new Bacon.Bus()\n @setEmail.onValue @setEmailSubmit\n\n\n ###\n Treats email account creation form\n\n - data: an object containing the form input entries as key/values pairs\n ###\n setEmailSubmit: (data) =>\n # Map form data to the _email_ app endpoint expected form\n login = data['imap-login'] or data.email\n accountData =\n id: null\n label: data.email\n name: data.email.split('@')[0]\n login: login\n password: data.password\n accountType: \"IMAP\"\n draftMailbox: \"\"\n favoriteMailboxes: null\n imapPort: data['imap-port']\n imapSSL: data['imap-ssl']\n imapServer: data['imap-server']\n imapTLS: false\n smtpLogin: data['smtp-login'] or login\n smtpMethod: \"PLAIN\"\n smtpPassword: data['smtp-password'] or data.password\n smtpPort: data['smtp-port']\n smtpSSL: data['smtp-ssl']\n smtpServer: data['smtp-server'] or data['imap-server']\n smtpTLS: false\n mailboxes: \"\"\n sentMailbox: \"\"\n trashMailbox: \"\"\n\n # We directly call the _emails_ app account creation endpoint and submit\n # the accountData. We do not attach any handler to the response as we\n # don't want to treat responses nor errors in onboarding: user will fix\n # a wrong setup in the _emails_ app directly.\n $.ajax\n type: 'POST'\n url: '/apps/emails/account'\n data: JSON.stringify accountData\n contentType: \"application/json; charset=utf-8\",\n dataType: 'json'\n","###\nApp Layout\n\nAttach itself to the `[role=application] DOM node and declares the application\nmain region for its subviews.\n###\n\nmodule.exports = class AppLayout extends Mn.LayoutView\n\n template: require 'views/templates/layout_app'\n\n el: '[role=application]'\n\n regions:\n content: '.container'\n","module.exports = class AuthFeedbackView extends Mn.ItemView\n\n template: require 'views/templates/view_auth_feedback'\n\n ui:\n forgot: 'a.forgot'\n\n\n serializeData: ->\n _.extend @model.toJSON(),\n forgot: @options.forgot\n prefix: @options.prefix\n\n\n initialize: ->\n @model.get('alert').subscribe @render\n\n @model.alert\n .map (res) ->\n if res.status then res.status else null\n .assign @$el, 'attr', 'class'\n\n if @options.forgot\n sendLink = @$el.asEventStream 'click', @ui.forgot\n .doAction '.preventDefault'\n @model.sendReset.plug sendLink\n","###\nMain Login/ResetPassword view\n\nCreates a view form that display the form to submit password (in sign in and\nreset password mode). It inherits from `Mn.LayoutView` because it declares a\nregion to host form feedbacks (state-machine `alert` property).\n###\n\nFeedbackView = require 'views/auth/feedback'\n\n\nmodule.exports = class AuthView extends Mn.LayoutView\n\n tagName: 'form'\n\n className: ->\n \"#{@options.type} auth\"\n\n attributes: ->\n data =\n method: 'POST'\n action: @options.backend\n\n template: require 'views/templates/view_auth'\n\n regions:\n 'feedback': '.feedback'\n\n ui:\n passwd: 'input[type=password]'\n submit: '.controls button[type=submit]'\n\n\n ###\n Data exposed to template\n\n - username: username to display, gets from global vars\n (see server/views/index.jade#L14)\n - prefix: type is passed as prefix for locales translations\n ###\n serializeData: ->\n username: window.username\n prefix: @options.type\n\n\n ###\n Initialize internals\n\n - streams outputted from DOM elements\n - properties extracted from streams\n ###\n initialize: ->\n # Create property for password input, delegated from the input element\n # events, mapped to its value\n password = @$el.asEventStream 'focus keyup blur', @ui.passwd\n .map '.target.value'\n .toProperty('')\n\n # Boolean property that confirms if the input is filled or not\n @passwordEntered = password.map (value) -> !!value\n\n # Submit stream, delegated from the submission event, and filtered by\n # the password input (submit can only be triggered if the password field\n # is not empty)\n submit = @$el.asEventStream 'click', @ui.submit\n .doAction '.preventDefault'\n .filter @passwordEntered\n\n # A complex property that contains the value of the form fields (here,\n # password only), and the action URL.\n # The property is sampled (changes occurs) by the form submit stream.\n formTpl =\n password: password\n action: @options.backend\n form = Bacon.combineTemplate formTpl\n .sampledBy submit\n\n # Plug the form submission to the busy bus (set the button busy state\n # to true) and to the sign in bus to trigger the form submission in the\n # state-machine.\n @model.isBusy.plug form.map true\n @model.signin.plug form\n\n\n ###\n After rendering\n\n When template is rendered into the DOM, attach reactive actions to its\n elements.\n ###\n onRender: ->\n # Render the feedback child view\n @showChildView 'feedback', new FeedbackView\n forgot: @options.type is 'login'\n prefix: @options.type\n model: @model\n\n # Select all password field content at focus\n @ui.passwd.asEventStream 'focus'\n .assign @ui.passwd[0], 'select'\n\n # This is a ugly workaround to the autofocus issue: the field is marked\n # as `[autofocus]` so it gets the focus when the page loads. But if the\n # field is already filled (i.e. by the browser password manager), the\n # focus is properly given *but* the focus event isn't triggered, so the\n # select handler declared above isn't executed and the field content is\n # not selected.\n # So we force the focus after a short time (to let the DOM breath), to\n # trigger the `onFocus` event subscribers.\n setTimeout =>\n @ui.passwd.focus()\n , 100\n\n # Focus again to avoid blinks and ensure that everything is\n # selected.\n # Without it Firefox doesn't select the field content in every\n # cases.\n setTimeout =>\n @ui.passwd.focus()\n , 300\n\n # Assign the button busy state to the state-machine busy state\n @model.isBusy\n .assign @ui.submit, 'attr', 'aria-busy'\n\n # When the form is successfully submitted, change the submit button\n # content to a check mark…\n @model.success\n .map =>\n $ '',\n class: 'fa fa-check'\n text: t \"#{@options.type} auth success\"\n .assign @ui.submit, 'html'\n\n # …and change its class to reflect success\n @model.success\n .assign @ui.submit, 'toggleClass', 'btn-success'\n\n # Re select all password field on failure.\n @model.alert\n .assign @ui.passwd[0], 'select'\n\n","###\nForm View\n\nThis is a top-level class that contains helpers for FormViews. It is not\nintended to be used directly.\n###\n\nmodule.exports = class FormView extends Mn.ItemView\n\n tagName: 'form'\n\n ui:\n labels: 'label.with-input'\n inputs: 'label input'\n\n\n ###\n Prepare internal streams\n ###\n constructor: ->\n super\n\n # inputsStream is a stream containing all inputs events, delegated\n @inputsStream = @$el.asEventStream 'keyup blur change', @ui.inputs\n # submitStream receive the submit event, prevent the natural submission,\n # and is filtered onto the next button enable state (form can't be\n # submitted if the control is disabled)\n @submitStream = @$el.asEventStream 'submit'\n .doAction '.preventDefault'\n .filter => @model.get('nextControl').map '.enabled'\n\n\n ###\n Initialize the form streams and properties\n\n This helper needs to be explicitely called in the child-class `onRender`\n method.\n ###\n initForm: ->\n # Prepare a template that contains all fields properties\n inputs = {}\n # Prepare a property that describes if all required fields are filled\n required = Bacon.constant true\n\n # A simple helper to get the value in regard of input type\n getValue = (el) ->\n if el.type is 'checkbox' then el.checked else el.value\n\n # For each input in the form…\n @ui.inputs.map (index, el) =>\n # React to the inputStream (which is a delegate stream from the top\n # `form` element), filter to ensure the target is the current input\n # and get its value.\n property = @inputsStream.map '.target'\n .filter (target) -> target is el\n .map getValue\n .toProperty getValue el\n # STores the property in the template\n inputs[el.name] = property\n # If the field is required, then combine its value to all others\n # required fields\n required = required.and(property.map (val) -> !!val) if el.required\n\n # Combine a `form` property that is a complex property combined from the\n # template, which is useful to get all form fields values in the stream.\n # We sampled the property by the submit stream (i.e. the form property\n # is converted as a stream which trigger a message each time the submit\n # event occurs or the next control button is clicked).\n # The stream is filtered by required to ensure the form is submitted\n # only if required inputs are filled.\n @model.setStepBus.plug @submitStream.map @model.get 'nextStep'\n @form = Bacon.combineTemplate inputs\n .sampledBy @model.nextClickStream.merge @submitStream\n .filter required\n\n # Exposes the required property into the prototype\n @required = required\n\n\n ###\n Initialize the errors streams and actions\n\n This helper needs to be explicitely called in the child-class `onRender`\n method.\n ###\n initErrors: ->\n # Simple helper to get a boolean from value\n isTruthy = (value) -> !!value\n # Simple helper that creates an error message DOM node\n createMsg = (msg) -> $('

', {class: 'error', text: msg})\n\n # Remove all errors messages into the DOM when receive new errors (e.g.\n # user just submitted a new form also containing errors). We filter on\n # errors te ensure the signal contains new errors.\n @model.errors\n .filter (errors) -> !!errors\n .subscribe =>\n @ui.labels.find('.error').remove()\n\n # For each couple of key: message in the error stream…\n for name, property of @errors\n # get the correct DOM element that host the faulty input\n $el = @ui.labels.filter(\"[for=preset-#{name}]\")\n # Map the message value to its invalid state\n property.map isTruthy\n .assign $el, 'attr', 'aria-invalid'\n # And creates and append to it the error message\n property.filter(isTruthy).map createMsg\n .assign $el, 'append'\n","###\nRegister controls\n\nA view dedicated to register flow control between its screens.\n###\n\nmodule.exports = class RegisterControlsView extends Mn.ItemView\n\n template: require 'views/templates/view_register_controls'\n\n ui:\n 'next': 'a.btn'\n\n\n ###\n Initialize the view streams\n ###\n initialize: ->\n # The clickStream is the stream trigerred by click on next button\n # control. It:\n # - stops the natural event\n # - gets its step/route/url from href\n # - ensure the button is enabled (if not, the event isn't propagated\n # into the stream)\n clickStream = @$el.asEventStream 'click', @ui.next\n .doAction '.preventDefault'\n .map (e) -> e.target.href.split('=')[1] or '/'\n .filter => @model.get('nextControl').map '.enabled'\n\n # We store the stream into the state-machine to get it accessible to\n # other views and plug it in the stepStepBus stream (as long as it\n # returns a step to route to)\n @model.nextClickStream = clickStream\n @model.setStepBus.plug clickStream\n\n\n ###\n Assign reactive logics after rendering template\n ###\n onRender: ->\n # Assign the disable state to the next button\n @model.get 'nextControl'\n .map('.enabled').not()\n .assign @ui.next, 'attr', 'aria-disabled'\n\n # Assign the busy state to the next button\n @model.get 'nextControl'\n .map '.busy'\n .assign @ui.next, 'attr', 'aria-busy'\n\n # Assign the nextStep value to the next button URL\n @model.get 'nextStep'\n .map (step) -> if step then \"register?step=#{step}\" else '/'\n .assign @ui.next, 'attr', 'href'\n\n # Assign the label to the next button\n @model.get 'nextControl'\n .map '.label'\n .map (text) -> return -> t text\n .assign @ui.next, 'text'\n\n # When the next button is a \"skip\" button (i.e. go the the next step w/o\n # doing anything in the current screen) then pass its class to\n # `btn-secondary`\n isSkip = @model.get 'nextControl'\n .map '.label'\n .map (text) -> text is 'skip'\n isSkip.assign @ui.next, 'toggleClass', 'btn-secondary'\n isSkip.not().assign @ui.next, 'toggleClass', 'btn-primary'\n","###\nEmail account setting view\n\nA view that contains a setup form for a primary email adress.\n###\n\nFormView = require 'views/lib/form_view'\n\n\nmodule.exports = class RegisterEmailView extends FormView\n\n className: 'email'\n\n template: require 'views/templates/view_register_email'\n\n\n ###\n Initialize internal streams\n ###\n initialize: ->\n # Extends the FormView `@ui` object with specific selectors.\n @ui.legend = '.advanced legend'\n @ui.adv = '.advanced .content'\n @ui.ssl = 'input[type=checkbox][aria-controls]'\n\n # Creates a stream from the `fieldset > legend` element that returns if\n # the fieldset content is visible or not\n @showAdv = @$el.asEventStream 'click', @ui.legend\n .scan false, (visible) -> not visible\n # Creates a stream that returns the SSL checkbox value when this one\n # changed\n @sslCheck = @$el.asEventStream 'change', @ui.ssl\n .map '.target'\n\n\n ###\n Assign reactive actions\n ###\n onRender: ->\n # Show fieldset content and hide legend element when click on this last\n # one\n @showAdv.not().assign @ui.adv, 'attr', 'aria-hidden'\n @showAdv.assign @ui.legend, 'attr', 'aria-hidden'\n\n # Pre-fill the email input with the value of the email property from the\n # state-machine\n @model.get('email')?.assign @ui.inputs.filter('#email-email'), 'val'\n\n @initSSLCheckboxes()\n @bindSMTPServer()\n\n @initForm()\n\n # Create a submission stream from the form one that is filitered to the\n # step (can be triggered when we are in the email or setup step), and\n # plug it to the setEmail stream\n @model.setEmail.plug @form.filter =>\n @model.get('step').map (cur) -> cur in ['email', 'setup']\n\n # Create a stream based on the required inputs that transform the next\n # control button from 'skip' to 'add email acount' when they're all\n # filled\n @model.nextLabel.plug @required.map (bool) ->\n if bool then 'add email' else 'skip'\n\n\n ###\n Initialize the SSL checkboxes\n\n When clicking on a checkbox that controls an ssl-port input, then change\n this input value to pre-fill a right value, depending of the service and the\n state of the SSL checkbox.\n ###\n initSSLCheckboxes: ->\n @ui.ssl.each (indexs, el) =>\n service = el.id.match(/email-([a-z]{4})-ssl/i)[1]\n control = @$(\"##{el.getAttribute 'aria-controls'}\")\n\n @sslCheck\n .filter (target) -> target is el\n .map (target) ->\n ssl = target.checked\n switch service\n when 'imap' then (if ssl then 993 else 143)\n when 'smtp' then (if ssl then 465 else 25)\n .assign control, 'val'\n\n\n ###\n Initialize smtp server input logic\n\n When fill the imap-server input, if the smtp-server input is empty or was\n never edited, then is takes the same value as the imap-server input. If it\n contains a custom value, it doesn't change.\n ###\n bindSMTPServer: ->\n imapServer = @ui.inputs.filter('#email-imap-server')\n smtpServer = @ui.inputs.filter('#email-smtp-server')\n\n smtpServer.asEventStream 'keyup'\n .map (e) -> !!e.target.value.length\n .assign smtpServer, 'data', 'edited'\n\n imapServer.asEventStream 'keyup'\n .map '.target.value'\n .filter -> smtpServer.data('edited')\n .assign smtpServer, 'val'\n","###\nRegister feedback\n\nA view that display the current step in the register flow\n###\n\nmodule.exports = class RegisterFeedbackView extends Mn.ItemView\n\n template: require 'views/templates/view_register_feedback'\n\n\n onRender: ->\n # Check for each bullet point if it has the class of the current step.\n # If true, then toggle its selected state.\n @model.get('step').map (value) -> return -> @classList.contains value\n .assign @$('li'), 'attr', 'aria-selected'\n\n # On last scree (welcome) screen, hide the feedback to only display\n # controls.\n @model.get('step').map (step) -> /^welcome/.test step\n .assign @$el, 'attr', 'aria-hidden'\n","module.exports = class RegisterImportView extends Mn.ItemView\n\n className: 'import'\n\n template: require 'views/templates/view_register_import'\n\n ui:\n google: '#import-google'\n\n\n initialize: ->\n # We create a new stream on the _Import Google_ button that streams the\n # next step as `import_google` in the state machine\n #\n # NOTE: when we'll add more import choices, this code can already\n # streams right step depending on the element `[href]` attribute.\n stream = @$el.asEventStream 'click', @ui.google\n .doAction '.preventDefault'\n .map (e) -> e.target.href.split('=')[1]\n @model.setStepBus.plug stream\n","###\nImport Google step\n\nThis view do **not** rely on the machine state (except for the next stream push)\nand uses basical Marionette logics to handle its internal events\n###\n\n\nmodule.exports = class RegisterImportGoogleView extends Mn.ItemView\n\n className: 'import-google'\n\n template: require 'views/templates/view_register_import_google'\n\n events:\n 'click #lg-ok': 'selectedScopes'\n 'click #step-pastecode-ok': 'pastedCode'\n 'click #cancel': 'cancel'\n\n\n pastedCode: (event)->\n event.preventDefault()\n @popup?.close()\n @changeStep 'pickscope'\n\n @auth_code = @$(\"input:text[name=auth_code]\").val()\n @$(\"input:text[name=auth_code]\").val(\"\")\n\n\n selectedScopes: (event)->\n event.preventDefault()\n\n scope =\n photos: false\n calendars: @$(\"input:checkbox[name=calendars]\").prop(\"checked\")\n contacts: @$(\"input:checkbox[name=contacts]\").prop(\"checked\")\n sync_gmail: false\n # Currently the Gmail sync is broken. So we remove it from the\n # scope until it's fixed.\n #sync_gmail: @$(\"input:checkbox[name=sync_gmail]\").prop(\"checked\")\n\n data = auth_code: @auth_code, scope: scope\n $.post \"/apps/import-from-google/lg\", data\n\n # Creates an array that represents the current imports and stores it\n # in the machine state if not empty\n imports = []\n imports.push 'contacts' if scope.contacts\n imports.push 'calendars' if scope.calendars\n @model.add 'imports', Bacon.constant(imports) if imports.length\n\n # Go to the next step\n @model.setStep 'setup'\n\n\n changeStep: (step) ->\n @$('.step').hide()\n @$(\"#step-#{step}\").show()\n @$('#auth_code').focus() if step is 'pastecode'\n\n\n cancel: ->\n @model.setStep 'import'\n\n\n onRender: ->\n @changeStep 'pastecode'\n opts = [\n 'toolbars=0'\n 'width=700'\n 'height=600'\n 'left=200'\n 'top=200'\n 'scrollbars=1'\n 'resizable=1'\n ].join(',')\n\n scopes = [\n 'https://www.googleapis.com/auth/calendar.readonly'\n 'https://picasaweb.google.com/data/'\n 'https://www.googleapis.com/auth/contacts.readonly'\n 'email'\n 'https://mail.google.com/'\n 'profile'\n ].join(' ')\n\n\n clientID = '260645850650-2oeufakc8ddbrn8p4o58emsl7u0r0c8s'\n clientID += '.apps.googleusercontent.com'\n\n oauthUrl = \"https://accounts.google.com/o/oauth2/auth\"\n oauthUrl += '?scope=' + encodeURIComponent(scopes)\n oauthUrl += '&response_type=code'\n oauthUrl += '&client_id=' + clientID\n oauthUrl += '&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob'\n @popup = window.open oauthUrl, 'Google OAuth',opts\n @changeStep 'pastecode'\n","###\nRegister root view\n\nA Mn.LayoutView to handle the registration process and manipulates its views\nflow easily. It declares 3 regions:\n- a main region in which the current step view takes place\n- a control region to display flow controls elements\n- a feedback region to display the progression\n###\n\nControlsView = require 'views/register/controls'\nFeedbackView = require 'views/register/feedback'\n\n\nmodule.exports = class RegisterView extends Mn.LayoutView\n\n className: 'register'\n\n template: require 'views/templates/view_base'\n\n regions:\n 'content': '[role=region]'\n 'controls': '.controls'\n 'feedback': '.feedback'\n\n ui:\n footer: 'footer'\n\n\n initialize: ->\n # assign the `swapStep` handler to the `step` property.\n @model.get('step').onValue @swapStep\n\n\n ###\n After render template into the DOM\n ###\n onRender: ->\n # attach controls and feedback subviews\n @showChildView 'controls', new ControlsView model: @model\n @showChildView 'feedback', new FeedbackView model: @model\n # assign the controls.visible property to the controls and feedback\n # container aria-hidden state\n @model.get 'nextControl'\n .map('.visible').not()\n .assign @ui.footer, 'attr', 'aria-hidden'\n\n\n ###\n Swap step child view\n ###\n swapStep: (step) =>\n return unless step\n StepView = require \"views/register/#{step}\"\n @showChildView 'content', new StepView model: @model\n","###\nPresets view\n\nThis view display the form for the preset step\n###\n\nFormView = require 'views/lib/form_view'\n\n\nmodule.exports = class RegisterPresetView extends FormView\n\n className: 'preset'\n\n attributes:\n method: 'post'\n action: '/register'\n\n template: require 'views/templates/view_register_preset'\n\n\n serializeData: ->\n timezones: require 'lib/timezones'\n\n\n ###\n Initialize internal streams and properties\n ###\n initialize: ->\n # Creates a new property in the state machine that contains the entered\n # email value to be used in later screens.\n email = @$el.asEventStream 'blur', '#preset-email'\n .map '.target.value'\n .toProperty ''\n @model.add 'email', email\n\n # Create errors properties that will be used in the initError() method\n @errors =\n email: @model.errors.map '.email'\n password: @model.errors.map '.password'\n timezone: @model.errors.map '.timezone'\n\n\n ###\n Assign reactive actions\n ###\n onRender: ->\n @initForm()\n @initErrors()\n\n # Set the next button enable state when all required fields are filled\n @model.nextEnabled.plug @required.changes()\n\n # Create a new stream from the submit one that is filtered onto the step\n # (e.g. the form will not be submitted if we're already not in the step)\n submit = @form.filter => @model.get('step').map (cur) -> cur is 'preset'\n # We plug it to the signup stream and to the next button busy state (e.g\n # the busy state is enable when the form is submitted)\n @model.signup.plug submit\n @model.nextBusy.plug submit.map true\n","###\nSetup step view\n\nThis step display a counter as a progress bar that is:\n- fake if the user do not import content (takes 8 seconds)\n- indicates the import loading state, and have a minimal duration of 8 seconds\n###\n\n###\nHelpers\n\nThis section declares top-level helpers\n###\n\n# Creates a stream from socket.io callbacks\nsocket = null\n\nfromSocket = (event) ->\n # If the socket.io socket isn't available, open it\n unless socket\n socket = window.io window.location.origin,\n path: '/apps/import-from-google/socket.io'\n reconnectionDelayMax: 60000\n reconectionDelay: 2000\n reconnectionAttempts: 3\n\n # Exception: end events is named `contacts.end` for contacts, but\n # `events.end` for calendars. So we compute the end event name\n endEvent = if event is 'calendars' then 'events' else event\n\n # Creates a stream from the socket.io socket\n Bacon.fromBinder (sink) ->\n # Start the stream with a 0 value\n sink 0\n\n # On each socket event, send to the sink a progress percentage\n socket.on event, (data) ->\n sink Math.floor data.number / data.total * 100\n\n # On end event, send to the sink `100` and close the stream\n socket.on \"#{endEvent}.end\", ->\n sink 100\n sink new Bacon.End()\n\n # Returns an empty unsubscribe function\n return ->\n\n# Returns the median value of arguments values\ngetProgress = ->\n sum = [].reduce.call arguments, ((memo, val) -> memo + val), 0\n sum / arguments.length\n\n\n###\nSetup View\n###\n\nmodule.exports = class RegisterSetupView extends Mn.ItemView\n\n className: 'setup'\n\n template: require 'views/templates/view_register_setup'\n\n ui:\n bar: 'progress'\n\n\n ###\n Initialize counter\n\n it takes care of the imported elements state (do we import something or not)\n ###\n initialize: ->\n @model.get 'imports'\n .onValue @initCounter\n\n\n ###\n Assign the internal counter property to the progress bar\n ###\n onRender: ->\n @progress.assign @ui.bar, 'val'\n\n\n ###\n Creates a counter property from\n - a timer of 8 seconds\n - each imports feedbacks\n ###\n initCounter: (imports) =>\n # Creates a simple stream that goes from 0 to 100 in 8 seconds\n timer = Bacon.interval(80, 1)\n .take 100\n .scan 0, (a, b) -> a + b\n\n # If there's imports, the `progress` property is a median of the timer\n # and imports progress ; otherwise it's just a reference to the timer\n if imports\n args = [getProgress, timer.toProperty()]\n if 'contacts' in imports\n args.push fromSocket('contacts').toProperty()\n if 'calendars' in imports\n args.push fromSocket('calendars').toProperty()\n\n @progress = Bacon.combineWith.apply Bacon, args\n else\n @progress = timer.toProperty()\n\n # Creates an `end` event that is streamed when the progress is `100`,\n # mapped to the `nextStep` property. This stream is plugged to the\n # setBusPlug stream (i.e. when progress is `100` we go to the next step)\n end = @progress.filter (n) -> n >= 100\n .map @model.steps['setup'].next\n @model.setStepBus.plug end\n","###\nWelcome (last) step view\n\nThis view display the welcome wording and permit to pass to the login screen\n###\n\nmodule.exports = class RegisterWelcdomeView extends Mn.ItemView\n\n className: 'welcome'\n\n template: require 'views/templates/view_register_welcome'\n","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\nvar locals_ = (locals || {}),prefix = locals_.prefix,username = locals_.username;\nbuf.push(\"

\" + (jade.escape((jade_interp = t(prefix + ' welcome')) == null ? '' : jade_interp)) + \" \" + (jade.escape((jade_interp = username) == null ? '' : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t(prefix + ' enter your password')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t(prefix + ' password')) ? \"\" : jade_interp)) + \"
\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\nvar locals_ = (locals || {}),alert = locals_.alert,prefix = locals_.prefix,forgot = locals_.forgot,label = locals_.label;\nif ( alert)\n{\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t(prefix + ' ' + alert.title)) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t(prefix + ' ' + alert.message)) ? \"\" : jade_interp)) + \"

\");\n}\nif ( forgot)\n{\nbuf.push(\"
\");\nlabel = t(alert && alert.status == 'success'? 'login recover again' : 'login recover')\nbuf.push(\"\" + (jade.escape(null == (jade_interp = label) ? \"\" : jade_interp)) + \"
\");\n};return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"
\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"\" + (jade.escape(null == (jade_interp = t('next')) ? \"\" : jade_interp)) + \"\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('email caption')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('email show advanced')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('email imap login tip')) ? \"\" : jade_interp)) + \"


\" + (jade.escape(null == (jade_interp = t('email smtp login tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('email smtp password tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('email email tip')) ? \"\" : jade_interp)) + \"

\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"
  • \" + (jade.escape(null == (jade_interp = t('step preset')) ? \"\" : jade_interp)) + \"
  • \" + (jade.escape(null == (jade_interp = t('step import')) ? \"\" : jade_interp)) + \"
  • \" + (jade.escape(null == (jade_interp = t('step email settings')) ? \"\" : jade_interp)) + \"
\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('import google account')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('import google account tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('import google account sign in')) ? \"\" : jade_interp)) + \"
\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('leave google title')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t(\"leave google code content\")) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('leave google choice')) ? \"\" : jade_interp)) + \"

\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\nvar locals_ = (locals || {}),timezones = locals_.timezones;\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('preset email tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('preset name tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('preset password tip')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('preset timezone tip')) ? \"\" : jade_interp)) + \"

\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('setup title')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('setup message')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('setup on mobile title')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('setup on mobile message')) ? \"\" : jade_interp)) + \"

\\\"Get\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}","var __templateData = function template(locals) {\nvar buf = [];\nvar jade_mixins = {};\nvar jade_interp;\n\nbuf.push(\"

\" + (jade.escape(null == (jade_interp = t('welcome title')) ? \"\" : jade_interp)) + \"

\" + (jade.escape(null == (jade_interp = t('welcome message')) ? \"\" : jade_interp)) + \"

\");;return buf.join(\"\");\n};\nif (typeof define === 'function' && define.amd) {\n define([], function() {\n return __templateData;\n });\n} else if (typeof module === 'object' && module && module.exports) {\n module.exports = __templateData;\n} else {\n __templateData;\n}"]} \ No newline at end of file diff --git a/build/client/public/scripts/vendor.js b/build/client/public/scripts/vendor.js index 98e6291b..33897901 100644 --- a/build/client/public/scripts/vendor.js +++ b/build/client/public/scripts/vendor.js @@ -1,42 +1,59 @@ -(function(/*! Brunch !*/) { +(function() { 'use strict'; - var globals = typeof window !== 'undefined' ? window : global; + var globals = typeof window === 'undefined' ? global : window; if (typeof globals.require === 'function') return; var modules = {}; var cache = {}; + var has = ({}).hasOwnProperty; + + var aliases = {}; - var has = function(object, name) { - return ({}).hasOwnProperty.call(object, name); + var endsWith = function(str, suffix) { + return str.indexOf(suffix, str.length - suffix.length) !== -1; }; - var expand = function(root, name) { - var results = [], parts, part; - if (/^\.\.?(\/|$)/.test(name)) { - parts = [root, name].join('/').split('/'); - } else { - parts = name.split('/'); - } - for (var i = 0, length = parts.length; i < length; i++) { - part = parts[i]; - if (part === '..') { - results.pop(); - } else if (part !== '.' && part !== '') { - results.push(part); + var unalias = function(alias, loaderPath) { + var start = 0; + if (loaderPath) { + if (loaderPath.indexOf('components/' === 0)) { + start = 'components/'.length; } + if (loaderPath.indexOf('/', start) > 0) { + loaderPath = loaderPath.substring(start, loaderPath.indexOf('/', start)); + } + } + var result = aliases[alias + '/index.js'] || aliases[loaderPath + '/deps/' + alias + '/index.js']; + if (result) { + return 'components/' + result.substring(0, result.length - '.js'.length); } - return results.join('/'); + return alias; }; + var expand = (function() { + var reg = /^\.\.?(\/|$)/; + return function(root, name) { + var results = [], parts, part; + parts = (reg.test(name) ? root + '/' + name : name).split('/'); + for (var i = 0, length = parts.length; i < length; i++) { + part = parts[i]; + if (part === '..') { + results.pop(); + } else if (part !== '.' && part !== '') { + results.push(part); + } + } + return results.join('/'); + }; + })(); var dirname = function(path) { return path.split('/').slice(0, -1).join('/'); }; var localRequire = function(path) { return function(name) { - var dir = dirname(path); - var absolute = expand(dir, name); + var absolute = expand(dirname(path), name); return globals.require(absolute, path); }; }; @@ -51,21 +68,26 @@ var require = function(name, loaderPath) { var path = expand(name, '.'); if (loaderPath == null) loaderPath = '/'; + path = unalias(name, loaderPath); - if (has(cache, path)) return cache[path].exports; - if (has(modules, path)) return initModule(path, modules[path]); + if (has.call(cache, path)) return cache[path].exports; + if (has.call(modules, path)) return initModule(path, modules[path]); var dirIndex = expand(path, './index'); - if (has(cache, dirIndex)) return cache[dirIndex].exports; - if (has(modules, dirIndex)) return initModule(dirIndex, modules[dirIndex]); + if (has.call(cache, dirIndex)) return cache[dirIndex].exports; + if (has.call(modules, dirIndex)) return initModule(dirIndex, modules[dirIndex]); throw new Error('Cannot find module "' + name + '" from '+ '"' + loaderPath + '"'); }; - var define = function(bundle, fn) { + require.alias = function(from, to) { + aliases[to] = from; + }; + + require.register = require.define = function(bundle, fn) { if (typeof bundle === 'object') { for (var key in bundle) { - if (has(bundle, key)) { + if (has.call(bundle, key)) { modules[key] = bundle[key]; } } @@ -74,21 +96,18 @@ } }; - var list = function() { + require.list = function() { var result = []; for (var item in modules) { - if (has(modules, item)) { + if (has.call(modules, item)) { result.push(item); } } return result; }; + require.brunch = true; globals.require = require; - globals.require.define = define; - globals.require.register = define; - globals.require.list = list; - globals.require.brunch = true; })(); /*! * jQuery JavaScript Library v2.1.4 @@ -9302,7 +9321,7 @@ return jQuery; })); (function() { - var Bacon, BufferingSource, Bus, CompositeUnsubscribe, ConsumingSource, Desc, Dispatcher, End, Error, Event, EventStream, Exception, Initial, Next, None, Observable, Property, PropertyDispatcher, Some, Source, UpdateBarrier, _, addPropertyInitValueToStream, argumentsToObservables, argumentsToObservablesAndFunction, assert, assertArray, assertEventStream, assertFunction, assertNoArguments, assertObservable, assertObservableIsProperty, assertString, cloneArray, constantToFunction, containsDuplicateDeps, convertArgsToFunction, describe, endEvent, eventIdCounter, eventMethods, findDeps, findHandlerMethods, flatMap_, former, idCounter, initialEvent, isArray, isFieldKey, isObservable, latter, liftCallback, makeFunction, makeFunctionArgs, makeFunction_, makeObservable, makeSpawner, nextEvent, nop, partiallyApplied, recursionDepth, ref, registerObs, spys, toCombinator, toEvent, toFieldExtractor, toFieldKey, toOption, toSimpleExtractor, valueAndEnd, withDesc, withMethodCallSupport, + var Bacon, BufferingSource, Bus, CompositeUnsubscribe, ConsumingSource, Desc, Dispatcher, End, Error, Event, EventStream, Exception, Initial, Next, None, Observable, Property, PropertyDispatcher, Some, Source, UpdateBarrier, _, addPropertyInitValueToStream, assert, assertArray, assertEventStream, assertFunction, assertNoArguments, assertObservable, assertObservableIsProperty, assertString, cloneArray, constantToFunction, containsDuplicateDeps, convertArgsToFunction, describe, endEvent, eventIdCounter, eventMethods, findDeps, findHandlerMethods, flatMap_, former, idCounter, initialEvent, isArray, isFieldKey, isObservable, latter, liftCallback, makeFunction, makeFunctionArgs, makeFunction_, makeObservable, makeSpawner, nextEvent, nop, partiallyApplied, recursionDepth, ref, registerObs, spys, toCombinator, toEvent, toFieldExtractor, toFieldKey, toOption, toSimpleExtractor, valueAndEnd, withDesc, withMethodCallSupport, hasProp = {}.hasOwnProperty, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, slice = [].slice, @@ -9314,7 +9333,7 @@ return jQuery; } }; - Bacon.version = '0.7.73'; + Bacon.version = '0.7.66'; Exception = (typeof global !== "undefined" && global !== null ? global : this).Error; @@ -10148,9 +10167,6 @@ return jQuery; extend(Next, superClass); function Next(valueF, eager) { - if (!(this instanceof Next)) { - return new Next(valueF, eager); - } Next.__super__.constructor.call(this); if (!eager && _.isFunction(valueF) || valueF instanceof Next) { this.valueF = valueF; @@ -10218,11 +10234,8 @@ return jQuery; Initial = (function(superClass) { extend(Initial, superClass); - function Initial(valueF, eager) { - if (!(this instanceof Initial)) { - return new Initial(valueF, eager); - } - Initial.__super__.constructor.call(this, valueF, eager); + function Initial() { + return Initial.__super__.constructor.apply(this, arguments); } Initial.prototype.isInitial = function() { @@ -10249,9 +10262,7 @@ return jQuery; extend(End, superClass); function End() { - if (!(this instanceof End)) { - return new End; - } + return End.__super__.constructor.apply(this, arguments); } End.prototype.isEnd = function() { @@ -10277,11 +10288,8 @@ return jQuery; Error = (function(superClass) { extend(Error, superClass); - function Error(error) { - if (!(this instanceof Error)) { - return new Error(error); - } - this.error = error; + function Error(error1) { + this.error = error1; } Error.prototype.isError = function() { @@ -10639,9 +10647,6 @@ return jQuery; extend(EventStream, superClass); function EventStream(desc, subscribe, handler) { - if (!(this instanceof EventStream)) { - return new EventStream(desc, subscribe, handler); - } if (_.isFunction(desc)) { handler = subscribe; subscribe = desc; @@ -10868,6 +10873,7 @@ return jQuery; var reply; reply = flushWhileTriggers(); if (ends) { + ends = false; if (_.all(sources, cannotSync) || _.all(pats, cannotMatch)) { reply = Bacon.noMore; sink(endEvent()); @@ -11175,25 +11181,12 @@ return jQuery; }); }; - argumentsToObservables = function(args) { - if (isArray(args[0])) { - return args[0]; - } else { - return Array.prototype.slice.call(args); - } - }; - - argumentsToObservablesAndFunction = function(args) { - if (_.isFunction(args[0])) { - return [argumentsToObservables(Array.prototype.slice.call(args, 1)), args[0]]; - } else { - return [argumentsToObservables(Array.prototype.slice.call(args, 0, args.length - 1)), _.last(args)]; - } - }; - Bacon.combineAsArray = function() { var index, j, len1, s, sources, stream, streams; - streams = argumentsToObservables(arguments); + streams = 1 <= arguments.length ? slice.call(arguments, 0) : []; + if (streams.length === 1 && isArray(streams[0])) { + streams = streams[0]; + } for (index = j = 0, len1 = streams.length; j < len1; index = ++j) { stream = streams[index]; if (!(isObservable(stream))) { @@ -11227,13 +11220,81 @@ return jQuery; }; Bacon.combineWith = function() { - var f, ref, streams; - ref = argumentsToObservablesAndFunction(arguments), streams = ref[0], f = ref[1]; + var f, streams; + f = arguments[0], streams = 2 <= arguments.length ? slice.call(arguments, 1) : []; return withDesc(new Bacon.Desc(Bacon, "combineWith", [f].concat(slice.call(streams))), Bacon.combineAsArray(streams).map(function(values) { return f.apply(null, values); })); }; + Bacon.combineTemplate = function(template) { + var applyStreamValue, combinator, compile, compileTemplate, constantValue, current, funcs, mkContext, setValue, streams; + funcs = []; + streams = []; + current = function(ctxStack) { + return ctxStack[ctxStack.length - 1]; + }; + setValue = function(ctxStack, key, value) { + return current(ctxStack)[key] = value; + }; + applyStreamValue = function(key, index) { + return function(ctxStack, values) { + return setValue(ctxStack, key, values[index]); + }; + }; + constantValue = function(key, value) { + return function(ctxStack) { + return setValue(ctxStack, key, value); + }; + }; + mkContext = function(template) { + if (isArray(template)) { + return []; + } else { + return {}; + } + }; + compile = function(key, value) { + var popContext, pushContext; + if (isObservable(value)) { + streams.push(value); + return funcs.push(applyStreamValue(key, streams.length - 1)); + } else if (value === Object(value) && typeof value !== "function" && !(value instanceof RegExp) && !(value instanceof Date)) { + pushContext = function(key) { + return function(ctxStack) { + var newContext; + newContext = mkContext(value); + setValue(ctxStack, key, newContext); + return ctxStack.push(newContext); + }; + }; + popContext = function(ctxStack) { + return ctxStack.pop(); + }; + funcs.push(pushContext(key)); + compileTemplate(value); + return funcs.push(popContext); + } else { + return funcs.push(constantValue(key, value)); + } + }; + compileTemplate = function(template) { + return _.each(template, compile); + }; + compileTemplate(template); + combinator = function(values) { + var ctxStack, f, j, len1, rootContext; + rootContext = mkContext(template); + ctxStack = [rootContext]; + for (j = 0, len1 = funcs.length; j < len1; j++) { + f = funcs[j]; + f(ctxStack, values); + } + return rootContext; + }; + return withDesc(new Bacon.Desc(Bacon, "combineTemplate", [template]), Bacon.combineAsArray(streams).map(combinator)); + }; + Bacon.Observable.prototype.combine = function(other, f) { var combinator; combinator = toCombinator(f); @@ -11242,6 +11303,12 @@ return jQuery; })); }; + Bacon.Observable.prototype.decode = function(cases) { + return withDesc(new Bacon.Desc(this, "decode", [cases]), this.combine(Bacon.combineTemplate(cases), function(key, values) { + return values[key]; + })); + }; + Bacon.Observable.prototype.withStateMachine = function(initState, f) { var state; state = initState; @@ -11356,15 +11423,14 @@ return jQuery; end: void 0, values: [], flush: function() { - var reply, valuesToPush; + var reply; if (this.scheduled) { Bacon.scheduler.clearTimeout(this.scheduled); this.scheduled = null; } if (this.values.length > 0) { - valuesToPush = this.values; + reply = this.push(nextEvent(this.values)); this.values = []; - reply = this.push(nextEvent(valuesToPush)); if (this.end != null) { return this.push(this.end); } else if (reply !== Bacon.noMore) { @@ -11599,9 +11665,6 @@ return jQuery; this.guardedSink = bind(this.guardedSink, this); this.subscribeAll = bind(this.subscribeAll, this); this.unsubAll = bind(this.unsubAll, this); - if (!(this instanceof Bus)) { - return new Bus(); - } this.sink = void 0; this.subscriptions = []; this.ended = false; @@ -11747,74 +11810,6 @@ return jQuery; }); }); - Bacon.combineTemplate = function(template) { - var applyStreamValue, combinator, compile, compileTemplate, constantValue, current, funcs, mkContext, pushContext, setValue, streams; - funcs = []; - streams = []; - current = function(ctxStack) { - return ctxStack[ctxStack.length - 1]; - }; - setValue = function(ctxStack, key, value) { - return current(ctxStack)[key] = value; - }; - applyStreamValue = function(key, index) { - return function(ctxStack, values) { - return setValue(ctxStack, key, values[index]); - }; - }; - constantValue = function(key, value) { - return function(ctxStack) { - return setValue(ctxStack, key, value); - }; - }; - mkContext = function(template) { - if (isArray(template)) { - return []; - } else { - return {}; - } - }; - pushContext = function(key, value) { - return function(ctxStack) { - var newContext; - newContext = mkContext(value); - setValue(ctxStack, key, newContext); - return ctxStack.push(newContext); - }; - }; - compile = function(key, value) { - var popContext; - if (isObservable(value)) { - streams.push(value); - return funcs.push(applyStreamValue(key, streams.length - 1)); - } else if (value === Object(value) && typeof value !== "function" && !(value instanceof RegExp) && !(value instanceof Date)) { - popContext = function(ctxStack) { - return ctxStack.pop(); - }; - funcs.push(pushContext(key, value)); - compileTemplate(value); - return funcs.push(popContext); - } else { - return funcs.push(constantValue(key, value)); - } - }; - compileTemplate = function(template) { - return _.each(template, compile); - }; - compileTemplate(template); - combinator = function(values) { - var ctxStack, f, j, len1, rootContext; - rootContext = mkContext(template); - ctxStack = [rootContext]; - for (j = 0, len1 = funcs.length; j < len1; j++) { - f = funcs[j]; - f(ctxStack, values); - } - return rootContext; - }; - return withDesc(new Bacon.Desc(Bacon, "combineTemplate", [template]), Bacon.combineAsArray(streams).map(combinator)); - }; - addPropertyInitValueToStream = function(property, stream) { var justInitValue; justInitValue = new EventStream(describe(property, "justInitValue"), function(sink) { @@ -11937,17 +11932,10 @@ return jQuery; })); }; - Bacon.Observable.prototype.decode = function(cases) { - return withDesc(new Bacon.Desc(this, "decode", [cases]), this.combine(Bacon.combineTemplate(cases), function(key, values) { - return values[key]; - })); - }; - Bacon.Observable.prototype.scan = function(seed, f) { - var acc, initHandled, resultProperty, subscribe; + var acc, resultProperty, subscribe; f = toCombinator(f); acc = toOption(seed); - initHandled = false; subscribe = (function(_this) { return function(sink) { var initSent, reply, sendInit, unsub; @@ -11957,7 +11945,7 @@ return jQuery; sendInit = function() { if (!initSent) { return acc.forEach(function(value) { - initSent = initHandled = true; + initSent = true; reply = sink(new Initial(function() { return value; })); @@ -11971,13 +11959,13 @@ return jQuery; unsub = _this.dispatcher.subscribe(function(event) { var next, prev; if (event.hasValue()) { - if (initHandled && event.isInitial()) { + if (initSent && event.isInitial()) { return Bacon.more; } else { if (!event.isInitial()) { sendInit(); } - initSent = initHandled = true; + initSent = true; prev = acc.getOrElse(void 0); next = f(prev, event.value()); acc = new Some(next); @@ -12246,14 +12234,14 @@ return jQuery; }; Bacon.EventStream.prototype.holdWhen = function(valve) { - var bufferedValues, onHold, src; + var bufferedValues, composite, onHold, src, subscribed; + composite = new CompositeUnsubscribe(); onHold = false; bufferedValues = []; + subscribed = false; src = this; return new EventStream(new Bacon.Desc(this, "holdWhen", [valve]), function(sink) { - var composite, endIfBothEnded, subscribed; - composite = new CompositeUnsubscribe(); - subscribed = false; + var endIfBothEnded; endIfBothEnded = function(unsub) { if (typeof unsub === "function") { unsub(); @@ -12349,7 +12337,10 @@ return jQuery; Bacon.mergeAll = function() { var streams; - streams = argumentsToObservables(arguments); + streams = 1 <= arguments.length ? slice.call(arguments, 0) : []; + if (isArray(streams[0])) { + streams = streams[0]; + } if (streams.length) { return new EventStream(new Bacon.Desc(Bacon, "mergeAll", streams), function(sink) { var ends, sinks, smartSink; @@ -12654,7 +12645,10 @@ return jQuery; Bacon.zipAsArray = function() { var streams; - streams = argumentsToObservables(arguments); + streams = 1 <= arguments.length ? slice.call(arguments, 0) : []; + if (isArray(streams[0])) { + streams = streams[0]; + } return withDesc(new Bacon.Desc(Bacon, "zipAsArray", streams), Bacon.zipWith(streams, function() { var xs; xs = 1 <= arguments.length ? slice.call(arguments, 0) : []; @@ -12664,7 +12658,10 @@ return jQuery; Bacon.zipWith = function() { var f, ref1, streams; - ref1 = argumentsToObservablesAndFunction(arguments), streams = ref1[0], f = ref1[1]; + f = arguments[0], streams = 2 <= arguments.length ? slice.call(arguments, 1) : []; + if (!_.isFunction(f)) { + ref1 = [f, streams[0]], streams = ref1[0], f = ref1[1]; + } streams = _.map((function(s) { return s.toEventStream(); }), streams); @@ -12745,9 +12742,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) define([], function() { return Bacon; }); - if (typeof this !== "undefined" && this !== null) { - this.Bacon = Bacon; - } + this.Bacon = Bacon; } else if ((typeof module !== "undefined" && module !== null) && (module.exports != null)) { module.exports = Bacon; Bacon.Bacon = Bacon; @@ -14306,7 +14301,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) } }.call(this)); -// Backbone.js 1.2.3 +// Backbone.js 1.2.1 // (c) 2010-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors // Backbone may be freely distributed under the MIT license. @@ -14349,10 +14344,10 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) var previousBackbone = root.Backbone; // Create a local reference to a common array method we'll want to use later. - var slice = Array.prototype.slice; + var slice = [].slice; // Current version of the library. Keep in sync with `package.json`. - Backbone.VERSION = '1.2.3'; + Backbone.VERSION = '1.2.1'; // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns // the `$` variable. @@ -14376,13 +14371,8 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // form param named `model`. Backbone.emulateJSON = false; - // Proxy Backbone class methods to Underscore functions, wrapping the model's - // `attributes` object or collection's `models` array behind the scenes. - // - // collection.filter(function(model) { return model.get('age') > 10 }); - // collection.each(this.addView); - // - // `Function#apply` can be slow so we use the method's arg count, if we know it. + // Proxy Underscore methods to a Backbone class' prototype using a + // particular attribute as the data argument var addMethod = function(length, method, attribute) { switch (length) { case 1: return function() { @@ -14392,10 +14382,10 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) return _[method](this[attribute], value); }; case 3: return function(iteratee, context) { - return _[method](this[attribute], cb(iteratee, this), context); + return _[method](this[attribute], iteratee, context); }; case 4: return function(iteratee, defaultVal, context) { - return _[method](this[attribute], cb(iteratee, this), defaultVal, context); + return _[method](this[attribute], iteratee, defaultVal, context); }; default: return function() { var args = slice.call(arguments); @@ -14410,26 +14400,12 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) }); }; - // Support `collection.sortBy('attr')` and `collection.findWhere({id: 1})`. - var cb = function(iteratee, instance) { - if (_.isFunction(iteratee)) return iteratee; - if (_.isObject(iteratee) && !instance._isModel(iteratee)) return modelMatcher(iteratee); - if (_.isString(iteratee)) return function(model) { return model.get(iteratee); }; - return iteratee; - }; - var modelMatcher = function(attrs) { - var matcher = _.matches(attrs); - return function(model) { - return matcher(model.attributes); - }; - }; - // Backbone.Events // --------------- // A module that can be mixed in to *any object* in order to provide it with - // a custom event channel. You may bind a callback to an event with `on` or - // remove with `off`; `trigger`-ing an event fires all callbacks in + // custom events. You may bind with `on` or remove with `off` callback + // functions to an event; `trigger`-ing an event fires all callbacks in // succession. // // var object = {}; @@ -14444,25 +14420,26 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // Iterates over the standard `event, callback` (as well as the fancy multiple // space-separated events `"change blur", callback` and jQuery-style event - // maps `{event: callback}`). - var eventsApi = function(iteratee, events, name, callback, opts) { + // maps `{event: callback}`), reducing them by manipulating `memo`. + // Passes a normalized single event name and callback, as well as any + // optional `opts`. + var eventsApi = function(iteratee, memo, name, callback, opts) { var i = 0, names; if (name && typeof name === 'object') { // Handle event maps. if (callback !== void 0 && 'context' in opts && opts.context === void 0) opts.context = callback; for (names = _.keys(name); i < names.length ; i++) { - events = eventsApi(iteratee, events, names[i], name[names[i]], opts); + memo = iteratee(memo, names[i], name[names[i]], opts); } } else if (name && eventSplitter.test(name)) { - // Handle space separated event names by delegating them individually. + // Handle space separated event names. for (names = name.split(eventSplitter); i < names.length; i++) { - events = iteratee(events, names[i], callback, opts); + memo = iteratee(memo, names[i], callback, opts); } } else { - // Finally, standard events. - events = iteratee(events, name, callback, opts); + memo = iteratee(memo, name, callback, opts); } - return events; + return memo; }; // Bind an event to a `callback` function. Passing `"all"` will bind @@ -14471,7 +14448,8 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) return internalOn(this, name, callback, context); }; - // Guard the `listening` argument from the public API. + // An internal use `on` function, used to guard the `listening` argument from + // the public API. var internalOn = function(obj, name, callback, context, listening) { obj._events = eventsApi(onApi, obj._events || {}, name, callback, { context: context, @@ -14488,8 +14466,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) }; // Inversion-of-control versions of `on`. Tell *this* object to listen to - // an event in another object... keeping track of what it's listening to - // for easier unbinding later. + // an event in another object... keeping track of what it's listening to. Events.listenTo = function(obj, name, callback) { if (!obj) return this; var id = obj._listenId || (obj._listenId = _.uniqueId('l')); @@ -14557,6 +14534,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // The reducing API that removes a callback from the `events` object. var offApi = function(events, name, callback, options) { + // No events to consider. if (!events) return; var i = 0, listening; @@ -14611,9 +14589,9 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) }; // Bind an event to only be triggered a single time. After the first time - // the callback is invoked, its listener will be removed. If multiple events - // are passed in using the space-separated syntax, the handler will fire - // once for each event, not once for a combination of all events. + // the callback is invoked, it will be removed. When multiple events are + // passed in using the space-separated syntax, the event will fire once for every + // event you passed in, not once for a combination of all events Events.once = function(name, callback, context) { // Map the event into a `{event: once}` object. var events = eventsApi(onceMap, {}, name, callback, _.bind(this.off, this)); @@ -14801,6 +14779,9 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) var changed = this.changed; var prev = this._previousAttributes; + // Check for changes of `id`. + if (this.idAttribute in attrs) this.id = attrs[this.idAttribute]; + // For each `set` attribute, update or delete the current value. for (var attr in attrs) { val = attrs[attr]; @@ -14813,9 +14794,6 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) unset ? delete current[attr] : current[attr] = val; } - // Update the `id`. - this.id = this.get(this.idAttribute); - // Trigger all relevant attribute changes. if (!silent) { if (changes.length) this._pending = options; @@ -15038,8 +15016,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) }); - // Underscore methods that we want to implement on the Model, mapped to the - // number of arguments they take. + // Underscore methods that we want to implement on the Model. var modelMethods = { keys: 1, values: 1, pairs: 1, invert: 1, pick: 0, omit: 0, chain: 1, isEmpty: 1 }; @@ -15072,16 +15049,6 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) var setOptions = {add: true, remove: true, merge: true}; var addOptions = {add: true, remove: false}; - // Splices `insert` into `array` at index `at`. - var splice = function(array, insert, at) { - at = Math.min(Math.max(at, 0), array.length); - var tail = Array(array.length - at); - var length = insert.length; - for (var i = 0; i < tail.length; i++) tail[i] = array[i + at]; - for (i = 0; i < length; i++) array[i + at] = insert[i]; - for (i = 0; i < tail.length; i++) array[i + length + at] = tail[i]; - }; - // Define the Collection's inheritable methods. _.extend(Collection.prototype, Events, { @@ -15104,9 +15071,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) return Backbone.sync.apply(this, arguments); }, - // Add a model, or list of models to the set. `models` may be Backbone - // Models or raw JavaScript objects to be converted to Models, or any - // combination of the two. + // Add a model, or list of models to the set. add: function(models, options) { return this.set(models, _.extend({merge: false}, options, addOptions)); }, @@ -15126,88 +15091,83 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // already exist in the collection, as necessary. Similar to **Model#set**, // the core operation for updating the data contained by the collection. set: function(models, options) { - if (models == null) return; - options = _.defaults({}, options, setOptions); if (options.parse && !this._isModel(models)) models = this.parse(models, options); - var singular = !_.isArray(models); - models = singular ? [models] : models.slice(); - + models = singular ? (models ? [models] : []) : models.slice(); + var id, model, attrs, existing, sort; var at = options.at; if (at != null) at = +at; if (at < 0) at += this.length + 1; - - var set = []; - var toAdd = []; - var toRemove = []; - var modelMap = {}; - - var add = options.add; - var merge = options.merge; - var remove = options.remove; - - var sort = false; var sortable = this.comparator && (at == null) && options.sort !== false; var sortAttr = _.isString(this.comparator) ? this.comparator : null; + var toAdd = [], toRemove = [], modelMap = {}; + var add = options.add, merge = options.merge, remove = options.remove; + var order = !sortable && add && remove ? [] : false; + var orderChanged = false; // Turn bare objects into model references, and prevent invalid models // from being added. - var model; for (var i = 0; i < models.length; i++) { - model = models[i]; + attrs = models[i]; // If a duplicate is found, prevent it from being added and // optionally merge it into the existing model. - var existing = this.get(model); - if (existing) { - if (merge && model !== existing) { - var attrs = this._isModel(model) ? model.attributes : model; + if (existing = this.get(attrs)) { + if (remove) modelMap[existing.cid] = true; + if (merge && attrs !== existing) { + attrs = this._isModel(attrs) ? attrs.attributes : attrs; if (options.parse) attrs = existing.parse(attrs, options); existing.set(attrs, options); - if (sortable && !sort) sort = existing.hasChanged(sortAttr); - } - if (!modelMap[existing.cid]) { - modelMap[existing.cid] = true; - set.push(existing); + if (sortable && !sort && existing.hasChanged(sortAttr)) sort = true; } models[i] = existing; // If this is a new, valid model, push it to the `toAdd` list. } else if (add) { - model = models[i] = this._prepareModel(model, options); - if (model) { - toAdd.push(model); - this._addReference(model, options); - modelMap[model.cid] = true; - set.push(model); - } + model = models[i] = this._prepareModel(attrs, options); + if (!model) continue; + toAdd.push(model); + this._addReference(model, options); + } + + // Do not add multiple models with the same `id`. + model = existing || model; + if (!model) continue; + id = this.modelId(model.attributes); + if (order && (model.isNew() || !modelMap[id])) { + order.push(model); + + // Check to see if this is actually a new model at this index. + orderChanged = orderChanged || !this.models[i] || model.cid !== this.models[i].cid; } + + modelMap[id] = true; } - // Remove stale models. + // Remove nonexistent models if appropriate. if (remove) { - for (i = 0; i < this.length; i++) { - model = this.models[i]; - if (!modelMap[model.cid]) toRemove.push(model); + for (var i = 0; i < this.length; i++) { + if (!modelMap[(model = this.models[i]).cid]) toRemove.push(model); } if (toRemove.length) this._removeModels(toRemove, options); } // See if sorting is needed, update `length` and splice in new models. - var orderChanged = false; - var replace = !sortable && add && remove; - if (set.length && replace) { - orderChanged = this.length != set.length || _.some(this.models, function(model, index) { - return model !== set[index]; - }); - this.models.length = 0; - splice(this.models, set, 0); - this.length = this.models.length; - } else if (toAdd.length) { + if (toAdd.length || orderChanged) { if (sortable) sort = true; - splice(this.models, toAdd, at == null ? this.length : at); - this.length = this.models.length; + this.length += toAdd.length; + if (at != null) { + for (var i = 0; i < toAdd.length; i++) { + this.models.splice(at + i, 0, toAdd[i]); + } + } else { + if (order) this.models.length = 0; + var orderedModels = order || toAdd; + for (var i = 0; i < orderedModels.length; i++) { + this.models.push(orderedModels[i]); + } + } } // Silently sort the collection if appropriate. @@ -15215,10 +15175,10 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // Unless silenced, it's time to fire all appropriate add/sort events. if (!options.silent) { - for (i = 0; i < toAdd.length; i++) { - if (at != null) options.index = at + i; - model = toAdd[i]; - model.trigger('add', model, this, options); + var addOpts = at != null ? _.clone(options) : options; + for (var i = 0; i < toAdd.length; i++) { + if (at != null) addOpts.index = at + i; + (model = toAdd[i]).trigger('add', model, this, addOpts); } if (sort || orderChanged) this.trigger('sort', this, options); if (toAdd.length || toRemove.length) this.trigger('update', this, options); @@ -15287,7 +15247,10 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // Return models with matching attributes. Useful for simple cases of // `filter`. where: function(attrs, first) { - return this[first ? 'find' : 'filter'](attrs); + var matches = _.matches(attrs); + return this[first ? 'find' : 'filter'](function(model) { + return matches(model.attributes); + }); }, // Return the first model with matching attributes. Useful for simple cases @@ -15300,19 +15263,16 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // normal circumstances, as the set will maintain sort order as each item // is added. sort: function(options) { - var comparator = this.comparator; - if (!comparator) throw new Error('Cannot sort a set without a comparator'); + if (!this.comparator) throw new Error('Cannot sort a set without a comparator'); options || (options = {}); - var length = comparator.length; - if (_.isFunction(comparator)) comparator = _.bind(comparator, this); - // Run sort based on type of `comparator`. - if (length === 1 || _.isString(comparator)) { - this.models = this.sortBy(comparator); + if (_.isString(this.comparator) || this.comparator.length === 1) { + this.models = this.sortBy(this.comparator, this); } else { - this.models.sort(comparator); + this.models.sort(_.bind(this.comparator, this)); } + if (!options.silent) this.trigger('sort', this, options); return this; }, @@ -15401,6 +15361,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) }, // Internal method called by both remove and set. + // Returns removed models, or false if nothing is removed. _removeModels: function(models, options) { var removed = []; for (var i = 0; i < models.length; i++) { @@ -15470,16 +15431,29 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // right here: var collectionMethods = { forEach: 3, each: 3, map: 3, collect: 3, reduce: 4, foldl: 4, inject: 4, reduceRight: 4, foldr: 4, find: 3, detect: 3, filter: 3, - select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 3, includes: 3, - contains: 3, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3, + select: 3, reject: 3, every: 3, all: 3, some: 3, any: 3, include: 2, + contains: 2, invoke: 0, max: 3, min: 3, toArray: 1, size: 1, first: 3, head: 3, take: 3, initial: 3, rest: 3, tail: 3, drop: 3, last: 3, without: 0, difference: 0, indexOf: 3, shuffle: 1, lastIndexOf: 3, - isEmpty: 1, chain: 1, sample: 3, partition: 3, groupBy: 3, countBy: 3, - sortBy: 3, indexBy: 3}; + isEmpty: 1, chain: 1, sample: 3, partition: 3 }; // Mix in each Underscore method as a proxy to `Collection#models`. addUnderscoreMethods(Collection, collectionMethods, 'models'); + // Underscore methods that take a property name as an argument. + var attributeMethods = ['groupBy', 'countBy', 'sortBy', 'indexBy']; + + // Use attributes instead of properties. + _.each(attributeMethods, function(method) { + if (!_[method]) return; + Collection.prototype[method] = function(value, context) { + var iterator = _.isFunction(value) ? value : function(model) { + return model.get(value); + }; + return _[method](this.models, iterator, context); + }; + }); + // Backbone.View // ------------- @@ -15503,7 +15477,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // Cached regex to split keys for `delegate`. var delegateEventSplitter = /^(\S+)\s*(.*)$/; - // List of view options to be set as properties. + // List of view options to be merged as properties. var viewOptions = ['model', 'collection', 'el', 'id', 'attributes', 'className', 'tagName', 'events']; // Set up all inheritable **Backbone.View** properties and methods. @@ -15847,7 +15821,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // falls back to polling. var History = Backbone.History = function() { this.handlers = []; - this.checkUrl = _.bind(this.checkUrl, this); + _.bindAll(this, 'checkUrl'); // Ensure that `History` can be used outside of the browser. if (typeof window !== 'undefined') { @@ -15940,7 +15914,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) this.options = _.extend({root: '/'}, this.options, options); this.root = this.options.root; this._wantsHashChange = this.options.hashChange !== false; - this._hasHashChange = 'onhashchange' in window && (document.documentMode === void 0 || document.documentMode > 7); + this._hasHashChange = 'onhashchange' in window; this._useHashChange = this._wantsHashChange && this._hasHashChange; this._wantsPushState = !!this.options.pushState; this._hasPushState = !!(this.history && this.history.pushState); @@ -16059,7 +16033,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // If the root doesn't match, no routes can match either. if (!this.matchRoot()) return false; fragment = this.fragment = this.getFragment(fragment); - return _.some(this.handlers, function(handler) { + return _.any(this.handlers, function(handler) { if (handler.route.test(fragment)) { handler.callback(fragment); return true; @@ -16203,7 +16177,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // Backbone.BabySitter // ------------------- -// v0.1.10 +// v0.1.8 // // Copyright (c)2015 Derick Bailey, Muted Solutions, LLC. // Distributed under MIT license @@ -16381,7 +16355,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) })(Backbone, _); - Backbone.ChildViewContainer.VERSION = '0.1.10'; + Backbone.ChildViewContainer.VERSION = '0.1.8'; Backbone.ChildViewContainer.noConflict = function () { Backbone.ChildViewContainer = previousChildViewContainer; @@ -16394,7 +16368,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // Backbone.Wreqr (Backbone.Marionette) // ---------------------------------- -// v1.3.5 +// v1.3.3 // // Copyright (c)2015 Derick Bailey, Muted Solutions, LLC. // Distributed under MIT license @@ -16423,7 +16397,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) var Wreqr = Backbone.Wreqr = {}; - Backbone.Wreqr.VERSION = '1.3.5'; + Backbone.Wreqr.VERSION = '1.3.3'; Backbone.Wreqr.noConflict = function () { Backbone.Wreqr = previousWreqr; @@ -16830,7 +16804,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // MarionetteJS (Backbone.Marionette) // ---------------------------------- -// v2.4.3 +// v2.4.2 // // Copyright (c)2015 Derick Bailey, Muted Solutions, LLC. // Distributed under MIT license @@ -16861,7 +16835,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) var Marionette = Backbone.Marionette = {}; - Marionette.VERSION = '2.4.3'; + Marionette.VERSION = '2.4.2'; Marionette.noConflict = function() { root.Marionette = previousMarionette; @@ -17106,8 +17080,6 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // re-rendered. Marionette.MonitorDOMRefresh = function(view) { - if (view._isDomRefreshMonitored) { return; } - view._isDomRefreshMonitored = true; // track when the view has been shown in the DOM, // using a Marionette.Region (or by other means of triggering "show") @@ -17125,7 +17097,9 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // Trigger the "dom:refresh" event and corresponding "onDomRefresh" method function triggerDOMRefresh() { if (view._isShown && view._isRendered && Marionette.isNodeAttached(view.el)) { - Marionette.triggerMethodOn(view, 'dom:refresh', view); + if (_.isFunction(view.triggerMethod)) { + view.triggerMethod('dom:refresh'); + } } } @@ -17466,7 +17440,6 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) } this._ensureViewIsIntact(view); - Marionette.MonitorDOMRefresh(view); var showOptions = options || {}; var isDifferentView = view !== this.currentView; @@ -17511,8 +17484,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // to the currentView since once a view has been destroyed // we can not reuse it. view.once('destroy', this.empty, this); - - this._renderView(view); + view.render(); view._parent = this; @@ -17580,16 +17552,6 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) return _.union([view], _.result(view, '_getNestedViews') || []); }, - _renderView: function(view) { - if (!view.supportsRenderLifecycle) { - Marionette.triggerMethodOn(view, 'before:render', view); - } - view.render(); - if (!view.supportsRenderLifecycle) { - Marionette.triggerMethodOn(view, 'render', view); - } - }, - _ensureElement: function() { if (!_.isObject(this.el)) { this.$el = this.getEl(this.el); @@ -17642,8 +17604,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) empty: function(options) { var view = this.currentView; - var emptyOptions = options || {}; - var preventDestroy = !!emptyOptions.preventDestroy; + var preventDestroy = Marionette._getValue(options, 'preventDestroy', this); // If there is no view in the region // we should not remove anything if (!view) { return; } @@ -17669,23 +17630,16 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // on the view (if showing a raw Backbone view or a Marionette View) _destroyView: function() { var view = this.currentView; - if (view.isDestroyed) { return; } - if (!view.supportsDestroyLifecycle) { - Marionette.triggerMethodOn(view, 'before:destroy', view); - } - if (view.destroy) { + if (view.destroy && !view.isDestroyed) { view.destroy(); - } else { + } else if (view.remove) { view.remove(); // appending isDestroyed to raw Backbone View allows regions // to throw a ViewDestroyedError for this view view.isDestroyed = true; } - if (!view.supportsDestroyLifecycle) { - Marionette.triggerMethodOn(view, 'destroy', view); - } }, // Attach an existing view to the region. This @@ -17693,10 +17647,6 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // and will not replace the current HTML for the `el` // of the region. attachView: function(view) { - if (this.currentView) { - delete this.currentView._parent; - } - view._parent = this; this.currentView = view; return this; }, @@ -17988,15 +17938,16 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // using a template-loader plugin as described here: // https://github.com/marionettejs/backbone.marionette/wiki/Using-marionette-with-requirejs loadTemplate: function(templateId, options) { - var $template = Backbone.$(templateId); + var template = Backbone.$(templateId).html(); - if (!$template.length) { + if (!template || template.length === 0) { throw new Marionette.Error({ name: 'NoTemplateError', message: 'Could not find template: "' + templateId + '"' }); } - return $template.html(); + + return template; }, // Pre-compile the template before caching it. Override @@ -18041,11 +17992,9 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // The core view class that other Marionette views extend from. Marionette.View = Backbone.View.extend({ isDestroyed: false, - supportsRenderLifecycle: true, - supportsDestroyLifecycle: true, constructor: function(options) { - this.render = _.bind(this.render, this); + _.bindAll(this, 'render'); options = Marionette._getValue(options, this); @@ -18265,13 +18214,14 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // Internal method to create an event handler for a given `triggerDef` like // 'click:foo' _buildViewTrigger: function(triggerDef) { + var hasOptions = _.isObject(triggerDef); - var options = _.defaults({}, triggerDef, { + var options = _.defaults({}, (hasOptions ? triggerDef : {}), { preventDefault: true, stopPropagation: true }); - var eventName = _.isObject(triggerDef) ? options.event : triggerDef; + var eventName = hasOptions ? options.event : triggerDef; return function(e) { if (e) { @@ -18334,16 +18284,15 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // invoke triggerMethod on parent view var eventPrefix = Marionette.getOption(layoutView, 'childViewEventPrefix'); var prefixedEventName = eventPrefix + ':' + eventName; - var callArgs = [this].concat(args); - Marionette._triggerMethod(layoutView, prefixedEventName, callArgs); + Marionette._triggerMethod(layoutView, [prefixedEventName, this].concat(args)); // call the parent view's childEvents handler var childEvents = Marionette.getOption(layoutView, 'childEvents'); var normalizedChildEvents = layoutView.normalizeMethods(childEvents); - if (normalizedChildEvents && _.isFunction(normalizedChildEvents[eventName])) { - normalizedChildEvents[eventName].apply(layoutView, callArgs); + if (!!normalizedChildEvents && _.isFunction(normalizedChildEvents[eventName])) { + normalizedChildEvents[eventName].apply(layoutView, [this].concat(args)); } }, @@ -18617,12 +18566,11 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // Handle a child added to the collection _onCollectionAdd: function(child, collection, opts) { - // `index` is present when adding with `at` since BB 1.2; indexOf fallback for < 1.2 - var index = opts.at !== undefined && (opts.index || collection.indexOf(child)); - - // When filtered or when there is no initial index, calculate index. - if (this.getOption('filter') || index === false) { - index = _.indexOf(this._filteredSortedModels(index), child); + var index; + if (opts.at !== undefined) { + index = opts.at; + } else { + index = _.indexOf(this._filteredSortedModels(), child); } if (this._shouldAddChild(child, index)) { @@ -18762,7 +18710,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) this.triggerMethod('render:collection', this); // If we have shown children and none have passed the filter, show the empty view - if (this.children.isEmpty() && this.getOption('filter')) { + if (this.children.isEmpty()) { this.showEmptyView(); } } @@ -18781,22 +18729,18 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) }, // Allow the collection to be sorted by a custom view comparator - _filteredSortedModels: function(addedAt) { + _filteredSortedModels: function() { + var models; var viewComparator = this.getViewComparator(); - var models = this.collection.models; - addedAt = Math.min(Math.max(addedAt, 0), models.length - 1); if (viewComparator) { - var addedModel; - // Preserve `at` location, even for a sorted view - if (addedAt) { - addedModel = models[addedAt]; - models = models.slice(0, addedAt).concat(models.slice(addedAt + 1)); - } - models = this._sortModelsBy(models, viewComparator); - if (addedModel) { - models.splice(addedAt, 0, addedModel); + if (_.isString(viewComparator) || viewComparator.length === 1) { + models = this.collection.sortBy(viewComparator, this); + } else { + models = _.clone(this.collection.models).sort(_.bind(viewComparator, this)); } + } else { + models = this.collection.models; } // Filter after sorting in case the filter uses the index @@ -18809,18 +18753,6 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) return models; }, - _sortModelsBy: function(models, comparator) { - if (typeof comparator === 'string') { - return _.sortBy(models, function(model) { - return model.get(comparator); - }, this); - } else if (comparator.length === 1) { - return _.sortBy(models, comparator, this); - } else { - return models.sort(_.bind(comparator, this)); - } - }, - // Internal method to show an empty view in place of // a collection of child views, when the collection is empty showEmptyView: function() { @@ -18881,27 +18813,30 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // Proxy emptyView events this.proxyChildEvents(view); - view.once('render', function() { - // trigger the 'before:show' event on `view` if the collection view has already been shown - if (this._isShown) { - Marionette.triggerMethodOn(view, 'before:show', view); - } + // trigger the 'before:show' event on `view` if the collection view has already been shown + if (this._isShown) { + Marionette.triggerMethodOn(view, 'before:show', view); + } + + // Store the `emptyView` like a `childView` so we can properly + // remove and/or close it later + this.children.add(view); - // Trigger `before:attach` following `render` to avoid adding logic and event triggers - // to public method `renderChildView()`. - if (canTriggerAttach && this._triggerBeforeAttach) { - nestedViews = this._getViewAndNested(view); + // Trigger `before:attach` following `render` to avoid adding logic and event triggers + // to public method `renderChildView()`. + if (canTriggerAttach && this._triggerBeforeAttach) { + nestedViews = [view].concat(view._getNestedViews()); + view.once('render', function() { this._triggerMethodMany(nestedViews, this, 'before:attach'); - } - }, this); + }, this); + } - // Store the `emptyView` like a `childView` so we can properly remove and/or close it later - this.children.add(view); + // Render it and show it this.renderChildView(view, this._emptyViewIndex); // Trigger `attach` if (canTriggerAttach && this._triggerAttach) { - nestedViews = this._getViewAndNested(view); + nestedViews = [view].concat(view._getNestedViews()); this._triggerMethodMany(nestedViews, this, 'attach'); } // call the 'show' method if the collection view has already been shown @@ -18982,27 +18917,28 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // set up the child view event forwarding this.proxyChildEvents(view); - view.once('render', function() { - // trigger the 'before:show' event on `view` if the collection view has already been shown - if (this._isShown && !this.isBuffering) { - Marionette.triggerMethodOn(view, 'before:show', view); - } - - // Trigger `before:attach` following `render` to avoid adding logic and event triggers - // to public method `renderChildView()`. - if (canTriggerAttach && this._triggerBeforeAttach) { - nestedViews = this._getViewAndNested(view); - this._triggerMethodMany(nestedViews, this, 'before:attach'); - } - }, this); + // trigger the 'before:show' event on `view` if the collection view has already been shown + if (this._isShown && !this.isBuffering) { + Marionette.triggerMethodOn(view, 'before:show', view); + } // Store the child view itself so we can properly remove and/or destroy it later this.children.add(view); + + // Trigger `before:attach` following `render` to avoid adding logic and event triggers + // to public method `renderChildView()`. + if (canTriggerAttach && this._triggerBeforeAttach) { + nestedViews = [view].concat(view._getNestedViews()); + view.once('render', function() { + this._triggerMethodMany(nestedViews, this, 'before:attach'); + }, this); + } + this.renderChildView(view, index); // Trigger `attach` if (canTriggerAttach && this._triggerAttach) { - nestedViews = this._getViewAndNested(view); + nestedViews = [view].concat(view._getNestedViews()); this._triggerMethodMany(nestedViews, this, 'attach'); } // Trigger `show` @@ -19013,13 +18949,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // render the child view renderChildView: function(view, index) { - if (!view.supportsRenderLifecycle) { - Marionette.triggerMethodOn(view, 'before:render', view); - } view.render(); - if (!view.supportsRenderLifecycle) { - Marionette.triggerMethodOn(view, 'render', view); - } this.attachHtml(this, view, index); return view; }, @@ -19027,9 +18957,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // Build a `childView` for a model in the collection. buildChildView: function(child, ChildViewClass, childViewOptions) { var options = _.extend({model: child}, childViewOptions); - var childView = new ChildViewClass(options); - Marionette.MonitorDOMRefresh(childView); - return childView; + return new ChildViewClass(options); }, // Remove the child view and destroy it. @@ -19037,30 +18965,25 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) // later views in the collection in order to keep // the children in sync with the collection. removeChildView: function(view) { - if (!view) { return view; } - this.triggerMethod('before:remove:child', view); + if (view) { + this.triggerMethod('before:remove:child', view); - if (!view.supportsDestroyLifecycle) { - Marionette.triggerMethodOn(view, 'before:destroy', view); - } - // call 'destroy' or 'remove', depending on which is found - if (view.destroy) { - view.destroy(); - } else { - view.remove(); - } - if (!view.supportsDestroyLifecycle) { - Marionette.triggerMethodOn(view, 'destroy', view); - } + // call 'destroy' or 'remove', depending on which is found + if (view.destroy) { + view.destroy(); + } else if (view.remove) { + view.remove(); + } - delete view._parent; - this.stopListening(view); - this.children.remove(view); - this.triggerMethod('remove:child', view); + delete view._parent; + this.stopListening(view); + this.children.remove(view); + this.triggerMethod('remove:child', view); - // decrement the index of views after this one - this._updateIndices(view, false); + // decrement the index of views after this one + this._updateIndices(view, false); + } return view; }, @@ -19211,11 +19134,6 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) return _.values(this.children._views); }, - _getViewAndNested: function(view) { - // This will not fail on Backbone.View which does not have #_getNestedViews. - return [view].concat(_.result(view, '_getNestedViews') || []); - }, - getViewComparator: function() { return this.getOption('viewComparator'); } @@ -19912,7 +19830,7 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) this.submodules = {}; _.extend(this, options); this._initChannel(); - Marionette.Object.apply(this, arguments); + Marionette.Object.call(this, options); }, // Command execution, facilitated by Backbone.Wreqr.Commands @@ -20624,13 +20542,216 @@ if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) return Polyglot; })); -(function(/* BrowserSync-Brunch */) { - var url = "//" + location.hostname + ":3000/browser-sync/browser-sync-client.2.1.6.js"; - var bs = document.createElement("script"); - bs.type = "text/javascript"; bs.async = true; bs.src = url; - var s = document.getElementsByTagName("script")[0]; - s.parentNode.insertBefore(bs, s); -})(); +!function(e){if("object"==typeof exports)module.exports=e();else if("function"==typeof define&&define.amd)define(e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.jade=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o} escaped + * @return {String} + */ +exports.cls = function cls(classes, escaped) { + var buf = []; + for (var i = 0; i < classes.length; i++) { + if (escaped && escaped[i]) { + buf.push(exports.escape(joinClasses([classes[i]]))); + } else { + buf.push(joinClasses(classes[i])); + } + } + var text = joinClasses(buf); + if (text.length) { + return ' class="' + text + '"'; + } else { + return ''; + } +}; + +/** + * Render the given attribute. + * + * @param {String} key + * @param {String} val + * @param {Boolean} escaped + * @param {Boolean} terse + * @return {String} + */ +exports.attr = function attr(key, val, escaped, terse) { + if ('boolean' == typeof val || null == val) { + if (val) { + return ' ' + (terse ? key : key + '="' + key + '"'); + } else { + return ''; + } + } else if (0 == key.indexOf('data') && 'string' != typeof val) { + return ' ' + key + "='" + JSON.stringify(val).replace(/'/g, ''') + "'"; + } else if (escaped) { + return ' ' + key + '="' + exports.escape(val) + '"'; + } else { + return ' ' + key + '="' + val + '"'; + } +}; + +/** + * Render the given attributes object. + * + * @param {Object} obj + * @param {Object} escaped + * @return {String} + */ +exports.attrs = function attrs(obj, terse){ + var buf = []; + + var keys = Object.keys(obj); + + if (keys.length) { + for (var i = 0; i < keys.length; ++i) { + var key = keys[i] + , val = obj[key]; + + if ('class' == key) { + if (val = joinClasses(val)) { + buf.push(' ' + key + '="' + val + '"'); + } + } else { + buf.push(exports.attr(key, val, false, terse)); + } + } + } + + return buf.join(''); +}; + +/** + * Escape the given string of `html`. + * + * @param {String} html + * @return {String} + * @api private + */ + +exports.escape = function escape(html){ + var result = String(html) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"'); + if (result === '' + html) return html; + else return result; +}; + +/** + * Re-throw the given `err` in context to the + * the jade in `filename` at the given `lineno`. + * + * @param {Error} err + * @param {String} filename + * @param {String} lineno + * @api private + */ + +exports.rethrow = function rethrow(err, filename, lineno, str){ + if (!(err instanceof Error)) throw err; + if ((typeof window != 'undefined' || !filename) && !str) { + err.message += ' on line ' + lineno; + throw err; + } + try { + str = str || require('fs').readFileSync(filename, 'utf8') + } catch (ex) { + rethrow(err, null, lineno) + } + var context = 3 + , lines = str.split('\n') + , start = Math.max(lineno - context, 0) + , end = Math.min(lines.length, lineno + context); + + // Error context + var context = lines.slice(start, end).map(function(line, i){ + var curr = i + start + 1; + return (curr == lineno ? ' > ' : ' ') + + curr + + '| ' + + line; + }).join('\n'); + + // Alter exception message + err.path = filename; + err.message = (filename || 'Jade') + ':' + lineno + + '\n' + context + '\n\n' + err.message; + throw err; +}; + +},{"fs":2}],2:[function(require,module,exports){ + +},{}]},{},[1]) +(1) +}); !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.io=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o} escaped - * @return {String} - */ -exports.cls = function cls(classes, escaped) { - var buf = []; - for (var i = 0; i < classes.length; i++) { - if (escaped && escaped[i]) { - buf.push(exports.escape(joinClasses([classes[i]]))); - } else { - buf.push(joinClasses(classes[i])); - } - } - var text = joinClasses(buf); - if (text.length) { - return ' class="' + text + '"'; - } else { - return ''; - } -}; - -/** - * Render the given attribute. - * - * @param {String} key - * @param {String} val - * @param {Boolean} escaped - * @param {Boolean} terse - * @return {String} - */ -exports.attr = function attr(key, val, escaped, terse) { - if ('boolean' == typeof val || null == val) { - if (val) { - return ' ' + (terse ? key : key + '="' + key + '"'); - } else { - return ''; - } - } else if (0 == key.indexOf('data') && 'string' != typeof val) { - return ' ' + key + "='" + JSON.stringify(val).replace(/'/g, ''') + "'"; - } else if (escaped) { - return ' ' + key + '="' + exports.escape(val) + '"'; - } else { - return ' ' + key + '="' + val + '"'; - } -}; - -/** - * Render the given attributes object. - * - * @param {Object} obj - * @param {Object} escaped - * @return {String} - */ -exports.attrs = function attrs(obj, terse){ - var buf = []; - - var keys = Object.keys(obj); - - if (keys.length) { - for (var i = 0; i < keys.length; ++i) { - var key = keys[i] - , val = obj[key]; - - if ('class' == key) { - if (val = joinClasses(val)) { - buf.push(' ' + key + '="' + val + '"'); - } - } else { - buf.push(exports.attr(key, val, false, terse)); - } - } - } - - return buf.join(''); -}; - -/** - * Escape the given string of `html`. - * - * @param {String} html - * @return {String} - * @api private - */ - -exports.escape = function escape(html){ - var result = String(html) - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"'); - if (result === '' + html) return html; - else return result; -}; - -/** - * Re-throw the given `err` in context to the - * the jade in `filename` at the given `lineno`. - * - * @param {Error} err - * @param {String} filename - * @param {String} lineno - * @api private - */ - -exports.rethrow = function rethrow(err, filename, lineno, str){ - if (!(err instanceof Error)) throw err; - if ((typeof window != 'undefined' || !filename) && !str) { - err.message += ' on line ' + lineno; - throw err; - } - try { - str = str || require('fs').readFileSync(filename, 'utf8') - } catch (ex) { - rethrow(err, null, lineno) - } - var context = 3 - , lines = str.split('\n') - , start = Math.max(lineno - context, 0) - , end = Math.min(lines.length, lineno + context); - - // Error context - var context = lines.slice(start, end).map(function(line, i){ - var curr = i + start + 1; - return (curr == lineno ? ' > ' : ' ') - + curr - + '| ' - + line; - }).join('\n'); - - // Alter exception message - err.path = filename; - err.message = (filename || 'Jade') + ':' + lineno - + '\n' + context + '\n\n' + err.message; - throw err; -}; - -},{"fs":2}],2:[function(require,module,exports){ - -},{}]},{},[1]) -(1) -}); //# sourceMappingURL=vendor.js.map \ No newline at end of file diff --git a/build/client/public/scripts/vendor.js.map b/build/client/public/scripts/vendor.js.map index 7fe15480..5fa1ee19 100644 --- a/build/client/public/scripts/vendor.js.map +++ b/build/client/public/scripts/vendor.js.map @@ -1 +1 @@ -{"version":3,"sources":["bower_components/jquery/dist/jquery.js","bower_components/bacon/dist/Bacon.js","bower_components/underscore/underscore.js","bower_components/backbone/backbone.js","bower_components/backbone.babysitter/lib/backbone.babysitter.js","bower_components/backbone.wreqr/lib/backbone.wreqr.js","bower_components/marionette/lib/core/backbone.marionette.js","bower_components/polyglot/lib/polyglot.js","node_modules/browser-sync-brunch/lib/vendor/browser-sync-injector.js","vendor/socket.io-1.3.5.js","node_modules/jade-brunch/node_modules/jade/runtime.js"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC1/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC/3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC5gDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACt2DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC9LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACr6GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AC91NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"public/scripts/vendor.js","sourcesContent":["/*!\n * jQuery JavaScript Library v2.1.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-04-28T16:01Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n}(typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\n\nvar arr = [];\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar support = {};\n\n\n\nvar\n\t// Use the correct document accordingly with window argument (sandbox)\n\tdocument = window.document,\n\n\tversion = \"2.1.4\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android<4.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\n\njQuery.fn = jQuery.prototype = {\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// Start with an empty selector\n\tselector: \"\",\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\t\tret.context = this.context;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\t// (You can seed the arguments with an array of args, but this is\n\t// only used internally.)\n\teach: function( callback, args ) {\n\t\treturn jQuery.each( this, callback, args );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map(this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t}));\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor(null);\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !jQuery.isFunction(target) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\t\t// Only deal with non-null/undefined values\n\t\tif ( (options = arguments[ i ]) != null ) {\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray(src) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject(src) ? src : {};\n\t\t\t\t\t}\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend({\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisFunction: function( obj ) {\n\t\treturn jQuery.type(obj) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\treturn !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// If the function hasn't returned already, we're confident that\n\t\t// |obj| is a plain object, created by {} or constructed with new Object\n\t\treturn true;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call(obj) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf(\"use strict\") === 1 ) {\n\t\t\t\tscript = document.createElement(\"script\");\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t// and removal by using an indirect global eval\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\t},\n\n\t// args is for internal usage only\n\teach: function( obj, callback, args ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = obj.length,\n\t\t\tisArray = isArraylike( obj );\n\n\t\tif ( args ) {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.apply( obj[ i ], args );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// A special, fast, case for the most common use of each\n\t\t} else {\n\t\t\tif ( isArray ) {\n\t\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( i in obj ) {\n\t\t\t\t\tvalue = callback.call( obj[ i ], i, obj[ i ] );\n\n\t\t\t\t\tif ( value === false ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android<4.1\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArraylike( Object(arr) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar value,\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tisArray = isArraylike( elems ),\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArray ) {\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n});\n\n// Populate the class2type map\njQuery.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n});\n\nfunction isArraylike( obj ) {\n\n\t// Support: iOS 8.2 (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = \"length\" in obj && obj.length,\n\t\ttype = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\tif ( obj.nodeType === 1 && length ) {\n\t\treturn true;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.2.0-pre\n * http://sizzlejs.com/\n *\n * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2014-12-16\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// http://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\t// http://www.w3.org/TR/css3-syntax/#characters\n\tcharacterEncoding = \"(?:\\\\\\\\.|[\\\\w-]|[^\\\\x00-\\\\xa0])+\",\n\n\t// Loosely modeled on CSS identifier characters\n\t// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors\n\t// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = characterEncoding.replace( \"w\", \"w#\" ),\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + characterEncoding + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + characterEncoding + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + characterEncoding + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + characterEncoding + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + characterEncoding.replace( \"w\", \"w*\" ) + \")\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\trescape = /'|\\\\/g,\n\n\t// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t};\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar match, elem, m, nodeType,\n\t\t// QSA vars\n\t\ti, groups, old, nid, newContext, newSelector;\n\n\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\n\tcontext = context || document;\n\tresults = results || [];\n\tnodeType = context.nodeType;\n\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\tif ( !seed && documentIsHTML ) {\n\n\t\t// Try to shortcut find operations when possible (e.g., not under DocumentFragment)\n\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\t\t\t// Speed-up: Sizzle(\"#ID\")\n\t\t\tif ( (m = match[1]) ) {\n\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\telem = context.getElementById( m );\n\t\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t\t// nodes that are no longer in the document (jQuery #6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Handle the case where IE, Opera, and Webkit return items\n\t\t\t\t\t\t// by name instead of ID\n\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Context is not a document\n\t\t\t\t\tif ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&\n\t\t\t\t\t\tcontains( context, elem ) && elem.id === m ) {\n\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Speed-up: Sizzle(\"TAG\")\n\t\t\t} else if ( match[2] ) {\n\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\treturn results;\n\n\t\t\t// Speed-up: Sizzle(\".CLASS\")\n\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName ) {\n\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}\n\n\t\t// QSA path\n\t\tif ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\t\t\tnid = old = expando;\n\t\t\tnewContext = context;\n\t\t\tnewSelector = nodeType !== 1 && selector;\n\n\t\t\t// qSA works strangely on Element-rooted queries\n\t\t\t// We can work around this by specifying an extra ID on the root\n\t\t\t// and working up from there (Thanks to Andrew Dupont for the technique)\n\t\t\t// IE 8 doesn't work on object elements\n\t\t\tif ( nodeType === 1 && context.nodeName.toLowerCase() !== \"object\" ) {\n\t\t\t\tgroups = tokenize( selector );\n\n\t\t\t\tif ( (old = context.getAttribute(\"id\")) ) {\n\t\t\t\t\tnid = old.replace( rescape, \"\\\\$&\" );\n\t\t\t\t} else {\n\t\t\t\t\tcontext.setAttribute( \"id\", nid );\n\t\t\t\t}\n\t\t\t\tnid = \"[id='\" + nid + \"'] \";\n\n\t\t\t\ti = groups.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tgroups[i] = nid + toSelector( groups[i] );\n\t\t\t\t}\n\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;\n\t\t\t\tnewSelector = groups.join(\",\");\n\t\t\t}\n\n\t\t\tif ( newSelector ) {\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch(qsaError) {\n\t\t\t\t} finally {\n\t\t\t\t\tif ( !old ) {\n\t\t\t\t\t\tcontext.removeAttribute(\"id\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {Function(string, Object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = attrs.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, parent,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// If no document and documentElement is available, return\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Set our document\n\tdocument = doc;\n\tdocElem = doc.documentElement;\n\tparent = doc.defaultView;\n\n\t// Support: IE>8\n\t// If iframe document is assigned to \"document\" variable and if iframe has been reloaded,\n\t// IE will throw \"permission denied\" error when accessing \"document\" variable, see jQuery #13936\n\t// IE6-8 do not support the defaultView property so parent will be undefined\n\tif ( parent && parent !== parent.top ) {\n\t\t// IE11 does not have attachEvent, so all must suffer\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Support tests\n\t---------------------------------------------------------------------- */\n\tdocumentIsHTML = !isXML( doc );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( div ) {\n\t\tdiv.appendChild( doc.createComment(\"\") );\n\t\treturn !div.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( doc.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !doc.getElementsByName || !doc.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\t// Check parentNode to catch when Blackberry 4.6 returns\n\t\t\t\t// nodes that are no longer in the document #6963\n\t\t\t\treturn m && m.parentNode ? [ m ] : [];\n\t\t\t}\n\t\t};\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" && elem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See http://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( div ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !div.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+\n\t\t\tif ( !div.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = doc.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tdiv.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( div.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !div.querySelectorAll(\":enabled\").length ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tdiv.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( div ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( div, \"div\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( div, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully does not implement inclusive descendent\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === doc ? -1 :\n\t\t\t\tb === doc ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn doc;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, diff, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || (parent[ expando ] = {});\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[0] === dirruns && cache[1];\n\t\t\t\t\t\t\tdiff = cache[0] === dirruns && cache[2];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {\n\t\t\t\t\t\t\tdiff = cache[1];\n\n\t\t\t\t\t\t// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\tif ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {\n\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tcheckNonElements = base && dir === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\t\t\t\t\t\tif ( (oldCache = outerCache[ dir ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ dir ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context !== document && context;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Keep `i` a string if there are no elements so `matchedCount` will be \"00\" below\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\tmatchedCount += i;\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is no seed and only one group\n\tif ( match.length === 1 ) {\n\n\t\t// Take a shortcut and set the context if the root selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\trsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( div ) {\n\treturn div.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\njQuery.expr[\":\"] = jQuery.expr.pseudos;\njQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\n\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = (/^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/);\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t});\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t});\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) >= 0 ) !== not;\n\t});\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t}));\n};\n\njQuery.fn.extend({\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter(function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}) );\n\t\t}\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], false) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow(this, selector || [], true) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n});\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]*))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[0] === \"<\" && selector[ selector.length - 1 ] === \">\" && selector.length >= 3 ) {\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && (match[1] || !context) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[1] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[0] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[1],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( jQuery.isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[2] );\n\n\t\t\t\t\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[0] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis.context = this[0] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( jQuery.isFunction( selector ) ) {\n\t\t\treturn typeof rootjQuery.ready !== \"undefined\" ?\n\t\t\t\trootjQuery.ready( selector ) :\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.extend({\n\tdir: function( elem, dir, until ) {\n\t\tvar matched = [],\n\t\t\ttruncate = until !== undefined;\n\n\t\twhile ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tmatched.push( elem );\n\t\t\t}\n\t\t}\n\t\treturn matched;\n\t},\n\n\tsibling: function( n, elem ) {\n\t\tvar matched = [];\n\n\t\tfor ( ; n; n = n.nextSibling ) {\n\t\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\t\tmatched.push( n );\n\t\t\t}\n\t\t}\n\n\t\treturn matched;\n\t}\n});\n\njQuery.fn.extend({\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter(function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[i] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && (pos ?\n\t\t\t\t\tpos.index(cur) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector(cur, selectors)) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.unique(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter(selector)\n\t\t);\n\t}\n});\n\nfunction sibling( cur, dir ) {\n\twhile ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each({\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn jQuery.dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn jQuery.dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn jQuery.sibling( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\treturn elem.contentDocument || jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.unique( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n});\nvar rnotwhite = (/\\S+/g);\n\n\n\n// String to Object options format cache\nvar optionsCache = {};\n\n// Convert String-formatted options into Object-formatted ones and store in cache\nfunction createOptions( options ) {\n\tvar object = optionsCache[ options ] = {};\n\tjQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t});\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\t( optionsCache[ options ] || createOptions( options ) ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Last fire value (for non-forgettable lists)\n\t\tmemory,\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\t\t// Flag to know if list is currently firing\n\t\tfiring,\n\t\t// First callback to fire (used internally by add and fireWith)\n\t\tfiringStart,\n\t\t// End of the loop when firing\n\t\tfiringLength,\n\t\t// Index of currently firing callback (modified by remove if needed)\n\t\tfiringIndex,\n\t\t// Actual callback list\n\t\tlist = [],\n\t\t// Stack of fire calls for repeatable lists\n\t\tstack = !options.once && [],\n\t\t// Fire callbacks\n\t\tfire = function( data ) {\n\t\t\tmemory = options.memory && data;\n\t\t\tfired = true;\n\t\t\tfiringIndex = firingStart || 0;\n\t\t\tfiringStart = 0;\n\t\t\tfiringLength = list.length;\n\t\t\tfiring = true;\n\t\t\tfor ( ; list && firingIndex < firingLength; firingIndex++ ) {\n\t\t\t\tif ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {\n\t\t\t\t\tmemory = false; // To prevent further calls using add\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfiring = false;\n\t\t\tif ( list ) {\n\t\t\t\tif ( stack ) {\n\t\t\t\t\tif ( stack.length ) {\n\t\t\t\t\t\tfire( stack.shift() );\n\t\t\t\t\t}\n\t\t\t\t} else if ( memory ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t} else {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// Actual Callbacks object\n\t\tself = {\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\t// First, we save the current length\n\t\t\t\t\tvar start = list.length;\n\t\t\t\t\t(function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tvar type = jQuery.type( arg );\n\t\t\t\t\t\t\tif ( type === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && type !== \"string\" ) {\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t})( arguments );\n\t\t\t\t\t// Do we need to add the callbacks to the\n\t\t\t\t\t// current firing batch?\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tfiringLength = list.length;\n\t\t\t\t\t// With memory, if we're not firing then\n\t\t\t\t\t// we should call right away\n\t\t\t\t\t} else if ( memory ) {\n\t\t\t\t\t\tfiringStart = start;\n\t\t\t\t\t\tfire( memory );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\t\tvar index;\n\t\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\t\tlist.splice( index, 1 );\n\t\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\t\t\tif ( index <= firingLength ) {\n\t\t\t\t\t\t\t\t\tfiringLength--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );\n\t\t\t},\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tlist = [];\n\t\t\t\tfiringLength = 0;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Have the list do nothing anymore\n\t\t\tdisable: function() {\n\t\t\t\tlist = stack = memory = undefined;\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it disabled?\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\t\t\t// Lock the list in its current state\n\t\t\tlock: function() {\n\t\t\t\tstack = undefined;\n\t\t\t\tif ( !memory ) {\n\t\t\t\t\tself.disable();\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Is it locked?\n\t\t\tlocked: function() {\n\t\t\t\treturn !stack;\n\t\t\t},\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( list && ( !fired || stack ) ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tif ( firing ) {\n\t\t\t\t\t\tstack.push( args );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfire( args );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\njQuery.extend({\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks(\"once memory\"), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks(\"once memory\"), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks(\"memory\") ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred(function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\n\t\t\t\t\t\t\tdeferred[ tuple[1] ](function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && jQuery.isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject )\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t}).promise();\n\t\t\t\t},\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = list.add\n\t\t\tpromise[ tuple[1] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(function() {\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[0] ] = function() {\n\t\t\t\tdeferred[ tuple[0] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\t\t\tdeferred[ tuple[0] + \"With\" ] = list.fireWith;\n\t\t});\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred. If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject )\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n});\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\n\n\treturn this;\n};\n\njQuery.extend({\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n});\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed, false );\n\twindow.removeEventListener( \"load\", completed, false );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called after the browser event has already occurred.\n\t\t// We once tried to use readyState \"interactive\" here, but it caused issues like the one\n\t\t// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15\n\t\tif ( document.readyState === \"complete\" ) {\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\tsetTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed, false );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed, false );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( jQuery.type( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\tjQuery.access( elems, fn, i, key[i], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !jQuery.isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );\n\t\t\t}\n\t\t}\n\t}\n\n\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[0], key ) : emptyGet;\n};\n\n\n/**\n * Determines whether an object can have data\n */\njQuery.acceptData = function( owner ) {\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\t/* jshint -W018 */\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\nfunction Data() {\n\t// Support: Android<4,\n\t// Old WebKit does not have Object.preventExtensions/freeze method,\n\t// return new empty object instead with no [[set]] accessor\n\tObject.defineProperty( this.cache = {}, 0, {\n\t\tget: function() {\n\t\t\treturn {};\n\t\t}\n\t});\n\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\nData.accepts = jQuery.acceptData;\n\nData.prototype = {\n\tkey: function( owner ) {\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return the key for a frozen object.\n\t\tif ( !Data.accepts( owner ) ) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar descriptor = {},\n\t\t\t// Check if the owner object already has a cache key\n\t\t\tunlock = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !unlock ) {\n\t\t\tunlock = Data.uid++;\n\n\t\t\t// Secure it in a non-enumerable, non-writable property\n\t\t\ttry {\n\t\t\t\tdescriptor[ this.expando ] = { value: unlock };\n\t\t\t\tObject.defineProperties( owner, descriptor );\n\n\t\t\t// Support: Android<4\n\t\t\t// Fallback to a less secure definition\n\t\t\t} catch ( e ) {\n\t\t\t\tdescriptor[ this.expando ] = unlock;\n\t\t\t\tjQuery.extend( owner, descriptor );\n\t\t\t}\n\t\t}\n\n\t\t// Ensure the cache object\n\t\tif ( !this.cache[ unlock ] ) {\n\t\t\tthis.cache[ unlock ] = {};\n\t\t}\n\n\t\treturn unlock;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\t// There may be an unlock assigned to this node,\n\t\t\t// if there is no entry for this \"owner\", create one inline\n\t\t\t// and set the unlock as though an owner entry had always existed\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\t// Handle: [ owner, key, value ] args\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ data ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\t\t\t// Fresh assignments by object are shallow copied\n\t\t\tif ( jQuery.isEmptyObject( cache ) ) {\n\t\t\t\tjQuery.extend( this.cache[ unlock ], data );\n\t\t\t// Otherwise, copy the properties one-by-one to the cache object\n\t\t\t} else {\n\t\t\t\tfor ( prop in data ) {\n\t\t\t\t\tcache[ prop ] = data[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\t// Either a valid cache is found, or will be created.\n\t\t// New caches will be created and the unlock returned,\n\t\t// allowing direct access to the newly created\n\t\t// empty data object. A valid owner object must be provided.\n\t\tvar cache = this.cache[ this.key( owner ) ];\n\n\t\treturn key === undefined ?\n\t\t\tcache : cache[ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t((key && typeof key === \"string\") && value === undefined) ) {\n\n\t\t\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase(key) );\n\t\t}\n\n\t\t// [*]When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i, name, camel,\n\t\t\tunlock = this.key( owner ),\n\t\t\tcache = this.cache[ unlock ];\n\n\t\tif ( key === undefined ) {\n\t\t\tthis.cache[ unlock ] = {};\n\n\t\t} else {\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ i ] ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\treturn !jQuery.isEmptyObject(\n\t\t\tthis.cache[ owner[ this.expando ] ] || {}\n\t\t);\n\t},\n\tdiscard: function( owner ) {\n\t\tif ( owner[ this.expando ] ) {\n\t\t\tdelete this.cache[ owner[ this.expando ] ];\n\t\t}\n\t}\n};\nvar data_priv = new Data();\n\nvar data_user = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /([A-Z])/g;\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$1\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\n\t\t\t} catch( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdata_user.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend({\n\thasData: function( elem ) {\n\t\treturn data_user.hasData( elem ) || data_priv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn data_user.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdata_user.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to data_priv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn data_priv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdata_priv.remove( elem, name );\n\t}\n});\n\njQuery.fn.extend({\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = data_user.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !data_priv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE11+\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = jQuery.camelCase( name.slice(5) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdata_priv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each(function() {\n\t\t\t\tdata_user.set( this, key );\n\t\t\t});\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data,\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key as-is\n\t\t\t\tdata = data_user.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = data_user.get( elem, camelKey );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, camelKey, undefined );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each(function() {\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = data_user.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdata_user.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf(\"-\") !== -1 && data !== undefined ) {\n\t\t\t\t\tdata_user.set( this, key, value );\n\t\t\t\t}\n\t\t\t});\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each(function() {\n\t\t\tdata_user.remove( this, key );\n\t\t});\n\t}\n});\n\n\njQuery.extend({\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = data_priv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || jQuery.isArray( data ) ) {\n\t\t\t\t\tqueue = data_priv.access( elem, type, jQuery.makeArray(data) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn data_priv.get( elem, key ) || data_priv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks(\"once memory\").add(function() {\n\t\t\t\tdata_priv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t})\n\t\t});\n\t}\n});\n\njQuery.fn.extend({\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[0], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each(function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[0] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t});\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t});\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = data_priv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n});\nvar pnum = (/[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/).source;\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar isHidden = function( elem, el ) {\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" || !jQuery.contains( elem.ownerDocument, elem );\n\t};\n\nvar rcheckableType = (/^(?:checkbox|radio)$/i);\n\n\n\n(function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Safari<=5.1\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Safari<=5.1, Android<4.2\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE<=11+\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n})();\nvar strundefined = typeof undefined;\n\n\n\nsupport.focusinBubbles = \"onfocusin\" in window;\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,\n\trfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)$/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !(events = elemData.events) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !(eventHandle = elemData.handle) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend({\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join(\".\")\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !(handlers = events[ type ]) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle, false );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = data_priv.hasData( elem ) && data_priv.get( elem );\n\n\t\tif ( !elemData || !(events = elemData.events) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnotwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[t] ) || [];\n\t\t\ttype = origType = tmp[1];\n\t\t\tnamespaces = ( tmp[2] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[2] && new RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector || selector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdelete elemData.handle;\n\t\t\tdata_priv.remove( elem, \"events\" );\n\t\t}\n\t},\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split(\".\") : [];\n\n\t\tcur = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf(\".\") >= 0 ) {\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split(\".\");\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf(\":\") < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join(\".\");\n\t\tevent.namespace_re = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === (elem.ownerDocument || document) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {\n\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( data_priv.get( cur, \"events\" ) || {} )[ event.type ] && data_priv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && jQuery.acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&\n\t\t\t\tjQuery.acceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\t\t\t\t\telem[ type ]();\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\tdispatch: function( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\n\t\t\thandlers = ( data_priv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[0] = event;\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )\n\t\t\t\t\t\t\t.apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( (event.result = ret) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t// Avoid non-left-click bubbling in Firefox (#3861)\n\t\tif ( delegateCount && cur.nodeType && (!event.button || event.type !== \"click\") ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.disabled !== true || event.type !== \"click\" ) {\n\t\t\t\t\tmatches = [];\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) >= 0 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push({ elem: cur, handlers: matches });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: \"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which\".split(\" \"),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: \"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement\".split(\" \"),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\n\t},\n\n\tspecial: {\n\t\tload: {\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tfocus: {\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tsimulate: function( type, elem, event, bubble ) {\n\t\t// Piggyback on a donor event to simulate a different one.\n\t\t// Fake originalEvent to avoid donor's stopPropagation, but if the\n\t\t// simulated event prevents default then we do the same on the donor.\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true,\n\t\t\t\toriginalEvent: {}\n\t\t\t}\n\t\t);\n\t\tif ( bubble ) {\n\t\t\tjQuery.event.trigger( e, null, elem );\n\t\t} else {\n\t\t\tjQuery.event.dispatch.call( elem, e );\n\t\t}\n\t\tif ( e.isDefaultPrevented() ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n};\n\njQuery.removeEvent = function( elem, type, handle ) {\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle, false );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\t// Allow instantiation without the 'new' keyword\n\tif ( !(this instanceof jQuery.Event) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\t\t\t\t// Support: Android<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || jQuery.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && e.preventDefault ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopPropagation ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && e.stopImmediatePropagation ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// Support: Chrome 15+\njQuery.each({\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mousenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || (related !== target && !jQuery.contains( target, related )) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n});\n\n// Support: Firefox, Chrome, Safari\n// Create \"bubbling\" focus and blur events\nif ( !support.focusinBubbles ) {\n\tjQuery.each({ focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );\n\t\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdata_priv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = data_priv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdata_priv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdata_priv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t});\n}\n\njQuery.fn.extend({\n\n\ton: function( types, selector, data, fn, /*INTERNAL*/ one ) {\n\t\tvar origFn, type;\n\n\t\t// Types can be a map of types/handlers\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-Object, selector, data )\n\t\t\tif ( typeof selector !== \"string\" ) {\n\t\t\t\t// ( types-Object, data )\n\t\t\t\tdata = data || selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.on( type, selector, data, types[ type ], one );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( data == null && fn == null ) {\n\t\t\t// ( types, fn )\n\t\t\tfn = selector;\n\t\t\tdata = selector = undefined;\n\t\t} else if ( fn == null ) {\n\t\t\tif ( typeof selector === \"string\" ) {\n\t\t\t\t// ( types, selector, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = undefined;\n\t\t\t} else {\n\t\t\t\t// ( types, data, fn )\n\t\t\t\tfn = data;\n\t\t\t\tdata = selector;\n\t\t\t\tselector = undefined;\n\t\t\t}\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t} else if ( !fn ) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif ( one === 1 ) {\n\t\t\torigFn = fn;\n\t\t\tfn = function( event ) {\n\t\t\t\t// Can use an empty set, since event contains the info\n\t\t\t\tjQuery().off( event );\n\t\t\t\treturn origFn.apply( this, arguments );\n\t\t\t};\n\t\t\t// Use same guid so caller can remove using origFn\n\t\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.add( this, types, fn, data, selector );\n\t\t});\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn this.on( types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ? handleObj.origType + \".\" + handleObj.namespace : handleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t});\n\t},\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each(function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t});\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[0];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n});\n\n\nvar\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/gi,\n\trtagName = /<([\\w:]+)/,\n\trhtml = /<|&#?\\w+;/,\n\trnoInnerhtml = /<(?:script|style|link)/i,\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trscriptType = /^$|\\/(?:java|ecma)script/i,\n\trscriptTypeMasked = /^true\\/(.*)/,\n\trcleanScript = /^\\s*\\s*$/g,\n\n\t// We have to close these tags to support XHTML (#13200)\n\twrapMap = {\n\n\t\t// Support: IE9\n\t\toption: [ 1, \"\" ],\n\n\t\tthead: [ 1, \"\", \"
\" ],\n\t\tcol: [ 2, \"\", \"
\" ],\n\t\ttr: [ 2, \"\", \"
\" ],\n\t\ttd: [ 3, \"\", \"
\" ],\n\n\t\t_default: [ 0, \"\", \"\" ]\n\t};\n\n// Support: IE9\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: 1.x compatibility\n// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName(\"tbody\")[0] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement(\"tbody\") ) :\n\t\telem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = (elem.getAttribute(\"type\") !== null) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\n\t} else {\n\t\telem.removeAttribute(\"type\");\n\t}\n\n\treturn elem;\n}\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdata_priv.set(\n\t\t\telems[ i ], \"globalEval\", !refElements || data_priv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( data_priv.hasData( src ) ) {\n\t\tpdataOld = data_priv.access( src );\n\t\tpdataCur = data_priv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( data_user.hasData( src ) ) {\n\t\tudataOld = data_user.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdata_user.set( dest, udataCur );\n\t}\n}\n\nfunction getAll( context, tag ) {\n\tvar ret = context.getElementsByTagName ? context.getElementsByTagName( tag || \"*\" ) :\n\t\t\tcontext.querySelectorAll ? context.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\njQuery.extend({\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tbuildFragment: function( elems, context, scripts, selection ) {\n\t\tvar elem, tmp, tag, wrap, contains, j,\n\t\t\tfragment = context.createDocumentFragment(),\n\t\t\tnodes = [],\n\t\t\ti = 0,\n\t\t\tl = elems.length;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\telem = elems[ i ];\n\n\t\t\tif ( elem || elem === 0 ) {\n\n\t\t\t\t// Add nodes directly\n\t\t\t\tif ( jQuery.type( elem ) === \"object\" ) {\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t\t// Convert non-html into a text node\n\t\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t\t// Convert html into DOM nodes\n\t\t\t\t} else {\n\t\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement(\"div\") );\n\n\t\t\t\t\t// Deserialize a standard representation\n\t\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\t\ttmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, \"<$1>\" ) + wrap[ 2 ];\n\n\t\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\t\tj = wrap[ 0 ];\n\t\t\t\t\twhile ( j-- ) {\n\t\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: QtWebKit, PhantomJS\n\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t\t// Remember the top-level container\n\t\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\t\ttmp.textContent = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Remove wrapper from fragment\n\t\tfragment.textContent = \"\";\n\n\t\ti = 0;\n\t\twhile ( (elem = nodes[ i++ ]) ) {\n\n\t\t\t// #4087 - If origin and destination elements are the same, and this is\n\t\t\t// that element, do not do anything\n\t\t\tif ( selection && jQuery.inArray( elem, selection ) !== -1 ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\n\n\t\t\t// Append to fragment\n\t\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t\t// Preserve script evaluation history\n\t\t\tif ( contains ) {\n\t\t\t\tsetGlobalEval( tmp );\n\t\t\t}\n\n\t\t\t// Capture executables\n\t\t\tif ( scripts ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (elem = tmp[ j++ ]) ) {\n\t\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\t\tscripts.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn fragment;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type, key,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[ i ]) !== undefined; i++ ) {\n\t\t\tif ( jQuery.acceptData( elem ) ) {\n\t\t\t\tkey = elem[ data_priv.expando ];\n\n\t\t\t\tif ( key && (data = data_priv.cache[ key ]) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( data_priv.cache[ key ] ) {\n\t\t\t\t\t\t// Discard any remaining `private` data\n\t\t\t\t\t\tdelete data_priv.cache[ key ];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Discard any remaining `user` data\n\t\t\tdelete data_user.cache[ elem[ data_user.expando ] ];\n\t\t}\n\t}\n});\n\njQuery.fn.extend({\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each(function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t});\n\t},\n\n\tprepend: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t});\n\t},\n\n\tbefore: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t});\n\t},\n\n\tafter: function() {\n\t\treturn this.domManip( arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t});\n\t},\n\n\tremove: function( selector, keepData /* Internal Use Only */ ) {\n\t\tvar elem,\n\t\t\telems = selector ? jQuery.filter( selector, this ) : this,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = elems[i]) != null; i++ ) {\n\t\t\tif ( !keepData && elem.nodeType === 1 ) {\n\t\t\t\tjQuery.cleanData( getAll( elem ) );\n\t\t\t}\n\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\tif ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {\n\t\t\t\t\tsetGlobalEval( getAll( elem, \"script\" ) );\n\t\t\t\t}\n\t\t\t\telem.parentNode.removeChild( elem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; (elem = this[i]) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map(function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t});\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = value.replace( rxhtmlTag, \"<$1>\" );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar arg = arguments[ 0 ];\n\n\t\t// Make the changes, replacing each context element with the new content\n\t\tthis.domManip( arguments, function( elem ) {\n\t\t\targ = this.parentNode;\n\n\t\t\tjQuery.cleanData( getAll( this ) );\n\n\t\t\tif ( arg ) {\n\t\t\t\targ.replaceChild( elem, this );\n\t\t\t}\n\t\t});\n\n\t\t// Force removal if there was no new content (e.g., from empty arguments)\n\t\treturn arg && (arg.length || arg.nodeType) ? this : this.remove();\n\t},\n\n\tdetach: function( selector ) {\n\t\treturn this.remove( selector, true );\n\t},\n\n\tdomManip: function( args, callback ) {\n\n\t\t// Flatten any nested arrays\n\t\targs = concat.apply( [], args );\n\n\t\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tset = this,\n\t\t\tiNoClone = l - 1,\n\t\t\tvalue = args[ 0 ],\n\t\t\tisFunction = jQuery.isFunction( value );\n\n\t\t// We can't cloneNode fragments that contain checked, in WebKit\n\t\tif ( isFunction ||\n\t\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\t\treturn this.each(function( index ) {\n\t\t\t\tvar self = set.eq( index );\n\t\t\t\tif ( isFunction ) {\n\t\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t\t}\n\t\t\t\tself.domManip( args, callback );\n\t\t\t});\n\t\t}\n\n\t\tif ( l ) {\n\t\t\tfragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );\n\t\t\tfirst = fragment.firstChild;\n\n\t\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\t\tfragment = first;\n\t\t\t}\n\n\t\t\tif ( first ) {\n\t\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\t\thasScripts = scripts.length;\n\n\t\t\t\t// Use the original fragment for the last item instead of the first because it can end up\n\t\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\tnode = fragment;\n\n\t\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\t\t\t// Support: QtWebKit\n\t\t\t\t\t\t\t// jQuery.merge because push.apply(_, arraylike) throws\n\t\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback.call( this[ i ], node, i );\n\t\t\t\t}\n\n\t\t\t\tif ( hasScripts ) {\n\t\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t\t// Reenable scripts\n\t\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t\t!data_priv.access( node, \"globalEval\" ) && jQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\t\tif ( node.src ) {\n\t\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\n\t\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t}\n});\n\njQuery.each({\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n});\n\n\nvar iframe,\n\telemdisplay = {};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar style,\n\t\telem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\t// getDefaultComputedStyle might be reliably used only on attached element\n\t\tdisplay = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?\n\n\t\t\t// Use of this method is a temporary fix (more like optimization) until something better comes along,\n\t\t\t// since it was removed from specification and supported only in FF\n\t\t\tstyle.display : jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = (iframe || jQuery( \"