' ),
+ $img_el = $link.children( 'div' ),
+ img_url_tpl = `url(file://${image_file})`;
+
+ $link.addClass( 'bg clearfix' ).attr( 'data-img', img_url_tpl );
+
+ if ( image_file === this.current_background || image_file === old_bg_tpl ) {
+ var is_random = _util.cache_get( 'background_manager', 'random_background' );
+ if ('true' !== is_random ) {
+ $link.addClass( 'active' );
+ } else if ( 'true' === is_random ) {
+ $('[data-img="random"]').addClass('active');
+ }
+ }
+
+ $img_el.css( 'background-image', img_url_tpl );
+
+ $link.appendTo( $( '.bgs' ) ).click( this.background_selected_handler );
+ }
+
+ if ( ! $('.bg.active').length ) {
+ $('[data-img="random"]').addClass('active');
+ }
+ }
+ }
+
+
+ /**
+ * Handle background image selected event.
+ *
+ * @param event jQuery event object.
+ */
+ background_selected_handler( event ) {
+ var img = $( this ).attr( 'data-img' );
+
+ $('.bg.active').removeClass('active');
+ $(this).addClass('active');
+
+ if ( 'random' === img ) {
+ _util.cache_set( 'true', 'background_manager', 'random_background' );
+ img = _bg_self.get_random_image();
+ } else {
+ _util.cache_set( 'false', 'background_manager', 'random_background' );
+ }
+
+ _util.cache_set( img, 'background_manager', 'current_background' );
+ _bg_self.current_background = img;
+
+ _bg_self.do_background();
+
+ }
+}
+
+
+
+
+
+/**
+ * This is the theme's main class object. It contains most of the theme's logic.
+ */
+class AntergosTheme {
+
+ constructor() {
+ if ( null !== _self ) {
+ return _self;
+ }
+ _self = this;
+
+ this.tux = 'img/antergos-logo-user.png';
+ this.user_list_visible = false;
+ this.auth_pending = false;
+ this.selected_user = null;
+ this.$user_list = $( '#user-list2' );
+ this.$session_list = $( '#sessions' );
+ this.$clock_container = $( '#collapseOne' );
+ this.$clock = $( "#current_time" );
+ this.$actions_container = $( "#actionsArea" );
+ this.$msg_area_container = $( '#statusArea' );
+ this.$msg_area = $( '#showMsg' );
+
+ this.background_manager = new AntergosBackgroundManager();
+ this.background_manager.initialize();
+
+ this.initialize();
+
+ return _self;
+ }
+
+
+ /**
+ * Initialize the theme.
+ */
+ initialize() {
+ this.prepare_translations();
+ this.do_static_translations();
+ this.initialize_clock();
+ this.prepare_login_panel_header();
+ this.prepare_user_list();
+ this.prepare_session_list();
+ this.prepare_system_action_buttons();
+ this.register_callbacks();
+ this.background_manager.setup_background_thumbnails();
+ }
+
+
+ /**
+ * Register callbacks for the LDM Greeter as well as any others that haven't
+ * been registered elsewhere.
+ */
+ register_callbacks() {
+ var events = 'shown.bs.collapse, hidden.bs.collapse';
+
+ this.$user_list.parents( '.collapse' ).on( events, this.user_list_collapse_handler );
+ $( document ).keydown( this.key_press_handler );
+ $( '.cancel_auth' ).click( this.cancel_authentication );
+ $( '.submit_passwd' ).click( this.submit_password );
+ $('[data-i18n="debug_log"]').click( this.show_log_handler );
+
+ window.show_prompt = this.show_prompt;
+ window.show_message = this.show_message;
+ window.start_authentication = this.start_authentication;
+ window.cancel_authentication = this.cancel_authentication;
+ window.authentication_complete = this.authentication_complete;
+ window.autologin_timer_expired = this.cancel_authentication;
+ }
+
+ /**
+ * Initialize the user list.
+ */
+ prepare_user_list() {
+ var template;
+
+ // Loop through the array of LightDMUser objects to create our user list.
+ for ( var user of lightdm.users ) {
+ var last_session = _util.cache_get( 'user', user.name, 'session' ),
+ image_src = ( user.hasOwnProperty('image') && user.image && user.image.length ) ? user.image : _util.user_image;
+
+ if ( null === last_session ) {
+ // For backwards compatibility
+ last_session = localStorage.getItem( user.name );
+ if ( null === last_session ) {
+ // This user has never logged in before let's enable the system's default
+ // session.
+ last_session = lightdm.default_session;
+ }
+ _util.cache_set( last_session, 'user', user.name, 'session' );
+ }
+
+ _util.log( `Last session for ${user.name} was: ${last_session}` );
+
+ template = `
+
+
+ ${user.display_name}
+
+ `;
+
+ // Register event handler here so we don't have to iterate over the users again later.
+ $( template ).appendTo( this.$user_list ).click( this.start_authentication ).on( 'error.antergos', this.user_image_error_handler );
+
+ } // END for ( var user of lightdm.users )
+
+ if ( $( this.$user_list ).children().length > 3 ) {
+ // Make the user list two columns instead of one.
+ $( this.$user_list ).css( 'column-count', '2' ).parent().css( 'max-width', '85%' );
+ }
+
+ }
+
+ /**
+ * Initialize the session selection dropdown.
+ */
+ prepare_session_list() {
+ // Loop through the array of LightDMSession objects to create our session list.
+ for ( var session of lightdm.sessions ) {
+ var css_class = session.name.replace( / /g, '' ),
+ template;
+
+ _util.log( `Adding ${session.name} to the session list...` );
+
+ template = `
+
+ ${session.name}
+ `;
+
+ $( template ).appendTo( this.$session_list ).click( this.session_toggle_handler );
+
+ } // END for (var session of lightdm.sessions)
+
+ $( '.dropdown-toggle' ).dropdown();
+ }
+
+ /**
+ * Initialize the system action buttons
+ */
+ prepare_system_action_buttons() {
+ var actions = {
+ shutdown: "power-off",
+ hibernate: "asterisk",
+ suspend: "arrow-down",
+ restart: "refresh"
+ },
+ template;
+
+ for ( var action of Object.keys( actions ) ) {
+ var cmd = `can_${action}`;
+
+ template = `
+
+
+ `;
+
+ if ( lightdm[ cmd ] ) {
+ $( template ).appendTo( $( this.$actions_container ) ).click( this.system_action_handler );
+ }
+ } // END for (var [action, icon] of actions)
+
+ $( '[data-toggle=tooltip]' ).tooltip();
+ $( '.modal' ).modal( { show: false } );
+ }
+
+
+
+ /**
+ * Setup the clock widget.
+ */
+ initialize_clock() {
+ var saved_format = _util.cache_get( 'clock', 'time_format' ),
+ format = (null !== saved_format) ? saved_format : 'LT';
+
+ moment.locale( window.navigator.languages );
+ this.$clock.html( moment().format( format ) );
+
+ setInterval( () => {
+ _self.$clock.html( moment().format( format ) );
+ }, 60000 );
+ }
+
+
+ /**
+ * Show the user list if its not already shown. This is used to allow the user to
+ * display the user list by pressing Enter or Spacebar.
+ */
+ show_user_list() {
+ if ( $( this.$clock_container ).hasClass( 'in' ) ) {
+ $( '#trigger' ).trigger( 'click' );
+ }
+ if ( $( this.$user_list ).length <= 1 ) {
+ $( this.$user_list ).find( 'a' ).trigger( 'click', this );
+ }
+ }
+
+
+ prepare_login_panel_header() {
+ var greeting = (_util.translations.greeting) ? _util.translations.greeting : 'Welcome!',
+ logo = ( '' !== _util.logo ) ? _util.logo : 'img/antergos.png';
+
+ $( '.welcome' ).text( greeting );
+ $( '#hostname' ).append( lightdm.hostname );
+ $( '[data-greeter-config="logo"]' ).attr( 'src', logo );
+ }
+
+
+ prepare_translations() {
+ if ( ! _util.translations.hasOwnProperty( this.lang ) ) {
+ for ( var lang of window.navigator.languages ) {
+ if ( _util.translations.hasOwnProperty( lang ) ) {
+ this.lang = lang;
+ break;
+ }
+ }
+ }
+ if ( ! _util.translations.hasOwnProperty( this.lang ) ) {
+ this.lang = 'en';
+ }
+
+ _util.translations = _util.translations[ this.lang ];
+ }
+
+
+ /**
+ * Replace '${i18n}' with translated string for all elements that
+ * have the data-i18n attribute. This is for elements that are not generated
+ * dynamically (they can be found in index.html).
+ */
+ do_static_translations() {
+ $( '[data-i18n]' ).each( function() {
+ var key = $( this ).attr( 'data-i18n' ),
+ html = $( this ).html(),
+ translated = _util.translations[ key ],
+ new_html = html.replace( '${i18n}', translated );
+
+ $( this ).html( new_html );
+ } );
+ }
+
+
+ /**
+ * Start the authentication process for the selected user.
+ *
+ * @param {object} event - jQuery.Event object from 'click' event.
+ */
+ start_authentication( event ) {
+ var user_id = $( this ).attr( 'id' ),
+ selector = `.${user_id}`,
+ user_session = _util.cache_get( 'user', user_id, 'session' );
+
+ if ( _self.auth_pending || null !== _self.selected_user ) {
+ lightdm.cancel_authentication();
+ _util.log( `Authentication cancelled for ${_self.selected_user}` );
+ _self.selected_user = null;
+ }
+
+ _util.log( `Starting authentication for ${user_id}.` );
+ _self.selected_user = user_id;
+
+ // CSS hack to workaround webkit bug
+ if ( $( _self.$user_list ).children().length > 3 ) {
+ $( _self.$user_list ).css( 'column-count', 'initial' ).parent().css( 'max-width', '50%' );
+ }
+ $( selector ).addClass( 'hovered' ).siblings().hide();
+ $( '.fa-toggle-down' ).hide();
+
+ _util.log( `Session for ${user_id} is ${user_session}` );
+
+ $( `[data-session-id="${user_session}"]` ).parent().trigger( 'click', this );
+
+ $( '#session-list' ).removeClass( 'hidden' ).show();
+ $( '#passwordArea' ).show();
+ $( '.dropdown-toggle' ).dropdown();
+
+ _self.auth_pending = true;
+
+ lightdm.authenticate( user_id );
+ }
+
+
+ /**
+ * Cancel the pending authentication.
+ *
+ * @param {object} event - jQuery.Event object from 'click' event.
+ */
+ cancel_authentication( event ) {
+ var selectors = [ '#statusArea', '#timerArea', '#passwordArea', '#session-list' ];
+
+ for ( var selector of selectors ) {
+ $( selector ).hide();
+ }
+
+ lightdm.cancel_authentication();
+
+ _util.log( 'Cancelled authentication.' );
+
+ // CSS hack to work-around webkit bug
+ if ( $( _self.$user_list ).children().length > 3 ) {
+ $( _self.$user_list ).css( 'column-count', '2' ).parent().css( 'max-width', '85%' );
+ }
+
+ $( '.hovered' ).removeClass( 'hovered' ).siblings().show();
+ $( '.fa-toggle-down' ).show();
+
+ _self.selected_user = null;
+ _self.auth_pending = false;
+
+ }
+
+
+ /**
+ * Called when the user attempts to authenticate (submits password).
+ * We check to see if the user successfully authenticated and if so tell the LDM
+ * Greeter to log them in with the session they selected.
+ */
+ authentication_complete() {
+ var selected_session = $( '.selected' ).attr( 'data-session-id' ),
+ err_msg = _util.translations.auth_failed[ _self.lang ];
+
+ _self.auth_pending = false;
+ _util.cache_set( selected_session, 'user', lightdm.authentication_user, 'session' );
+
+ $( '#timerArea' ).hide();
+
+ if ( lightdm.is_authenticated ) {
+ // The user entered the correct password. Let's log them in.
+ $( 'body' ).fadeOut( 1000, () => {
+ lightdm.login( lightdm.authentication_user, selected_session );
+ } );
+ } else {
+ // The user did not enter the correct password. Show error message.
+ $('#showMsg').text(err_msg);
+ $( '#statusArea' ).show();
+ }
+ }
+
+
+ submit_password( event ) {
+ lightdm.respond( $( '#passwordField' ).val() );
+ $( '#passwordArea' ).hide();
+ $( '#timerArea' ).show();
+ }
+
+
+ session_toggle_handler( event ) {
+ var $session = $( this ).children( 'a' ),
+ session_name = $session.text(),
+ session_key = $session.attr( 'data-session-id' );
+
+ $session.parents( '.btn-group' ).find( '.selected' ).attr( 'data-session-id', session_key ).html( session_name );
+ }
+
+
+ key_press_handler( event ) {
+ var action;
+ switch ( event.which ) {
+ case 13:
+ action = _self.auth_pending ? _self.submit_password() : ! _self.user_list_visible ? _self.show_user_list() : 0;
+ _util.log( action );
+ break;
+ case 27:
+ action = _self.auth_pending ? _self.cancel_authentication() : 0;
+ _util.log( action );
+ break;
+ case 32:
+ action = (! _self.user_list_visible && ! _self.auth_pending) ? _self.show_user_list() : 0;
+ _util.log( action );
+ break;
+ default:
+ break;
+ }
+ }
+
+
+ system_action_handler() {
+ var action = $( this ).attr( 'id' ),
+ $modal = $( '.modal' );
+
+ $modal.find( '.btn-primary' ).text( _util.translations[ action ] ).click( action, ( event ) => {
+ $( this ).off( 'click' );
+ lightdm[ event.data ]();
+ } );
+ $modal.find( '.btn-default' ).click( () => {
+ $( this ).next().off( 'click' );
+ } );
+
+ $modal.modal( 'toggle' );
+ }
+
+
+ user_list_collapse_handler() {
+ _self.user_list_visible = _self.$user_list.hasClass( 'in' ) ? true : false;
+ }
+
+
+ user_image_error_handler( event ) {
+ $( this ).off( 'error.antergos' );
+ $( this ).attr( 'src', _self.tux );
+ }
+
+
+ show_log_handler( event ) {
+ if ( _util.$log_container.is( ':visible' ) ) {
+ _util.$log_container.hide();
+ } else {
+ _util.$log_container.show();
+ }
+ }
+
+
+ /**
+ * LightDM Callback - Show prompt to user.
+ *
+ * @param text
+ * @param type
+ */
+ show_prompt( text, type ) {
+ if ( 'password' === type ) {
+ $( '#passwordField' ).val( "" );
+ $( '#passwordArea' ).show();
+ $( '#passwordField' ).focus();
+ }
+ }
+
+ /**
+ * LightDM Callback - Show message to user.
+ *
+ * @param text
+ * @param type
+ */
+ show_message( text, type ) {
+ if ( text.length > 0 ) {
+ $( this.$msg_area ).html( text );
+ $( '#passwordArea' ).hide();
+ $( this.$msg_area_container ).show();
+ }
+ }
+}
+
+
+/**
+ * Initialize the theme once the window has loaded.
+ */
+$( window ).load( () => {
+ new AntergosThemeUtils();
+ new AntergosTheme();
+} );
+
diff --git a/themes/antergos/js/translations.js b/themes/antergos/js/translations.js
new file mode 100644
index 0000000..4b40a2b
--- /dev/null
+++ b/themes/antergos/js/translations.js
@@ -0,0 +1 @@
+window.ant_translations = {"af":{"auth_failed":"Uh Oh! Verifikasie misluk. Probeer asseblief weer.","background_options":"agtergrond Options","cancel":"kanselleer","confirm_system_action":"Is jy seker?","debug_log":"debug Meld","greeting":"Welkom!","hibernate":"hiberneer","random":"Random","reset":"herstel","restart":"Begin oor","shutdown":"Sit af","suspend":"opskort"},"ar":{"auth_failed":".ﻯﺮﺧﺍ ﺓﺮﻣ ﻝﻭﺎﺣ .ﺔﻗﺩﺎﺼﻤﻟﺍ ﻞﺸﻓ !ﻩﻭﺍ ﻩﺍ","background_options":"ﺔﻴﻔﻠﺨﻟﺍ ﺕﺍﺭﺎﻴﺧ","cancel":"ءﺎﻐﻟﺇ","confirm_system_action":"؟ﺪﻛﺄﺘﻣ ﺖﻧﺃ ﻞﻫ","debug_log":"ﺢﻴﺤﺼﺘﻟﺍ ﻞﺠﺳ","greeting":"!ﻚﺑ أهلا","hibernate":"ﻡﺎﻧ","random":"ﻲﺋﺍﻮﺸﻋ","reset":"ﻦﻴﻴﻌﺗ ﺓﺩﺎﻋﺇ","restart":"ءﺪﺑ ﺓﺩﺎﻋﺇ","shutdown":"ﻖﻠﻏﺍ","suspend":"ﻖﻴﻠﻌﺗ"},"az":{"auth_failed":"Oh Uh! Authentication bilmədi. Zəhmət olmasa bir daha cəhd edin.","background_options":"Ümumi Seçimlər","cancel":"ləğv etmək","confirm_system_action":"Sən əminsən?","debug_log":"debug Giriş","greeting":"Xoş gəlmisiniz!","hibernate":"qışlamaq","random":"təsadüfi","reset":"Reset","restart":"Yenidən başlamaq","shutdown":"Söndür","suspend":"dayandırmaq"},"be":{"auth_failed":"Uh Oh! Памылка аўтэнтыфікацыі. Калі ласка, паспрабуйце яшчэ раз.","background_options":"фонавыя Опцыі","cancel":"адмяніць","confirm_system_action":"Вы ўпэўненыя?","debug_log":"часопіс адладкі","greeting":"Сардэчна запрашаем!","hibernate":"зімаваць","random":"выпадковы","reset":"скід","restart":"Перазапуск","shutdown":"выключэнне","suspend":"прыпыніць"},"bg":{"auth_failed":"Uh Oh! Неуспешна идентификация. Моля, опитайте отново.","background_options":"Опции Предистория","cancel":"Отказ","confirm_system_action":"Сигурен ли си?","debug_log":"Debug Log","greeting":"Добре дошла!","hibernate":"спя зимен сън","random":"произволен","reset":"Нулиране","restart":"Рестарт","shutdown":"Изключвам","suspend":"Задържане"},"ca":{"auth_failed":"Uh! Oh! Autenticació fallida. Si us plau, torneu-ho a provar.","background_options":"Opcions del fons","cancel":"Cancel·la","confirm_system_action":"N'esteu segur?","debug_log":"Registre de depuració","greeting":"Benvinguts!","hibernate":"Hiberna","random":"Aleatori","reset":"Restableix","restart":"Reinicia","shutdown":"Atura","suspend":"Suspèn"},"cs":{"auth_failed":"Uh Oh! Ověření se nezdařilo. Prosím zkuste to znovu.","background_options":"Volby Pozadí","cancel":"Zrušit","confirm_system_action":"Jsi si jistý?","debug_log":"Debug Log","greeting":"Vítejte!","hibernate":"Hibernace","random":"Náhodný","reset":"Obnovit","restart":"Restart","shutdown":"Vypnout","suspend":"Pozastavit"},"da":{"auth_failed":"Uh Oh! Godkendelse mislykkedes. Prøv igen.","background_options":"baggrund Valgmuligheder","cancel":"Ophæve","confirm_system_action":"Er du sikker?","debug_log":"debug Log","greeting":"Velkomst!","hibernate":"dvale","random":"Tilfældig","reset":"Nulstil","restart":"Genstart","shutdown":"Lukke ned","suspend":"Suspendere"},"de":{"auth_failed":"Die Authentifizierung ist fehlgeschlagen. Bitte erneut probieren.","background_options":"Hintergrund Optionen","cancel":"Abbrechen","confirm_system_action":"Sind Sie sich sicher?","debug_log":"Debug Log","greeting":"Willkommen!","hibernate":"Ruhezustand","random":"Zufällig","reset":"Reset","restart":"Neustart","shutdown":"Herunterfahren","suspend":"Bereitschaftsbetrieb"},"el":{"auth_failed":"Ωχ Ωχ! Ο έλεγχος ταυτότητας απέτυχε. Παρακαλώ δοκιμάστε ξανά.","background_options":"Επιλογές φόντου","cancel":"Ακύρωση","confirm_system_action":"Είσαι σίγουρος/η;","debug_log":"Αποσφαλμάτωση Εγγραφής","greeting":"Καλώς ήρθατε!","hibernate":"Αδρανοποίηση","random":"Τυχαίο","reset":"Επαναφορά","restart":"Επανεκκίνηση","shutdown":"Τερματισμός λειτουργίας","suspend":"Αναστολή"},"en":{"auth_failed":"Uh Oh! Authentication failed. Please try again.","background_options":"Background Options","cancel":"Cancel","confirm_system_action":"Are you sure?","debug_log":"Debug Log","greeting":"Welcome!","hibernate":"Hibernate","random":"Random","reset":"Reset","restart":"Restart","shutdown":"Shutdown","suspend":"Suspend"},"eo":{"auth_failed":"Uh Oh! Aŭtentigo malsukcesis. Bonvolu reprovi.","background_options":"Fona Ebloj","cancel":"Rezignu","confirm_system_action":"Ĉu vi certas?","debug_log":"debug Ensalutu","greeting":"Bonvenon!","hibernate":"hiberna","random":"Random","reset":"Restarigi","restart":"Rekomenci","shutdown":"elŝaltita","suspend":"malakcepti"},"es":{"auth_failed":"¡Vaya! Error de autenticación. Por favor, vuelva a intentarlo.","background_options":"Opciones de fondo","cancel":"Cancelar","confirm_system_action":"¿Está seguro?","debug_log":"Registro de depuración de errores","greeting":"¡Bienvenido!","hibernate":"Hibernar","random":"Al azar","reset":"Reiniciar","restart":"Reiniciar","shutdown":"Apagar","suspend":"Suspender"},"et":{"auth_failed":"Uh Oh! Tuvastamine ebaõnnestus. Palun proovi uuesti.","background_options":"Taust valikud","cancel":"Tühista","confirm_system_action":"Oled sa kindel?","debug_log":"Debug Logi","greeting":"Tere tulemast!","hibernate":"talveund magama","random":"juhuslik","reset":"Taasta","restart":"Taaskäivita","shutdown":"Lülita välja","suspend":"peatada"},"eu":{"auth_failed":"Uh Oh! Egiaztapenak huts egin du. Mesedez, saiatu berriz.","background_options":"Aurrekariak Aukerak","cancel":"Utzi","confirm_system_action":"Zihur zaude?","debug_log":"Araztu hasi saioa","greeting":"Ongi etorri!","hibernate":"hibernatzeko","random":"Random","reset":"Berrezarri","restart":"Restart","shutdown":"Itzali","suspend":"Eseki"},"fa":{"auth_failed":".ﺪﯿﻨﮐ ﺵﻼﺗ ﻩﺭﺎﺑﻭﺩ ﺎﻔﻄﻟ .ﺖﺳﺍ ﻩﺩﺭﻮﺧ ﺖﺴﮑﺷ ﺖﯾﻮﻫ ﺯﺍﺮﺣﺍ !ﻩﻭﺍ ﻩﻭﺍ","background_options":"ﻪﻨﯿﻣﺯ ﺲﭘ ﯼﺎﻫ ﻪﻨﯾﺰﮔ","cancel":"ﻮﻐﻟ","confirm_system_action":"؟ﺪﯿﺘﺴﻫ ﻦﺌﻤﻄﻣ ﺎﻤﺷ","debug_log":"ﺩﻭﺭﻭ ﯽﯾﺍﺩﺯ ﻝﺎﮑﺷﺍ","greeting":"!ﯼﺪﻣﺁ ﺵﻮﺧ","hibernate":"ﯽﻧﺎﺘﺴﻣﺯ ﺏﺍﻮﺧ","random":"ﯽﻓﺩﺎﺼﺗ","reset":"ﺩﺪﺠﻣ ﻢﯿﻈﻨﺗ","restart":"ﺩﺪﺠﻣ ﯼﺯﺍﺪﻧﺍ ﻩﺍﺭ","shutdown":"ﻥﺩﺮﮐ ﺵﻮﻣﺎﺧ","suspend":"ﻖﯿﻠﻌﺗ"},"fi":{"auth_failed":"Voi ei! Todennus epäonnistui. Yritä uudelleen.","background_options":"tausta Valinnat","cancel":"Peruuttaa","confirm_system_action":"Oletko varma?","debug_log":"vianjäljityslokin","greeting":"Tervetuloa!","hibernate":"talvehtia","random":"satunnainen","reset":"asettaa uudelleen","restart":"Aloittaa alusta","shutdown":"Sammuttaa","suspend":"Keskeyttää"},"fr":{"auth_failed":"Uh Oh! L'authentification a échoué. S'il vous plaît essayer à nouveau.","background_options":"Options de fond","cancel":"Annuler","confirm_system_action":"Es-tu sûr?","debug_log":"journal de débogage","greeting":"Bienvenue!","hibernate":"Hiberner","random":"aléatoire","reset":"Réinitialiser","restart":"Redémarrer","shutdown":"Fermer","suspend":"Suspendre"},"gl":{"auth_failed":"Uh Oh! Fallou a autenticación. Por favor, ténteo de novo.","background_options":"opcións de fondo","cancel":"cancelar","confirm_system_action":"Estás seguro?","debug_log":"debug Log","greeting":"Benvido!","hibernate":"hibernar","random":"aleatorio","reset":"Restaurar","restart":"restart","shutdown":"shutdown","suspend":"suspender"},"gu":{"auth_failed":"ઓહો! પ્રમાણીકરણ નિષ્ફળ થયું. ફરી પ્રયત્ન કરો.","background_options":"પૃષ્ઠભૂમિ વિકલ્પો","cancel":"રદ કરો","confirm_system_action":"તમને ખાતરી છે?","debug_log":"ડીબગ લોગ","greeting":"આપનું સ્વાગત છે!","hibernate":"હાયબરનેટ","random":"રેન્ડમ","reset":"રીસેટ","restart":"પુનઃપ્રારંભ","shutdown":"બંધ કરો","suspend":"બંધ કરો"},"he":{"auth_failed":"אוי לא! האימות נכשל. נא לנסות שוב.","background_options":"אפשרויות רקע","cancel":"ביטול","confirm_system_action":"האם אתם בטוחים?","debug_log":"תיעוד Debug","greeting":"ברוכים הבאים!","hibernate":"מצב שינה","random":"אקראי","reset":"אתחול","restart":"הפעלה מחדש","shutdown":"כיבוי","suspend":"השעייה"},"hi":{"auth_failed":"उह ओह! प्रमाणीकरण विफल होना। कृपया पुन: प्रयास करें।","background_options":"पृष्ठभूमि के विकल्प","cancel":"रद्द करना","confirm_system_action":"क्या आपको यकीन है?","debug_log":"लॉग को डीबग करें","greeting":"आपका स्वागत है!","hibernate":"सीतनिद्रा में होना","random":"बिना सोचे समझे","reset":"रीसेट","restart":"पुनः आरंभ करें","shutdown":"बंद करना","suspend":"निलंबित"},"hr":{"auth_failed":"Uh oh! Provjera autentičnosti nije uspjela. Molim te pokušaj ponovno.","background_options":"Mogućnosti Pozadina","cancel":"Otkazati","confirm_system_action":"Jesi li siguran?","debug_log":"debug Prijava","greeting":"Dobrodošli!","hibernate":"hibernacija","random":"Slučajna","reset":"Poništi","restart":"Restart","shutdown":"Ugasiti","suspend":"Obustaviti"},"hu":{"auth_failed":"UH Oh! Sikertelen volt a hitelesítés. Kérlek próbáld újra.","background_options":"háttér beállításai","cancel":"Mégsem","confirm_system_action":"Biztos benne?","debug_log":"Debug Log","greeting":"Fogadtatás!","hibernate":"hibernate","random":"Véletlen","reset":"visszaállítása","restart":"Újraindítás","shutdown":"Lekapcsol","suspend":"felfüggesztheti"},"id":{"auth_failed":"Uh oh! Otentikasi gagal. Silakan coba lagi.","background_options":"latar Belakang Pilihan","cancel":"Membatalkan","confirm_system_action":"Apa kamu yakin?","debug_log":"Debug Log","greeting":"Menyambut!","hibernate":"Hibernate","random":"Acak","reset":"Atur ulang","restart":"Mengulang kembali","shutdown":"Matikan","suspend":"Menangguhkan"},"it":{"auth_failed":"Uh Oh! Autenticazione fallita. Riprova.","background_options":"Opzioni sfondo","cancel":"Cancellare","confirm_system_action":"Sei sicuro?","debug_log":"Debug Log","greeting":"Ben arrivato!","hibernate":"Ibernazione","random":"Casuale","reset":"Reset","restart":"Riavviamento","shutdown":"Spegnimento","suspend":"Sospensione"},"ja":{"auth_failed":"ええとああ! 認証に失敗しました。 もう一度やり直してください。","background_options":"壁紙のオプション","cancel":"キャンセル","confirm_system_action":"よろしいですか?","debug_log":"デバッグログ","greeting":"ようこそ!","hibernate":"ハイバネート","random":"ランダム","reset":"リセット","restart":"再起動","shutdown":"シャットダウン","suspend":"サスペンド"},"ka":{"auth_failed":"Uh Oh! იდენტიფიკაცია ვერ მოხერხდა. გთხოვთ კიდევ სცადეთ.","background_options":"Background პარამეტრები","cancel":"გაუქმება","confirm_system_action":"დარწმუნებული ხარ?","debug_log":"Debug შესვლა","greeting":"გამარჯობა!","hibernate":"hibernate","random":"შემთხვევითი","reset":"ხელახლა","restart":"გადატვირთვა","shutdown":"გათიშვა","suspend":"შეაჩეროს"},"ko":{"auth_failed":"어 오! 인증 실패. 다시 시도하십시오.","background_options":"배경 옵션","cancel":"취소","confirm_system_action":"확실합니까?","debug_log":"디버그 로그","greeting":"환영!","hibernate":"최대 절전 모드","random":"닥치는대로의","reset":"리셋","restart":"재시작","shutdown":"일시 휴업","suspend":"매달다"},"lt":{"auth_failed":"Uh Oh! Autentifikavimas nepavyko. Prašau, pabandykite dar kartą.","background_options":"Fono parinktys","cancel":"atšaukti","confirm_system_action":"Ar tu tuo tikras?","debug_log":"derinti Prisijungti","greeting":"Sveiki!","hibernate":"hibernate","random":"Atsitiktinės","reset":"Atstatyti","restart":"Perkrauti","shutdown":"Išjungti","suspend":"sustabdyti"},"mk":{"auth_failed":"Ух О! Проверката за автентичност не успеа. Ве молиме обидете се повторно.","background_options":"Опции позадина","cancel":"Откажи","confirm_system_action":"Дали си сигурен?","debug_log":"debug Логирање","greeting":"Добредојдовте!","hibernate":"хибернираат","random":"Случајна","reset":"ресетирање","restart":"Рестарт","shutdown":"Исклучи","suspend":"суспендира"},"mr":{"auth_failed":"अरे हो! प्रमाणीकरण अयशस्वी. कृपया पुन्हा प्रयत्न करा.","background_options":"पार्श्वभूमी पर्याय","cancel":"रद्द करा","confirm_system_action":"तुला खात्री आहे?","debug_log":"डीबग करा लॉग","greeting":"आपले स्वागत आहे!","hibernate":"हायबरनेट","random":"अविशिष्ट","reset":"रीसेट करा","restart":"पुन्हा सुरू करा","shutdown":"बंद करा","suspend":"सस्पेंड"},"ms":{"auth_failed":"Uh Oh! Pengesahan gagal. Sila cuba lagi.","background_options":"Pilihan Latar Belakang","cancel":"Batal","confirm_system_action":"Adakah anda pasti?","debug_log":"debug Log","greeting":"Selamat Datang!","hibernate":"hibernate","random":"Random","reset":"Set semula","restart":"Mula semula","shutdown":"Menutup","suspend":"Gantung"},"nb":{"auth_failed":"UH oh! Autentisering mislyktes. Vær så snill, prøv på nytt.","background_options":"bakgrunns alternativer","cancel":"Kansellere","confirm_system_action":"Er du sikker?","debug_log":"Debug Log","greeting":"Velkommen!","hibernate":"Hibernate","random":"Tilfeldig","reset":"Tilbakestill","restart":"Omstart","shutdown":"Skru av","suspend":"Henge"},"nl":{"auth_failed":"Uh Oh! Verificatie is mislukt. Probeer opnieuw.","background_options":"achtergrond Opties","cancel":"Annuleer","confirm_system_action":"Weet je het zeker?","debug_log":"debug Log","greeting":"Welkom!","hibernate":"overwinteren","random":"toevallig","reset":"Reset","restart":"Herstart","shutdown":"Afsluiten","suspend":"opschorten"},"pa":{"auth_failed":"ਓ uh! ਪ੍ਰਮਾਣਿਕਤਾ ਅਸਫਲ ਰਹੀ ਹੈ. ਮੁੜ ਕੋਸ਼ਿਸ ਕਰੋ ਜੀ.","background_options":"ਪਿੱਠਭੂਮੀ ਚੋਣ","cancel":"ਰੱਦ ਕਰੋ","confirm_system_action":"ਤੁਹਾਨੂੰ ਪੂਰਾ ਵਿਸ਼ਵਾਸ ਹੈ?","debug_log":"ਡੀਬੱਗ ਲਾਗ","greeting":"ਸੁਆਗਤ ਹੈ!","hibernate":"ਹਾਈਬਰਨੇਟ","random":"ਬੇਤਰਤੀਬੇ","reset":"ਰੀਸੈੱਟ","restart":"ਮੁੜ-ਚਾਲੂ","shutdown":"ਸ਼ਟ ਡਾਉਨ","suspend":"ਮੁਅੱਤਲ"},"pl":{"auth_failed":"O o! Uwierzytelnianie nie powiodło się. Proszę spróbuj ponownie.","background_options":"Opcje tła","cancel":"Anuluj","confirm_system_action":"Jesteś pewny?","debug_log":"Debug Log","greeting":"Zapraszamy!","hibernate":"Hibernować","random":"Losowy","reset":"Nastawić","restart":"restart","shutdown":"Zamknąć","suspend":"Zawieszać"},"pt":{"auth_failed":"Uh Oh! A autenticação falhou. Por favor, tente novamente.","background_options":"Opções de Fundo","cancel":"Cancelar","confirm_system_action":"Você tem certeza?","debug_log":"Registo de Depuração","greeting":"Bem-vindo!","hibernate":"Hibernar","random":"Aleatório","reset":"Repor","restart":"Reiniciar","shutdown":"Desligar","suspend":"Suspender"},"ro":{"auth_failed":"Uh Oh! Autentificare esuata. Vă rugăm să încercați din nou.","background_options":"Opțiuni de fundal","cancel":"Anula","confirm_system_action":"Esti sigur?","debug_log":"debug Log","greeting":"Bine ati venit!","hibernate":"hiberna","random":"Întâmplător","reset":"Reset","restart":"Repornire","shutdown":"Închide","suspend":"Suspenda"},"ru":{"auth_failed":"Ой! Ошибка аутентификации. Пожалуйста, попробуйте еще раз.","background_options":"Фоновые настройки","cancel":"Отмена","confirm_system_action":"Вы уверены?","debug_log":"Журнал отладки","greeting":"Добро пожаловать!","hibernate":"Гибернация","random":"Выборочно","reset":"Сброс","restart":"Перезагрузка","shutdown":"Выключить","suspend":"Приостановить"},"sk":{"auth_failed":"Ale nie! Overenie totožnosti zlyhalo. Prosím, skúste to znovu.","background_options":"Voľby pozadia","cancel":"Zrušiť","confirm_system_action":"Ste si istý?","debug_log":"Záznam ladenia","greeting":"Vitajte!","hibernate":"Hibernovať","random":"Náhodné","reset":"Obnoviť","restart":"Reštartovať","shutdown":"Vypnúť","suspend":"Uspať"},"sl":{"auth_failed":"Uh Oh! Preverjanje pristnosti ni uspelo. Prosim poskusi znova.","background_options":"Možnosti ozadja","cancel":"Prekliči","confirm_system_action":"Ali si prepričan?","debug_log":"debug Log","greeting":"Dobrodošli!","hibernate":"hibernacija","random":"random","reset":"Ponastavi","restart":"Ponovni zagon","shutdown":"Ugasniti","suspend":"odloži"},"sr":{"auth_failed":"Uh Oh! Аутхентицатион фаилед. Molim vas, pokušajte ponovo.","background_options":"Бацкгроунд Опције","cancel":"отказати","confirm_system_action":"Da li si siguran?","debug_log":"дебуг се","greeting":"Dobrodošao!","hibernate":"хибернирати","random":"случајан","reset":"Ресет","restart":"Ponovo pokreni","shutdown":"Isključi","suspend":"суспендовати"},"sv":{"auth_failed":"Hoppsan! Autentisering misslyckades. Var god försök igen.","background_options":"bakgrund Val","cancel":"Annullera","confirm_system_action":"Är du säker?","debug_log":"Debug Log","greeting":"Välkomna!","hibernate":"Övervintra","random":"Slumpmässig","reset":"Återställa","restart":"Omstart","shutdown":"Stäng ner","suspend":"Uppskjuta"},"ta":{"auth_failed":"அட டா! அங்கீகரிப்பு தோல்வியுற்றது. தயவு செய்து மீண்டும் முயற்சிக்கவும்.","background_options":"பின்னணி விருப்பங்கள்","cancel":"ரத்து","confirm_system_action":"நீ சொல்வது உறுதியா?","debug_log":"பிழைதிருத்தி உள்நுழைய","greeting":"வரவேற்கிறோம்!","hibernate":"ஓய்வு","random":"ரேண்டம்","reset":"மீட்டமை","restart":"மறுதொடக்கம்","shutdown":"பணிநிறுத்தம்","suspend":"இடைநிறுத்தம்"},"tg":{"auth_failed":"Uh Эй кош! Хатои. Лутфан, боз кӯшиш кунед.","background_options":"Имконот замина","cancel":"бекор","confirm_system_action":"Шумо мутмаъин ҳастед?","debug_log":"сознамоии English Русский","greeting":"Хуш омадед!","hibernate":"Hibernate","random":"ихтиёрӣ","reset":"Reset","restart":"Оғози дубора","shutdown":"Пӯшида шудан","suspend":"боздоштан"},"tl":{"auth_failed":"Uh Oh! Nabigo ang pagpapatotoo. Pakisubukang muli.","background_options":"Mga Pagpipilian sa Background","cancel":"kanselahin","confirm_system_action":"Sigurado ka ba?","debug_log":"Debug Log","greeting":"Maligayang pagdating!","hibernate":"pagtulog sa panahon ng taglamig","random":"Random","reset":"I-reset ang","restart":"I-restart ang","shutdown":"pagpipinid","suspend":"Suspindihin"},"tr":{"auth_failed":"Ah ah! Kimlik doğrulama başarısız oldu. Lütfen tekrar deneyin.","background_options":"Geçmiş Seçenekleri","cancel":"İptal","confirm_system_action":"Emin misiniz?","debug_log":"Debug Günlüğü","greeting":"Hoşgeldiniz!","hibernate":"kış uykusuna yatmak","random":"rasgele","reset":"Reset","restart":"Tekrar başlat","shutdown":"Kapat","suspend":"Askıya"},"uk":{"auth_failed":"Ой-ой! Помилка аутентифікації. Будь ласка спробуйте ще раз.","background_options":"фонові Опції","cancel":"Скасувати","confirm_system_action":"Ти впевнений?","debug_log":"Журнал налагодження","greeting":"Ласкаво просимо!","hibernate":"зимувати","random":"випадковий","reset":"Скидання","restart":"перезапуск","shutdown":"Закрити","suspend":"призупинити"},"vi":{"auth_failed":"Uh Oh! Quá trình xác thực đã thất bại. Vui lòng thử lại.","background_options":"Tùy chọn nền","cancel":"hủy bỏ","confirm_system_action":"Bạn có chắc không?","debug_log":"debug Log","greeting":"Chào mừng!","hibernate":"Hibernate","random":"ngẫu nhiên","reset":"Thiết lập lại","restart":"Khởi động lại","shutdown":"Tắt","suspend":"đình chỉ"},"xh":{},"zh":{"auth_failed":"呃哦! 验证失败。 请再试一次。","background_options":"背景选项","cancel":"取消","confirm_system_action":"你确定?","debug_log":"调试日志","greeting":"欢迎!","hibernate":"过冬","random":"随机","reset":"重置","restart":"重启","shutdown":"关掉","suspend":"暂停"},"zu":{"auth_failed":"Uh Oh! Ukuqinisekisa kwehlulekile. Sicela uzame futhi.","background_options":"Izinketho Background","cancel":"Khansela","confirm_system_action":"Uqinisekile?","debug_log":"Debug Log","greeting":"Siyakwamukela!","hibernate":"ezilala ubusika bonke","random":"Random","reset":"Hlela","restart":"Restart","shutdown":"Vala shaqa","suspend":"Alime"}}
\ No newline at end of file
diff --git a/themes/antergos/js/vendor/Makefile.am b/themes/antergos/js/vendor/Makefile.am
new file mode 100644
index 0000000..0645bb4
--- /dev/null
+++ b/themes/antergos/js/vendor/Makefile.am
@@ -0,0 +1,10 @@
+jsvendordir = $(THEME_DIR)/antergos/js/vendor
+jsvendor_DATA = \
+ jquery-2.1.4.min.js \
+ bootstrap.min.js \
+ moment-with-locales.min.js
+
+EXTRA_DIST = $(jsvendor_DATA)
+
+DISTCLEANFILES = \
+ Makefile.in
\ No newline at end of file
diff --git a/themes/antergos/js/vendor/bootstrap.min.js b/themes/antergos/js/vendor/bootstrap.min.js
new file mode 100644
index 0000000..e79c065
--- /dev/null
+++ b/themes/antergos/js/vendor/bootstrap.min.js
@@ -0,0 +1,7 @@
+/*!
+ * Bootstrap v3.3.6 (http://getbootstrap.com)
+ * Copyright 2011-2015 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j
document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m