diff --git a/_register_pp.html b/_register_pp.html
index 2542ee1..ef92d63 100644
--- a/_register_pp.html
+++ b/_register_pp.html
@@ -33,6 +33,13 @@
 							abgeschlossen="1",
 							bezahlt="{vtGet:bezahlt}"
 						}}
+						{{vtIf: {vtGet:bezahlt} .eq. 1 .and. {GutscheinID} .gt. 0 }}
+							{{vtUse: {GutscheinID} }}
+								{{vtIf: {verwendbar} .eq. 1 }}
+									{{vtDo: -act="update", -obj="{GutscheinID}", verwendet="1" }}
+								{{vtEndIf}}
+							{{vtEndUse}}
+						{{vtEndIf}}
 						{{vtIf: {vtGet:abgeschlossen} .neq. 1 }}
 							{{vtInclude: order.send_confirmation.html }}
 						{{vtEndIf}}
@@ -43,13 +50,6 @@
 								{{vtDo: -act="mail", -to="{vtGlobal:mailRecipient}", -subject="Fehler bei Rechnungserstellung (Bestell-Nr. {Nummer})", -message="{vtGet:Message,raw}"}}
 							{{vtEndIf}}
 						{{vtEndIf}}
-						{{vtIf: {vtGet:bezahlt} .eq. 1 .and. {GutscheinID} .gt. 0 }}
-							{{vtUse: {GutscheinID} }}
-								{{vtIf: {verwendbar} .eq. 1 }}
-									{{vtDo: -act="update", -obj="{GutscheinID}", verwendet="1" }}
-								{{vtEndIf}}
-							{{vtEndUse}}
-						{{vtEndIf}}
 					{{vtEndIf}}
 				{{vtEndIf}}
 			{{vtEndUse}}
diff --git a/_serp.html b/_serp.html
index 6dc76fb..913d34c 100644
--- a/_serp.html
+++ b/_serp.html
@@ -398,6 +398,15 @@
 	
 <!--{{vtEndIf}}-->
 
+<!--{{vtIf: workspace .and. {vtUser:admin} .eq. 1 .and. {vtCountSelection} .gt. 0 }}-->
+	<!--{{vtCapture:ActionPanel}}-->
+		<p id="lb_btn_save"><a href="{{vtLink:-met='serp_save'}}">Suchergebnisse als virtuelle Galerie speichern</a></p>
+	<!--{{vtEndCapture}}-->
+	<!--{{vtCapture:ActionPanel_r}}-->
+		<a class="dropdown-item" href="{{vtLink:-met='serp_save'}}">Suchergebnisse als virtuelle Galerie speichern</a>
+	<!--{{vtEndCapture}}-->
+<!--{{vtEndIf}}-->
+
 <!--{{vtIf: {vtGlobal:pxtcDesign} .eq. 2 .and. {vtGet:Buttons} .neq. }}-->
 	<!--{{vtCapture: MainActionButton}}-->
 		<div class="btn-group btn-group-sm mt-2">
diff --git a/_serp_save.html b/_serp_save.html
new file mode 100644
index 0000000..91e34ef
--- /dev/null
+++ b/_serp_save.html
@@ -0,0 +1,231 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+	<!--{{vtInclude: includes/initialize.html}}-->
+	<title>Suchergebnisse als virtuelle Galerie speichern</title>
+	<meta http-equiv="content-type" content="text/html;charset=utf-8">
+	{{vtInclude: includes/html_headers_internal.html }}
+	<link rel="stylesheet" href="{{vtResource:jquery/jquery-ui.custom.min.css}}" >
+	<script src='{{vtResource:jquery/jquery-ui.custom.min.js}}' type='text/javascript'></script>
+	<script src='{{vtResource:jquery/jquery.cookie.js}}' type='text/javascript'></script>
+	<link rel="stylesheet" type="text/css" href="{{vtResource:dynatree/skin-virthos/ui-dynatree.css}}">
+	<style type="text/css" media="screen">
+		#outertree {
+			width: 300px;
+			height: 180px;
+			padding-bottom: 10px;
+			padding-right:10px;
+			overflow:hidden;
+		}
+		#tree {
+			background-color: #fff;
+			background-image: url( '{{vtResource:bgnavi.gif}}' ); 
+			background-repeat: repeat-y;
+			overflow: auto;
+			width: 100%;
+			height: 100%;
+			border: 1px solid #555;
+		}
+		.col1 {
+			display: block;
+			float: left;
+			position: relative;
+			width: 17px;
+			height: 14px;
+			background-color: transparent;
+		}
+		.private > .col1 {
+			background: url('{{vtResource:unreleased.gif}}');
+			background-position: 0 1px;
+			background-repeat: no-repeat;
+			overflow: visible;
+		}
+		ul.dynatree-container {
+			background-color: transparent;
+		}
+		#selected_page {
+			font-weight: bold;
+		}
+		#outertree .ui-icon {
+		  margin: 0 -3px -3px 0;
+		  background-color: transparent;
+		  border-color: transparent;
+		}
+		ul.dynatree-container {
+			margin-left: 9px;
+		}
+		#tree a {
+			border: none;
+			line-height: 12px;
+		}
+		#tree li, #tree span {
+			margin-top: 0;
+			line-height: 12px;
+		}
+	</style>
+	<script src="{{vtResource:dynatree/jquery.dynatree.min.js}}" type="text/javascript"></script>
+	<script type="text/javascript">
+
+		function handleSubmit( f )
+		{
+			document.getElementById('cancel').style.display = 'none';
+			document.getElementById('wait').style.display = 'inline';
+			f.btnSubmit.disabled = true;
+			f.btnSubmit.value = 'bitte warten...';
+			return true;
+		}
+		
+		$( function(){
+			$( '#tree' ).dynatree( {
+				onActivate: function( node ){
+					if ( node.data.key == {{vtGet:ID_Bilder}} )
+					{
+						var path = '/';						
+					}
+					else
+					{
+						var path = '/' + node.data.title;
+						node.visitParents( function( node ){ if ( node.data.key == {{vtGet:ID_Bilder}} ) return false; path = '/' + node.data.title + path; } );
+					}
+					$( '#selected_page' ).html( path );
+					$( '#input_target_id' ).val( node.data.key );
+					$( '#input_target_path' ).val( path );
+					$( '#submit_button' ).attr( 'disabled', false );
+				},
+				onLazyRead: function( node ){
+					node.appendAjax( {url: "{{vtLink:-met='vtjslist',-raw='1',-types='imagelist',-omit='{vtID}'}}", data: {"-pg": node.data.key, "-baselevel": node.data.level + 1} } );
+				},
+				onPostInit: function( isReloading, isError ){
+					this.reactivate();
+				},
+				onCustomRender: function( node ){
+					var thePosition = '-' + ( node.data.level * 16 + 10 ) + 'px';
+					return '<span class="col1" style="left:' + thePosition + '"></span><a href="#" title="' + node.data.tooltip + '">' + node.data.title + '</a>';
+				},
+				autoFocus: true,
+				keyboard: true,
+				generateIds: true,
+				idPrefix: 'pg_',
+				persist: false,
+				debugLevel: 0,
+				clickFolderMode: 1,
+				imagePath: '{{vtResource:dynatree/skin-virthos/}}',
+				fx: { height: "toggle", duration: 300 },
+				strings: {
+					loading: "Laden&#8230;",
+					loadError: "Ladefehler!"
+				},
+				// {{vtUse: {vtGet:ID_Bilder} }}
+				children: [
+					{
+						"key": "{{vtID}}", 
+						"title": "{{vtName}}",
+						"addClass": "home",
+						"icon": false,
+						"hasChildren": true,
+						"isLazy": true,
+						"tooltip": "{{vtID}}",
+						"level": 0,
+						"expand": true,
+						"focus": true,
+						"children": [
+							{{vtLoop:-show="all",-type="imagelist"}}
+								{{vtIf: {vtCurrentPosition} .gt. 1 }},{{vtEndIf}}
+								{
+									"key": "{{vtID}}", 
+									"title": {{vtCalc: json_encode( utf8_encode( '{vtName:escaped}' ) ) }}{{vtResult}},
+									"icon": false,
+									{{vtIf: othersviewaccess}}
+									{{vtElse}}
+										"addClass": "private",
+									{{vtEndIf}}
+									{{vtIf: {vtOriginalID} .gt. 0}}
+										"addClass": "alias",
+									{{vtEndIf}}
+									{{vtIf: {vtCountPages} .eq. 0}}
+										"hasChildren": false,
+									{{vtElse}}
+										{{vtSelect: -origin="{vtID}", -filter="{vtPageType} .eq. imagelist" }}
+										{{vtIf: {vtCountSelection} .gt. 0 }}
+											"childrenCount": {{vtCountSelection}},
+											"hasChildren": true,
+											"isLazy": true,
+										{{vtElse}}
+											"hasChildren": false,
+										{{vtEndIf}}
+										{{vtEndSelect}}
+									{{vtEndIf}}
+									"tooltip": "{{vtID}}",
+									"level": 1
+								}
+							{{vtEndLoop}}
+						]
+					}
+				]
+				// {{vtEndUse}}
+			});
+
+			// initAjax: { url: "{{vtLink:-pg='/',-met='vtjslist',-raw='1',-types='imagelist',-omit='{vtID}'}}" }
+
+			tree = $( '#tree' ).dynatree( 'getTree' );
+			$( '#outertree' ).resizable({ handles: 'se' });
+		});
+
+	</script>
+</head>
+
+<body>
+
+	<div class="content">
+		
+	<!--{{vtIf: userhasadminprivileges }}-->
+
+		<!--{{vtIf: {vtPostValue:action} .neq. save .or. {vtPostValue:target_id} .eq. }}-->
+
+			<h1>Suchergebnisse als virtuelle Galerie speichern</h1>
+			<p>Bitte wählen Sie den Ort, an dem die virtuelle Galerie erstellt werden soll:</p>
+
+			<div id="outertree">
+				<div id="tree"></div>
+			</div>
+
+			<form name="formular" action="{{vtLink:-met='serp_save'}}" method="post" onsubmit="return handleSubmit(this)">
+				<input type="hidden" name="action" value="save">
+				<input id="input_target_id" type="hidden" name="target_id" value="{{vtGet:ID_Bilder}}">
+				<input id="input_target_path" type="hidden" name="target_path" value="/">
+				<p>Ziel: <span id="selected_page">/</span></p>
+				<p>
+					<input id="submit_button" type="submit" name="btnSubmit" value="Speichern" disabled style="font-size:12px">
+					<span id="cancel">oder <a href="{{vtLink:-met='serp'}}" class="text_link">Abbrechen</a></span>
+					<img id="wait" style="display:none; margin-left:20px" src="resources/ajax-loader-grey.gif" width="16" height="16" alt="Ajax Loader Grey">
+				</p>
+			</form>
+		
+		<!--{{vtElse}}-->
+		
+			<!--
+				{{vtDo: -act="create", -target="{vtPostValue:target_id}", -template="imagelist", Titel = "Virtuelle Galerie",
+					Verzeichnis = "-", Sortiment = "-1", -properties[accessRights]="111000000", -properties[userID]="0"
+				}}
+				{{vtSet: ImagelistId }}
+
+				{{vtSelect: -name = "mainsearch" }}
+					{{vtLoop}}
+						{{vtDo: -act="clone", -obj="{vtId}", -target="{vtGet:ImagelistId}" }}
+					{{vtEndLoop}}
+				{{vtEndSelect}}
+				
+				{{vtRedirect: -pg="{vtGet:ImagelistId}", -met="vtedit" }}
+			-->
+		
+		<!--{{vtEndIf}}-->
+				
+	<!--{{vtElse}}-->
+		<!--{{vtRedirect}}-->
+	<!--{{vtEndIf}}-->
+
+	</div>
+
+</body>
+</html>
diff --git a/ajax/cart_change.html b/ajax/cart_change.html
index 8fe8cb8..cb4c48a 100644
--- a/ajax/cart_change.html
+++ b/ajax/cart_change.html
@@ -27,37 +27,26 @@
 		{{vtDo: -act="updateSession", Cart="{vtGet:Cart}"}}
 	{{vtEndIf}}
 	
-	{{vtIf: {vtGetValue:q} .gt. 0 }}
-		{{vtRepeat: {vtGet:Cart} }}
-			{{vtIf: {vtItem:image} .eq. {vtId} .and. {vtItem:product} .eq. {vtGetValue:item} }}
-				{{vtCalc: {vtItem:price} * {vtGetValue:q} }}
-				{{vtSet: NewTotal}}
-				{{vtCalc: {vtItem:netprice} * {vtGetValue:q} }}
-				{{vtSet: NewNetTotal}}
-				{{vtSet: Result[itemPrice] = "{vtItem:price|num-en:2}" }}
-				{{vtSet: Result[itemNetprice] = "{vtItem:netprice|num-en:2}" }}
-			{{vtEndIf}}
-			{{vtSet: Item[id] = "{vtItem:id}" }}
-			{{vtSet: Item[quantity] = "{vtItem:quantity}" }}
-			{{vtSet: Item[price] = "{vtItem:price|num-en:2}" }}
-			{{vtSet: Item[netprice] = "{vtItem:netprice|num-en:2}" }}
-			{{vtSet: Item[total] = "{vtItem:total|num-en:2}" }}
-			{{vtSet: Item[nettotal] = "{vtItem:nettotal|num-en:2}" }}
-			{{vtSet: CartItems[] = "{vtGet:Item}" }}
-		{{vtEndRepeat}}
-	{{vtElse}}
-		{{vtSet: NewTotal = "0" }}
-		{{vtSet: NewNetTotal = "0" }}
-	{{vtEndIf}}
+	{{vtRepeat: {vtGet:Cart} }}
+		{{vtIf: {vtItem:image} .eq. {vtId} .and. {vtItem:product} .eq. {vtGetValue:item} }}
+			{{vtSet: Result[itemPrice] = "{vtItem:price|num-en:2}" }}
+			{{vtSet: Result[itemNetprice] = "{vtItem:netprice|num-en:2}" }}
+		{{vtEndIf}}
+		{{vtSet: Item[id] = "{vtItem:id}" }}
+		{{vtSet: Item[quantity] = "{vtItem:quantity}" }}
+		{{vtSet: Item[price] = "{vtItem:price|num-en:2}" }}
+		{{vtSet: Item[netprice] = "{vtItem:netprice|num-en:2}" }}
+		{{vtSet: Item[total] = "{vtItem:total|num-en:2}" }}
+		{{vtSet: Item[nettotal] = "{vtItem:nettotal|num-en:2}" }}
+		{{vtSet: CartItems[] = "{vtGet:Item}" }}
+	{{vtEndRepeat}}
 	
 	{{vtIf: {vtGlobal:pxtcVatHandling} .bw. excl}}
 		{{vtCalc: evalList('{vtGet:Cart,escaped}','nettotal','sum') }}
 		{{vtSet: Result[cartValue]="{vtResult|num-en:2}" }}
-		{{vtSet: Result[itemValue]="{vtGet:NewNetTotal|num-en:2}"}}
 	{{vtElse}}
 		{{vtCalc: evalList('{vtGet:Cart,escaped}','total','sum') }}
 		{{vtSet: Result[cartValue]="{vtResult|num-en:2}" }}
-		{{vtSet: Result[itemValue]="{vtGet:NewTotal|num-en:2}"}}
 	{{vtEndIf}}
 
 	{{vtSet: Result[imageId] = "{vtId}" }}
diff --git a/ajax/order_dialog.html b/ajax/order_dialog.html
index 602ce0b..c7a8498 100644
--- a/ajax/order_dialog.html
+++ b/ajax/order_dialog.html
@@ -21,6 +21,24 @@
 			</button>
 		</div>
 		<div class="modal-body">
+			<!--
+				{{vtIf: {vtPageType} .eq. lightbox }}
+					{{vtCalc: {vtGet:CartCount} + {vtGet:LightboxCount} }}
+					{{vtIf: {vtResult} .gt. {vtGlobal:pxtcMaxCartItems} }}
+						{{vtSet: Message = "{vtGet:s_msg_0061}" }}
+					{{vtEndIf}}
+				{{vtElseIf: {vtGet:CartCount} .gte. {vtGlobal:pxtcMaxCartItems} }}
+					{{vtCalc: isImageInCart( '{vtId}' ) }}
+					{{vtIf: {vtResult} .eq. }}
+						{{vtSet: Message = "{vtGet:s_msg_0062}" }}
+					{{vtEndIf}}
+				{{vtEndIf}}
+			-->
+			<!--{{vtIf: {vtGet:Message} .neq. }}-->
+				<!--{{vtCapture}}-->{{vtLink: {vtGet:ID_Warenkorb} }}<!--{{vtEndCapture}}-->
+				<!--{{vtCalc: sprintf( '{vtGet:Message,escaped}', '{vtGlobal:pxtcMaxCartItems}', '{vtResult}' ) }}-->
+				<p>{{vtResult}}</p>
+			<!--{{vtElse}}-->
 			<table class="table">
 				<tbody>
 					<!--{{vtRepeat: {vtGet:ProductList} }}-->
@@ -44,7 +62,7 @@
 										<input type="hidden" name="q" value="">
 										<div class="btn-group" role="group">
 											<button type="button" class="btn btn-outline-secondary btn-minus" {{vtIf: {vtItem:cartQuantity} .eq. 0}}disabled{{vtEndIf}}><i class="fas fa-minus"></i></button>
-											<button type="button" class="btn btn-outline-secondary quantity" disabled>{{vtItem:cartQuantity}}</button>
+											<button type="button" class="btn btn-outline-secondary quantity" disabled><!--{{vtIf: {vtItem:cartQuantity} .neq.}}-->{{vtItem:cartQuantity}}<!--{{vtElse}}-->0<!--{{vtEndIf}}--></button>
 											<button type="button" class="btn btn-outline-secondary btn-plus" {{vtIf: {vtItem:type} .eq. datei .and. {vtItem:cartQuantity} .gt. 0}}disabled{{vtEndIf}}><i class="fas fa-plus"></i></button>
 										</div>
 									</form>
@@ -81,6 +99,7 @@
 
 				</tbody>
 			</table>
+			<!--{{vtEndIf}}-->
 		</div>
 		<div class="modal-footer">
 			<!--{{vtIf: {vtPageType} .eq. lightbox }}-->
@@ -89,7 +108,7 @@
 					<button type="button" class="btn btn-secondary mr-2 mb-2" data-dismiss="modal">
 						{{vtGet:s_btn_cancel}}
 					</button>
-					<button type="submit" class="btn btn-primary btn-submit mb-2">
+					<button type="submit" class="btn btn-primary btn-submit mb-2" {{vtIf: {vtGet:Message} .neq.}}disabled{{vtEndIf}}>
 						{{vtGet:s_btn_into_cart}}
 					</button>
 				</form>
@@ -101,3 +120,8 @@
 		</div>
 	</div>
 </div>
+
+<script>
+	var errorDefault = '{{vtGet:s_msg_0059,escaped}}';
+	var errorMaxItems = '{{vtGet:s_msg_0060,escaped}}';
+</script>
diff --git a/ajax/update_next_image.html b/ajax/update_next_image.html
index 36a10fa..04baed9 100644
--- a/ajax/update_next_image.html
+++ b/ajax/update_next_image.html
@@ -10,7 +10,8 @@
 
 	{{vtIf: {vtSession:update_ignore} .eq. 1 .and. {vtSession:update_timestamp} .gt. 0 .and. {vtSession:update_ignore_minutes} .gt. 0 }}
 		{{vtCalc: {vtSession:update_timestamp} - 60*{vtSession:update_ignore_minutes} }}
-		{{vtSelect: -type="image", -depth="{vtGet:depth}", -skip="{vtGetValue:-pos}", -max="2", -sortfield[]="Verzeichnis", -sortfield[]="Dateiname", -filter="{LastCheck} .lt. {vtResult}"}}
+		{{vtSelect: -type="image", -depth="{vtGet:depth}", -skip="{vtGetValue:-pos}", -max="2", -sortfield[]="Verzeichnis", -sortfield[]="Dateiname",
+			-filter="{LastCheck} .lt. {vtResult} .or. {LastCheck} .gte. {vtSession:update_timestamp}"}}
 	{{vtElse}}
 		{{vtSelect: -type="image", -depth="{vtGet:depth}", -skip="{vtGetValue:-pos}", -max="2", -sortfield[]="Verzeichnis", -sortfield[]="Dateiname"}}
 	{{vtEndIf}}
diff --git a/cart.html b/cart.html
index fabae82..710ce41 100644
--- a/cart.html
+++ b/cart.html
@@ -245,20 +245,18 @@
 				}
 				$('.cartcount').text( data.cartCount );
 				$('#CartValue').text( data.cartValue );
+				if ( data.itemCount == 0 ){
+					$( '#cartitem_' + data.itemId ).remove();
+				}
 				for ( let item of data.cartItems ){
-					if ( item.quantity > 0 ) {
-						var row = $( '#cartitem_' + item.id );
-						$( '#Netprice_' + item.id ).html( item.netprice );
-						$( '#Nettotal_' + item.id ).html( item.nettotal );
-						$( '#Price_' + item.id ).html( item.price );
-						$( '#Total_' + item.id ).html( item.total );
-						row.find('.quantity').text( item.quantity );
-						row.find('.btn-plus').prop( 'disabled', false );
-						row.find('.btn-minus').prop( 'disabled', false );
-					}
-					else {
-						$( '#cartitem_' + item.id ).remove();
-					}
+					var row = $( '#cartitem_' + item.id );
+					$( '#Netprice_' + item.id ).html( item.netprice );
+					$( '#Nettotal_' + item.id ).html( item.nettotal );
+					$( '#Price_' + item.id ).html( item.price );
+					$( '#Total_' + item.id ).html( item.total );
+					row.find('.quantity').text( item.quantity );
+					row.find('.btn-plus').prop( 'disabled', false );
+					row.find('.btn-minus').prop( 'disabled', false );
 				}
 				if ( data.cartCount > 1 ) {
 					$('#StatusText').html( '{{vtGet:s_msg_0011,raw}}'.replace( '%s', data.cartCount ) );
diff --git a/checkout.summary.html b/checkout.summary.html
index 9848324..330e16b 100644
--- a/checkout.summary.html
+++ b/checkout.summary.html
@@ -107,7 +107,7 @@
 		{{vtSet: Warenwert = "{vtGet:Warenwert_brutto}" }}
 	{{vtEndIf}}
 
-	{{vtIf: {vtGet:GutscheinMindestbestellwert} .eq. .or. {vtGet:Warenwert|num-en:2} .gte. {vtGet:GutscheinMindestbestellwert|num:2} }}
+	{{vtIf: {vtGet:GutscheinMindestbestellwert} .eq. .or. {vtGet:Warenwert|num-en:2} .gte. {vtGet:GutscheinMindestbestellwert|num-en:2} }}
 		{{vtSet: MindestbestellwertErreicht = "1" }}
 	{{vtEndIf}}
 
diff --git a/coupon._onchange.html b/coupon._onchange.html
index 750e08e..1c34e00 100644
--- a/coupon._onchange.html
+++ b/coupon._onchange.html
@@ -1,20 +1,16 @@
 {{vtScript}}
 
-	{{vtIf: {vtGlobal:numberFormatDecimals} .neq. . .and. {Betrag} .neq. }}
+	{{vtIf: {vtGlobal:numberFormatDecimals} .neq. . .and. {Betrag} .cn. {vtGlobal:numberFormatDecimals} }}
 
 		{{vtCalc: str_replace( '{vtGlobal:numberFormatDecimals}', '.', '{Betrag:escaped}' ) }}
-		{{vtIf: {vtResult} .neq. {Betrag} }}
-			{{vtDo: -act="update", -obj="{vtID}", Betrag="{vtResult}" }}
-		{{vtEndIf}}
+		{{vtDo: -act="update", -obj="{vtID}", Betrag="{vtResult}" }}
 
 	{{vtEndIf}}
 	
-	{{vtIf: {vtGlobal:numberFormatDecimals} .neq. . .and. {Mindestbestellwert} .neq. }}
+	{{vtIf: {vtGlobal:numberFormatDecimals} .neq. . .and. {Mindestbestellwert} .cn. {vtGlobal:numberFormatDecimals} }}
 
 		{{vtCalc: str_replace( '{vtGlobal:numberFormatDecimals}', '.', '{Mindestbestellwert:escaped}' ) }}
-		{{vtIf: {vtResult} .neq. {Mindestbestellwert} }}
-			{{vtDo: -act="update", -obj="{vtID}", Mindestbestellwert="{vtResult}" }}
-		{{vtEndIf}}
+		{{vtDo: -act="update", -obj="{vtID}", Mindestbestellwert="{vtResult}" }}
 
 	{{vtEndIf}}
 	
diff --git a/download.html b/download.html
index d29ebd2..08d3bb4 100644
--- a/download.html
+++ b/download.html
@@ -142,7 +142,6 @@
 		</div>
 	<!--{{vtElse}}-->
 		<!--{{vtIf: {vtGet:Token} .neq. .and. {vtGet:Token} .eq. {vtGetValue:t} .and. {vtGet:bezahlt} .eq. 1 }}-->
-			<!--{{vtCalc: deleteDownloads( 'Order_{vtGetValue:o}' ) }}-->
 			<table id="cart" cellspacing="0" style="width:100%;">
 				<!--{{vtRepeat:{vtGet:Warenkorb} }}-->
 				<!--{{vtIf: {vtItem:type} .eq. file .and. {vtItem:hires_path} .neq.}}-->
diff --git a/download.zip.html b/download.zip.html
index bd0c3ae..c70c9de 100644
--- a/download.zip.html
+++ b/download.zip.html
@@ -37,7 +37,7 @@
 					{{vtIf: {vtGet:TempFile} .bw. - }}
 						{{vtLogError: Error generating image for file {vtGet:File,raw} with rule '{vtItem:rule}' ({vtGet:TempFile}) }}
 					{{vtElse}}
-						{{vtCalc: substr( '{vtGet:File,escaped}', 0, strrpos( '{vtGet:File,raw}', '.' ) ) . '_' . strtolower('{vtItem:rule}') . '.jpg' }}
+						{{vtCalc: substr( '{vtGet:File,escaped}', 0, strrpos( '{vtGet:File,raw}', '.' ) ) . '_' . strtolower('{vtItem:rule}') . '.' . pathinfo( v::vtget('TempFile'), PATHINFO_EXTENSION ) }}
 						{{vtSet: FinalList[] = "{vtResult}|{vtGet:TempFile}" }}
 						{{vtSet: DeleteList[] = "{vtGet:TempFile}" }}
 					{{vtEndIf}}
diff --git a/image.html b/image.html
index 2d4657b..b20957d 100644
--- a/image.html
+++ b/image.html
@@ -83,7 +83,8 @@
 					{{vtSet: Link = "{vtItem:link}" }}
 					{{vtSet: Target = "" }}
 				{{vtEndIf}}
-				{{vtCalc: preg_replace( '/\\b({vtItem:word,escaped})\\b/{vtGet:Flag}', '<a href="{vtGet:Link}" title="{vtItem:title,escaped}" target="{vtGet:Target}">\1</a>', '{vtGet:ImageCaption,escaped}' ) }}
+				{{vtCalc: mb_encode_numericentity( '{vtItem:title,escaped}', array( 0x000000, 0x10ffff, 0, 0xffffff ), 'UTF-8' ) }}
+				{{vtCalc: preg_replace( '/\\b({vtItem:word,escaped})\\b/{vtGet:Flag}', '<a href="{vtGet:Link}" title="{vtResult}" target="{vtGet:Target}">\1</a>', '{vtGet:ImageCaption,escaped}' ) }}
 				{{vtSet: ImageCaption }}
 			{{vtEndRepeat}}
 		{{vtEndIf}}
diff --git a/imagelist.download.html b/imagelist.download.html
index abe63e4..35d331c 100644
--- a/imagelist.download.html
+++ b/imagelist.download.html
@@ -100,9 +100,6 @@
 
 {{vtIf: {vtGet:Allowed} .eq. 1 }}
 
-	{{vtCalc: substr( '{Verzeichnis:escaped}', 0, 1 ) == '/' ? substr( '{Verzeichnis:escaped}', 1 ) : '{Verzeichnis:raw}' }}
-	{{vtSet: Verzeichnis}}
-	
 	{{vtIf: {vtGet:Directory} .bw. / }}
 	{{vtElse}}
 		{{vtSet: Directory = "{vtConfig:pathToVirthos}{vtGet:Directory}" }}
@@ -118,13 +115,16 @@
 
 	{{vtLoop}}
 
+		{{vtCalc: substr( '{Verzeichnis:escaped}', 0, 1 ) == '/' ? substr( '{Verzeichnis:escaped}', 1 ) : '{Verzeichnis:raw}' }}
+		{{vtSet: Verzeichnis}}
+
 		{{vtIf: {vtGetValue:rule} .neq. }}
 			{{vtCalc: generate_image_file( '{vtGlobal:pxtcPathHires}/{vtGet:Verzeichnis,raw}/{vtName}', '{vtGetValue:rule}', '{vtId}' ) }}
 			{{vtSet: TempFile }}
 			{{vtIf: {vtGet:TempFile} .bw. - }}
 				{{vtLogError: Error generating image for file {vtGet:Verzeichnis,raw}/{vtName} with rule '{vtGetValue:rule}' ({vtGet:TempFile}) }}
 			{{vtElse}}
-				{{vtCalc: substr( '{vtName:escaped}', 0, -4 ) . '_' . strtolower('{vtGetValue:rule}') . '.jpg' }}
+				{{vtCalc: substr( '{vtName:escaped}', 0, -4 ) . '_' . strtolower('{vtGetValue:rule}') . '.' . pathinfo( v::vtget('TempFile'), PATHINFO_EXTENSION ) }}
 				{{vtSet: FinalList[] = "{vtGet:Verzeichnis,raw}/{vtResult}|{vtGet:TempFile}" }}
 				{{vtSet: NumberList="{vtGet:NumberList},{vtID}"}}
 				{{vtSet: DeleteList[] = "{vtGet:TempFile}" }}
diff --git a/imagelist.html b/imagelist.html
index 24f2c54..dc30e6b 100644
--- a/imagelist.html
+++ b/imagelist.html
@@ -394,6 +394,12 @@
 						{{vtUse:#1}}
 							{{vtIf: {vtPageType} .eq. image }}
 								{{vtSet: Bild = "{vtGet:thumbnailUrl}/{Verzeichnis}/{Dateiname|trim}?{Thumb_Timestamp}" }}
+							{{vtElseIf: {vtCountPages} .gt. 0 }}
+								{{vtUse:#1}}
+									{{vtIf: {vtPageType} .eq. image }}
+										{{vtSet: Bild = "{vtGet:thumbnailUrl}/{Verzeichnis}/{Dateiname|trim}?{Thumb_Timestamp}" }}
+									{{vtEndIf}}
+								{{vtEndUse}}
 							{{vtEndIf}}
 						{{vtEndUse}}
 						{{vtIf: {vtGet:Bild} .eq. }}
@@ -840,7 +846,12 @@
 					<p><a href="{{vtLink:-met='delete_hires'}}">High-res-Dateien löschen</a></p>
 				<!--{{vtEndIf}}-->
 				<!--{{vtIf: {Verzeichnis} .eq. - }}-->
-					<a class="dropdown-item" href="{{vtLink:-met='pastefromlb'}}">Lightbox-Bilder hier einfügen</a>
+					<!--{{vtIf: {vtGet:LightboxCount} .gt. 0 }}-->
+						<p><a class="dropdown-item" href="{{vtLink:-met='pastefromlb'}}">Lightbox-Bilder hier einfügen</a></p>
+					<!--{{vtEndIf}}-->
+					<!--{{vtIf: {vtCountPages} .gt. 1 }}-->
+						<p><a class="dropdown-item" href="{{vtLink:-met='remove_duplicates'}}">Duplikate entfernen</a></p>
+					<!--{{vtEndIf}}-->
 				<!--{{vtElse}}-->
 				<!--{{vtIf: {vtGet:Unlimited} .eq. 1 .or. {vtGet:GlobalRemaining} .gt. 0 }}-->
 				<!--{{vtIf: {vtGet:ContainsFolders} .gt. 0 .and. {vtGet:ContainsImages} .eq. 0 }}-->
@@ -977,7 +988,12 @@
 					<a class="dropdown-item" href="{{vtLink:-met='delete_hires'}}">High-res-Dateien löschen</a>
 				<!--{{vtEndIf}}-->
 				<!--{{vtIf: {Verzeichnis} .eq. - }}-->
-					<a class="dropdown-item" href="{{vtLink:-met='pastefromlb'}}">Lightbox-Bilder hier einfügen</a>
+					<!--{{vtIf: {vtGet:LightboxCount} .gt. 0 }}-->
+						<a class="dropdown-item" href="{{vtLink:-met='pastefromlb'}}">Lightbox-Bilder hier einfügen</a>
+					<!--{{vtEndIf}}-->
+					<!--{{vtIf: {vtCountPages} .gt. 1 }}-->
+						<p><a class="dropdown-item" href="{{vtLink:-met='remove_duplicates'}}">Duplikate entfernen</a></p>
+					<!--{{vtEndIf}}-->
 				<!--{{vtElse}}-->
 				<!--{{vtIf: {vtGet:Unlimited} .eq. 1 .or. {vtGet:GlobalRemaining} .gt. 0 }}-->
 				<!--{{vtIf: {vtGet:ContainsFolders} .gt. 0 .and. {vtGet:ContainsImages} .eq. 0 }}-->
diff --git a/imagelist.remove_duplicates.html b/imagelist.remove_duplicates.html
new file mode 100644
index 0000000..e93f7fd
--- /dev/null
+++ b/imagelist.remove_duplicates.html
@@ -0,0 +1,104 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+	<!--{{vtInclude: includes/initialize.html}}-->
+	<title>Duplikate entfernen</title>
+	<meta http-equiv="content-type" content="text/html;charset=utf-8">
+	{{vtInclude: includes/html_headers_internal.html }}
+	<script type="text/javascript">
+		function initializeForm(){
+		}
+
+		function handleSubmit(f) {
+			document.getElementById('cancel').style.display = 'none';
+			document.getElementById('wait').style.display = 'inline';
+			f.btnSubmit.disabled = true;
+			f.btnSubmit.value = 'bitte warten...';
+			return true;
+		}
+	</script>
+	<style type="text/css" media="screen">
+		table.form td {
+			vertical-align: middle;
+		}
+	</style>
+</head>
+
+<body onload="initializeForm();">
+
+	<div class="content">
+
+	<!--{{vtIf: workspace .and. {Verzeichnis} .eq. - }}-->
+
+		<h1>Duplikate aus Galerie &raquo;{{Titel}}&laquo; entfernen</h1>
+
+		<!--{{vtIf: {vtPostValue:action} .neq. remove_duplicates}}-->
+
+			<form name="formular" action="{{vtLink:-met='remove_duplicates'}}" method="post" onsubmit="return handleSubmit(this)">
+				<input type="hidden" name="action" value="remove_duplicates">
+
+				<!--{{vtDbQuery:
+					SELECT c.id, i.verzeichnis, i.dateiname, COUNT(i.verzeichnis) as 'anzahl'
+					FROM `%data_image` i
+					INNER JOIN `%content` c ON i.vtid = c.id
+					WHERE c.containerID = {vtId}
+					GROUP BY i.verzeichnis, i.dateiname
+					HAVING COUNT(i.verzeichnis) > 1 AND COUNT(i.dateiname) > 1
+				}}-->
+
+				<!--{{vtIf: {vtDbCountSelection} .gt. 0 }}-->
+
+					<p>Diese Galerie enthält mehfache Verweise auf dieselbe(n) Bilddatei(en):</p>
+					<ul>
+						<!--{{vtDbLoop}}-->
+							<li><a href="{{vtLink: {vtDbRow:id} }}">{{vtDbRow:verzeichnis}}/{{vtDbRow:dateiname}}</a> ({{vtDbRow:anzahl}})</li>
+						<!--{{vtEndDbLoop}}-->
+					</ul>
+
+					<p>Um die doppelten Verweise zu beseitigen, klicken Sie auf &raquo;Duplikate entfernen&laquo;</p>
+					<p>
+						<input id="submitButton" type="submit" name="btnSubmit" value="Duplikate entfernen">
+						<span id="cancel">oder <a href="{{vtLink}}" class="text_link">Abbruch</a></span>
+						<img id="wait" style="display:none; margin-left:20px" src="resources/ajax-loader-grey.gif" width="16" height="16" alt="Ajax Loader Grey">
+					</p>
+
+				<!--{{vtElse}}-->
+
+					<p>Diese Galerie enthält keine mehrfachen Verweise auf dieselben Bilddateien.</p>
+					<p><a href="{{vtLink}}" class="text_link">Zurück</a></p>
+
+				<!--{{vtEndIf}}-->
+			</form>
+
+		<!--{{vtElse}}-->
+
+			<!--
+				{{vtScript}}
+
+				{{vtDbQuery:
+					DELETE c1, i1
+					FROM `%data_image` i1
+					INNER JOIN `%data_image` i2
+					LEFT JOIN `%content` c1 ON c1.id = i1.vtid
+					LEFT JOIN `%content` c2 ON c2.id = i2.vtid
+					WHERE i1.vtid > i2.vtid
+					AND i1.verzeichnis = i2.verzeichnis
+					AND i1.dateiname = i2.dateiname
+					AND c1.containerID = {vtId}
+					AND c2.containerID = {vtId}
+				}}
+				{{vtRedirect: -reloadnavi="1" }}
+
+				{{vtEndScript}}
+			-->
+
+		<!--{{vtEndIf}}-->
+
+	<!--{{vtElse}}-->
+		<!--{{vtRedirect}}-->
+	<!--{{vtEndIf}}-->
+	</div>
+
+</body>
+</html>
diff --git a/imagelist.update_images.html b/imagelist.update_images.html
index 0a3bf99..9b3635b 100644
--- a/imagelist.update_images.html
+++ b/imagelist.update_images.html
@@ -99,14 +99,17 @@
 			if(http.readyState == 4){
 				document.getElementById('wait').style.display = 'none';
 				var theMessage = '';
+				var isError = false;
 				try
 				{
 					theResponse = JSON.parse( http.responseText );
 					if( theResponse['error'] == '1' ){
 						theMessage = 'FEHLER - Low-res-Datei nicht gefunden';
+						isError = true;
 					}
 					else if( theResponse['error'] == '2' ){
 						theMessage = 'FEHLER - Low-res-Datei konnte nicht erzeugt werden ' + theResponse['status_lores'] + ' ';
+						isError = true;
 					} else {
 						if( theResponse['status_format'] == '1' ){
 							theMessage += 'Format aktualisiert. ';
@@ -117,12 +120,14 @@
 							countLores++;
 						} else if( theResponse['status_lores'] < 0 ){
 							theMessage += 'FEHLER beim Aktualisieren des Low-res-Bildes. ' + theResponse['status_lores'] + ' ';
+							isError = true;
 						}
 						if( theResponse['status_thumbs'] == '1' ){
 							theMessage += 'Thumbnail aktualisiert. ';
 							countThumbs++;
-						} else if( theResponse['status_thumbs'] == '-1' ){
-							theMessage += 'FEHLER beim Aktualisieren des Thumbnails. ';
+						} else if( theResponse['status_thumbs'] < 0 ){
+							theMessage += 'FEHLER beim Aktualisieren des Thumbnails. ' + theResponse['status_thumbs'] + ' '
+							isError = true;
 						}
 						if( theResponse['status_iptc'] == '1' ){
 							theMessage += 'IPTC-Daten aktualisiert. ';
@@ -132,11 +137,11 @@
 					if( theMessage == '' ){
 						theMessage = 'ist aktuell';
 					}
-					addMessage( '<a href="' + theResponse['link'] + '">' + theResponse['path'] + '</a>: ' + theMessage);
+					addMessage( '<a class="' + ( isError ? 'error' : '' ) + '" href="' + theResponse['link'] + '">' + theResponse['path'] + '</a>: ' + theMessage);
 				}
 				catch ( e )
 				{
-					addMessage( 'FEHLER: ' + http.responseText );
+					addMessage( '<span class="error">FEHLER: ' + http.responseText + '</span>' );
 					addMessage( 'Vorgang wegen eines Fehlers abgebrochen' );
 					finishUpdate();
 					return;
@@ -206,6 +211,9 @@
 			margin-top: 0;
 			margin-bottom: 0.3em;
 		}
+		#messages .error {
+			color: red;
+		}
 	</style>
 	
 </head>
@@ -320,4 +328,4 @@
 		<br><br><img src="{{vtResource: wheel.gif}}" alt="">
 	</div>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/imagelist.upload2.html b/imagelist.upload2.html
index eb46756..a4ab00a 100644
--- a/imagelist.upload2.html
+++ b/imagelist.upload2.html
@@ -258,6 +258,8 @@
 					myDropzone.enable();
 					myDropzone.removeAllFiles();
 					myDropzone.options.autoProcessQueue = false;
+					countUploads = 0;
+					countErrors = 0;
 					$('.dz-message').text( 'Ziehen Sie Bilddateien hierher oder klicken Sie zum Auswählen' );
 					$(this).val( 'Upload starten' );
 				}
diff --git a/includes/func_add_to_cart.html b/includes/func_add_to_cart.html
index 82fc9ae..f65149d 100644
--- a/includes/func_add_to_cart.html
+++ b/includes/func_add_to_cart.html
@@ -10,11 +10,16 @@
 
 ### GLOBALE VARIABLEN:
 ### Cart: der aktuelle Warenkorb
+### CartCount: Anzahl der Artikel im Warenkorb
 ### Language: die aktuelle Sprache
 
 
 {{vtFunction: add_to_cart}}
 
+	{{vtIf: {vtGlobal:pxtcMaxCartItems} .gt. 0 .and. {vtGlobal:pxtcMaxCartItems} .lte. {vtGet:CartCount} }}
+		{{vtReturn: -1 }}
+	{{vtEndIf}}
+
 	{{vtUse: {vtArg:Image} }}
 		{{vtSet: Dateiname="{Dateiname}"}}
 		{{vtSet: Verzeichnis="{Verzeichnis}"}}
diff --git a/includes/get_products_lb.html b/includes/get_products_lb.html
index 77139b6..d13722c 100644
--- a/includes/get_products_lb.html
+++ b/includes/get_products_lb.html
@@ -28,6 +28,12 @@
 					{{vtSet: Prod[type] = "{Typ}" }}
 					{{vtSet: Prod[description] = "{Beschreibung:raw}" }}
 
+					{{vtIf: {Steuersatz} .eq. 2 }}
+						{{vtSet: Prod[vatRate] = "{vtGlobal:pxtcVatRate2}" }}
+					{{vtElse}}
+						{{vtSet: Prod[vatRate] = "{vtGlobal:pxtcVatRate}" }}
+					{{vtEndIf}}
+
 					{{vtIf: {Preisanpassung} .eq. 1 .and. {vtUser:Preisfaktor} .gt. 0}}
 						{{vtCalc: {Preis} * {vtUser:Preisfaktor|num:2.} }}
 						{{vtSet: Prod[price] = "{vtResult}" }}
@@ -52,4 +58,4 @@
 		{{vtEndUse}}
 	{{vtEndAsAdmin}}
 
-{{vtEndScript}}
\ No newline at end of file
+{{vtEndScript}}
diff --git a/includes/header_r.html b/includes/header_r.html
index 2198be0..bfc8b88 100644
--- a/includes/header_r.html
+++ b/includes/header_r.html
@@ -65,14 +65,13 @@
 
 	<header class="noSwipe">
 		<nav class="navbar navbar-expand-lg navbar-{{vtGet:NavbarClass}} {{vtGet:NavbarBgClass}}">
-			<div class="container" style="padding-left:0">
 				<!--{{vtIf: {vtGlobal:pxtcNaviBrand} .neq. -1 }}-->
 					<!--{{vtIf: {vtGlobal:pxtcNaviBrandTarget} .neq. -1 }}-->
-						<a class="navbar-brand mr-2" 
+						<a class="navbar-brand mr-2 d-none d-lg-flex"
 							href="{{vtIf: {vtGlobal:pxtcNaviBrandTarget} .eq. 1}}{{vtGlobal:pxtcLogoLink}}{{vtElse}}{{vtLink: {vtGet:ID_Home} }}{{vtEndIf}}" 
 							target="{{vtIf: {vtGlobal:pxtcNaviBrandTarget} .eq. 1}}{{vtGlobal:pxtcLogoTarget}}{{vtEndIf}}">
 					<!--{{vtElse}}-->
-						<span class="navbar-brand mr-2">
+						<span class="navbar-brand mr-2 d-none d-lg-flex">
 					<!--{{vtEndIf}}-->
 						<!--{{vtIf: {vtGlobal:pxtcNaviBrand} .eq. 1 }}-->
 							{{vtGlobal:pxtcNaviBrandText,raw}}
@@ -87,10 +86,39 @@
 						</span>
 					<!--{{vtEndIf}}-->
 				<!--{{vtEndIf}}-->
-			   <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
-			     <span class="navbar-toggler-icon"></span>
-			   </button>
-			  	<div class="collapse navbar-collapse justify-content-between">
+			<span class="navbar-brand d-flex d-lg-none"></span>
+			<div class="d-flex flex-row order-2 order-lg-3 float-right">
+					<ul class="navbar-nav flex-row d-lg-none">
+						<!--{{vtIf: {vtGlobal:pxtcNaviLightboxBehaviour} .neq. -1 }}-->
+							<!--
+								{{vtIf:{vtGet:ID_Lightbox}{vtGetValue:-met} .in. {vtGet:ID_Current}|{vtGet:ID_Current}vtview }}
+									{{vtSet: ClassLightbox = "active" }}
+								{{vtEndIf}}
+							-->
+							<li class="nav-item mr-3 {{vtGet:ClassLightbox}}" style="{{vtIf: {vtGet:LightboxCount} .eq. 0}}display:none;{{vtEndIf}}">
+								<a class="nav-link" href="{{vtLink:{vtGet:ID_Lightbox} }}">
+									<i class="far fa-heart"></i>
+									<span class="lbcount badge badge-info">{{vtGet:LightboxCount}}</span>
+								</a>
+							</li>
+						<!--{{vtEndIf}}-->
+						<!--
+							{{vtIf: {vtGet:ID_Warenkorb}{vtGetValue:-met} .in. {vtGet:ID_Current}|{vtGet:ID_Current}vtview }}
+								{{vtSet: ClassCart = "active" }}
+							{{vtEndIf}}
+						-->
+						<li class="nav-item mr-3 {{vtGet:ClassCart}}" style="{{vtIf: {vtGet:CartCount} .eq. 0 .and. {vtGlobal:pxtcNaviCartBehaviour} .eq.}}display:none{{vtEndIf}}">
+							<a class="nav-link {{vtIf: {vtGet:CartCount} .eq. 0 .and. {vtGlobal:pxtcNaviCartBehaviour} .eq. 1}}disabled{{vtEndIf}}" href="{{vtLink:{vtGet:ID_Warenkorb} }}" title="{{vtGet:LabelCart}}">
+								<i class="fas fa-shopping-cart"></i>
+								<span class="cartcount badge badge-info" style="{{vtIf: {vtGet:CartCount} .eq. 0 }}display:none{{vtEndIf}}">{{vtGet:CartCount}}</span>
+							</a>
+						</li>
+					</ul>
+					<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
+					  <span class="navbar-toggler-icon"></span>
+					</button>
+				</div>
+			  	<div class="collapse navbar-collapse justify-content-between order-3 order-lg-2">
 					<ul class="nav navbar-nav">
 						<!--{{vtIf: {vtGlobal:pxtcNaviHomeBehaviour} .neq. -1 }}-->
 							<!--
@@ -265,7 +293,7 @@
 						</form>
 					<!--{{vtEndIf}}-->
 
-					<ul class="nav navbar-nav">
+					<ul class="nav navbar-nav d-none d-lg-flex">
 
 						<!--{{vtIf: {vtGlobal:pxtcNaviLightboxBehaviour} .neq. -1 }}-->
 							<!--
@@ -286,11 +314,6 @@
 							</li>
 						<!--{{vtEndIf}}-->
 
-						<!--
-							{{vtIf: {vtGet:ID_Warenkorb}{vtGetValue:-met} .in. {vtGet:ID_Current}|{vtGet:ID_Current}vtview }}
-								{{vtSet: ClassCart = "active" }}
-							{{vtEndIf}}
-						-->
 						<li class="nav-item {{vtGet:ClassCart}}" style="{{vtIf: {vtGet:CartCount} .eq. 0 .and. {vtGlobal:pxtcNaviCartBehaviour} .eq.}}display:none{{vtEndIf}}">
 							<a class="nav-link {{vtIf: {vtGet:CartCount} .eq. 0 .and. {vtGlobal:pxtcNaviCartBehaviour} .eq. 1}}disabled{{vtEndIf}}" href="{{vtLink:{vtGet:ID_Warenkorb} }}" title="{{vtGet:LabelCart}}">
 								<!--{{vtIf: {vtGet:LabelCart} .eq. .or. {vtGlobal:pxtcNaviCartIcon} .eq. 1 }}-->
@@ -303,6 +326,8 @@
 							</a>
 						</li>
 
+					</ul>
+					<ul class="nav navbar-nav">
 						<!--{{vtIf: {vtGlobal:pxtcAllowLanguageSwitch} .gt. 0 }}-->
 							<!--
 								{{vtIf: {vtGetValue:o} .neq.}}
@@ -377,8 +402,6 @@
 						<!--{{vtEndIf}}-->
 
 					</ul>
-
-				</div>
 			</div>
 		</nav>
 	</header>
diff --git a/includes/initialize.html b/includes/initialize.html
index 099f753..adb1cfa 100644
--- a/includes/initialize.html
+++ b/includes/initialize.html
@@ -152,6 +152,10 @@
 
 	{{vtInclude: languages/{vtGet:Language}.txt }}
 	{{vtInclude: /config/languages/{vtGet:Language}.txt }}
+	{{vtIf: {vtGlobal:pxtcLanguageInformal} .eq. 1 }}
+		{{vtInclude: languages/{vtGet:Language}-informal.txt }}
+		{{vtInclude: /config/languages/{vtGet:Language}-informal.txt }}
+	{{vtEndIf}}
 	
 	{{vtIf: {vtGlobal:pxtc_version_number} .neq. {vtGet:CurrentVersionNumber} }}
 		{{vtInclude: actions/update.html}}
@@ -302,4 +306,11 @@
 		{{vtEndIf}}
 	{{vtEndIf}}
 
+
+	## pxtcMaxCartItems setzen
+
+	{{vtIf: {vtGlobal:pxtcMaxCartItems} .eq. }}
+		{{vtDo: -act="update", -obj="70", pxtcMaxCartItems="999" }}
+	{{vtEndIf}}
+
 {{vtEndScript}}
diff --git a/languages/de-informal.txt b/languages/de-informal.txt
new file mode 100644
index 0000000..d124a6a
--- /dev/null
+++ b/languages/de-informal.txt
@@ -0,0 +1,82 @@
+{{vtScript}}
+
+### Pixtacy Language File DEUTSCH INFORMELL ###
+
+
+{{vtSet: s_msg_0001 = "Du musst angemeldet sein, um dein Passwort zu ändern."}}
+{{vtSet: s_msg_0004 = "Bitte melde dich zuerst ab, bevor du ein neues Passwort anforderst."}}
+{{vtSet: s_msg_0005 = "Das neue Passwort wurde an deine hinterlegte E-Mail-Adresse gesendet."}}
+{{vtSet: s_msg_0007 = "Du bist angemeldet als"}}
+{{vtSet: s_msg_0008 = "Anmeldung fehlgeschlagen. Bitte versuche es erneut."}}
+{{vtSet: s_msg_0009 = "In deinem Warenkorb befindet sich <strong>1 Artikel</strong>."}}
+{{vtSet: s_msg_0010 = "Dein Warenkorb ist leer."}}
+{{vtSet: s_msg_0011 = "In deinem Warenkorb befinden sich <strong>%s Artikel</strong>."}}
+{{vtSet: s_msg_0013 = "Deine Bestell-Nr. lautet"}}
+{{vtSet: s_msg_0014 = "Deine Anfrage konnte nicht verarbeitet werden. Bitte kontaktiere uns direkt."}}
+{{vtSet: s_msg_0015 = "Bitte fülle alle Felder aus, die mit einem Stern (*) gekennzeichnet sind."}}
+{{vtSet: s_msg_0016 = "Bitte bestätige, dass du die AGB kennst und akzeptierst."}}
+{{vtSet: s_msg_0017 = "Das System hat deine Anfrage als Spam eingestuft und daher nicht weitergeleitet.<br> Bitte ändere deine Angaben, und versuche es noch einmal."}}
+{{vtSet: s_msg_0018 = "Deine Angaben waren nicht vollständig. Die Anfrage wurde daher nicht abgesendet."}}
+{{vtSet: s_msg_0024 = "Dieses Bild befindet sich in deinem Warenkorb"}}
+{{vtSet: s_msg_0025 = "Falls der Download nicht automatisch startet, klicke bitte %1$shier%2$s."}}
+{{vtSet: s_msg_0026 = "Du hast nicht die erforderlichen Zugriffsrechte, um dieses Bild herunterzuladen."}}
+{{vtSet: s_msg_0030 = "Dieses Bild gehört zu einer passwortgeschützten Galerie. Folge dem ursprünglichen Einladungslink, um das Bild sichtbar zu machen."}}
+{{vtSet: s_msg_0032 = "Einige Lightbox-Bilder sind nicht öffentlich zugänglich oder wurden in der Zwischenzeit gelöscht. Möglicherweise erzielst du ein besseres Ergebnis, wenn du dich %1$seinloggst%2$s."}}
+{{vtSet: s_msg_0033 = "Die Lightbox-Bilder wurden inzwischen gelöscht, oder deine Zugriffsrechte reichen nicht aus, um sie darzustellen."}}
+{{vtSet: s_msg_0034 = "Es sind keine Dateien zum Herunterladen verfügbar. Möglicherweise wurden die Layout- bzw. High-res-Daten für die ausgewählten Bilder noch nicht bereitgestellt, oder du verfügst nicht über die erforderlichen Zugriffsrechte."}}
+{{vtSet: s_msg_0039 = "Du kannst die Bestellmenge ändern, wenn du möchtest."}}
+{{vtSet: s_msg_0041 = "Bitte gib den Sicherheitscode ein, der im Bild zu sehen ist."}}
+{{vtSet: s_msg_0042 = "Bitte gib eine E-Mail-Adresse an."}}
+{{vtSet: s_msg_0043 = "Das System hat deine Registrierung als Spam eingestuft und daher nicht ausgeführt.<br> Bitte ändere deine Angaben, und versuch es noch einmal."}}
+{{vtSet: s_msg_0044 = "Deine Angaben waren nicht vollständig. Die Registrierung wurde daher nicht ausgeführt."}}
+{{vtSet: s_msg_0045 = "Die Umsatzsteuer-ID ist nicht gültig für das gewählte Land. Bitte korrigiere oder entferne sie."}}
+{{vtSet: s_msg_0047 = "Bitte gib einen Benutzernamen an."}}
+{{vtSet: s_msg_0048 = "Bitte gib ein Passwort an."}}
+{{vtSet: s_msg_0050 = "Du musst JavaScript aktivieren, bevor du das Formular absendest."}}
+{{vtSet: s_msg_0052 = "Deine Zugriffsrechte reichen nicht aus, um die angeforderte Seite aufzurufen."}}
+{{vtSet: s_msg_0054 = "Deine Zugriffsrechte reichen nicht aus, um die Inhalte dieser Galerie zu sehen."}}
+{{vtSet: s_msg_0055 = "Bitte bestätige, dass du die Datenschutzerklärung zur Kenntnis genommen hast."}}
+{{vtSet: s_msg_0056 = "Bitte bestätige, dass du auf dein Widerrufsrecht verzichtest."}}
+
+{{vtSet: s_prompt_remove_cart_item = "Bist du sicher, dass du diesen Artikel aus dem Warenkorb entfernen willst?"}}
+{{vtSet: s_prompt_empty_cart       = "Bist du sicher, dass du den Warenkorb komplett leeren willst?"}}
+{{vtSet: s_prompt_empty_lb         = "Bist du sicher, dass du den Inhalt der Lightbox komplett entfernen willst?"}}
+{{vtSet: s_prompt_login            = "Klicke hier, um dich anzumelden."}}
+{{vtSet: s_prompt_lightbox_all     = "Möchtest du wirklich ALLE Bilder zur Lightbox hinzufügen?"}}
+{{vtSet: s_prompt_lightbox_link    = "Du bist einem Verweis gefolgt, der eine Bildauswahl enthält. Wie willst du damit verfahren?"}}
+{{vtSet: s_prompt_lightbox_tidy    = "Bist du sicher, dass du alle Verweise auf nicht-verfügbare Bilder aus der Lightbox entfernen möchtest?"}}
+{{vtSet: s_prompt_logout           = "Bist du sicher, dass du dich abmelden willst?"}}
+
+{{vtSet: s_txt_0001 = "Gib das alte und zweimal das neue Passwort ein, und klicke dann auf »speichern«."}}
+{{vtSet: s_txt_0002 = "Wenn du dein Passwort vergessen hast, gib deinen Benutzernamen oder deine E-Mail-Adresse ein.<br>Du erhältst dann umgehend ein neues Passwort zugesendet."}}
+{{vtSet: s_txt_0003 = "Um dich anzumelden, gib Namen und Passwort ein, und klicke auf »anmelden«."}}
+{{vtSet: s_txt_0004 = "Dein neues Passwort für"}}
+{{vtSet: s_txt_0006 = "Deine Bestellung Nr. %1$s bei %2$s"}}
+{{vtSet: s_txt_0009 = "Bitte überprüfe noch einmal alle Angaben zu deiner Bestellung."}}
+{{vtSet: s_txt_0020 = "Über diese Adresse kannst du die aktuelle Lightbox jederzeit wiederherstellen"}}
+{{vtSet: s_txt_0024 = "Diese URL kannst du per E-Mail versenden, um jemand anderem einen schnellen Zugriff auf die ausgewählten Bilder zu ermöglichen."}}
+{{vtSet: s_txt_0044 = "Das Benutzerkonto konnte nicht aktiviert werden. Bitte stell sicher, dass der Aktivierungslink vollständig ist und nicht einzelne Zeichen am Ende fehlen."}}
+{{vtSet: s_txt_0045 = "Deine Registrierung unter"}}
+{{vtSet: s_txt_0046 = "Da du längere Zeit inaktiv warst, gib bitte erneut Namen und Passwort ein."}}
+{{vtSet: s_txt_0048 = "Wenn du einen Gutscheincode erhalten hast, trage diesen bitte hier ein"}}
+{{vtSet: s_txt_0054 = "Hallo %1$s,"}}
+{{vtSet: s_txt_0055 = "Hallo %1$s,"}}
+{{vtSet: s_txt_0056 = "Um dieses Produkt aus dem Warenkorb zu entfernen, klicke auf den Button 'Warenkorb'."}}
+{{vtSet: s_txt_0061 = "Deine Daten stehen zum Herunterladen bereit"}}
+{{vtSet: s_txt_0066 = "Lieber Kunde,
+
+ich habe deine Bilder jetzt online gestellt. Klicke auf den folgenden Link, um sie aufzurufen:
+
+%s
+
+Viele Grüße
+"}}
+{{vtSet: s_txt_0073 = "Hallo %1$s,"}}
+
+
+{{vtSet: s_invoice_text_vorkasse            = "Bitte überweise den Rechnungsbetrag auf unser unten angegebenes Konto." }}
+{{vtSet: s_invoice_text_sepa                = "Der Rechnungsbetrag wird wie vereinbart von deinem Konto eingezogen." }}
+{{vtSet: s_invoice_text_rechnung            = "Bitte überweise den Rechnungsbetrag auf unser unten angegebenes Konto." }}
+
+{{vtEndScript}}
+
diff --git a/languages/de.txt b/languages/de.txt
index 9d0f21e..7f44cab 100644
--- a/languages/de.txt
+++ b/languages/de.txt
@@ -49,6 +49,7 @@
 {{vtSet: s_btn_request        = "Anfrage absenden"}}
 {{vtSet: s_btn_reset          = "zurücksetzen"}}
 {{vtSet: s_btn_save           = "speichern" }}
+{{vtSet: s_btn_save_serp      = "Suchergebnisse als virtuelle Galerie speichern" }}
 {{vtSet: s_btn_send           = "Absenden"}}
 {{vtSet: s_btn_send_order     = "Jetzt kaufen"}}
 {{vtSet: s_btn_show_all_pics  = "alle Bilder zeigen"}}
@@ -180,6 +181,10 @@
 {{vtSet: s_msg_0056 = "Bitte bestätigen Sie, dass Sie auf Ihr Widerrufsrecht verzichten."}}
 {{vtSet: s_msg_0057 = "Der Benutzername darf nur Buchstaben und Ziffern sowie Punkte, Unter- und Bindestriche enthalten."}}
 {{vtSet: s_msg_0058 = "Die IBAN ist ungültig."}}
+{{vtSet: s_msg_0059 = "Der Artikel konnte nicht zum Warenkorb hinzugefügt werden."}}
+{{vtSet: s_msg_0060 = "Die maximale Anzahl an Artikeln für den Warenkorb ist erreicht. Um neue Artikel hinzuzufügen, müssen Sie zuvor andere entfernen."}}
+{{vtSet: s_msg_0061 = "Der Warenkorb kann höchstens %1$s Artikel aufnehmen. Bitte entfernen Sie Bilder aus der Lightbox oder Artikel aus dem <a href='%2$s'>Warenkorb</a>, und versuchen Sie es dann erneut."}}
+{{vtSet: s_msg_0062 = "Der Warenkorb kann höchstens %1$s Artikel aufnehmen. Bitte <a href='%2$s'>entfernen</a> Sie vorhandene Artikel, bevor Sie neue hinzufügen."}}
 
 {{vtSet: s_meta_photographer   = "Fotograf"}}
 {{vtSet: s_meta_creation_date  = "Aufnahmedatum"}}
diff --git a/languages/en.txt b/languages/en.txt
index 7505253..c79a667 100644
--- a/languages/en.txt
+++ b/languages/en.txt
@@ -180,6 +180,10 @@
 {{vtSet: s_msg_0056 = "Please confirm that you waive your right of revocation."}}
 {{vtSet: s_msg_0057 = "The user name may only contain letters, numbers, periods, hyphens and underscore characters."}}
 {{vtSet: s_msg_0058 = "The IBAN ist invalid."}}
+{{vtSet: s_msg_0059 = "The article could not be added to the cart."}}
+{{vtSet: s_msg_0060 = "The maximum number of items for the shopping cart has been reached. To add new items, you must first remove others."}}
+{{vtSet: s_msg_0061 = "The shopping cart can hold a maximum of %1$s items. Please remove images from the lightbox or items from the <a href='%2$s'>cart</a>, and then try again."}}
+{{vtSet: s_msg_0062 = "The shopping cart can hold a maximum of %1$s items. Please <a href='%2$s'>remove</a> existing items before adding new ones."}}
 
 {{vtSet: s_meta_photographer   = "Photographer"}}
 {{vtSet: s_meta_creation_date  = "Creation Date"}}
diff --git a/lib/pxtc_products.class.php b/lib/pxtc_products.class.php
index 15aa800..723a3a8 100644
--- a/lib/pxtc_products.class.php
+++ b/lib/pxtc_products.class.php
@@ -106,7 +106,7 @@ class Pixtacy_Products {
 			$products = array_merge( $products, self::$autoProducts );
 		}
 		// Galeriesortiment
-		if ( $imageAssortment == 0 ){
+		if ( empty( $imageAssortment ) ){
 			if ( $galleryAssortment == 0 ){
 				// Galerie hat kein Sortiment, sondern eigene Produktauswahl
 				$products = array_merge( $products, explode( "\n", $galleryProducts ) );
@@ -255,7 +255,7 @@ class Pixtacy_Products {
 			'description' => ! empty( self::$options['preferEnglish'] ) && ! empty( $p['beschreibung_en'] ) ? $p['beschreibung_en'] : $p['beschreibung'],
 			'price' => $p['preis:num'],
 			'applyUserPriceFactor' => ! empty( $p['preisanpassung'] ),
-			'vatRate' => (int) $p['steuersatz'],
+			'vatRate' => self::$options[ $p['steuersatz'] == 2 ? 'vatRate2' : 'vatRate1' ],
 			'applyDiscount' => ! empty( $p['rabatt_anwenden'] ),
 			'discountScale' => empty( $p['rabattstaffel'] ) 
 				? NULL 
diff --git a/lightbox.download.html b/lightbox.download.html
index 324a4ba..9d68a6d 100644
--- a/lightbox.download.html
+++ b/lightbox.download.html
@@ -71,7 +71,7 @@
 				{{vtIf: {vtGet:TempFile} .bw. - }}
 					{{vtLogError: Error generating image for file {vtGet:Verzeichnis,raw}/{vtName} with rule '{vtGetValue:rule}' ({vtGet:TempFile}) }}
 				{{vtElse}}
-					{{vtCalc: substr( '{vtName:escaped}', 0, -4 ) . '_' . strtolower('{vtGetValue:rule}') . '.jpg' }}
+					{{vtCalc: substr( '{vtName:escaped}', 0, -4 ) . '_' . strtolower('{vtGetValue:rule}') . '.' . pathinfo( v::vtget('TempFile'), PATHINFO_EXTENSION ) }}
 					{{vtSet: FinalList[] = "{vtGet:Verzeichnis,raw}/{vtResult}|{vtGet:TempFile}" }}
 					{{vtSet: NumberList="{vtGet:NumberList},{vtID}"}}
 					{{vtSet: DeleteList[] = "{vtGet:TempFile}" }}
diff --git a/mails/notify_order_download.txt b/mails/notify_order_download.txt
index 9772f0f..95f9f0c 100644
--- a/mails/notify_order_download.txt
+++ b/mails/notify_order_download.txt
@@ -1,5 +1,5 @@
-Die folgenden Bilddateien wurden am {vtDate|d.m.Y} um {vtDate|H:i} Uhr als ZIP-Datei heruntergeladen:
+Die folgenden Bilddateien wurden am {{vtDate|d.m.Y}} um {{vtDate|H:i}} Uhr als ZIP-Datei heruntergeladen:
 {{vtRepeat: {vtGet:FinalList} }}
 - {{vtItem}}{{vtEndRepeat}}
 
-IP: {vtEcho: getenv( 'REMOTE_ADDR' )}
+IP: {{vtEcho: getenv( 'REMOTE_ADDR' )}}
diff --git a/mails/order.txt b/mails/order.txt
index d3b79ff..5fa9a1b 100644
--- a/mails/order.txt
+++ b/mails/order.txt
@@ -121,7 +121,7 @@ Versandkosten: {{Versandkosten|num-en:2}} {{Waehrung}} {{vtEndIf}}
 
 Rechnungsbetrag: {{Rechnungsbetrag|num-en:2}} {{Waehrung}}
 
-====================================================================={{vtIf:{vtGet:ContainsHiresLinks}.eq.1 .and. {Datenlieferung}.neq.1}}{{vtIf: {Bezahlmethode}.eq.vorkasse}}
+====================================================================={{vtIf:{vtGet:ContainsHiresLinks}.eq.1 .and. {Datenlieferung}.neq.1}}{{vtIf: {Bezahlmethode} .eq. vorkasse .and. {Rechnungsbetrag} .gt. 0 }}
 Sobald Ihr Zahlungseingang in unserem System verbucht ist, erhalten
 Sie automatisch einen Link zu den bestellten Bilddateien per E-Mail
 zugesendet.
@@ -130,4 +130,4 @@ Sie können die bestellten Bilddateien hier herunterladen:
 {{vtSelf}}?_&-pg={{vtGet:ID_Download}}&o={{vtID}}&t={{Token}}
 {{vtEndIf}}{{vtEndIf}}
 
-{{vtGet:Text_Ende,raw}}
\ No newline at end of file
+{{vtGet:Text_Ende,raw}}
diff --git a/mails/order_en.txt b/mails/order_en.txt
index 3621252..a1fd4fe 100644
--- a/mails/order_en.txt
+++ b/mails/order_en.txt
@@ -120,7 +120,7 @@ Shipping costs: {{Versandkosten|num-en:2}} {{Waehrung}} {{vtEndIf}}
 
 Amount invoiced: {{Rechnungsbetrag|num-en:2}} {{Waehrung}}
 
-====================================================================={{vtIf:{vtGet:ContainsHiresLinks}.eq.1 .and. {Datenlieferung}.neq.1}}{{vtIf: {Bezahlmethode}.eq.vorkasse}}
+====================================================================={{vtIf:{vtGet:ContainsHiresLinks}.eq.1 .and. {Datenlieferung}.neq.1}}{{vtIf: {Bezahlmethode} .eq. vorkasse .and. {Rechnungsbetrag} .gt. 0 }}
 As soon as your payment has been registered in our system you will
 receive an Email with a link to the downloadable files.
 {{vtElse}}
@@ -128,4 +128,4 @@ You can download the ordered image files here:
 {{vtSelf}}?_&-pg={{vtGet:ID_Download}}&o={{vtID}}&t={{Token}}
 {{vtEndIf}}{{vtEndIf}}
 
-{{vtGet:Text_Ende,raw}}
\ No newline at end of file
+{{vtGet:Text_Ende,raw}}
diff --git a/order._onchange.html b/order._onchange.html
index 2df7672..8ca6119 100644
--- a/order._onchange.html
+++ b/order._onchange.html
@@ -42,6 +42,7 @@
 			.and. {bezahlt} .eq. 1
 			.and. {abgeschlossen} .eq. 1
 			.and. {Bezahlmethode} .nin. rechnung|sepa
+			.and. {Rechnungsbetrag} .gt. 0
 			.and. {Datenlieferung} .neq. 1
 			.and. {DeliveryNotificationSent} .eq.
 }}
diff --git a/product._onchange.html b/product._onchange.html
index bf9c54a..b9aa677 100644
--- a/product._onchange.html
+++ b/product._onchange.html
@@ -16,10 +16,9 @@
 			{{vtSet: Staffel[] = "{vtGet:Eintrag}" }}
 		{{vtEndRepeat}}
 
-		{{vtIf: {vtGet:Preis} .neq. {Preis} .or. {vtGet:Staffel} .neq. {Rabattstaffel} }}
-			{{vtDo: -act="update", -obj="{vtID}", Preis="{vtGet:Preis}", Rabattstaffel="{vtGet:Staffel}" }}
-		{{vtEndIf}}
+		{{vtDo: -act="update", -obj="{vtID}", Preis="{vtGet:Preis}", Rabattstaffel="{vtGet:Staffel}" }}
 
 	{{vtEndIf}}
 
-{{vtEndScript}}
\ No newline at end of file
+{{vtEndScript}}
+
diff --git a/resources/functions.php b/resources/functions.php
index f58f95e..1c6473b 100644
--- a/resources/functions.php
+++ b/resources/functions.php
@@ -687,21 +687,26 @@ function createPassword( $length = 10 )
 }
 
 
-function analyzeSearchString()
+function analyzeSearchString( $search = '' )
 {
-	if ( empty( $_REQUEST['-search'] ) )
+	if ( empty( $search ) )
+	{
+		$search = $_REQUEST['-search'];
+	}
+
+	if ( empty( $search ) )
 	{
 		return '';
 	}
 
-	if ( is_array( $_REQUEST['-search'] ) )
+	if ( is_array( $search ) )
 	{
-		$_REQUEST['-search'] = implode( ' ', $_REQUEST['-search'] );
+		$search = implode( ' ', $search );
 	}
 
 	$matches = array ();
 	$result['all'] = '';
-	preg_match_all( '/-?([a-zA-Z0-9_]+:)?(("[^"]+")|([\S]+))/', $_REQUEST['-search'], $matches );
+	preg_match_all( '/-?([a-zA-Z0-9_]+:)?(("[^"]+")|([\S]+))/', $search, $matches );
 
 	foreach ( $matches[0] as $criteria )
 	{
@@ -2185,6 +2190,8 @@ function readFolderInfo( $folder )
 
 function generate_image_file( $filePath, $imagingRule, $pageId = NULL )
 {
+	static $imager, $rules;
+
 	if ( ! file_exists( $filePath ) )
 	{
 		return -1; // File not found
@@ -2195,7 +2202,10 @@ function generate_image_file( $filePath, $imagingRule, $pageId = NULL )
 		return -2; // No imaging rules defined
 	}
 
-	$rules = json_decode( v::vtglobal('pxtcImagingRules,raw'), TRUE );
+	if ( ! isset( $rules ) )
+	{
+		$rules = json_decode( v::vtglobal('pxtcImagingRules,raw'), TRUE );
+	}
 
 	foreach ( $rules as $item )
 	{
@@ -2211,8 +2221,11 @@ function generate_image_file( $filePath, $imagingRule, $pageId = NULL )
 		return -3; // Imaging rule not found
 	}
 	
-	require_once 'templates/pixtacy/lib/image_processor.class.php';
-	$imager = new Image_Processor();
+	if ( ! isset( $imager ) )
+	{
+		require_once 'templates/pixtacy/lib/image_processor.class.php';
+		$imager = new Image_Processor();
+	}
 
 	if ( ! $imager->load( $filePath, TRUE ) )
 	{
@@ -2259,7 +2272,7 @@ function generate_image_file( $filePath, $imagingRule, $pageId = NULL )
 		$imager->add_watermark_image( $rule['wmurl'], $rule['wmpos'], $rule['wmopacity'], $rule['wmsize'] );
 	}
 
-	$tempfile = v::vtconfig('pathToCache') . 'images/' . sha1( $filePath . '-' . $rule ) . '.jpg' ;
+	$tempfile = v::vtconfig('pathToCache') . 'images/' . sha1( $filePath . '-' . $rule['name'] ) . '.jpg' ;
 	
 	if ( ! $imager->write( $tempfile, $rule['quality'] ) )
 	{
diff --git a/resources/lg-cart.js b/resources/lg-cart.js
new file mode 100644
index 0000000..f4753ca
--- /dev/null
+++ b/resources/lg-cart.js
@@ -0,0 +1,188 @@
+/*! lg-cart - v0.9 - 2023-01-14
+* Copyright (c) 2023 Martin Wandelt */
+
+(function (global, factory) {
+	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+	typeof define === 'function' && define.amd ? define(factory) :
+	(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgCart = factory());
+}( this, ( function () { 'use strict';
+
+	var __assign = function() {
+		__assign = Object.assign || function __assign(t) {
+			for (var s, i = 1, n = arguments.length; i < n; i++) {
+				s = arguments[i];
+				for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+			}
+			return t;
+		};
+		return __assign.apply(this, arguments);
+	};
+
+	var cartSettings = {
+		cart: true,
+	};
+
+	/**
+	* List of lightGallery events
+	* All events should be documented here
+	* Below interfaces are used to build the website documentations
+	* */
+	var lGEvents = {
+		afterAppendSlide: 'lgAfterAppendSlide',
+		init: 'lgInit',
+		hasVideo: 'lgHasVideo',
+		containerResize: 'lgContainerResize',
+		updateSlides: 'lgUpdateSlides',
+		afterAppendSubHtml: 'lgAfterAppendSubHtml',
+		beforeOpen: 'lgBeforeOpen',
+		afterOpen: 'lgAfterOpen',
+		slideItemLoad: 'lgSlideItemLoad',
+		beforeSlide: 'lgBeforeSlide',
+		afterSlide: 'lgAfterSlide',
+		posterClick: 'lgPosterClick',
+		dragStart: 'lgDragStart',
+		dragMove: 'lgDragMove',
+		dragEnd: 'lgDragEnd',
+		beforeNextSlide: 'lgBeforeNextSlide',
+		beforePrevSlide: 'lgBeforePrevSlide',
+		beforeClose: 'lgBeforeClose',
+		afterClose: 'lgAfterClose',
+		rotateLeft: 'lgRotateLeft',
+		rotateRight: 'lgRotateRight',
+		flipHorizontal: 'lgFlipHorizontal',
+		flipVertical: 'lgFlipVertical',
+		autoplay: 'lgAutoplay',
+		autoplayStart: 'lgAutoplayStart',
+		autoplayStop: 'lgAutoplayStop',
+	};
+
+	var Cart = ( function( element ){
+
+		function Cart( instance, $LG ) {
+			// get lightGallery core plugin instance
+			this.core = instance;
+			this.$LG = $LG;
+			this.settings = __assign(__assign({}, cartSettings), this.core.settings);
+			return this;
+		}
+
+		Cart.prototype.init = function() {
+
+			if ( ! this.settings.cart ) {
+				return;
+			}
+
+			var sheet = document.createElement('style')
+			sheet.innerHTML = 
+				'.lg-cart-box { padding:20px; z-index:9999; position:absolute; cursor:pointer; } ' +
+				'.lg-cart-box i { color:white; opacity:0.9; text-shadow: 1px 1px 2px black, 0 0 1em grey, 0 0 0.2em grey; font-size: 1.75rem } ' +
+				'.in-cart.lg-cart-box i { color:orange; } ' +
+				'.lg-cart-box:hover i { opacity:1; text-shadow: 1px 1px 2px black, 0 0 1em black, 0 0 0.2em black; } ' +
+				'.lg-cart-dialog { position:fixed; top:0; right:0; width:300px; height:100%; background:white; z-index:99999; }';
+			document.head.appendChild( sheet );
+
+			var _this = this;
+			var html = '<div class="lg-cart-box position-absolute p-4"><i class="fas fa-shopping-cart"></i></div>';
+			this.core.outer.find('.lg-content').append( html );
+			this.cartbox = this.core.outer.find('.lg-cart-box');
+			window.setTimeout( function(){ _this.adjustBoxPosition(); }, 1000 );
+
+			$(window).on( 'resize', function(){
+				_this.adjustBoxPosition();
+			});
+
+			this.core.LGel.on( lGEvents.afterSlide, function( event, prevIndex, index ){
+				_this.core.currentIndex = index;
+				_this.updateBadge();
+			});
+
+			this.core.LGel.on( lGEvents.beforeSlide, function( event, prevIndex, index ){
+				_this.cartbox.css( 'display', 'none' );
+				_this.cartbox.removeClass('in-cart');
+			});
+
+			this.core.LGel.on( lGEvents.slideItemLoad, function(){
+				_this.updateBadge();
+			});
+
+			this.core.LGel.on( lGEvents.posterClick, function(){
+				_this.updateBadge();
+			});
+
+			this.core.outer.find('.lg-cart-box').first().on( 'click', function(){
+				var elm = $( '#' + _this.getAttribute('elementId') );
+				var url = elm.data('productlist');
+				if ( url ){
+					$('#add-to-cart').load( url, function(){
+						if ( $(this).find('form[name=anmeldung]').length ){
+							window.location.reload();
+							return;
+						}
+						$('#add-to-cart').modal('show');
+					});
+				}
+			});
+		};
+
+		Cart.prototype.updateBadge = function(){
+			var elm = $( '#' + this.getAttribute('elementId') );
+			if ( elm.hasClass('in-cart') ){
+				this.cartbox.addClass('in-cart');
+			}
+			this.adjustBoxPosition();
+			this.cartbox.css( 'display', 'block' );
+		}
+
+		Cart.prototype.adjustBoxPosition = function(){
+			var pos = this.core.outer.find('.lg-current .lg-image').offset();
+			var toolbarHeight = this.core.$toolbar.firstElement.offsetHeight;
+			if ( pos ){
+				this.cartbox.css( 'top', '' + ( pos.top - toolbarHeight ) + 'px' );
+				this.cartbox.css( 'right', '' + pos.left + 'px' );
+			}
+		}
+
+		Cart.prototype.getAttribute = function( prop ){
+			var index = this.core.index;
+			return this.core.galleryItems[ index ][ prop ];
+			//return this.core.$items.eq( index ).data( prop );
+		}
+
+		Cart.prototype.buy = function(){
+			var url = this.getAttribute('productList');
+			if ( url ) {
+				$('.modal-body').load( url, function(){
+					$('#add-to-cart').modal('show');
+				});
+			}
+		};
+		
+		Cart.prototype.showDialog = function(){
+			this.core.$outer.css( 'width', '' + ( this.core.$outer.width() - 300 ) + 'px' )
+			.find('.lg-sub-html').css( 'right', '300px' );
+			var _this2 = this;
+			var html = '<div class="lg-cart-dialog"><button>close</button></div>';
+			$('body').first().append( html );
+			$('.lg-cart-dialog').height( this.core.$outer.height() );
+			$('.lg-cart-dialog button').on( 'click', function(){
+				_this2.hideDialog();
+			});
+		}
+
+		Cart.prototype.hideDialog = function(){
+			this.core.$outer.css( 'width', '100%' )
+			.find('.lg-sub-html').css( 'right', '0' );
+			$('.lg-cart-dialog').remove();
+		}
+
+		Cart.prototype.destroy = function() {
+			this.hideDialog();
+			$('#add-to-cart').modal('hide');
+		};
+
+		return Cart;
+	}());
+
+	return Cart;
+})));
+
diff --git a/resources/lg-flagging.js b/resources/lg-flagging.js
new file mode 100644
index 0000000..28f784f
--- /dev/null
+++ b/resources/lg-flagging.js
@@ -0,0 +1,168 @@
+/*! lg-flagging - v0.9 - 2023-01-14
+* Copyright (c) 2023 Martin Wandelt */
+
+(function (global, factory) {
+	typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+	typeof define === 'function' && define.amd ? define(factory) :
+	(global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgFlagging = factory());
+}( this, ( function () { 'use strict';
+
+	var __assign = function() {
+		__assign = Object.assign || function __assign(t) {
+			for (var s, i = 1, n = arguments.length; i < n; i++) {
+				s = arguments[i];
+				for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+			}
+			return t;
+		};
+		return __assign.apply(this, arguments);
+	};
+
+	var flaggingSettings = {
+		flagging: true,
+		hideUnflaggedElements: false,
+	};
+
+	/**
+	* List of lightGallery events
+	* All events should be documented here
+	* Below interfaces are used to build the website documentations
+	* */
+	var lGEvents = {
+		afterAppendSlide: 'lgAfterAppendSlide',
+		init: 'lgInit',
+		hasVideo: 'lgHasVideo',
+		containerResize: 'lgContainerResize',
+		updateSlides: 'lgUpdateSlides',
+		afterAppendSubHtml: 'lgAfterAppendSubHtml',
+		beforeOpen: 'lgBeforeOpen',
+		afterOpen: 'lgAfterOpen',
+		slideItemLoad: 'lgSlideItemLoad',
+		beforeSlide: 'lgBeforeSlide',
+		afterSlide: 'lgAfterSlide',
+		posterClick: 'lgPosterClick',
+		dragStart: 'lgDragStart',
+		dragMove: 'lgDragMove',
+		dragEnd: 'lgDragEnd',
+		beforeNextSlide: 'lgBeforeNextSlide',
+		beforePrevSlide: 'lgBeforePrevSlide',
+		beforeClose: 'lgBeforeClose',
+		afterClose: 'lgAfterClose',
+		rotateLeft: 'lgRotateLeft',
+		rotateRight: 'lgRotateRight',
+		flipHorizontal: 'lgFlipHorizontal',
+		flipVertical: 'lgFlipVertical',
+		autoplay: 'lgAutoplay',
+		autoplayStart: 'lgAutoplayStart',
+		autoplayStop: 'lgAutoplayStop',
+	};
+
+	var Flagging = ( function( element ){
+
+		function Flagging( instance, $LG ) {
+			// get lightGallery core plugin instance
+			this.core = instance;
+			this.$LG = $LG;
+			this.settings = __assign(__assign({}, flaggingSettings), this.core.settings);
+			return this;
+		}
+
+		Flagging.prototype.init = function() {
+
+			if ( ! this.settings.flagging ) {
+				return;
+			}
+
+			var sheet = document.createElement('style')
+			sheet.innerHTML = 
+				'.lg-flagging-box { position:absolute; top:5px; left:9px; cursor:pointer; z-index:9999 } ' +
+				'.lg-flagging-box i { color:white; opacity:0.6; text-shadow: 0 0 1em #888, 0 0 0.2em #888; font-size: 1.75rem } ' +
+				'.lg-flagging-box.flagged i { font-weight:900; color:yellow; opacity:0.9; text-shadow: 1px 1px 2px black, 0 0 1em grey, 0 0 0.2em grey; } ' +
+				'.lg-flagging-box:hover i { opacity:1; text-shadow: 1px 1px 2px black, 0 0 1em grey, 0 0 0.2em grey; } ' +
+				'.lg-flagging-box.flagged:hover i { text-shadow: 1px 1px 2px black, 0 0 1em black, 0 0 0.2em black; }';
+			document.head.appendChild( sheet );
+
+			var _this = this;
+			var html = '<div class="lg-flagging-box position-absolute p-4"><i class="far fa-heart"></i></div>';
+			this.core.outer.find('.lg-content').append( html );
+			this.flaggingbox = this.core.outer.find('.lg-flagging-box');
+			window.setTimeout( function(){ _this.adjustBoxPosition(); }, 1000 );
+
+			$(window).on( 'resize', function(){
+				_this.adjustBoxPosition();
+			});
+
+			this.core.LGel.on( lGEvents.afterSlide, function( event, prevIndex, index ){
+				_this.core.currentIndex = index;
+				_this.updateFlag();
+			});
+
+			this.core.LGel.on( lGEvents.beforeSlide, function( event, prevIndex, index ){
+				_this.flaggingbox.css( 'display', 'none' );
+				_this.flaggingbox.removeClass('flagged');
+			});
+
+			this.core.LGel.on( lGEvents.slideItemLoad, function(){
+				_this.updateFlag();
+			});
+
+			this.core.LGel.on( lGEvents.posterClick, function(){
+				_this.updateFlag();
+			});
+
+			this.core.outer.find('.lg-flagging-box').first().on( 'click', function(){
+				var url = $(this).hasClass('flagged') ? urlLightboxRemove : urlLightboxAdd;
+				var elm = $( '#' + _this.getAttribute('elementId') );
+				var id = elm.data('id');
+				$.get( url + '&amp;vtid=' + id, function( data ){
+					if ( data.indexOf( '|' ) != -1 ){
+						var html = $.parseHTML( data );
+						if ( $(html).find('form[name=anmeldung]').length ){
+							window.location.reload();
+							return;
+						}
+						var parts = data.split('|');
+						parts[3] > 0 ? $('.lbcount').text( parts[3] ).parents('li').show() : $('.lbcount').parents('li').hide();
+						$('.lg-flagging-box').toggleClass('flagged');
+						elm.toggleClass('flagged');
+						if ( _this.settings.hideUnflaggedElements ){
+							elm.hasClass('flagged') ? elm.show() : elm.hide();
+						}
+					}
+				});
+			});
+		};
+
+		Flagging.prototype.updateFlag = function(){
+			var elm = $( '#' + this.getAttribute('elementId') );
+			if ( elm.hasClass('flagged') ){
+				this.flaggingbox.addClass('flagged');
+			}
+			this.adjustBoxPosition();
+			this.flaggingbox.css( 'display', 'block' );
+		}
+
+		Flagging.prototype.adjustBoxPosition = function(){
+			var pos = this.core.outer.find('.lg-current .lg-image').offset();
+			var toolbarHeight = this.core.$toolbar.firstElement.offsetHeight;
+			if ( pos ){
+				this.flaggingbox.css( 'top', '' + ( pos.top - toolbarHeight ) + 'px' );
+				this.flaggingbox.css( 'left', '' + pos.left + 'px' );
+			}
+		}
+
+		Flagging.prototype.getAttribute = function( prop ){
+			var index = this.core.index;
+			return this.core.galleryItems[ index ][ prop ];
+			//return this.core.$items.eq( index ).data( prop );
+		}
+
+		Flagging.prototype.destroy = function() {
+		};
+
+		return Flagging;
+	}());
+
+	return Flagging;
+})));
+
diff --git a/resources/lightgallery/css/lg-autoplay.css b/resources/lightgallery/css/lg-autoplay.css
new file mode 100644
index 0000000..b9cc907
--- /dev/null
+++ b/resources/lightgallery/css/lg-autoplay.css
@@ -0,0 +1,42 @@
+.lg-progress-bar {
+  background-color: #333;
+  height: 5px;
+  left: 0;
+  position: absolute;
+  top: 0;
+  width: 100%;
+  z-index: 1083;
+  opacity: 0;
+  will-change: opacity;
+  -webkit-transition: opacity 0.08s ease 0s;
+  -moz-transition: opacity 0.08s ease 0s;
+  -o-transition: opacity 0.08s ease 0s;
+  transition: opacity 0.08s ease 0s;
+}
+
+.lg-progress-bar .lg-progress {
+  background-color: #a90707;
+  height: 5px;
+  width: 0;
+}
+
+.lg-progress-bar.lg-start .lg-progress {
+  width: 100%;
+}
+
+.lg-show-autoplay .lg-progress-bar {
+  opacity: 1;
+}
+
+.lg-autoplay-button:after {
+  content: '\e01d';
+}
+
+.lg-show-autoplay .lg-autoplay-button:after {
+  content: '\e01a';
+}
+
+.lg-single-item .lg-autoplay-button {
+  opacity: 0.75;
+  pointer-events: none;
+}
diff --git a/resources/lightgallery/css/lg-comments.css b/resources/lightgallery/css/lg-comments.css
new file mode 100644
index 0000000..67b2085
--- /dev/null
+++ b/resources/lightgallery/css/lg-comments.css
@@ -0,0 +1,132 @@
+.lg-comment-box {
+  width: 420px;
+  max-width: 100%;
+  position: absolute;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  z-index: 9999;
+  background-color: #fff;
+  will-change: transform;
+  -moz-transform: translate3d(100%, 0, 0);
+  -o-transform: translate3d(100%, 0, 0);
+  -ms-transform: translate3d(100%, 0, 0);
+  -webkit-transform: translate3d(100%, 0, 0);
+  transform: translate3d(100%, 0, 0);
+  -webkit-transition: -webkit-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+}
+
+.lg-comment-box .lg-comment-title {
+  margin: 0;
+  color: #fff;
+  font-size: 18px;
+}
+
+.lg-comment-box .lg-comment-header {
+  background-color: #000;
+  padding: 12px 20px;
+  position: absolute;
+  left: 0;
+  right: 0;
+  top: 0;
+}
+
+.lg-comment-box .lg-comment-body {
+  height: 100% !important;
+  padding-top: 43px !important;
+  width: 100% !important;
+}
+
+.lg-comment-box .fb-comments {
+  height: 100%;
+  width: 100%;
+  background: url("../images/loading.gif") no-repeat scroll center center #fff;
+  overflow-y: auto;
+  display: inline-block;
+}
+
+.lg-comment-box .fb-comments[fb-xfbml-state='rendered'] {
+  background-image: none;
+}
+
+.lg-comment-box .fb-comments > span {
+  max-width: 100%;
+}
+
+.lg-comment-box .lg-comment-close {
+  position: absolute;
+  right: 5px;
+  top: 12px;
+  cursor: pointer;
+  font-size: 20px;
+  color: #999;
+  will-change: color;
+  -webkit-transition: color 0.2s linear;
+  -o-transition: color 0.2s linear;
+  transition: color 0.2s linear;
+}
+
+.lg-comment-box .lg-comment-close:hover {
+  color: #fff;
+}
+
+.lg-comment-box .lg-comment-close:after {
+  content: '\e070';
+}
+
+.lg-comment-box iframe {
+  max-width: 100% !important;
+  width: 100% !important;
+}
+
+.lg-comment-box #disqus_thread {
+  padding: 0 20px;
+}
+
+.lg-outer .lg-comment-overlay {
+  background-color: rgba(0, 0, 0, 0.25);
+  bottom: 0;
+  cursor: default;
+  left: 0;
+  position: fixed;
+  right: 0;
+  top: 0;
+  z-index: 1081;
+  opacity: 0;
+  visibility: hidden;
+  will-change: visibility, opacity;
+  -webkit-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+  -o-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+  transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+}
+
+.lg-outer .lg-comment-toggle:after {
+  content: '\e908';
+}
+
+.lg-outer.lg-comment-active .lg-comment-overlay {
+  -webkit-transition-delay: 0s;
+  transition-delay: 0s;
+  -moz-transform: translate3d(0, 0px, 0);
+  -o-transform: translate3d(0, 0px, 0);
+  -ms-transform: translate3d(0, 0px, 0);
+  -webkit-transform: translate3d(0, 0px, 0);
+  transform: translate3d(0, 0px, 0);
+  opacity: 1;
+  visibility: visible;
+}
+
+.lg-outer.lg-comment-active .lg-comment-toggle {
+  color: #fff;
+}
+
+.lg-outer.lg-comment-active .lg-comment-box {
+  -moz-transform: translate3d(0, 0, 0);
+  -o-transform: translate3d(0, 0, 0);
+  -ms-transform: translate3d(0, 0, 0);
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+}
diff --git a/resources/lightgallery/css/lg-fb-comment-box.css b/resources/lightgallery/css/lg-fb-comment-box.css
deleted file mode 100644
index f4ab9c3..0000000
--- a/resources/lightgallery/css/lg-fb-comment-box.css
+++ /dev/null
@@ -1,57 +0,0 @@
-/*! lightgallery - v1.6.12 - 2019-02-19
-* http://sachinchoolur.github.io/lightGallery/
-* Copyright (c) 2019 Sachin N; Licensed GPLv3 */
-.lg-outer.fb-comments .lg-img-wrap, .lg-outer.fb-comments .lg-video-cont {
-  padding-right: 400px !important;
-}
-
-.lg-outer.fb-comments .fb-comments {
-  height: 100%;
-  overflow-y: auto;
-  position: absolute;
-  right: 0;
-  top: 0;
-  width: 420px;
-  z-index: 99999;
-  background: #fff url("../img/loading.gif") no-repeat scroll center center;
-}
-
-.lg-outer.fb-comments .fb-comments.fb_iframe_widget {
-  background-image: none;
-}
-
-.lg-outer.fb-comments .fb-comments.fb_iframe_widget.fb_iframe_widget_loader {
-  background: #fff url("../img/loading.gif") no-repeat scroll center center;
-}
-
-.lg-outer.fb-comments .lg-toolbar {
-  right: 420px;
-  width: auto;
-}
-
-.lg-outer.fb-comments .lg-actions .lg-next {
-  right: 420px;
-}
-
-.lg-outer.fb-comments .lg-item {
-  background-image: none;
-}
-
-.lg-outer.fb-comments .lg-item.lg-complete .lg-img-wrap, .lg-outer.fb-comments .lg-item.lg-complete .lg-video-cont {
-  background-image: none;
-}
-
-.lg-outer.fb-comments .lg-img-wrap, .lg-outer.fb-comments .lg-video-cont {
-  background: url("../img/loading.gif") no-repeat scroll transparent;
-  background-position: center center;
-  background-position: calc((100% - 400px) / 2) center;
-}
-
-.lg-outer.fb-comments .lg-sub-html {
-  padding: 0;
-  position: static;
-}
-
-.lg-outer.fb-comments .lg-video-cont {
-  max-width: 1250px !important;
-}
diff --git a/resources/lightgallery/css/lg-fb-comment-box.min.css b/resources/lightgallery/css/lg-fb-comment-box.min.css
deleted file mode 100644
index 8d0f9ac..0000000
--- a/resources/lightgallery/css/lg-fb-comment-box.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.lg-outer.fb-comments .fb-comments{height:100%;overflow-y:auto;position:absolute;right:0;top:0;width:420px;z-index:99999;background:url(../img/loading.gif) center center no-repeat #fff}.lg-outer.fb-comments .fb-comments.fb_iframe_widget{background-image:none}.lg-outer.fb-comments .fb-comments.fb_iframe_widget.fb_iframe_widget_loader{background:url(../img/loading.gif) center center no-repeat #fff}.lg-outer.fb-comments .lg-toolbar{right:420px;width:auto}.lg-outer.fb-comments .lg-actions .lg-next{right:420px}.lg-outer.fb-comments .lg-item,.lg-outer.fb-comments .lg-item.lg-complete .lg-img-wrap,.lg-outer.fb-comments .lg-item.lg-complete .lg-video-cont{background-image:none}.lg-outer.fb-comments .lg-img-wrap,.lg-outer.fb-comments .lg-video-cont{padding-right:400px!important;background:url(../img/loading.gif) center center no-repeat;background-position:calc((100% - 400px)/ 2) center}.lg-outer.fb-comments .lg-sub-html{padding:0;position:static}.lg-outer.fb-comments .lg-video-cont{max-width:1250px!important}
\ No newline at end of file
diff --git a/resources/lightgallery/css/lg-fullscreen.css b/resources/lightgallery/css/lg-fullscreen.css
new file mode 100644
index 0000000..e95898a
--- /dev/null
+++ b/resources/lightgallery/css/lg-fullscreen.css
@@ -0,0 +1,7 @@
+.lg-fullscreen:after {
+  content: "\e20c";
+}
+
+.lg-fullscreen-on .lg-fullscreen:after {
+  content: "\e20d";
+}
diff --git a/resources/lightgallery/css/lg-medium-zoom.css b/resources/lightgallery/css/lg-medium-zoom.css
new file mode 100644
index 0000000..62066bc
--- /dev/null
+++ b/resources/lightgallery/css/lg-medium-zoom.css
@@ -0,0 +1,15 @@
+.lg-medium-zoom-item {
+  cursor: zoom-in;
+}
+
+.lg-medium-zoom .lg-outer {
+  cursor: zoom-out;
+}
+
+.lg-medium-zoom .lg-outer.lg-grab img.lg-object {
+  cursor: zoom-out;
+}
+
+.lg-medium-zoom .lg-outer.lg-grabbing img.lg-object {
+  cursor: zoom-out;
+}
diff --git a/resources/lightgallery/css/lg-pager.css b/resources/lightgallery/css/lg-pager.css
new file mode 100644
index 0000000..d76b48a
--- /dev/null
+++ b/resources/lightgallery/css/lg-pager.css
@@ -0,0 +1,90 @@
+.lg-outer .lg-pager-outer {
+  text-align: center;
+  z-index: 1080;
+  height: 10px;
+  margin-bottom: 10px;
+}
+
+.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont {
+  overflow: visible;
+}
+
+.lg-outer.lg-single-item .lg-pager-outer {
+  display: none;
+}
+
+.lg-outer .lg-pager-cont {
+  cursor: pointer;
+  display: inline-block;
+  overflow: hidden;
+  position: relative;
+  vertical-align: top;
+  margin: 0 5px;
+}
+
+.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont {
+  opacity: 1;
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+}
+
+.lg-outer .lg-pager-cont.lg-pager-active .lg-pager {
+  box-shadow: 0 0 0 2px white inset;
+}
+
+.lg-outer .lg-pager-thumb-cont {
+  background-color: #fff;
+  color: #fff;
+  bottom: 100%;
+  height: 83px;
+  left: 0;
+  margin-bottom: 20px;
+  margin-left: -60px;
+  opacity: 0;
+  padding: 5px;
+  position: absolute;
+  width: 120px;
+  border-radius: 3px;
+  will-change: transform, opacity;
+  -webkit-transition: opacity 0.15s ease 0s, -webkit-transform 0.15s ease 0s;
+  -moz-transition: opacity 0.15s ease 0s, -moz-transform 0.15s ease 0s;
+  -o-transition: opacity 0.15s ease 0s, -o-transform 0.15s ease 0s;
+  transition: opacity 0.15s ease 0s, transform 0.15s ease 0s;
+  -webkit-transform: translate3d(0, 5px, 0);
+  transform: translate3d(0, 5px, 0);
+}
+
+.lg-outer .lg-pager-thumb-cont img {
+  width: 100%;
+  height: 100%;
+}
+
+.lg-outer .lg-pager {
+  background-color: rgba(255, 255, 255, 0.5);
+  border-radius: 50%;
+  box-shadow: 0 0 0 8px rgba(255, 255, 255, 0.7) inset;
+  display: block;
+  height: 12px;
+  -webkit-transition: box-shadow 0.3s ease 0s;
+  -o-transition: box-shadow 0.3s ease 0s;
+  transition: box-shadow 0.3s ease 0s;
+  width: 12px;
+}
+
+.lg-outer .lg-pager:hover, .lg-outer .lg-pager:focus {
+  box-shadow: 0 0 0 8px white inset;
+}
+
+.lg-outer .lg-caret {
+  border-left: 10px solid transparent;
+  border-right: 10px solid transparent;
+  border-top: 10px dashed;
+  bottom: -10px;
+  display: inline-block;
+  height: 0;
+  left: 50%;
+  margin-left: -5px;
+  position: absolute;
+  vertical-align: middle;
+  width: 0;
+}
diff --git a/resources/lightgallery/css/lg-relative-caption.css b/resources/lightgallery/css/lg-relative-caption.css
new file mode 100644
index 0000000..971456b
--- /dev/null
+++ b/resources/lightgallery/css/lg-relative-caption.css
@@ -0,0 +1,16 @@
+.lg-relative-caption .lg-outer .lg-sub-html {
+  white-space: normal;
+  bottom: auto;
+  padding: 0;
+  background-image: none;
+}
+
+.lg-relative-caption .lg-outer .lg-relative-caption-item {
+  opacity: 0;
+  padding: 16px 0;
+  transition: 0.5s opacity ease;
+}
+
+.lg-relative-caption .lg-outer .lg-show-caption .lg-relative-caption-item {
+  opacity: 1;
+}
diff --git a/resources/lightgallery/css/lg-rotate.css b/resources/lightgallery/css/lg-rotate.css
new file mode 100644
index 0000000..080d00e
--- /dev/null
+++ b/resources/lightgallery/css/lg-rotate.css
@@ -0,0 +1,49 @@
+.lg-outer .lg-img-rotate {
+  position: absolute;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  -webkit-transition: -webkit-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+}
+
+.lg-outer[data-lg-slide-type='video'] .lg-rotate-left,
+.lg-outer[data-lg-slide-type='video'] .lg-rotate-right,
+.lg-outer[data-lg-slide-type='video'] .lg-flip-ver,
+.lg-outer[data-lg-slide-type='video'] .lg-flip-hor, .lg-outer[data-lg-slide-type='iframe'] .lg-rotate-left,
+.lg-outer[data-lg-slide-type='iframe'] .lg-rotate-right,
+.lg-outer[data-lg-slide-type='iframe'] .lg-flip-ver,
+.lg-outer[data-lg-slide-type='iframe'] .lg-flip-hor {
+  opacity: 0.75;
+  pointer-events: none;
+}
+
+.lg-outer .lg-img-rotate:before {
+  content: '';
+  display: inline-block;
+  height: 100%;
+  vertical-align: middle;
+}
+
+.lg-rotate-left:after {
+  content: '\e900';
+}
+
+.lg-rotate-right:after {
+  content: '\e901';
+}
+
+.lg-icon.lg-flip-hor, .lg-icon.lg-flip-ver {
+  font-size: 26px;
+}
+
+.lg-flip-ver:after {
+  content: '\e903';
+}
+
+.lg-flip-hor:after {
+  content: '\e902';
+}
diff --git a/resources/lightgallery/css/lg-share.css b/resources/lightgallery/css/lg-share.css
new file mode 100644
index 0000000..ea2c2cd
--- /dev/null
+++ b/resources/lightgallery/css/lg-share.css
@@ -0,0 +1,143 @@
+.lg-outer .lg-dropdown-overlay {
+  background-color: rgba(0, 0, 0, 0.25);
+  bottom: 0;
+  cursor: default;
+  left: 0;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 1081;
+  opacity: 0;
+  visibility: hidden;
+  will-change: visibility, opacity;
+  -webkit-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+  -o-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+  transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+}
+
+.lg-outer.lg-dropdown-active .lg-dropdown,
+.lg-outer.lg-dropdown-active .lg-dropdown-overlay {
+  -webkit-transition-delay: 0s;
+  transition-delay: 0s;
+  -moz-transform: translate3d(0, 0px, 0);
+  -o-transform: translate3d(0, 0px, 0);
+  -ms-transform: translate3d(0, 0px, 0);
+  -webkit-transform: translate3d(0, 0px, 0);
+  transform: translate3d(0, 0px, 0);
+  opacity: 1;
+  visibility: visible;
+}
+
+.lg-outer.lg-dropdown-active .lg-share {
+  color: #fff;
+}
+
+.lg-outer .lg-dropdown {
+  background-color: #fff;
+  border-radius: 2px;
+  font-size: 14px;
+  list-style-type: none;
+  margin: 0;
+  padding: 10px 0;
+  position: absolute;
+  right: 0;
+  text-align: left;
+  top: 50px;
+  opacity: 0;
+  visibility: hidden;
+  -moz-transform: translate3d(0, 5px, 0);
+  -o-transform: translate3d(0, 5px, 0);
+  -ms-transform: translate3d(0, 5px, 0);
+  -webkit-transform: translate3d(0, 5px, 0);
+  transform: translate3d(0, 5px, 0);
+  will-change: visibility, opacity, transform;
+  -webkit-transition: -webkit-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
+  -moz-transition: -moz-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
+  -o-transition: -o-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
+  transition: transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
+}
+
+.lg-outer .lg-dropdown:after {
+  content: '';
+  display: block;
+  height: 0;
+  width: 0;
+  position: absolute;
+  border: 8px solid transparent;
+  border-bottom-color: #fff;
+  right: 16px;
+  top: -16px;
+}
+
+.lg-outer .lg-dropdown > li:last-child {
+  margin-bottom: 0px;
+}
+
+.lg-outer .lg-dropdown > li:hover a {
+  color: #333;
+}
+
+.lg-outer .lg-dropdown a {
+  color: #333;
+  display: block;
+  white-space: pre;
+  padding: 4px 12px;
+  font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+  font-size: 12px;
+}
+
+.lg-outer .lg-dropdown a:hover {
+  background-color: rgba(0, 0, 0, 0.07);
+}
+
+.lg-outer .lg-dropdown .lg-dropdown-text {
+  display: inline-block;
+  line-height: 1;
+  margin-top: -3px;
+  vertical-align: middle;
+}
+
+.lg-outer .lg-dropdown .lg-icon {
+  color: #333;
+  display: inline-block;
+  float: none;
+  font-size: 20px;
+  height: auto;
+  line-height: 1;
+  margin-right: 8px;
+  padding: 0;
+  vertical-align: middle;
+  width: auto;
+}
+
+.lg-outer .lg-share {
+  position: relative;
+}
+
+.lg-outer .lg-share:after {
+  content: '\e80d';
+}
+
+.lg-outer .lg-share-facebook .lg-icon {
+  color: #3b5998;
+}
+
+.lg-outer .lg-share-facebook .lg-icon:after {
+  content: '\e904';
+}
+
+.lg-outer .lg-share-twitter .lg-icon {
+  color: #00aced;
+}
+
+.lg-outer .lg-share-twitter .lg-icon:after {
+  content: '\e907';
+}
+
+.lg-outer .lg-share-pinterest .lg-icon {
+  color: #cb2027;
+}
+
+.lg-outer .lg-share-pinterest .lg-icon:after {
+  content: '\e906';
+}
diff --git a/resources/lightgallery/css/lg-thumbnail.css b/resources/lightgallery/css/lg-thumbnail.css
new file mode 100644
index 0000000..bd203c5
--- /dev/null
+++ b/resources/lightgallery/css/lg-thumbnail.css
@@ -0,0 +1,108 @@
+.lg-outer .lg-thumb-outer {
+  background-color: #0d0a0a;
+  width: 100%;
+  max-height: 350px;
+  overflow: hidden;
+  float: left;
+}
+
+.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item {
+  cursor: -webkit-grab;
+  cursor: -moz-grab;
+  cursor: -o-grab;
+  cursor: -ms-grab;
+  cursor: grab;
+}
+
+.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item {
+  cursor: move;
+  cursor: -webkit-grabbing;
+  cursor: -moz-grabbing;
+  cursor: -o-grabbing;
+  cursor: -ms-grabbing;
+  cursor: grabbing;
+}
+
+.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
+}
+
+.lg-outer .lg-thumb-outer.lg-rebuilding-thumbnails .lg-thumb {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
+}
+
+.lg-outer .lg-thumb-outer.lg-thumb-align-middle {
+  text-align: center;
+}
+
+.lg-outer .lg-thumb-outer.lg-thumb-align-left {
+  text-align: left;
+}
+
+.lg-outer .lg-thumb-outer.lg-thumb-align-right {
+  text-align: right;
+}
+
+.lg-outer.lg-single-item .lg-thumb-outer {
+  display: none;
+}
+
+.lg-outer .lg-thumb {
+  padding: 5px 0;
+  height: 100%;
+  margin-bottom: -5px;
+  display: inline-block;
+  vertical-align: middle;
+}
+
+@media (min-width: 768px) {
+  .lg-outer .lg-thumb {
+    padding: 10px 0;
+  }
+}
+
+.lg-outer .lg-thumb-item {
+  cursor: pointer;
+  float: left;
+  overflow: hidden;
+  height: 100%;
+  border-radius: 2px;
+  margin-bottom: 5px;
+  will-change: border-color;
+}
+
+@media (min-width: 768px) {
+  .lg-outer .lg-thumb-item {
+    border-radius: 4px;
+    border: 2px solid #fff;
+    -webkit-transition: border-color 0.25s ease;
+    -o-transition: border-color 0.25s ease;
+    transition: border-color 0.25s ease;
+  }
+}
+
+.lg-outer .lg-thumb-item.active, .lg-outer .lg-thumb-item:hover {
+  border-color: #a90707;
+}
+
+.lg-outer .lg-thumb-item img {
+  width: 100%;
+  height: 100%;
+  object-fit: cover;
+  display: block;
+}
+
+.lg-outer.lg-can-toggle .lg-item {
+  padding-bottom: 0;
+}
+
+.lg-outer .lg-toggle-thumb:after {
+  content: '\e1ff';
+}
+
+.lg-outer.lg-animate-thumb .lg-thumb {
+  -webkit-transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+}
diff --git a/resources/lightgallery/css/lg-transitions.css b/resources/lightgallery/css/lg-transitions.css
index 0ca99f7..d715e3b 100644
--- a/resources/lightgallery/css/lg-transitions.css
+++ b/resources/lightgallery/css/lg-transitions.css
@@ -1,779 +1,959 @@
-/*! lightgallery - v1.6.12 - 2019-02-19
-* http://sachinchoolur.github.io/lightGallery/
-* Copyright (c) 2019 Sachin N; Licensed GPLv3 */
 .lg-css3.lg-zoom-in .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-zoom-in .lg-item.lg-prev-slide {
-    -webkit-transform: scale3d(1.3, 1.3, 1.3);
-    transform: scale3d(1.3, 1.3, 1.3); }
-  .lg-css3.lg-zoom-in .lg-item.lg-next-slide {
-    -webkit-transform: scale3d(1.3, 1.3, 1.3);
-    transform: scale3d(1.3, 1.3, 1.3); }
-  .lg-css3.lg-zoom-in .lg-item.lg-current {
-    -webkit-transform: scale3d(1, 1, 1);
-    transform: scale3d(1, 1, 1);
-    opacity: 1; }
-  .lg-css3.lg-zoom-in .lg-item.lg-prev-slide, .lg-css3.lg-zoom-in .lg-item.lg-next-slide, .lg-css3.lg-zoom-in .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
-.lg-css3.lg-zoom-in-big .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-zoom-in-big .lg-item.lg-prev-slide {
-    -webkit-transform: scale3d(2, 2, 2);
-    transform: scale3d(2, 2, 2); }
-  .lg-css3.lg-zoom-in-big .lg-item.lg-next-slide {
-    -webkit-transform: scale3d(2, 2, 2);
-    transform: scale3d(2, 2, 2); }
-  .lg-css3.lg-zoom-in-big .lg-item.lg-current {
-    -webkit-transform: scale3d(1, 1, 1);
-    transform: scale3d(1, 1, 1);
-    opacity: 1; }
-  .lg-css3.lg-zoom-in-big .lg-item.lg-prev-slide, .lg-css3.lg-zoom-in-big .lg-item.lg-next-slide, .lg-css3.lg-zoom-in-big .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
-.lg-css3.lg-zoom-out .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-zoom-out .lg-item.lg-prev-slide {
-    -webkit-transform: scale3d(0.7, 0.7, 0.7);
-    transform: scale3d(0.7, 0.7, 0.7); }
-  .lg-css3.lg-zoom-out .lg-item.lg-next-slide {
-    -webkit-transform: scale3d(0.7, 0.7, 0.7);
-    transform: scale3d(0.7, 0.7, 0.7); }
-  .lg-css3.lg-zoom-out .lg-item.lg-current {
-    -webkit-transform: scale3d(1, 1, 1);
-    transform: scale3d(1, 1, 1);
-    opacity: 1; }
-  .lg-css3.lg-zoom-out .lg-item.lg-prev-slide, .lg-css3.lg-zoom-out .lg-item.lg-next-slide, .lg-css3.lg-zoom-out .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
-.lg-css3.lg-zoom-out-big .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-zoom-out-big .lg-item.lg-prev-slide {
-    -webkit-transform: scale3d(0, 0, 0);
-    transform: scale3d(0, 0, 0); }
-  .lg-css3.lg-zoom-out-big .lg-item.lg-next-slide {
-    -webkit-transform: scale3d(0, 0, 0);
-    transform: scale3d(0, 0, 0); }
-  .lg-css3.lg-zoom-out-big .lg-item.lg-current {
-    -webkit-transform: scale3d(1, 1, 1);
-    transform: scale3d(1, 1, 1);
-    opacity: 1; }
-  .lg-css3.lg-zoom-out-big .lg-item.lg-prev-slide, .lg-css3.lg-zoom-out-big .lg-item.lg-next-slide, .lg-css3.lg-zoom-out-big .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
-.lg-css3.lg-zoom-out-in .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-zoom-out-in .lg-item.lg-prev-slide {
-    -webkit-transform: scale3d(0, 0, 0);
-    transform: scale3d(0, 0, 0); }
-  .lg-css3.lg-zoom-out-in .lg-item.lg-next-slide {
-    -webkit-transform: scale3d(2, 2, 2);
-    transform: scale3d(2, 2, 2); }
-  .lg-css3.lg-zoom-out-in .lg-item.lg-current {
-    -webkit-transform: scale3d(1, 1, 1);
-    transform: scale3d(1, 1, 1);
-    opacity: 1; }
-  .lg-css3.lg-zoom-out-in .lg-item.lg-prev-slide, .lg-css3.lg-zoom-out-in .lg-item.lg-next-slide, .lg-css3.lg-zoom-out-in .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
-.lg-css3.lg-zoom-in-out .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-zoom-in-out .lg-item.lg-prev-slide {
-    -webkit-transform: scale3d(2, 2, 2);
-    transform: scale3d(2, 2, 2); }
-  .lg-css3.lg-zoom-in-out .lg-item.lg-next-slide {
-    -webkit-transform: scale3d(0, 0, 0);
-    transform: scale3d(0, 0, 0); }
-  .lg-css3.lg-zoom-in-out .lg-item.lg-current {
-    -webkit-transform: scale3d(1, 1, 1);
-    transform: scale3d(1, 1, 1);
-    opacity: 1; }
-  .lg-css3.lg-zoom-in-out .lg-item.lg-prev-slide, .lg-css3.lg-zoom-in-out .lg-item.lg-next-slide, .lg-css3.lg-zoom-in-out .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
-.lg-css3.lg-soft-zoom .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-soft-zoom .lg-item.lg-prev-slide {
-    -webkit-transform: scale3d(1.1, 1.1, 1.1);
-    transform: scale3d(1.1, 1.1, 1.1); }
-  .lg-css3.lg-soft-zoom .lg-item.lg-next-slide {
-    -webkit-transform: scale3d(0.9, 0.9, 0.9);
-    transform: scale3d(0.9, 0.9, 0.9); }
-  .lg-css3.lg-soft-zoom .lg-item.lg-current {
-    -webkit-transform: scale3d(1, 1, 1);
-    transform: scale3d(1, 1, 1);
-    opacity: 1; }
-  .lg-css3.lg-soft-zoom .lg-item.lg-prev-slide, .lg-css3.lg-soft-zoom .lg-item.lg-next-slide, .lg-css3.lg-soft-zoom .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
+  opacity: 0;
+}
+
+.lg-css3.lg-zoom-in .lg-item.lg-prev-slide {
+  -webkit-transform: scale3d(1.3, 1.3, 1.3);
+  transform: scale3d(1.3, 1.3, 1.3);
+}
+
+.lg-css3.lg-zoom-in .lg-item.lg-next-slide {
+  -webkit-transform: scale3d(1.3, 1.3, 1.3);
+  transform: scale3d(1.3, 1.3, 1.3);
+}
+
+.lg-css3.lg-zoom-in .lg-item.lg-current {
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  opacity: 1;
+}
+
+.lg-css3.lg-zoom-in .lg-item.lg-prev-slide, .lg-css3.lg-zoom-in .lg-item.lg-next-slide, .lg-css3.lg-zoom-in .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+}
+
+.lg-css3.lg-lollipop-rev .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-lollipop-rev .lg-item.lg-prev-slide {
+  -moz-transform: translate3d(0, 0, 0) scale(0.5);
+  -o-transform: translate3d(0, 0, 0) scale(0.5);
+  -ms-transform: translate3d(0, 0, 0) scale(0.5);
+  -webkit-transform: translate3d(0, 0, 0) scale(0.5);
+  transform: translate3d(0, 0, 0) scale(0.5);
+}
+
+.lg-css3.lg-lollipop-rev .lg-item.lg-next-slide {
+  -webkit-transform: translate3d(100%, 0, 0);
+  transform: translate3d(100%, 0, 0);
+}
+
+.lg-css3.lg-lollipop-rev .lg-item.lg-current {
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+  opacity: 1;
+}
+
+.lg-css3.lg-lollipop-rev .lg-item.lg-prev-slide, .lg-css3.lg-lollipop-rev .lg-item.lg-next-slide, .lg-css3.lg-lollipop-rev .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-slide-skew-ver-cross .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-prev-slide {
+  -moz-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px);
+  -o-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px);
+  -ms-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px);
+  -webkit-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px);
+  transform: skew(0deg, 20deg) translate3d(0, -100%, 0px);
+}
+
+.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-next-slide {
+  -moz-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px);
+  -o-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px);
+  -ms-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px);
+  -webkit-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px);
+  transform: skew(0deg, 20deg) translate3d(0, 100%, 0px);
+}
+
+.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver-cross .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver-cross .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-lollipop .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-lollipop .lg-item.lg-prev-slide {
+  -webkit-transform: translate3d(-100%, 0, 0);
+  transform: translate3d(-100%, 0, 0);
+}
+
+.lg-css3.lg-lollipop .lg-item.lg-next-slide {
+  -moz-transform: translate3d(0, 0, 0) scale(0.5);
+  -o-transform: translate3d(0, 0, 0) scale(0.5);
+  -ms-transform: translate3d(0, 0, 0) scale(0.5);
+  -webkit-transform: translate3d(0, 0, 0) scale(0.5);
+  transform: translate3d(0, 0, 0) scale(0.5);
+}
+
+.lg-css3.lg-lollipop .lg-item.lg-current {
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+  opacity: 1;
+}
+
+.lg-css3.lg-lollipop .lg-item.lg-prev-slide, .lg-css3.lg-lollipop .lg-item.lg-next-slide, .lg-css3.lg-lollipop .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-slide-skew-ver-rev .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-prev-slide {
+  -moz-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px);
+  -o-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px);
+  -ms-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px);
+  -webkit-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px);
+  transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px);
+}
+
+.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-next-slide {
+  -moz-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px);
+  -o-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px);
+  -ms-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px);
+  -webkit-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px);
+  transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px);
+}
+
+.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver-rev .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-rotate-rev .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-rotate-rev .lg-item.lg-prev-slide {
+  -moz-transform: rotate(360deg);
+  -o-transform: rotate(360deg);
+  -ms-transform: rotate(360deg);
+  -webkit-transform: rotate(360deg);
+  transform: rotate(360deg);
+}
+
+.lg-css3.lg-rotate-rev .lg-item.lg-next-slide {
+  -moz-transform: rotate(-360deg);
+  -o-transform: rotate(-360deg);
+  -ms-transform: rotate(-360deg);
+  -webkit-transform: rotate(-360deg);
+  transform: rotate(-360deg);
+}
+
+.lg-css3.lg-rotate-rev .lg-item.lg-current {
+  -moz-transform: rotate(0deg);
+  -o-transform: rotate(0deg);
+  -ms-transform: rotate(0deg);
+  -webkit-transform: rotate(0deg);
+  transform: rotate(0deg);
+  opacity: 1;
+}
+
+.lg-css3.lg-rotate-rev .lg-item.lg-prev-slide, .lg-css3.lg-rotate-rev .lg-item.lg-next-slide, .lg-css3.lg-rotate-rev .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-slide-skew-ver .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew-ver .lg-item.lg-prev-slide {
+  -moz-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px);
+  -o-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px);
+  -ms-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px);
+  -webkit-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px);
+  transform: skew(60deg, 0deg) translate3d(0, -100%, 0px);
+}
+
+.lg-css3.lg-slide-skew-ver .lg-item.lg-next-slide {
+  -moz-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px);
+  -o-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px);
+  -ms-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px);
+  -webkit-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px);
+  transform: skew(60deg, 0deg) translate3d(0, 100%, 0px);
+}
+
+.lg-css3.lg-slide-skew-ver .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew-ver .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-rotate .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-rotate .lg-item.lg-prev-slide {
+  -moz-transform: rotate(-360deg);
+  -o-transform: rotate(-360deg);
+  -ms-transform: rotate(-360deg);
+  -webkit-transform: rotate(-360deg);
+  transform: rotate(-360deg);
+}
+
+.lg-css3.lg-rotate .lg-item.lg-next-slide {
+  -moz-transform: rotate(360deg);
+  -o-transform: rotate(360deg);
+  -ms-transform: rotate(360deg);
+  -webkit-transform: rotate(360deg);
+  transform: rotate(360deg);
+}
+
+.lg-css3.lg-rotate .lg-item.lg-current {
+  -moz-transform: rotate(0deg);
+  -o-transform: rotate(0deg);
+  -ms-transform: rotate(0deg);
+  -webkit-transform: rotate(0deg);
+  transform: rotate(0deg);
+  opacity: 1;
+}
+
+.lg-css3.lg-rotate .lg-item.lg-prev-slide, .lg-css3.lg-rotate .lg-item.lg-next-slide, .lg-css3.lg-rotate .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-slide-skew .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew .lg-item.lg-prev-slide {
+  -moz-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px);
+  -o-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px);
+  -ms-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px);
+  -webkit-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px);
+  transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px);
+}
+
+.lg-css3.lg-slide-skew .lg-item.lg-next-slide {
+  -moz-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px);
+  -o-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px);
+  -ms-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px);
+  -webkit-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px);
+  transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px);
+}
+
+.lg-css3.lg-slide-skew .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew .lg-item.lg-next-slide, .lg-css3.lg-slide-skew .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
 .lg-css3.lg-scale-up .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-scale-up .lg-item.lg-prev-slide {
-    -moz-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
-    -o-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
-    -ms-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
-    -webkit-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
-    transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); }
-  .lg-css3.lg-scale-up .lg-item.lg-next-slide {
-    -moz-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
-    -o-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
-    -ms-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
-    -webkit-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
-    transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0); }
-  .lg-css3.lg-scale-up .lg-item.lg-current {
-    -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-scale-up .lg-item.lg-prev-slide, .lg-css3.lg-scale-up .lg-item.lg-next-slide, .lg-css3.lg-scale-up .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
-.lg-css3.lg-slide-circular .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-circular .lg-item.lg-prev-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
-    transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0); }
-  .lg-css3.lg-slide-circular .lg-item.lg-next-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
-    transform: scale3d(0, 0, 0) translate3d(100%, 0, 0); }
-  .lg-css3.lg-slide-circular .lg-item.lg-current {
-    -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-slide-circular .lg-item.lg-prev-slide, .lg-css3.lg-slide-circular .lg-item.lg-next-slide, .lg-css3.lg-slide-circular .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
-.lg-css3.lg-slide-circular-up .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-circular-up .lg-item.lg-prev-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(-100%, -100%, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(-100%, -100%, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(-100%, -100%, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(-100%, -100%, 0);
-    transform: scale3d(0, 0, 0) translate3d(-100%, -100%, 0); }
-  .lg-css3.lg-slide-circular-up .lg-item.lg-next-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(100%, -100%, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(100%, -100%, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(100%, -100%, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(100%, -100%, 0);
-    transform: scale3d(0, 0, 0) translate3d(100%, -100%, 0); }
-  .lg-css3.lg-slide-circular-up .lg-item.lg-current {
-    -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-slide-circular-up .lg-item.lg-prev-slide, .lg-css3.lg-slide-circular-up .lg-item.lg-next-slide, .lg-css3.lg-slide-circular-up .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
-.lg-css3.lg-slide-circular-down .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-circular-down .lg-item.lg-prev-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(-100%, 100%, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(-100%, 100%, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(-100%, 100%, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(-100%, 100%, 0);
-    transform: scale3d(0, 0, 0) translate3d(-100%, 100%, 0); }
-  .lg-css3.lg-slide-circular-down .lg-item.lg-next-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(100%, 100%, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(100%, 100%, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(100%, 100%, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(100%, 100%, 0);
-    transform: scale3d(0, 0, 0) translate3d(100%, 100%, 0); }
-  .lg-css3.lg-slide-circular-down .lg-item.lg-current {
-    -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-slide-circular-down .lg-item.lg-prev-slide, .lg-css3.lg-slide-circular-down .lg-item.lg-next-slide, .lg-css3.lg-slide-circular-down .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
+  opacity: 0;
+}
+
+.lg-css3.lg-scale-up .lg-item.lg-prev-slide {
+  -moz-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
+  -o-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
+  -ms-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
+  -webkit-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
+  transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
+}
+
+.lg-css3.lg-scale-up .lg-item.lg-next-slide {
+  -moz-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
+  -o-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
+  -ms-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
+  -webkit-transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
+  transform: scale3d(0.8, 0.8, 0.8) translate3d(0%, 10%, 0);
+}
+
+.lg-css3.lg-scale-up .lg-item.lg-current {
+  -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  opacity: 1;
+}
+
+.lg-css3.lg-scale-up .lg-item.lg-prev-slide, .lg-css3.lg-scale-up .lg-item.lg-next-slide, .lg-css3.lg-scale-up .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+}
+
+.lg-css3.lg-slide-vertical-growth .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-vertical-growth .lg-item.lg-prev-slide {
+  -moz-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0);
+  -o-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0);
+  -ms-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0);
+  -webkit-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0);
+  transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0);
+}
+
+.lg-css3.lg-slide-vertical-growth .lg-item.lg-next-slide {
+  -moz-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0);
+  -o-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0);
+  -ms-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0);
+  -webkit-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0);
+  transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0);
+}
+
+.lg-css3.lg-slide-vertical-growth .lg-item.lg-current {
+  -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-vertical-growth .lg-item.lg-prev-slide, .lg-css3.lg-slide-vertical-growth .lg-item.lg-next-slide, .lg-css3.lg-slide-vertical-growth .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
 .lg-css3.lg-slide-circular-vertical .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-circular-vertical .lg-item.lg-prev-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0);
-    transform: scale3d(0, 0, 0) translate3d(0, -100%, 0); }
-  .lg-css3.lg-slide-circular-vertical .lg-item.lg-next-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0);
-    transform: scale3d(0, 0, 0) translate3d(0, 100%, 0); }
-  .lg-css3.lg-slide-circular-vertical .lg-item.lg-current {
-    -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-slide-circular-vertical .lg-item.lg-prev-slide, .lg-css3.lg-slide-circular-vertical .lg-item.lg-next-slide, .lg-css3.lg-slide-circular-vertical .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
-.lg-css3.lg-slide-circular-vertical-left .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-circular-vertical-left .lg-item.lg-prev-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(-100%, -100%, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(-100%, -100%, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(-100%, -100%, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(-100%, -100%, 0);
-    transform: scale3d(0, 0, 0) translate3d(-100%, -100%, 0); }
-  .lg-css3.lg-slide-circular-vertical-left .lg-item.lg-next-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(-100%, 100%, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(-100%, 100%, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(-100%, 100%, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(-100%, 100%, 0);
-    transform: scale3d(0, 0, 0) translate3d(-100%, 100%, 0); }
-  .lg-css3.lg-slide-circular-vertical-left .lg-item.lg-current {
-    -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-slide-circular-vertical-left .lg-item.lg-prev-slide, .lg-css3.lg-slide-circular-vertical-left .lg-item.lg-next-slide, .lg-css3.lg-slide-circular-vertical-left .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
-.lg-css3.lg-slide-circular-vertical-down .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-circular-vertical-down .lg-item.lg-prev-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(100%, -100%, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(100%, -100%, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(100%, -100%, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(100%, -100%, 0);
-    transform: scale3d(0, 0, 0) translate3d(100%, -100%, 0); }
-  .lg-css3.lg-slide-circular-vertical-down .lg-item.lg-next-slide {
-    -moz-transform: scale3d(0, 0, 0) translate3d(100%, 100%, 0);
-    -o-transform: scale3d(0, 0, 0) translate3d(100%, 100%, 0);
-    -ms-transform: scale3d(0, 0, 0) translate3d(100%, 100%, 0);
-    -webkit-transform: scale3d(0, 0, 0) translate3d(100%, 100%, 0);
-    transform: scale3d(0, 0, 0) translate3d(100%, 100%, 0); }
-  .lg-css3.lg-slide-circular-vertical-down .lg-item.lg-current {
-    -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-slide-circular-vertical-down .lg-item.lg-prev-slide, .lg-css3.lg-slide-circular-vertical-down .lg-item.lg-next-slide, .lg-css3.lg-slide-circular-vertical-down .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s; }
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-circular-vertical .lg-item.lg-prev-slide {
+  -moz-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0);
+  -o-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0);
+  -ms-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0);
+  -webkit-transform: scale3d(0, 0, 0) translate3d(0, -100%, 0);
+  transform: scale3d(0, 0, 0) translate3d(0, -100%, 0);
+}
+
+.lg-css3.lg-slide-circular-vertical .lg-item.lg-next-slide {
+  -moz-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0);
+  -o-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0);
+  -ms-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0);
+  -webkit-transform: scale3d(0, 0, 0) translate3d(0, 100%, 0);
+  transform: scale3d(0, 0, 0) translate3d(0, 100%, 0);
+}
+
+.lg-css3.lg-slide-circular-vertical .lg-item.lg-current {
+  -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-circular-vertical .lg-item.lg-prev-slide, .lg-css3.lg-slide-circular-vertical .lg-item.lg-next-slide, .lg-css3.lg-slide-circular-vertical .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+}
+
 .lg-css3.lg-slide-vertical .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-vertical .lg-item.lg-prev-slide {
-    -webkit-transform: translate3d(0, -100%, 0);
-    transform: translate3d(0, -100%, 0); }
-  .lg-css3.lg-slide-vertical .lg-item.lg-next-slide {
-    -webkit-transform: translate3d(0, 100%, 0);
-    transform: translate3d(0, 100%, 0); }
-  .lg-css3.lg-slide-vertical .lg-item.lg-current {
-    -webkit-transform: translate3d(0, 0, 0);
-    transform: translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-slide-vertical .lg-item.lg-prev-slide, .lg-css3.lg-slide-vertical .lg-item.lg-next-slide, .lg-css3.lg-slide-vertical .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-slide-vertical-growth .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-vertical-growth .lg-item.lg-prev-slide {
-    -moz-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0);
-    -o-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0);
-    -ms-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0);
-    -webkit-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0);
-    transform: scale3d(0.5, 0.5, 0.5) translate3d(0, -150%, 0); }
-  .lg-css3.lg-slide-vertical-growth .lg-item.lg-next-slide {
-    -moz-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0);
-    -o-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0);
-    -ms-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0);
-    -webkit-transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0);
-    transform: scale3d(0.5, 0.5, 0.5) translate3d(0, 150%, 0); }
-  .lg-css3.lg-slide-vertical-growth .lg-item.lg-current {
-    -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-slide-vertical-growth .lg-item.lg-prev-slide, .lg-css3.lg-slide-vertical-growth .lg-item.lg-next-slide, .lg-css3.lg-slide-vertical-growth .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-slide-skew-only .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew-only .lg-item.lg-prev-slide {
-    -moz-transform: skew(10deg, 0deg);
-    -o-transform: skew(10deg, 0deg);
-    -ms-transform: skew(10deg, 0deg);
-    -webkit-transform: skew(10deg, 0deg);
-    transform: skew(10deg, 0deg); }
-  .lg-css3.lg-slide-skew-only .lg-item.lg-next-slide {
-    -moz-transform: skew(10deg, 0deg);
-    -o-transform: skew(10deg, 0deg);
-    -ms-transform: skew(10deg, 0deg);
-    -webkit-transform: skew(10deg, 0deg);
-    transform: skew(10deg, 0deg); }
-  .lg-css3.lg-slide-skew-only .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg);
-    -o-transform: skew(0deg, 0deg);
-    -ms-transform: skew(0deg, 0deg);
-    -webkit-transform: skew(0deg, 0deg);
-    transform: skew(0deg, 0deg);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew-only .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-vertical .lg-item.lg-prev-slide {
+  -webkit-transform: translate3d(0, -100%, 0);
+  transform: translate3d(0, -100%, 0);
+}
+
+.lg-css3.lg-slide-vertical .lg-item.lg-next-slide {
+  -webkit-transform: translate3d(0, 100%, 0);
+  transform: translate3d(0, 100%, 0);
+}
+
+.lg-css3.lg-slide-vertical .lg-item.lg-current {
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-vertical .lg-item.lg-prev-slide, .lg-css3.lg-slide-vertical .lg-item.lg-next-slide, .lg-css3.lg-slide-vertical .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-slide-circular .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-circular .lg-item.lg-prev-slide {
+  -moz-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
+  -o-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
+  -ms-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
+  -webkit-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
+  transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
+}
+
+.lg-css3.lg-slide-circular .lg-item.lg-next-slide {
+  -moz-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
+  -o-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
+  -ms-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
+  -webkit-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
+  transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
+}
+
+.lg-css3.lg-slide-circular .lg-item.lg-current {
+  -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-circular .lg-item.lg-prev-slide, .lg-css3.lg-slide-circular .lg-item.lg-next-slide, .lg-css3.lg-slide-circular .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+}
+
+.lg-css3.lg-soft-zoom .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-soft-zoom .lg-item.lg-prev-slide {
+  -webkit-transform: scale3d(1.1, 1.1, 1.1);
+  transform: scale3d(1.1, 1.1, 1.1);
+}
+
+.lg-css3.lg-soft-zoom .lg-item.lg-next-slide {
+  -webkit-transform: scale3d(0.9, 0.9, 0.9);
+  transform: scale3d(0.9, 0.9, 0.9);
+}
+
+.lg-css3.lg-soft-zoom .lg-item.lg-current {
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  opacity: 1;
+}
+
+.lg-css3.lg-soft-zoom .lg-item.lg-prev-slide, .lg-css3.lg-soft-zoom .lg-item.lg-next-slide, .lg-css3.lg-soft-zoom .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+}
+
+.lg-css3.lg-slide-skew-cross-rev .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-prev-slide {
+  -moz-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px);
+  -o-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px);
+  -ms-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px);
+  -webkit-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px);
+  transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px);
+}
+
+.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-next-slide {
+  -moz-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px);
+  -o-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px);
+  -ms-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px);
+  -webkit-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px);
+  transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px);
+}
+
+.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-cross-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-cross-rev .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-tube .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-tube .lg-item.lg-prev-slide {
+  -moz-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0);
+  -o-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0);
+  -ms-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0);
+  -webkit-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0);
+  transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0);
+}
+
+.lg-css3.lg-tube .lg-item.lg-next-slide {
+  -moz-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0);
+  -o-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0);
+  -ms-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0);
+  -webkit-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0);
+  transform: scale3d(1, 0, 1) translate3d(100%, 0, 0);
+}
+
+.lg-css3.lg-tube .lg-item.lg-current {
+  -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
+  opacity: 1;
+}
+
+.lg-css3.lg-tube .lg-item.lg-prev-slide, .lg-css3.lg-tube .lg-item.lg-next-slide, .lg-css3.lg-tube .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-slide-skew-cross .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew-cross .lg-item.lg-prev-slide {
+  -moz-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px);
+  -o-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px);
+  -ms-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px);
+  -webkit-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px);
+  transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px);
+}
+
+.lg-css3.lg-slide-skew-cross .lg-item.lg-next-slide {
+  -moz-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px);
+  -o-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px);
+  -ms-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px);
+  -webkit-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px);
+  transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px);
+}
+
+.lg-css3.lg-slide-skew-cross .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew-cross .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-cross .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-cross .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-zoom-in-big .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-zoom-in-big .lg-item.lg-prev-slide {
+  -webkit-transform: scale3d(2, 2, 2);
+  transform: scale3d(2, 2, 2);
+}
+
+.lg-css3.lg-zoom-in-big .lg-item.lg-next-slide {
+  -webkit-transform: scale3d(2, 2, 2);
+  transform: scale3d(2, 2, 2);
+}
+
+.lg-css3.lg-zoom-in-big .lg-item.lg-current {
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  opacity: 1;
+}
+
+.lg-css3.lg-zoom-in-big .lg-item.lg-prev-slide, .lg-css3.lg-zoom-in-big .lg-item.lg-next-slide, .lg-css3.lg-zoom-in-big .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+}
+
 .lg-css3.lg-slide-skew-only-rev .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew-only-rev .lg-item.lg-prev-slide {
-    -moz-transform: skew(-10deg, 0deg);
-    -o-transform: skew(-10deg, 0deg);
-    -ms-transform: skew(-10deg, 0deg);
-    -webkit-transform: skew(-10deg, 0deg);
-    transform: skew(-10deg, 0deg); }
-  .lg-css3.lg-slide-skew-only-rev .lg-item.lg-next-slide {
-    -moz-transform: skew(-10deg, 0deg);
-    -o-transform: skew(-10deg, 0deg);
-    -ms-transform: skew(-10deg, 0deg);
-    -webkit-transform: skew(-10deg, 0deg);
-    transform: skew(-10deg, 0deg); }
-  .lg-css3.lg-slide-skew-only-rev .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg);
-    -o-transform: skew(0deg, 0deg);
-    -ms-transform: skew(0deg, 0deg);
-    -webkit-transform: skew(0deg, 0deg);
-    transform: skew(0deg, 0deg);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew-only-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only-rev .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-slide-skew-only-y .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew-only-y .lg-item.lg-prev-slide {
-    -moz-transform: skew(0deg, 10deg);
-    -o-transform: skew(0deg, 10deg);
-    -ms-transform: skew(0deg, 10deg);
-    -webkit-transform: skew(0deg, 10deg);
-    transform: skew(0deg, 10deg); }
-  .lg-css3.lg-slide-skew-only-y .lg-item.lg-next-slide {
-    -moz-transform: skew(0deg, 10deg);
-    -o-transform: skew(0deg, 10deg);
-    -ms-transform: skew(0deg, 10deg);
-    -webkit-transform: skew(0deg, 10deg);
-    transform: skew(0deg, 10deg); }
-  .lg-css3.lg-slide-skew-only-y .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg);
-    -o-transform: skew(0deg, 0deg);
-    -ms-transform: skew(0deg, 0deg);
-    -webkit-transform: skew(0deg, 0deg);
-    transform: skew(0deg, 0deg);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew-only-y .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only-y .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only-y .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew-only-rev .lg-item.lg-prev-slide {
+  -moz-transform: skew(-10deg, 0deg);
+  -o-transform: skew(-10deg, 0deg);
+  -ms-transform: skew(-10deg, 0deg);
+  -webkit-transform: skew(-10deg, 0deg);
+  transform: skew(-10deg, 0deg);
+}
+
+.lg-css3.lg-slide-skew-only-rev .lg-item.lg-next-slide {
+  -moz-transform: skew(-10deg, 0deg);
+  -o-transform: skew(-10deg, 0deg);
+  -ms-transform: skew(-10deg, 0deg);
+  -webkit-transform: skew(-10deg, 0deg);
+  transform: skew(-10deg, 0deg);
+}
+
+.lg-css3.lg-slide-skew-only-rev .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg);
+  -o-transform: skew(0deg, 0deg);
+  -ms-transform: skew(0deg, 0deg);
+  -webkit-transform: skew(0deg, 0deg);
+  transform: skew(0deg, 0deg);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew-only-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only-rev .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-zoom-in-out .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-zoom-in-out .lg-item.lg-prev-slide {
+  -webkit-transform: scale3d(2, 2, 2);
+  transform: scale3d(2, 2, 2);
+}
+
+.lg-css3.lg-zoom-in-out .lg-item.lg-next-slide {
+  -webkit-transform: scale3d(0, 0, 0);
+  transform: scale3d(0, 0, 0);
+}
+
+.lg-css3.lg-zoom-in-out .lg-item.lg-current {
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  opacity: 1;
+}
+
+.lg-css3.lg-zoom-in-out .lg-item.lg-prev-slide, .lg-css3.lg-zoom-in-out .lg-item.lg-next-slide, .lg-css3.lg-zoom-in-out .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+}
+
 .lg-css3.lg-slide-skew-only-y-rev .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-prev-slide {
-    -moz-transform: skew(0deg, -10deg);
-    -o-transform: skew(0deg, -10deg);
-    -ms-transform: skew(0deg, -10deg);
-    -webkit-transform: skew(0deg, -10deg);
-    transform: skew(0deg, -10deg); }
-  .lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-next-slide {
-    -moz-transform: skew(0deg, -10deg);
-    -o-transform: skew(0deg, -10deg);
-    -ms-transform: skew(0deg, -10deg);
-    -webkit-transform: skew(0deg, -10deg);
-    transform: skew(0deg, -10deg); }
-  .lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg);
-    -o-transform: skew(0deg, 0deg);
-    -ms-transform: skew(0deg, 0deg);
-    -webkit-transform: skew(0deg, 0deg);
-    transform: skew(0deg, 0deg);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-slide-skew .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew .lg-item.lg-prev-slide {
-    -moz-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px);
-    -o-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px);
-    -ms-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px);
-    -webkit-transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px);
-    transform: skew(20deg, 0deg) translate3d(-100%, 0%, 0px); }
-  .lg-css3.lg-slide-skew .lg-item.lg-next-slide {
-    -moz-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px);
-    -o-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px);
-    -ms-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px);
-    -webkit-transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px);
-    transform: skew(20deg, 0deg) translate3d(100%, 0%, 0px); }
-  .lg-css3.lg-slide-skew .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew .lg-item.lg-next-slide, .lg-css3.lg-slide-skew .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-prev-slide {
+  -moz-transform: skew(0deg, -10deg);
+  -o-transform: skew(0deg, -10deg);
+  -ms-transform: skew(0deg, -10deg);
+  -webkit-transform: skew(0deg, -10deg);
+  transform: skew(0deg, -10deg);
+}
+
+.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-next-slide {
+  -moz-transform: skew(0deg, -10deg);
+  -o-transform: skew(0deg, -10deg);
+  -ms-transform: skew(0deg, -10deg);
+  -webkit-transform: skew(0deg, -10deg);
+  transform: skew(0deg, -10deg);
+}
+
+.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg);
+  -o-transform: skew(0deg, 0deg);
+  -ms-transform: skew(0deg, 0deg);
+  -webkit-transform: skew(0deg, 0deg);
+  transform: skew(0deg, 0deg);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-slide-skew-only-y .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew-only-y .lg-item.lg-prev-slide {
+  -moz-transform: skew(0deg, 10deg);
+  -o-transform: skew(0deg, 10deg);
+  -ms-transform: skew(0deg, 10deg);
+  -webkit-transform: skew(0deg, 10deg);
+  transform: skew(0deg, 10deg);
+}
+
+.lg-css3.lg-slide-skew-only-y .lg-item.lg-next-slide {
+  -moz-transform: skew(0deg, 10deg);
+  -o-transform: skew(0deg, 10deg);
+  -ms-transform: skew(0deg, 10deg);
+  -webkit-transform: skew(0deg, 10deg);
+  transform: skew(0deg, 10deg);
+}
+
+.lg-css3.lg-slide-skew-only-y .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg);
+  -o-transform: skew(0deg, 0deg);
+  -ms-transform: skew(0deg, 0deg);
+  -webkit-transform: skew(0deg, 0deg);
+  transform: skew(0deg, 0deg);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew-only-y .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only-y .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only-y .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-zoom-out-big .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-zoom-out-big .lg-item.lg-prev-slide {
+  -webkit-transform: scale3d(0, 0, 0);
+  transform: scale3d(0, 0, 0);
+}
+
+.lg-css3.lg-zoom-out-big .lg-item.lg-next-slide {
+  -webkit-transform: scale3d(0, 0, 0);
+  transform: scale3d(0, 0, 0);
+}
+
+.lg-css3.lg-zoom-out-big .lg-item.lg-current {
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  opacity: 1;
+}
+
+.lg-css3.lg-zoom-out-big .lg-item.lg-prev-slide, .lg-css3.lg-zoom-out-big .lg-item.lg-next-slide, .lg-css3.lg-zoom-out-big .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+}
+
+.lg-css3.lg-slide-skew-only .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew-only .lg-item.lg-prev-slide {
+  -moz-transform: skew(10deg, 0deg);
+  -o-transform: skew(10deg, 0deg);
+  -ms-transform: skew(10deg, 0deg);
+  -webkit-transform: skew(10deg, 0deg);
+  transform: skew(10deg, 0deg);
+}
+
+.lg-css3.lg-slide-skew-only .lg-item.lg-next-slide {
+  -moz-transform: skew(10deg, 0deg);
+  -o-transform: skew(10deg, 0deg);
+  -ms-transform: skew(10deg, 0deg);
+  -webkit-transform: skew(10deg, 0deg);
+  transform: skew(10deg, 0deg);
+}
+
+.lg-css3.lg-slide-skew-only .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg);
+  -o-transform: skew(0deg, 0deg);
+  -ms-transform: skew(0deg, 0deg);
+  -webkit-transform: skew(0deg, 0deg);
+  transform: skew(0deg, 0deg);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew-only .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-only .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-only .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-zoom-out-in .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-zoom-out-in .lg-item.lg-prev-slide {
+  -webkit-transform: scale3d(0, 0, 0);
+  transform: scale3d(0, 0, 0);
+}
+
+.lg-css3.lg-zoom-out-in .lg-item.lg-next-slide {
+  -webkit-transform: scale3d(2, 2, 2);
+  transform: scale3d(2, 2, 2);
+}
+
+.lg-css3.lg-zoom-out-in .lg-item.lg-current {
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  opacity: 1;
+}
+
+.lg-css3.lg-zoom-out-in .lg-item.lg-prev-slide, .lg-css3.lg-zoom-out-in .lg-item.lg-next-slide, .lg-css3.lg-zoom-out-in .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+}
+
 .lg-css3.lg-slide-skew-rev .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew-rev .lg-item.lg-prev-slide {
-    -moz-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px);
-    -o-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px);
-    -ms-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px);
-    -webkit-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px);
-    transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px); }
-  .lg-css3.lg-slide-skew-rev .lg-item.lg-next-slide {
-    -moz-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px);
-    -o-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px);
-    -ms-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px);
-    -webkit-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px);
-    transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px); }
-  .lg-css3.lg-slide-skew-rev .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-rev .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-slide-skew-cross .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew-cross .lg-item.lg-prev-slide {
-    -moz-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px);
-    -o-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px);
-    -ms-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px);
-    -webkit-transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px);
-    transform: skew(0deg, 60deg) translate3d(-100%, 0%, 0px); }
-  .lg-css3.lg-slide-skew-cross .lg-item.lg-next-slide {
-    -moz-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px);
-    -o-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px);
-    -ms-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px);
-    -webkit-transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px);
-    transform: skew(0deg, 60deg) translate3d(100%, 0%, 0px); }
-  .lg-css3.lg-slide-skew-cross .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew-cross .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-cross .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-cross .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-slide-skew-cross-rev .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew-cross-rev .lg-item.lg-prev-slide {
-    -moz-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px);
-    -o-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px);
-    -ms-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px);
-    -webkit-transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px);
-    transform: skew(0deg, -60deg) translate3d(-100%, 0%, 0px); }
-  .lg-css3.lg-slide-skew-cross-rev .lg-item.lg-next-slide {
-    -moz-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px);
-    -o-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px);
-    -ms-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px);
-    -webkit-transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px);
-    transform: skew(0deg, -60deg) translate3d(100%, 0%, 0px); }
-  .lg-css3.lg-slide-skew-cross-rev .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew-cross-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-cross-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-cross-rev .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-slide-skew-ver .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew-ver .lg-item.lg-prev-slide {
-    -moz-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px);
-    -o-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px);
-    -ms-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px);
-    -webkit-transform: skew(60deg, 0deg) translate3d(0, -100%, 0px);
-    transform: skew(60deg, 0deg) translate3d(0, -100%, 0px); }
-  .lg-css3.lg-slide-skew-ver .lg-item.lg-next-slide {
-    -moz-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px);
-    -o-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px);
-    -ms-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px);
-    -webkit-transform: skew(60deg, 0deg) translate3d(0, 100%, 0px);
-    transform: skew(60deg, 0deg) translate3d(0, 100%, 0px); }
-  .lg-css3.lg-slide-skew-ver .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew-ver .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-slide-skew-ver-rev .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew-ver-rev .lg-item.lg-prev-slide {
-    -moz-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px);
-    -o-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px);
-    -ms-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px);
-    -webkit-transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px);
-    transform: skew(-60deg, 0deg) translate3d(0, -100%, 0px); }
-  .lg-css3.lg-slide-skew-ver-rev .lg-item.lg-next-slide {
-    -moz-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px);
-    -o-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px);
-    -ms-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px);
-    -webkit-transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px);
-    transform: skew(-60deg, 0deg) translate3d(0, 100%, 0px); }
-  .lg-css3.lg-slide-skew-ver-rev .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew-ver-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver-rev .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-slide-skew-ver-cross .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew-ver-cross .lg-item.lg-prev-slide {
-    -moz-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px);
-    -o-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px);
-    -ms-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px);
-    -webkit-transform: skew(0deg, 20deg) translate3d(0, -100%, 0px);
-    transform: skew(0deg, 20deg) translate3d(0, -100%, 0px); }
-  .lg-css3.lg-slide-skew-ver-cross .lg-item.lg-next-slide {
-    -moz-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px);
-    -o-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px);
-    -ms-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px);
-    -webkit-transform: skew(0deg, 20deg) translate3d(0, 100%, 0px);
-    transform: skew(0deg, 20deg) translate3d(0, 100%, 0px); }
-  .lg-css3.lg-slide-skew-ver-cross .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew-ver-cross .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver-cross .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver-cross .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew-rev .lg-item.lg-prev-slide {
+  -moz-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px);
+  -o-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px);
+  -ms-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px);
+  -webkit-transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px);
+  transform: skew(-20deg, 0deg) translate3d(-100%, 0%, 0px);
+}
+
+.lg-css3.lg-slide-skew-rev .lg-item.lg-next-slide {
+  -moz-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px);
+  -o-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px);
+  -ms-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px);
+  -webkit-transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px);
+  transform: skew(-20deg, 0deg) translate3d(100%, 0%, 0px);
+}
+
+.lg-css3.lg-slide-skew-rev .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-rev .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-zoom-out .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-zoom-out .lg-item.lg-prev-slide {
+  -webkit-transform: scale3d(0.7, 0.7, 0.7);
+  transform: scale3d(0.7, 0.7, 0.7);
+}
+
+.lg-css3.lg-zoom-out .lg-item.lg-next-slide {
+  -webkit-transform: scale3d(0.7, 0.7, 0.7);
+  transform: scale3d(0.7, 0.7, 0.7);
+}
+
+.lg-css3.lg-zoom-out .lg-item.lg-current {
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  opacity: 1;
+}
+
+.lg-css3.lg-zoom-out .lg-item.lg-prev-slide, .lg-css3.lg-zoom-out .lg-item.lg-next-slide, .lg-css3.lg-zoom-out .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 1s ease 0s;
+}
+
 .lg-css3.lg-slide-skew-ver-cross-rev .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-prev-slide {
-    -moz-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px);
-    -o-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px);
-    -ms-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px);
-    -webkit-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px);
-    transform: skew(0deg, -20deg) translate3d(0, -100%, 0px); }
-  .lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-next-slide {
-    -moz-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px);
-    -o-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px);
-    -ms-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px);
-    -webkit-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px);
-    transform: skew(0deg, -20deg) translate3d(0, 100%, 0px); }
-  .lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-current {
-    -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
-    opacity: 1; }
-  .lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-lollipop .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-lollipop .lg-item.lg-prev-slide {
-    -webkit-transform: translate3d(-100%, 0, 0);
-    transform: translate3d(-100%, 0, 0); }
-  .lg-css3.lg-lollipop .lg-item.lg-next-slide {
-    -moz-transform: translate3d(0, 0, 0) scale(0.5);
-    -o-transform: translate3d(0, 0, 0) scale(0.5);
-    -ms-transform: translate3d(0, 0, 0) scale(0.5);
-    -webkit-transform: translate3d(0, 0, 0) scale(0.5);
-    transform: translate3d(0, 0, 0) scale(0.5); }
-  .lg-css3.lg-lollipop .lg-item.lg-current {
-    -webkit-transform: translate3d(0, 0, 0);
-    transform: translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-lollipop .lg-item.lg-prev-slide, .lg-css3.lg-lollipop .lg-item.lg-next-slide, .lg-css3.lg-lollipop .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-lollipop-rev .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-lollipop-rev .lg-item.lg-prev-slide {
-    -moz-transform: translate3d(0, 0, 0) scale(0.5);
-    -o-transform: translate3d(0, 0, 0) scale(0.5);
-    -ms-transform: translate3d(0, 0, 0) scale(0.5);
-    -webkit-transform: translate3d(0, 0, 0) scale(0.5);
-    transform: translate3d(0, 0, 0) scale(0.5); }
-  .lg-css3.lg-lollipop-rev .lg-item.lg-next-slide {
-    -webkit-transform: translate3d(100%, 0, 0);
-    transform: translate3d(100%, 0, 0); }
-  .lg-css3.lg-lollipop-rev .lg-item.lg-current {
-    -webkit-transform: translate3d(0, 0, 0);
-    transform: translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-lollipop-rev .lg-item.lg-prev-slide, .lg-css3.lg-lollipop-rev .lg-item.lg-next-slide, .lg-css3.lg-lollipop-rev .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-rotate .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-rotate .lg-item.lg-prev-slide {
-    -moz-transform: rotate(-360deg);
-    -o-transform: rotate(-360deg);
-    -ms-transform: rotate(-360deg);
-    -webkit-transform: rotate(-360deg);
-    transform: rotate(-360deg); }
-  .lg-css3.lg-rotate .lg-item.lg-next-slide {
-    -moz-transform: rotate(360deg);
-    -o-transform: rotate(360deg);
-    -ms-transform: rotate(360deg);
-    -webkit-transform: rotate(360deg);
-    transform: rotate(360deg); }
-  .lg-css3.lg-rotate .lg-item.lg-current {
-    -moz-transform: rotate(0deg);
-    -o-transform: rotate(0deg);
-    -ms-transform: rotate(0deg);
-    -webkit-transform: rotate(0deg);
-    transform: rotate(0deg);
-    opacity: 1; }
-  .lg-css3.lg-rotate .lg-item.lg-prev-slide, .lg-css3.lg-rotate .lg-item.lg-next-slide, .lg-css3.lg-rotate .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-rotate-rev .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-rotate-rev .lg-item.lg-prev-slide {
-    -moz-transform: rotate(360deg);
-    -o-transform: rotate(360deg);
-    -ms-transform: rotate(360deg);
-    -webkit-transform: rotate(360deg);
-    transform: rotate(360deg); }
-  .lg-css3.lg-rotate-rev .lg-item.lg-next-slide {
-    -moz-transform: rotate(-360deg);
-    -o-transform: rotate(-360deg);
-    -ms-transform: rotate(-360deg);
-    -webkit-transform: rotate(-360deg);
-    transform: rotate(-360deg); }
-  .lg-css3.lg-rotate-rev .lg-item.lg-current {
-    -moz-transform: rotate(0deg);
-    -o-transform: rotate(0deg);
-    -ms-transform: rotate(0deg);
-    -webkit-transform: rotate(0deg);
-    transform: rotate(0deg);
-    opacity: 1; }
-  .lg-css3.lg-rotate-rev .lg-item.lg-prev-slide, .lg-css3.lg-rotate-rev .lg-item.lg-next-slide, .lg-css3.lg-rotate-rev .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-.lg-css3.lg-tube .lg-item {
-  opacity: 0; }
-  .lg-css3.lg-tube .lg-item.lg-prev-slide {
-    -moz-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0);
-    -o-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0);
-    -ms-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0);
-    -webkit-transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0);
-    transform: scale3d(1, 0, 1) translate3d(-100%, 0, 0); }
-  .lg-css3.lg-tube .lg-item.lg-next-slide {
-    -moz-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0);
-    -o-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0);
-    -ms-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0);
-    -webkit-transform: scale3d(1, 0, 1) translate3d(100%, 0, 0);
-    transform: scale3d(1, 0, 1) translate3d(100%, 0, 0); }
-  .lg-css3.lg-tube .lg-item.lg-current {
-    -moz-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -o-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -ms-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    -webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
-    opacity: 1; }
-  .lg-css3.lg-tube .lg-item.lg-prev-slide, .lg-css3.lg-tube .lg-item.lg-next-slide, .lg-css3.lg-tube .lg-item.lg-current {
-    -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-    transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s; }
-
-/*# sourceMappingURL=lg-transitions.css.map */
+  opacity: 0;
+}
+
+.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-prev-slide {
+  -moz-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px);
+  -o-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px);
+  -ms-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px);
+  -webkit-transform: skew(0deg, -20deg) translate3d(0, -100%, 0px);
+  transform: skew(0deg, -20deg) translate3d(0, -100%, 0px);
+}
+
+.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-next-slide {
+  -moz-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px);
+  -o-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px);
+  -ms-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px);
+  -webkit-transform: skew(0deg, -20deg) translate3d(0, 100%, 0px);
+  transform: skew(0deg, -20deg) translate3d(0, 100%, 0px);
+}
+
+.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-current {
+  -moz-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -o-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -ms-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  -webkit-transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  transform: skew(0deg, 0deg) translate3d(0%, 0%, 0px);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-prev-slide, .lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-next-slide, .lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
diff --git a/resources/lightgallery/css/lg-transitions.min.css b/resources/lightgallery/css/lg-transitions.min.css
deleted file mode 100644
index 0ce5713..0000000
--- a/resources/lightgallery/css/lg-transitions.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.lg-css3.lg-zoom-in .lg-item{opacity:0}.lg-css3.lg-zoom-in .lg-item.lg-next-slide,.lg-css3.lg-zoom-in .lg-item.lg-prev-slide{-webkit-transform:scale3d(1.3,1.3,1.3);transform:scale3d(1.3,1.3,1.3)}.lg-css3.lg-zoom-in .lg-item.lg-current{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}.lg-css3.lg-zoom-in .lg-item.lg-current,.lg-css3.lg-zoom-in .lg-item.lg-next-slide,.lg-css3.lg-zoom-in .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-zoom-in-big .lg-item{opacity:0}.lg-css3.lg-zoom-in-big .lg-item.lg-next-slide,.lg-css3.lg-zoom-in-big .lg-item.lg-prev-slide{-webkit-transform:scale3d(2,2,2);transform:scale3d(2,2,2)}.lg-css3.lg-zoom-in-big .lg-item.lg-current{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}.lg-css3.lg-zoom-in-big .lg-item.lg-current,.lg-css3.lg-zoom-in-big .lg-item.lg-next-slide,.lg-css3.lg-zoom-in-big .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-zoom-out .lg-item{opacity:0}.lg-css3.lg-zoom-out .lg-item.lg-next-slide,.lg-css3.lg-zoom-out .lg-item.lg-prev-slide{-webkit-transform:scale3d(.7,.7,.7);transform:scale3d(.7,.7,.7)}.lg-css3.lg-zoom-out .lg-item.lg-current{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}.lg-css3.lg-zoom-out .lg-item.lg-current,.lg-css3.lg-zoom-out .lg-item.lg-next-slide,.lg-css3.lg-zoom-out .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-zoom-out-big .lg-item{opacity:0}.lg-css3.lg-zoom-out-big .lg-item.lg-next-slide,.lg-css3.lg-zoom-out-big .lg-item.lg-prev-slide{-webkit-transform:scale3d(0,0,0);transform:scale3d(0,0,0)}.lg-css3.lg-zoom-out-big .lg-item.lg-current{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}.lg-css3.lg-zoom-out-big .lg-item.lg-current,.lg-css3.lg-zoom-out-big .lg-item.lg-next-slide,.lg-css3.lg-zoom-out-big .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-zoom-out-in .lg-item{opacity:0}.lg-css3.lg-zoom-out-in .lg-item.lg-prev-slide{-webkit-transform:scale3d(0,0,0);transform:scale3d(0,0,0)}.lg-css3.lg-zoom-out-in .lg-item.lg-next-slide{-webkit-transform:scale3d(2,2,2);transform:scale3d(2,2,2)}.lg-css3.lg-zoom-out-in .lg-item.lg-current{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}.lg-css3.lg-zoom-out-in .lg-item.lg-current,.lg-css3.lg-zoom-out-in .lg-item.lg-next-slide,.lg-css3.lg-zoom-out-in .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-zoom-in-out .lg-item{opacity:0}.lg-css3.lg-zoom-in-out .lg-item.lg-prev-slide{-webkit-transform:scale3d(2,2,2);transform:scale3d(2,2,2)}.lg-css3.lg-zoom-in-out .lg-item.lg-next-slide{-webkit-transform:scale3d(0,0,0);transform:scale3d(0,0,0)}.lg-css3.lg-zoom-in-out .lg-item.lg-current{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}.lg-css3.lg-zoom-in-out .lg-item.lg-current,.lg-css3.lg-zoom-in-out .lg-item.lg-next-slide,.lg-css3.lg-zoom-in-out .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-soft-zoom .lg-item{opacity:0}.lg-css3.lg-soft-zoom .lg-item.lg-prev-slide{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}.lg-css3.lg-soft-zoom .lg-item.lg-next-slide{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}.lg-css3.lg-soft-zoom .lg-item.lg-current{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}.lg-css3.lg-soft-zoom .lg-item.lg-current,.lg-css3.lg-soft-zoom .lg-item.lg-next-slide,.lg-css3.lg-soft-zoom .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-scale-up .lg-item{opacity:0}.lg-css3.lg-scale-up .lg-item.lg-next-slide,.lg-css3.lg-scale-up .lg-item.lg-prev-slide{-moz-transform:scale3d(.8,.8,.8) translate3d(0,10%,0);-o-transform:scale3d(.8,.8,.8) translate3d(0,10%,0);-ms-transform:scale3d(.8,.8,.8) translate3d(0,10%,0);-webkit-transform:scale3d(.8,.8,.8) translate3d(0,10%,0);transform:scale3d(.8,.8,.8) translate3d(0,10%,0)}.lg-css3.lg-scale-up .lg-item.lg-current{-moz-transform:scale3d(1,1,1) translate3d(0,0,0);-o-transform:scale3d(1,1,1) translate3d(0,0,0);-ms-transform:scale3d(1,1,1) translate3d(0,0,0);-webkit-transform:scale3d(1,1,1) translate3d(0,0,0);transform:scale3d(1,1,1) translate3d(0,0,0);opacity:1}.lg-css3.lg-scale-up .lg-item.lg-current,.lg-css3.lg-scale-up .lg-item.lg-next-slide,.lg-css3.lg-scale-up .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-slide-circular .lg-item{opacity:0}.lg-css3.lg-slide-circular .lg-item.lg-prev-slide{-moz-transform:scale3d(0,0,0) translate3d(-100%,0,0);-o-transform:scale3d(0,0,0) translate3d(-100%,0,0);-ms-transform:scale3d(0,0,0) translate3d(-100%,0,0);-webkit-transform:scale3d(0,0,0) translate3d(-100%,0,0);transform:scale3d(0,0,0) translate3d(-100%,0,0)}.lg-css3.lg-slide-circular .lg-item.lg-next-slide{-moz-transform:scale3d(0,0,0) translate3d(100%,0,0);-o-transform:scale3d(0,0,0) translate3d(100%,0,0);-ms-transform:scale3d(0,0,0) translate3d(100%,0,0);-webkit-transform:scale3d(0,0,0) translate3d(100%,0,0);transform:scale3d(0,0,0) translate3d(100%,0,0)}.lg-css3.lg-slide-circular .lg-item.lg-current{-moz-transform:scale3d(1,1,1) translate3d(0,0,0);-o-transform:scale3d(1,1,1) translate3d(0,0,0);-ms-transform:scale3d(1,1,1) translate3d(0,0,0);-webkit-transform:scale3d(1,1,1) translate3d(0,0,0);transform:scale3d(1,1,1) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-circular .lg-item.lg-current,.lg-css3.lg-slide-circular .lg-item.lg-next-slide,.lg-css3.lg-slide-circular .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-slide-circular-up .lg-item{opacity:0}.lg-css3.lg-slide-circular-up .lg-item.lg-prev-slide{-moz-transform:scale3d(0,0,0) translate3d(-100%,-100%,0);-o-transform:scale3d(0,0,0) translate3d(-100%,-100%,0);-ms-transform:scale3d(0,0,0) translate3d(-100%,-100%,0);-webkit-transform:scale3d(0,0,0) translate3d(-100%,-100%,0);transform:scale3d(0,0,0) translate3d(-100%,-100%,0)}.lg-css3.lg-slide-circular-up .lg-item.lg-next-slide{-moz-transform:scale3d(0,0,0) translate3d(100%,-100%,0);-o-transform:scale3d(0,0,0) translate3d(100%,-100%,0);-ms-transform:scale3d(0,0,0) translate3d(100%,-100%,0);-webkit-transform:scale3d(0,0,0) translate3d(100%,-100%,0);transform:scale3d(0,0,0) translate3d(100%,-100%,0)}.lg-css3.lg-slide-circular-up .lg-item.lg-current{-moz-transform:scale3d(1,1,1) translate3d(0,0,0);-o-transform:scale3d(1,1,1) translate3d(0,0,0);-ms-transform:scale3d(1,1,1) translate3d(0,0,0);-webkit-transform:scale3d(1,1,1) translate3d(0,0,0);transform:scale3d(1,1,1) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-circular-up .lg-item.lg-current,.lg-css3.lg-slide-circular-up .lg-item.lg-next-slide,.lg-css3.lg-slide-circular-up .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-slide-circular-down .lg-item{opacity:0}.lg-css3.lg-slide-circular-down .lg-item.lg-prev-slide{-moz-transform:scale3d(0,0,0) translate3d(-100%,100%,0);-o-transform:scale3d(0,0,0) translate3d(-100%,100%,0);-ms-transform:scale3d(0,0,0) translate3d(-100%,100%,0);-webkit-transform:scale3d(0,0,0) translate3d(-100%,100%,0);transform:scale3d(0,0,0) translate3d(-100%,100%,0)}.lg-css3.lg-slide-circular-down .lg-item.lg-next-slide{-moz-transform:scale3d(0,0,0) translate3d(100%,100%,0);-o-transform:scale3d(0,0,0) translate3d(100%,100%,0);-ms-transform:scale3d(0,0,0) translate3d(100%,100%,0);-webkit-transform:scale3d(0,0,0) translate3d(100%,100%,0);transform:scale3d(0,0,0) translate3d(100%,100%,0)}.lg-css3.lg-slide-circular-down .lg-item.lg-current{-moz-transform:scale3d(1,1,1) translate3d(0,0,0);-o-transform:scale3d(1,1,1) translate3d(0,0,0);-ms-transform:scale3d(1,1,1) translate3d(0,0,0);-webkit-transform:scale3d(1,1,1) translate3d(0,0,0);transform:scale3d(1,1,1) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-circular-down .lg-item.lg-current,.lg-css3.lg-slide-circular-down .lg-item.lg-next-slide,.lg-css3.lg-slide-circular-down .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-slide-circular-vertical .lg-item{opacity:0}.lg-css3.lg-slide-circular-vertical .lg-item.lg-prev-slide{-moz-transform:scale3d(0,0,0) translate3d(0,-100%,0);-o-transform:scale3d(0,0,0) translate3d(0,-100%,0);-ms-transform:scale3d(0,0,0) translate3d(0,-100%,0);-webkit-transform:scale3d(0,0,0) translate3d(0,-100%,0);transform:scale3d(0,0,0) translate3d(0,-100%,0)}.lg-css3.lg-slide-circular-vertical .lg-item.lg-next-slide{-moz-transform:scale3d(0,0,0) translate3d(0,100%,0);-o-transform:scale3d(0,0,0) translate3d(0,100%,0);-ms-transform:scale3d(0,0,0) translate3d(0,100%,0);-webkit-transform:scale3d(0,0,0) translate3d(0,100%,0);transform:scale3d(0,0,0) translate3d(0,100%,0)}.lg-css3.lg-slide-circular-vertical .lg-item.lg-current{-moz-transform:scale3d(1,1,1) translate3d(0,0,0);-o-transform:scale3d(1,1,1) translate3d(0,0,0);-ms-transform:scale3d(1,1,1) translate3d(0,0,0);-webkit-transform:scale3d(1,1,1) translate3d(0,0,0);transform:scale3d(1,1,1) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-circular-vertical .lg-item.lg-current,.lg-css3.lg-slide-circular-vertical .lg-item.lg-next-slide,.lg-css3.lg-slide-circular-vertical .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-slide-circular-vertical-left .lg-item{opacity:0}.lg-css3.lg-slide-circular-vertical-left .lg-item.lg-prev-slide{-moz-transform:scale3d(0,0,0) translate3d(-100%,-100%,0);-o-transform:scale3d(0,0,0) translate3d(-100%,-100%,0);-ms-transform:scale3d(0,0,0) translate3d(-100%,-100%,0);-webkit-transform:scale3d(0,0,0) translate3d(-100%,-100%,0);transform:scale3d(0,0,0) translate3d(-100%,-100%,0)}.lg-css3.lg-slide-circular-vertical-left .lg-item.lg-next-slide{-moz-transform:scale3d(0,0,0) translate3d(-100%,100%,0);-o-transform:scale3d(0,0,0) translate3d(-100%,100%,0);-ms-transform:scale3d(0,0,0) translate3d(-100%,100%,0);-webkit-transform:scale3d(0,0,0) translate3d(-100%,100%,0);transform:scale3d(0,0,0) translate3d(-100%,100%,0)}.lg-css3.lg-slide-circular-vertical-left .lg-item.lg-current{-moz-transform:scale3d(1,1,1) translate3d(0,0,0);-o-transform:scale3d(1,1,1) translate3d(0,0,0);-ms-transform:scale3d(1,1,1) translate3d(0,0,0);-webkit-transform:scale3d(1,1,1) translate3d(0,0,0);transform:scale3d(1,1,1) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-circular-vertical-left .lg-item.lg-current,.lg-css3.lg-slide-circular-vertical-left .lg-item.lg-next-slide,.lg-css3.lg-slide-circular-vertical-left .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-slide-circular-vertical-down .lg-item{opacity:0}.lg-css3.lg-slide-circular-vertical-down .lg-item.lg-prev-slide{-moz-transform:scale3d(0,0,0) translate3d(100%,-100%,0);-o-transform:scale3d(0,0,0) translate3d(100%,-100%,0);-ms-transform:scale3d(0,0,0) translate3d(100%,-100%,0);-webkit-transform:scale3d(0,0,0) translate3d(100%,-100%,0);transform:scale3d(0,0,0) translate3d(100%,-100%,0)}.lg-css3.lg-slide-circular-vertical-down .lg-item.lg-next-slide{-moz-transform:scale3d(0,0,0) translate3d(100%,100%,0);-o-transform:scale3d(0,0,0) translate3d(100%,100%,0);-ms-transform:scale3d(0,0,0) translate3d(100%,100%,0);-webkit-transform:scale3d(0,0,0) translate3d(100%,100%,0);transform:scale3d(0,0,0) translate3d(100%,100%,0)}.lg-css3.lg-slide-circular-vertical-down .lg-item.lg-current{-moz-transform:scale3d(1,1,1) translate3d(0,0,0);-o-transform:scale3d(1,1,1) translate3d(0,0,0);-ms-transform:scale3d(1,1,1) translate3d(0,0,0);-webkit-transform:scale3d(1,1,1) translate3d(0,0,0);transform:scale3d(1,1,1) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-circular-vertical-down .lg-item.lg-current,.lg-css3.lg-slide-circular-vertical-down .lg-item.lg-next-slide,.lg-css3.lg-slide-circular-vertical-down .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity 1s ease 0s}.lg-css3.lg-slide-vertical .lg-item{opacity:0}.lg-css3.lg-slide-vertical .lg-item.lg-prev-slide{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.lg-css3.lg-slide-vertical .lg-item.lg-next-slide{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.lg-css3.lg-slide-vertical .lg-item.lg-current{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-vertical .lg-item.lg-current,.lg-css3.lg-slide-vertical .lg-item.lg-next-slide,.lg-css3.lg-slide-vertical .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-vertical-growth .lg-item{opacity:0}.lg-css3.lg-slide-vertical-growth .lg-item.lg-prev-slide{-moz-transform:scale3d(.5,.5,.5) translate3d(0,-150%,0);-o-transform:scale3d(.5,.5,.5) translate3d(0,-150%,0);-ms-transform:scale3d(.5,.5,.5) translate3d(0,-150%,0);-webkit-transform:scale3d(.5,.5,.5) translate3d(0,-150%,0);transform:scale3d(.5,.5,.5) translate3d(0,-150%,0)}.lg-css3.lg-slide-vertical-growth .lg-item.lg-next-slide{-moz-transform:scale3d(.5,.5,.5) translate3d(0,150%,0);-o-transform:scale3d(.5,.5,.5) translate3d(0,150%,0);-ms-transform:scale3d(.5,.5,.5) translate3d(0,150%,0);-webkit-transform:scale3d(.5,.5,.5) translate3d(0,150%,0);transform:scale3d(.5,.5,.5) translate3d(0,150%,0)}.lg-css3.lg-slide-vertical-growth .lg-item.lg-current{-moz-transform:scale3d(1,1,1) translate3d(0,0,0);-o-transform:scale3d(1,1,1) translate3d(0,0,0);-ms-transform:scale3d(1,1,1) translate3d(0,0,0);-webkit-transform:scale3d(1,1,1) translate3d(0,0,0);transform:scale3d(1,1,1) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-vertical-growth .lg-item.lg-current,.lg-css3.lg-slide-vertical-growth .lg-item.lg-next-slide,.lg-css3.lg-slide-vertical-growth .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew-only .lg-item{opacity:0}.lg-css3.lg-slide-skew-only .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-only .lg-item.lg-prev-slide{-moz-transform:skew(10deg,0deg);-o-transform:skew(10deg,0deg);-ms-transform:skew(10deg,0deg);-webkit-transform:skew(10deg,0deg);transform:skew(10deg,0deg)}.lg-css3.lg-slide-skew-only .lg-item.lg-current{-moz-transform:skew(0deg,0deg);-o-transform:skew(0deg,0deg);-ms-transform:skew(0deg,0deg);-webkit-transform:skew(0deg,0deg);transform:skew(0deg,0deg);opacity:1}.lg-css3.lg-slide-skew-only .lg-item.lg-current,.lg-css3.lg-slide-skew-only .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-only .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew-only-rev .lg-item{opacity:0}.lg-css3.lg-slide-skew-only-rev .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-only-rev .lg-item.lg-prev-slide{-moz-transform:skew(-10deg,0deg);-o-transform:skew(-10deg,0deg);-ms-transform:skew(-10deg,0deg);-webkit-transform:skew(-10deg,0deg);transform:skew(-10deg,0deg)}.lg-css3.lg-slide-skew-only-rev .lg-item.lg-current{-moz-transform:skew(0deg,0deg);-o-transform:skew(0deg,0deg);-ms-transform:skew(0deg,0deg);-webkit-transform:skew(0deg,0deg);transform:skew(0deg,0deg);opacity:1}.lg-css3.lg-slide-skew-only-rev .lg-item.lg-current,.lg-css3.lg-slide-skew-only-rev .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-only-rev .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew-only-y .lg-item{opacity:0}.lg-css3.lg-slide-skew-only-y .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-only-y .lg-item.lg-prev-slide{-moz-transform:skew(0deg,10deg);-o-transform:skew(0deg,10deg);-ms-transform:skew(0deg,10deg);-webkit-transform:skew(0deg,10deg);transform:skew(0deg,10deg)}.lg-css3.lg-slide-skew-only-y .lg-item.lg-current{-moz-transform:skew(0deg,0deg);-o-transform:skew(0deg,0deg);-ms-transform:skew(0deg,0deg);-webkit-transform:skew(0deg,0deg);transform:skew(0deg,0deg);opacity:1}.lg-css3.lg-slide-skew-only-y .lg-item.lg-current,.lg-css3.lg-slide-skew-only-y .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-only-y .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew-only-y-rev .lg-item{opacity:0}.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-prev-slide{-moz-transform:skew(0deg,-10deg);-o-transform:skew(0deg,-10deg);-ms-transform:skew(0deg,-10deg);-webkit-transform:skew(0deg,-10deg);transform:skew(0deg,-10deg)}.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-current{-moz-transform:skew(0deg,0deg);-o-transform:skew(0deg,0deg);-ms-transform:skew(0deg,0deg);-webkit-transform:skew(0deg,0deg);transform:skew(0deg,0deg);opacity:1}.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-current,.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-only-y-rev .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew .lg-item{opacity:0}.lg-css3.lg-slide-skew .lg-item.lg-prev-slide{-moz-transform:skew(20deg,0deg) translate3d(-100%,0,0);-o-transform:skew(20deg,0deg) translate3d(-100%,0,0);-ms-transform:skew(20deg,0deg) translate3d(-100%,0,0);-webkit-transform:skew(20deg,0deg) translate3d(-100%,0,0);transform:skew(20deg,0deg) translate3d(-100%,0,0)}.lg-css3.lg-slide-skew .lg-item.lg-next-slide{-moz-transform:skew(20deg,0deg) translate3d(100%,0,0);-o-transform:skew(20deg,0deg) translate3d(100%,0,0);-ms-transform:skew(20deg,0deg) translate3d(100%,0,0);-webkit-transform:skew(20deg,0deg) translate3d(100%,0,0);transform:skew(20deg,0deg) translate3d(100%,0,0)}.lg-css3.lg-slide-skew .lg-item.lg-current{-moz-transform:skew(0deg,0deg) translate3d(0,0,0);-o-transform:skew(0deg,0deg) translate3d(0,0,0);-ms-transform:skew(0deg,0deg) translate3d(0,0,0);-webkit-transform:skew(0deg,0deg) translate3d(0,0,0);transform:skew(0deg,0deg) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-skew .lg-item.lg-current,.lg-css3.lg-slide-skew .lg-item.lg-next-slide,.lg-css3.lg-slide-skew .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew-rev .lg-item{opacity:0}.lg-css3.lg-slide-skew-rev .lg-item.lg-prev-slide{-moz-transform:skew(-20deg,0deg) translate3d(-100%,0,0);-o-transform:skew(-20deg,0deg) translate3d(-100%,0,0);-ms-transform:skew(-20deg,0deg) translate3d(-100%,0,0);-webkit-transform:skew(-20deg,0deg) translate3d(-100%,0,0);transform:skew(-20deg,0deg) translate3d(-100%,0,0)}.lg-css3.lg-slide-skew-rev .lg-item.lg-next-slide{-moz-transform:skew(-20deg,0deg) translate3d(100%,0,0);-o-transform:skew(-20deg,0deg) translate3d(100%,0,0);-ms-transform:skew(-20deg,0deg) translate3d(100%,0,0);-webkit-transform:skew(-20deg,0deg) translate3d(100%,0,0);transform:skew(-20deg,0deg) translate3d(100%,0,0)}.lg-css3.lg-slide-skew-rev .lg-item.lg-current{-moz-transform:skew(0deg,0deg) translate3d(0,0,0);-o-transform:skew(0deg,0deg) translate3d(0,0,0);-ms-transform:skew(0deg,0deg) translate3d(0,0,0);-webkit-transform:skew(0deg,0deg) translate3d(0,0,0);transform:skew(0deg,0deg) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-skew-rev .lg-item.lg-current,.lg-css3.lg-slide-skew-rev .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-rev .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew-cross .lg-item{opacity:0}.lg-css3.lg-slide-skew-cross .lg-item.lg-prev-slide{-moz-transform:skew(0deg,60deg) translate3d(-100%,0,0);-o-transform:skew(0deg,60deg) translate3d(-100%,0,0);-ms-transform:skew(0deg,60deg) translate3d(-100%,0,0);-webkit-transform:skew(0deg,60deg) translate3d(-100%,0,0);transform:skew(0deg,60deg) translate3d(-100%,0,0)}.lg-css3.lg-slide-skew-cross .lg-item.lg-next-slide{-moz-transform:skew(0deg,60deg) translate3d(100%,0,0);-o-transform:skew(0deg,60deg) translate3d(100%,0,0);-ms-transform:skew(0deg,60deg) translate3d(100%,0,0);-webkit-transform:skew(0deg,60deg) translate3d(100%,0,0);transform:skew(0deg,60deg) translate3d(100%,0,0)}.lg-css3.lg-slide-skew-cross .lg-item.lg-current{-moz-transform:skew(0deg,0deg) translate3d(0,0,0);-o-transform:skew(0deg,0deg) translate3d(0,0,0);-ms-transform:skew(0deg,0deg) translate3d(0,0,0);-webkit-transform:skew(0deg,0deg) translate3d(0,0,0);transform:skew(0deg,0deg) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-skew-cross .lg-item.lg-current,.lg-css3.lg-slide-skew-cross .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-cross .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew-cross-rev .lg-item{opacity:0}.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-prev-slide{-moz-transform:skew(0deg,-60deg) translate3d(-100%,0,0);-o-transform:skew(0deg,-60deg) translate3d(-100%,0,0);-ms-transform:skew(0deg,-60deg) translate3d(-100%,0,0);-webkit-transform:skew(0deg,-60deg) translate3d(-100%,0,0);transform:skew(0deg,-60deg) translate3d(-100%,0,0)}.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-next-slide{-moz-transform:skew(0deg,-60deg) translate3d(100%,0,0);-o-transform:skew(0deg,-60deg) translate3d(100%,0,0);-ms-transform:skew(0deg,-60deg) translate3d(100%,0,0);-webkit-transform:skew(0deg,-60deg) translate3d(100%,0,0);transform:skew(0deg,-60deg) translate3d(100%,0,0)}.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-current{-moz-transform:skew(0deg,0deg) translate3d(0,0,0);-o-transform:skew(0deg,0deg) translate3d(0,0,0);-ms-transform:skew(0deg,0deg) translate3d(0,0,0);-webkit-transform:skew(0deg,0deg) translate3d(0,0,0);transform:skew(0deg,0deg) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-current,.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-cross-rev .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew-ver .lg-item{opacity:0}.lg-css3.lg-slide-skew-ver .lg-item.lg-prev-slide{-moz-transform:skew(60deg,0deg) translate3d(0,-100%,0);-o-transform:skew(60deg,0deg) translate3d(0,-100%,0);-ms-transform:skew(60deg,0deg) translate3d(0,-100%,0);-webkit-transform:skew(60deg,0deg) translate3d(0,-100%,0);transform:skew(60deg,0deg) translate3d(0,-100%,0)}.lg-css3.lg-slide-skew-ver .lg-item.lg-next-slide{-moz-transform:skew(60deg,0deg) translate3d(0,100%,0);-o-transform:skew(60deg,0deg) translate3d(0,100%,0);-ms-transform:skew(60deg,0deg) translate3d(0,100%,0);-webkit-transform:skew(60deg,0deg) translate3d(0,100%,0);transform:skew(60deg,0deg) translate3d(0,100%,0)}.lg-css3.lg-slide-skew-ver .lg-item.lg-current{-moz-transform:skew(0deg,0deg) translate3d(0,0,0);-o-transform:skew(0deg,0deg) translate3d(0,0,0);-ms-transform:skew(0deg,0deg) translate3d(0,0,0);-webkit-transform:skew(0deg,0deg) translate3d(0,0,0);transform:skew(0deg,0deg) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-skew-ver .lg-item.lg-current,.lg-css3.lg-slide-skew-ver .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-ver .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew-ver-rev .lg-item{opacity:0}.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-prev-slide{-moz-transform:skew(-60deg,0deg) translate3d(0,-100%,0);-o-transform:skew(-60deg,0deg) translate3d(0,-100%,0);-ms-transform:skew(-60deg,0deg) translate3d(0,-100%,0);-webkit-transform:skew(-60deg,0deg) translate3d(0,-100%,0);transform:skew(-60deg,0deg) translate3d(0,-100%,0)}.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-next-slide{-moz-transform:skew(-60deg,0deg) translate3d(0,100%,0);-o-transform:skew(-60deg,0deg) translate3d(0,100%,0);-ms-transform:skew(-60deg,0deg) translate3d(0,100%,0);-webkit-transform:skew(-60deg,0deg) translate3d(0,100%,0);transform:skew(-60deg,0deg) translate3d(0,100%,0)}.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-current{-moz-transform:skew(0deg,0deg) translate3d(0,0,0);-o-transform:skew(0deg,0deg) translate3d(0,0,0);-ms-transform:skew(0deg,0deg) translate3d(0,0,0);-webkit-transform:skew(0deg,0deg) translate3d(0,0,0);transform:skew(0deg,0deg) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-current,.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-ver-rev .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew-ver-cross .lg-item{opacity:0}.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-prev-slide{-moz-transform:skew(0deg,20deg) translate3d(0,-100%,0);-o-transform:skew(0deg,20deg) translate3d(0,-100%,0);-ms-transform:skew(0deg,20deg) translate3d(0,-100%,0);-webkit-transform:skew(0deg,20deg) translate3d(0,-100%,0);transform:skew(0deg,20deg) translate3d(0,-100%,0)}.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-next-slide{-moz-transform:skew(0deg,20deg) translate3d(0,100%,0);-o-transform:skew(0deg,20deg) translate3d(0,100%,0);-ms-transform:skew(0deg,20deg) translate3d(0,100%,0);-webkit-transform:skew(0deg,20deg) translate3d(0,100%,0);transform:skew(0deg,20deg) translate3d(0,100%,0)}.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-current{-moz-transform:skew(0deg,0deg) translate3d(0,0,0);-o-transform:skew(0deg,0deg) translate3d(0,0,0);-ms-transform:skew(0deg,0deg) translate3d(0,0,0);-webkit-transform:skew(0deg,0deg) translate3d(0,0,0);transform:skew(0deg,0deg) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-current,.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-ver-cross .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide-skew-ver-cross-rev .lg-item{opacity:0}.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-prev-slide{-moz-transform:skew(0deg,-20deg) translate3d(0,-100%,0);-o-transform:skew(0deg,-20deg) translate3d(0,-100%,0);-ms-transform:skew(0deg,-20deg) translate3d(0,-100%,0);-webkit-transform:skew(0deg,-20deg) translate3d(0,-100%,0);transform:skew(0deg,-20deg) translate3d(0,-100%,0)}.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-next-slide{-moz-transform:skew(0deg,-20deg) translate3d(0,100%,0);-o-transform:skew(0deg,-20deg) translate3d(0,100%,0);-ms-transform:skew(0deg,-20deg) translate3d(0,100%,0);-webkit-transform:skew(0deg,-20deg) translate3d(0,100%,0);transform:skew(0deg,-20deg) translate3d(0,100%,0)}.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-current{-moz-transform:skew(0deg,0deg) translate3d(0,0,0);-o-transform:skew(0deg,0deg) translate3d(0,0,0);-ms-transform:skew(0deg,0deg) translate3d(0,0,0);-webkit-transform:skew(0deg,0deg) translate3d(0,0,0);transform:skew(0deg,0deg) translate3d(0,0,0);opacity:1}.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-current,.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-next-slide,.lg-css3.lg-slide-skew-ver-cross-rev .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-lollipop .lg-item{opacity:0}.lg-css3.lg-lollipop .lg-item.lg-prev-slide{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.lg-css3.lg-lollipop .lg-item.lg-next-slide{-moz-transform:translate3d(0,0,0) scale(.5);-o-transform:translate3d(0,0,0) scale(.5);-ms-transform:translate3d(0,0,0) scale(.5);-webkit-transform:translate3d(0,0,0) scale(.5);transform:translate3d(0,0,0) scale(.5)}.lg-css3.lg-lollipop .lg-item.lg-current{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-css3.lg-lollipop .lg-item.lg-current,.lg-css3.lg-lollipop .lg-item.lg-next-slide,.lg-css3.lg-lollipop .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-lollipop-rev .lg-item{opacity:0}.lg-css3.lg-lollipop-rev .lg-item.lg-prev-slide{-moz-transform:translate3d(0,0,0) scale(.5);-o-transform:translate3d(0,0,0) scale(.5);-ms-transform:translate3d(0,0,0) scale(.5);-webkit-transform:translate3d(0,0,0) scale(.5);transform:translate3d(0,0,0) scale(.5)}.lg-css3.lg-lollipop-rev .lg-item.lg-next-slide{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.lg-css3.lg-lollipop-rev .lg-item.lg-current{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-css3.lg-lollipop-rev .lg-item.lg-current,.lg-css3.lg-lollipop-rev .lg-item.lg-next-slide,.lg-css3.lg-lollipop-rev .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-rotate .lg-item{opacity:0}.lg-css3.lg-rotate .lg-item.lg-prev-slide{-moz-transform:rotate(-360deg);-o-transform:rotate(-360deg);-ms-transform:rotate(-360deg);-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}.lg-css3.lg-rotate .lg-item.lg-next-slide{-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);-webkit-transform:rotate(360deg);transform:rotate(360deg)}.lg-css3.lg-rotate .lg-item.lg-current{-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);opacity:1}.lg-css3.lg-rotate .lg-item.lg-current,.lg-css3.lg-rotate .lg-item.lg-next-slide,.lg-css3.lg-rotate .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-rotate-rev .lg-item{opacity:0}.lg-css3.lg-rotate-rev .lg-item.lg-prev-slide{-moz-transform:rotate(360deg);-o-transform:rotate(360deg);-ms-transform:rotate(360deg);-webkit-transform:rotate(360deg);transform:rotate(360deg)}.lg-css3.lg-rotate-rev .lg-item.lg-next-slide{-moz-transform:rotate(-360deg);-o-transform:rotate(-360deg);-ms-transform:rotate(-360deg);-webkit-transform:rotate(-360deg);transform:rotate(-360deg)}.lg-css3.lg-rotate-rev .lg-item.lg-current{-moz-transform:rotate(0);-o-transform:rotate(0);-ms-transform:rotate(0);-webkit-transform:rotate(0);transform:rotate(0);opacity:1}.lg-css3.lg-rotate-rev .lg-item.lg-current,.lg-css3.lg-rotate-rev .lg-item.lg-next-slide,.lg-css3.lg-rotate-rev .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-tube .lg-item{opacity:0}.lg-css3.lg-tube .lg-item.lg-prev-slide{-moz-transform:scale3d(1,0,1) translate3d(-100%,0,0);-o-transform:scale3d(1,0,1) translate3d(-100%,0,0);-ms-transform:scale3d(1,0,1) translate3d(-100%,0,0);-webkit-transform:scale3d(1,0,1) translate3d(-100%,0,0);transform:scale3d(1,0,1) translate3d(-100%,0,0)}.lg-css3.lg-tube .lg-item.lg-next-slide{-moz-transform:scale3d(1,0,1) translate3d(100%,0,0);-o-transform:scale3d(1,0,1) translate3d(100%,0,0);-ms-transform:scale3d(1,0,1) translate3d(100%,0,0);-webkit-transform:scale3d(1,0,1) translate3d(100%,0,0);transform:scale3d(1,0,1) translate3d(100%,0,0)}.lg-css3.lg-tube .lg-item.lg-current{-moz-transform:scale3d(1,1,1) translate3d(0,0,0);-o-transform:scale3d(1,1,1) translate3d(0,0,0);-ms-transform:scale3d(1,1,1) translate3d(0,0,0);-webkit-transform:scale3d(1,1,1) translate3d(0,0,0);transform:scale3d(1,1,1) translate3d(0,0,0);opacity:1}.lg-css3.lg-tube .lg-item.lg-current,.lg-css3.lg-tube .lg-item.lg-next-slide,.lg-css3.lg-tube .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}
\ No newline at end of file
diff --git a/resources/lightgallery/css/lg-video.css b/resources/lightgallery/css/lg-video.css
new file mode 100644
index 0000000..a39b5e9
--- /dev/null
+++ b/resources/lightgallery/css/lg-video.css
@@ -0,0 +1,144 @@
+.lg-outer .lg-video-cont {
+  text-align: center;
+  display: inline-block;
+  vertical-align: middle;
+  position: relative;
+}
+
+.lg-outer .lg-video-cont .lg-object {
+  width: 100% !important;
+  height: 100% !important;
+}
+
+.lg-outer .lg-has-iframe .lg-video-cont {
+  -webkit-overflow-scrolling: touch;
+  overflow: auto;
+}
+
+.lg-outer .lg-video-object {
+  position: absolute;
+  left: 0;
+  right: 0;
+  width: 100%;
+  height: 100%;
+  top: 0;
+  bottom: 0;
+  z-index: 3;
+}
+
+.lg-outer .lg-video-poster {
+  z-index: 1;
+}
+
+.lg-outer .lg-has-video .lg-video-object {
+  opacity: 0;
+  will-change: opacity;
+  -webkit-transition: opacity 0.3s ease-in;
+  -o-transition: opacity 0.3s ease-in;
+  transition: opacity 0.3s ease-in;
+}
+
+.lg-outer .lg-has-video.lg-video-loaded .lg-video-poster,
+.lg-outer .lg-has-video.lg-video-loaded .lg-video-play-button {
+  opacity: 0 !important;
+}
+
+.lg-outer .lg-has-video.lg-video-loaded .lg-video-object {
+  opacity: 1;
+}
+
+@keyframes lg-play-stroke {
+  0% {
+    stroke-dasharray: 1, 200;
+    stroke-dashoffset: 0;
+  }
+  50% {
+    stroke-dasharray: 89, 200;
+    stroke-dashoffset: -35px;
+  }
+  100% {
+    stroke-dasharray: 89, 200;
+    stroke-dashoffset: -124px;
+  }
+}
+
+@keyframes lg-play-rotate {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+
+.lg-video-play-button {
+  width: 18%;
+  max-width: 140px;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  z-index: 2;
+  cursor: pointer;
+  transform: translate(-50%, -50%) scale(1);
+  will-change: opacity, transform;
+  -webkit-transition: -webkit-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;
+  -moz-transition: -moz-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;
+  -o-transition: -o-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;
+  transition: transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;
+}
+
+.lg-video-play-button:hover .lg-video-play-icon-bg,
+.lg-video-play-button:hover .lg-video-play-icon {
+  opacity: 1;
+}
+
+.lg-video-play-icon-bg {
+  fill: none;
+  stroke-width: 3%;
+  stroke: #fcfcfc;
+  opacity: 0.6;
+  will-change: opacity;
+  -webkit-transition: opacity 0.12s ease-in;
+  -o-transition: opacity 0.12s ease-in;
+  transition: opacity 0.12s ease-in;
+}
+
+.lg-video-play-icon-circle {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  fill: none;
+  stroke-width: 3%;
+  stroke: rgba(30, 30, 30, 0.9);
+  stroke-opacity: 1;
+  stroke-linecap: round;
+  stroke-dasharray: 200;
+  stroke-dashoffset: 200;
+}
+
+.lg-video-play-icon {
+  position: absolute;
+  width: 25%;
+  max-width: 120px;
+  left: 50%;
+  top: 50%;
+  transform: translate3d(-50%, -50%, 0);
+  opacity: 0.6;
+  will-change: opacity;
+  -webkit-transition: opacity 0.12s ease-in;
+  -o-transition: opacity 0.12s ease-in;
+  transition: opacity 0.12s ease-in;
+}
+
+.lg-video-play-icon .lg-video-play-icon-inner {
+  fill: #fcfcfc;
+}
+
+.lg-video-loading .lg-video-play-icon-circle {
+  animation: lg-play-rotate 2s linear 0.25s infinite, lg-play-stroke 1.5s ease-in-out 0.25s infinite;
+}
+
+.lg-video-loaded .lg-video-play-button {
+  opacity: 0;
+  transform: translate(-50%, -50%) scale(0.7);
+}
diff --git a/resources/lightgallery/css/lg-zoom.css b/resources/lightgallery/css/lg-zoom.css
new file mode 100644
index 0000000..abf6893
--- /dev/null
+++ b/resources/lightgallery/css/lg-zoom.css
@@ -0,0 +1,116 @@
+.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap,
+.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image {
+  -webkit-transition-duration: 0ms !important;
+  transition-duration: 0ms !important;
+}
+
+.lg-outer.lg-use-transition-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap {
+  will-change: transform;
+  -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s;
+  -moz-transition: -moz-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s;
+  -o-transition: -o-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s;
+  transition: transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s;
+}
+
+.lg-outer.lg-use-transition-for-zoom.lg-zoom-drag-transition .lg-item.lg-complete.lg-zoomable .lg-img-wrap {
+  will-change: transform;
+  -webkit-transition: -webkit-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap {
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+  -webkit-backface-visibility: hidden;
+  -moz-backface-visibility: hidden;
+  backface-visibility: hidden;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image,
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img {
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important;
+  -moz-transition: -moz-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important;
+  -o-transition: -o-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important;
+  transition: transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important;
+  -webkit-backface-visibility: hidden;
+  -moz-backface-visibility: hidden;
+  backface-visibility: hidden;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.no-transition,
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.no-transition {
+  transition: none !important;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition,
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition {
+  transform: scale3d(1, 1, 1) translate3d(-50%, -50%, 0px) !important;
+  max-width: none !important;
+  max-height: none !important;
+  top: 50% !important;
+  left: 50% !important;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-x,
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-x {
+  transform: scale3d(1, 1, 1) translate3d(-50%, 0, 0px) !important;
+  top: 0 !important;
+  left: 50% !important;
+  max-width: none !important;
+  max-height: none !important;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-y,
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-y {
+  transform: scale3d(1, 1, 1) translate3d(0, -50%, 0px) !important;
+  top: 50% !important;
+  left: 0% !important;
+  max-width: none !important;
+  max-height: none !important;
+}
+
+.lg-icon.lg-zoom-in:after {
+  content: '\e311';
+}
+
+.lg-actual-size .lg-icon.lg-zoom-in {
+  opacity: 0.5;
+  pointer-events: none;
+}
+
+.lg-icon.lg-actual-size {
+  font-size: 20px;
+}
+
+.lg-icon.lg-actual-size:after {
+  content: '\e033';
+}
+
+.lg-icon.lg-zoom-out {
+  opacity: 0.5;
+  pointer-events: none;
+}
+
+.lg-icon.lg-zoom-out:after {
+  content: '\e312';
+}
+
+.lg-zoomed .lg-icon.lg-zoom-out {
+  opacity: 1;
+  pointer-events: auto;
+}
+
+.lg-outer[data-lg-slide-type='video'] .lg-zoom-in,
+.lg-outer[data-lg-slide-type='video'] .lg-actual-size,
+.lg-outer[data-lg-slide-type='video'] .lg-zoom-out, .lg-outer[data-lg-slide-type='iframe'] .lg-zoom-in,
+.lg-outer[data-lg-slide-type='iframe'] .lg-actual-size,
+.lg-outer[data-lg-slide-type='iframe'] .lg-zoom-out, .lg-outer.lg-first-slide-loading .lg-zoom-in,
+.lg-outer.lg-first-slide-loading .lg-actual-size,
+.lg-outer.lg-first-slide-loading .lg-zoom-out {
+  opacity: 0.75;
+  pointer-events: none;
+}
diff --git a/resources/lightgallery/css/lightgallery-bundle.css b/resources/lightgallery/css/lightgallery-bundle.css
new file mode 100644
index 0000000..a92e81c
--- /dev/null
+++ b/resources/lightgallery/css/lightgallery-bundle.css
@@ -0,0 +1,1601 @@
+@font-face {
+  font-family: 'lg';
+  src: url("../fonts/lg.woff2?io9a6k") format("woff2"), url("../fonts/lg.ttf?io9a6k") format("truetype"), url("../fonts/lg.woff?io9a6k") format("woff"), url("../fonts/lg.svg?io9a6k#lg") format("svg");
+  font-weight: normal;
+  font-style: normal;
+  font-display: block;
+}
+
+.lg-icon {
+  /* use !important to prevent issues with browser extensions that change fonts */
+  font-family: 'lg' !important;
+  speak: never;
+  font-style: normal;
+  font-weight: normal;
+  font-variant: normal;
+  text-transform: none;
+  line-height: 1;
+  /* Better Font Rendering =========== */
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.lg-container {
+  font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
+}
+
+.lg-next,
+.lg-prev {
+  background-color: rgba(0, 0, 0, 0.45);
+  border-radius: 2px;
+  color: #999;
+  cursor: pointer;
+  display: block;
+  font-size: 22px;
+  margin-top: -10px;
+  padding: 8px 10px 9px;
+  position: absolute;
+  top: 50%;
+  z-index: 1084;
+  outline: none;
+  border: none;
+}
+
+.lg-next.disabled,
+.lg-prev.disabled {
+  opacity: 0 !important;
+  cursor: default;
+}
+
+.lg-next:hover:not(.disabled),
+.lg-prev:hover:not(.disabled) {
+  color: #fff;
+}
+
+.lg-single-item .lg-next, .lg-single-item
+.lg-prev {
+  display: none;
+}
+
+.lg-next {
+  right: 20px;
+}
+
+.lg-next:before {
+  content: '\e095';
+}
+
+.lg-prev {
+  left: 20px;
+}
+
+.lg-prev:after {
+  content: '\e094';
+}
+
+@-webkit-keyframes lg-right-end {
+  0% {
+    left: 0;
+  }
+  50% {
+    left: -30px;
+  }
+  100% {
+    left: 0;
+  }
+}
+
+@-moz-keyframes lg-right-end {
+  0% {
+    left: 0;
+  }
+  50% {
+    left: -30px;
+  }
+  100% {
+    left: 0;
+  }
+}
+
+@-ms-keyframes lg-right-end {
+  0% {
+    left: 0;
+  }
+  50% {
+    left: -30px;
+  }
+  100% {
+    left: 0;
+  }
+}
+
+@keyframes lg-right-end {
+  0% {
+    left: 0;
+  }
+  50% {
+    left: -30px;
+  }
+  100% {
+    left: 0;
+  }
+}
+
+@-webkit-keyframes lg-left-end {
+  0% {
+    left: 0;
+  }
+  50% {
+    left: 30px;
+  }
+  100% {
+    left: 0;
+  }
+}
+
+@-moz-keyframes lg-left-end {
+  0% {
+    left: 0;
+  }
+  50% {
+    left: 30px;
+  }
+  100% {
+    left: 0;
+  }
+}
+
+@-ms-keyframes lg-left-end {
+  0% {
+    left: 0;
+  }
+  50% {
+    left: 30px;
+  }
+  100% {
+    left: 0;
+  }
+}
+
+@keyframes lg-left-end {
+  0% {
+    left: 0;
+  }
+  50% {
+    left: 30px;
+  }
+  100% {
+    left: 0;
+  }
+}
+
+.lg-outer.lg-right-end .lg-object {
+  -webkit-animation: lg-right-end 0.3s;
+  -o-animation: lg-right-end 0.3s;
+  animation: lg-right-end 0.3s;
+  position: relative;
+}
+
+.lg-outer.lg-left-end .lg-object {
+  -webkit-animation: lg-left-end 0.3s;
+  -o-animation: lg-left-end 0.3s;
+  animation: lg-left-end 0.3s;
+  position: relative;
+}
+
+.lg-toolbar {
+  z-index: 1082;
+  left: 0;
+  position: absolute;
+  top: 0;
+  width: 100%;
+}
+
+.lg-media-overlap .lg-toolbar {
+  background-image: linear-gradient(0deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.4));
+}
+
+.lg-toolbar .lg-icon {
+  color: #999;
+  cursor: pointer;
+  float: right;
+  font-size: 24px;
+  height: 47px;
+  line-height: 27px;
+  padding: 10px 0;
+  text-align: center;
+  width: 50px;
+  text-decoration: none !important;
+  outline: medium none;
+  will-change: color;
+  -webkit-transition: color 0.2s linear;
+  -o-transition: color 0.2s linear;
+  transition: color 0.2s linear;
+  background: none;
+  border: none;
+  box-shadow: none;
+}
+
+.lg-toolbar .lg-icon.lg-icon-18 {
+  font-size: 18px;
+}
+
+.lg-toolbar .lg-icon:hover {
+  color: #fff;
+}
+
+.lg-toolbar .lg-close:after {
+  content: '\e070';
+}
+
+.lg-toolbar .lg-maximize {
+  font-size: 22px;
+}
+
+.lg-toolbar .lg-maximize:after {
+  content: '\e90a';
+}
+
+.lg-toolbar .lg-download:after {
+  content: '\e0f2';
+}
+
+.lg-sub-html {
+  color: #eee;
+  font-size: 16px;
+  padding: 10px 40px;
+  text-align: center;
+  z-index: 1080;
+  opacity: 0;
+  -webkit-transition: opacity 0.2s ease-out 0s;
+  -o-transition: opacity 0.2s ease-out 0s;
+  transition: opacity 0.2s ease-out 0s;
+}
+
+.lg-sub-html h4 {
+  margin: 0;
+  font-size: 13px;
+  font-weight: bold;
+}
+
+.lg-sub-html p {
+  font-size: 12px;
+  margin: 5px 0 0;
+}
+
+.lg-sub-html a {
+  color: inherit;
+}
+
+.lg-sub-html a:hover {
+  text-decoration: underline;
+}
+
+.lg-media-overlap .lg-sub-html {
+  background-image: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.6));
+}
+
+.lg-item .lg-sub-html {
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  left: 0;
+}
+
+.lg-error-msg {
+  font-size: 14px;
+  color: #999;
+}
+
+.lg-counter {
+  color: #999;
+  display: inline-block;
+  font-size: 16px;
+  padding-left: 20px;
+  padding-top: 12px;
+  height: 47px;
+  vertical-align: middle;
+}
+
+.lg-closing .lg-toolbar,
+.lg-closing .lg-prev,
+.lg-closing .lg-next,
+.lg-closing .lg-sub-html {
+  opacity: 0;
+  -webkit-transition: -webkit-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
+  -moz-transition: -moz-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
+  -o-transition: -o-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
+  transition: transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
+}
+
+body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap,
+body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-video-cont {
+  opacity: 0;
+  -moz-transform: scale3d(0.5, 0.5, 0.5);
+  -o-transform: scale3d(0.5, 0.5, 0.5);
+  -ms-transform: scale3d(0.5, 0.5, 0.5);
+  -webkit-transform: scale3d(0.5, 0.5, 0.5);
+  transform: scale3d(0.5, 0.5, 0.5);
+  will-change: transform, opacity;
+  -webkit-transition: -webkit-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
+  -moz-transition: -moz-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
+  -o-transition: -o-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
+  transition: transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
+}
+
+body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap,
+body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-video-cont {
+  opacity: 1;
+  -moz-transform: scale3d(1, 1, 1);
+  -o-transform: scale3d(1, 1, 1);
+  -ms-transform: scale3d(1, 1, 1);
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+}
+
+.lg-icon:focus-visible {
+  color: #fff;
+  border-radius: 3px;
+  outline: 1px dashed rgba(255, 255, 255, 0.6);
+}
+
+.lg-toolbar .lg-icon:focus-visible {
+  border-radius: 8px;
+  outline-offset: -5px;
+}
+
+.lg-outer .lg-thumb-outer {
+  background-color: #0d0a0a;
+  width: 100%;
+  max-height: 350px;
+  overflow: hidden;
+  float: left;
+}
+
+.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item {
+  cursor: -webkit-grab;
+  cursor: -moz-grab;
+  cursor: -o-grab;
+  cursor: -ms-grab;
+  cursor: grab;
+}
+
+.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item {
+  cursor: move;
+  cursor: -webkit-grabbing;
+  cursor: -moz-grabbing;
+  cursor: -o-grabbing;
+  cursor: -ms-grabbing;
+  cursor: grabbing;
+}
+
+.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
+}
+
+.lg-outer .lg-thumb-outer.lg-rebuilding-thumbnails .lg-thumb {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
+}
+
+.lg-outer .lg-thumb-outer.lg-thumb-align-middle {
+  text-align: center;
+}
+
+.lg-outer .lg-thumb-outer.lg-thumb-align-left {
+  text-align: left;
+}
+
+.lg-outer .lg-thumb-outer.lg-thumb-align-right {
+  text-align: right;
+}
+
+.lg-outer.lg-single-item .lg-thumb-outer {
+  display: none;
+}
+
+.lg-outer .lg-thumb {
+  padding: 5px 0;
+  height: 100%;
+  margin-bottom: -5px;
+  display: inline-block;
+  vertical-align: middle;
+}
+
+@media (min-width: 768px) {
+  .lg-outer .lg-thumb {
+    padding: 10px 0;
+  }
+}
+
+.lg-outer .lg-thumb-item {
+  cursor: pointer;
+  float: left;
+  overflow: hidden;
+  height: 100%;
+  border-radius: 2px;
+  margin-bottom: 5px;
+  will-change: border-color;
+}
+
+@media (min-width: 768px) {
+  .lg-outer .lg-thumb-item {
+    border-radius: 4px;
+    border: 2px solid #fff;
+    -webkit-transition: border-color 0.25s ease;
+    -o-transition: border-color 0.25s ease;
+    transition: border-color 0.25s ease;
+  }
+}
+
+.lg-outer .lg-thumb-item.active, .lg-outer .lg-thumb-item:hover {
+  border-color: #a90707;
+}
+
+.lg-outer .lg-thumb-item img {
+  width: 100%;
+  height: 100%;
+  object-fit: cover;
+  display: block;
+}
+
+.lg-outer.lg-can-toggle .lg-item {
+  padding-bottom: 0;
+}
+
+.lg-outer .lg-toggle-thumb:after {
+  content: '\e1ff';
+}
+
+.lg-outer.lg-animate-thumb .lg-thumb {
+  -webkit-transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+  transition-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
+}
+
+.lg-outer .lg-video-cont {
+  text-align: center;
+  display: inline-block;
+  vertical-align: middle;
+  position: relative;
+}
+
+.lg-outer .lg-video-cont .lg-object {
+  width: 100% !important;
+  height: 100% !important;
+}
+
+.lg-outer .lg-has-iframe .lg-video-cont {
+  -webkit-overflow-scrolling: touch;
+  overflow: auto;
+}
+
+.lg-outer .lg-video-object {
+  position: absolute;
+  left: 0;
+  right: 0;
+  width: 100%;
+  height: 100%;
+  top: 0;
+  bottom: 0;
+  z-index: 3;
+}
+
+.lg-outer .lg-video-poster {
+  z-index: 1;
+}
+
+.lg-outer .lg-has-video .lg-video-object {
+  opacity: 0;
+  will-change: opacity;
+  -webkit-transition: opacity 0.3s ease-in;
+  -o-transition: opacity 0.3s ease-in;
+  transition: opacity 0.3s ease-in;
+}
+
+.lg-outer .lg-has-video.lg-video-loaded .lg-video-poster,
+.lg-outer .lg-has-video.lg-video-loaded .lg-video-play-button {
+  opacity: 0 !important;
+}
+
+.lg-outer .lg-has-video.lg-video-loaded .lg-video-object {
+  opacity: 1;
+}
+
+@keyframes lg-play-stroke {
+  0% {
+    stroke-dasharray: 1, 200;
+    stroke-dashoffset: 0;
+  }
+  50% {
+    stroke-dasharray: 89, 200;
+    stroke-dashoffset: -35px;
+  }
+  100% {
+    stroke-dasharray: 89, 200;
+    stroke-dashoffset: -124px;
+  }
+}
+
+@keyframes lg-play-rotate {
+  100% {
+    -webkit-transform: rotate(360deg);
+    transform: rotate(360deg);
+  }
+}
+
+.lg-video-play-button {
+  width: 18%;
+  max-width: 140px;
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  z-index: 2;
+  cursor: pointer;
+  transform: translate(-50%, -50%) scale(1);
+  will-change: opacity, transform;
+  -webkit-transition: -webkit-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;
+  -moz-transition: -moz-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;
+  -o-transition: -o-transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;
+  transition: transform 0.25s cubic-bezier(0.17, 0.88, 0.32, 1.28), opacity 0.1s;
+}
+
+.lg-video-play-button:hover .lg-video-play-icon-bg,
+.lg-video-play-button:hover .lg-video-play-icon {
+  opacity: 1;
+}
+
+.lg-video-play-icon-bg {
+  fill: none;
+  stroke-width: 3%;
+  stroke: #fcfcfc;
+  opacity: 0.6;
+  will-change: opacity;
+  -webkit-transition: opacity 0.12s ease-in;
+  -o-transition: opacity 0.12s ease-in;
+  transition: opacity 0.12s ease-in;
+}
+
+.lg-video-play-icon-circle {
+  position: absolute;
+  top: 0;
+  left: 0;
+  bottom: 0;
+  right: 0;
+  fill: none;
+  stroke-width: 3%;
+  stroke: rgba(30, 30, 30, 0.9);
+  stroke-opacity: 1;
+  stroke-linecap: round;
+  stroke-dasharray: 200;
+  stroke-dashoffset: 200;
+}
+
+.lg-video-play-icon {
+  position: absolute;
+  width: 25%;
+  max-width: 120px;
+  left: 50%;
+  top: 50%;
+  transform: translate3d(-50%, -50%, 0);
+  opacity: 0.6;
+  will-change: opacity;
+  -webkit-transition: opacity 0.12s ease-in;
+  -o-transition: opacity 0.12s ease-in;
+  transition: opacity 0.12s ease-in;
+}
+
+.lg-video-play-icon .lg-video-play-icon-inner {
+  fill: #fcfcfc;
+}
+
+.lg-video-loading .lg-video-play-icon-circle {
+  animation: lg-play-rotate 2s linear 0.25s infinite, lg-play-stroke 1.5s ease-in-out 0.25s infinite;
+}
+
+.lg-video-loaded .lg-video-play-button {
+  opacity: 0;
+  transform: translate(-50%, -50%) scale(0.7);
+}
+
+.lg-progress-bar {
+  background-color: #333;
+  height: 5px;
+  left: 0;
+  position: absolute;
+  top: 0;
+  width: 100%;
+  z-index: 1083;
+  opacity: 0;
+  will-change: opacity;
+  -webkit-transition: opacity 0.08s ease 0s;
+  -moz-transition: opacity 0.08s ease 0s;
+  -o-transition: opacity 0.08s ease 0s;
+  transition: opacity 0.08s ease 0s;
+}
+
+.lg-progress-bar .lg-progress {
+  background-color: #a90707;
+  height: 5px;
+  width: 0;
+}
+
+.lg-progress-bar.lg-start .lg-progress {
+  width: 100%;
+}
+
+.lg-show-autoplay .lg-progress-bar {
+  opacity: 1;
+}
+
+.lg-autoplay-button:after {
+  content: '\e01d';
+}
+
+.lg-show-autoplay .lg-autoplay-button:after {
+  content: '\e01a';
+}
+
+.lg-single-item .lg-autoplay-button {
+  opacity: 0.75;
+  pointer-events: none;
+}
+
+.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap,
+.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image {
+  -webkit-transition-duration: 0ms !important;
+  transition-duration: 0ms !important;
+}
+
+.lg-outer.lg-use-transition-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap {
+  will-change: transform;
+  -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s;
+  -moz-transition: -moz-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s;
+  -o-transition: -o-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s;
+  transition: transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s;
+}
+
+.lg-outer.lg-use-transition-for-zoom.lg-zoom-drag-transition .lg-item.lg-complete.lg-zoomable .lg-img-wrap {
+  will-change: transform;
+  -webkit-transition: -webkit-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 0.8s cubic-bezier(0, 0, 0.25, 1) 0s;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap {
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+  -webkit-backface-visibility: hidden;
+  -moz-backface-visibility: hidden;
+  backface-visibility: hidden;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image,
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img {
+  -webkit-transform: scale3d(1, 1, 1);
+  transform: scale3d(1, 1, 1);
+  -webkit-transition: -webkit-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important;
+  -moz-transition: -moz-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important;
+  -o-transition: -o-transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important;
+  transition: transform 0.5s cubic-bezier(0.12, 0.415, 0.01, 1.19) 0s, opacity 0.15s !important;
+  -webkit-backface-visibility: hidden;
+  -moz-backface-visibility: hidden;
+  backface-visibility: hidden;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.no-transition,
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.no-transition {
+  transition: none !important;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition,
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition {
+  transform: scale3d(1, 1, 1) translate3d(-50%, -50%, 0px) !important;
+  max-width: none !important;
+  max-height: none !important;
+  top: 50% !important;
+  left: 50% !important;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-x,
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-x {
+  transform: scale3d(1, 1, 1) translate3d(-50%, 0, 0px) !important;
+  top: 0 !important;
+  left: 50% !important;
+  max-width: none !important;
+  max-height: none !important;
+}
+
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-y,
+.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-y {
+  transform: scale3d(1, 1, 1) translate3d(0, -50%, 0px) !important;
+  top: 50% !important;
+  left: 0% !important;
+  max-width: none !important;
+  max-height: none !important;
+}
+
+.lg-icon.lg-zoom-in:after {
+  content: '\e311';
+}
+
+.lg-actual-size .lg-icon.lg-zoom-in {
+  opacity: 0.5;
+  pointer-events: none;
+}
+
+.lg-icon.lg-actual-size {
+  font-size: 20px;
+}
+
+.lg-icon.lg-actual-size:after {
+  content: '\e033';
+}
+
+.lg-icon.lg-zoom-out {
+  opacity: 0.5;
+  pointer-events: none;
+}
+
+.lg-icon.lg-zoom-out:after {
+  content: '\e312';
+}
+
+.lg-zoomed .lg-icon.lg-zoom-out {
+  opacity: 1;
+  pointer-events: auto;
+}
+
+.lg-outer[data-lg-slide-type='video'] .lg-zoom-in,
+.lg-outer[data-lg-slide-type='video'] .lg-actual-size,
+.lg-outer[data-lg-slide-type='video'] .lg-zoom-out, .lg-outer[data-lg-slide-type='iframe'] .lg-zoom-in,
+.lg-outer[data-lg-slide-type='iframe'] .lg-actual-size,
+.lg-outer[data-lg-slide-type='iframe'] .lg-zoom-out, .lg-outer.lg-first-slide-loading .lg-zoom-in,
+.lg-outer.lg-first-slide-loading .lg-actual-size,
+.lg-outer.lg-first-slide-loading .lg-zoom-out {
+  opacity: 0.75;
+  pointer-events: none;
+}
+
+.lg-outer .lg-pager-outer {
+  text-align: center;
+  z-index: 1080;
+  height: 10px;
+  margin-bottom: 10px;
+}
+
+.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont {
+  overflow: visible;
+}
+
+.lg-outer.lg-single-item .lg-pager-outer {
+  display: none;
+}
+
+.lg-outer .lg-pager-cont {
+  cursor: pointer;
+  display: inline-block;
+  overflow: hidden;
+  position: relative;
+  vertical-align: top;
+  margin: 0 5px;
+}
+
+.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont {
+  opacity: 1;
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+}
+
+.lg-outer .lg-pager-cont.lg-pager-active .lg-pager {
+  box-shadow: 0 0 0 2px white inset;
+}
+
+.lg-outer .lg-pager-thumb-cont {
+  background-color: #fff;
+  color: #fff;
+  bottom: 100%;
+  height: 83px;
+  left: 0;
+  margin-bottom: 20px;
+  margin-left: -60px;
+  opacity: 0;
+  padding: 5px;
+  position: absolute;
+  width: 120px;
+  border-radius: 3px;
+  will-change: transform, opacity;
+  -webkit-transition: opacity 0.15s ease 0s, -webkit-transform 0.15s ease 0s;
+  -moz-transition: opacity 0.15s ease 0s, -moz-transform 0.15s ease 0s;
+  -o-transition: opacity 0.15s ease 0s, -o-transform 0.15s ease 0s;
+  transition: opacity 0.15s ease 0s, transform 0.15s ease 0s;
+  -webkit-transform: translate3d(0, 5px, 0);
+  transform: translate3d(0, 5px, 0);
+}
+
+.lg-outer .lg-pager-thumb-cont img {
+  width: 100%;
+  height: 100%;
+}
+
+.lg-outer .lg-pager {
+  background-color: rgba(255, 255, 255, 0.5);
+  border-radius: 50%;
+  box-shadow: 0 0 0 8px rgba(255, 255, 255, 0.7) inset;
+  display: block;
+  height: 12px;
+  -webkit-transition: box-shadow 0.3s ease 0s;
+  -o-transition: box-shadow 0.3s ease 0s;
+  transition: box-shadow 0.3s ease 0s;
+  width: 12px;
+}
+
+.lg-outer .lg-pager:hover, .lg-outer .lg-pager:focus {
+  box-shadow: 0 0 0 8px white inset;
+}
+
+.lg-outer .lg-caret {
+  border-left: 10px solid transparent;
+  border-right: 10px solid transparent;
+  border-top: 10px dashed;
+  bottom: -10px;
+  display: inline-block;
+  height: 0;
+  left: 50%;
+  margin-left: -5px;
+  position: absolute;
+  vertical-align: middle;
+  width: 0;
+}
+
+.lg-fullscreen:after {
+  content: "\e20c";
+}
+
+.lg-fullscreen-on .lg-fullscreen:after {
+  content: "\e20d";
+}
+
+.lg-outer .lg-dropdown-overlay {
+  background-color: rgba(0, 0, 0, 0.25);
+  bottom: 0;
+  cursor: default;
+  left: 0;
+  position: absolute;
+  right: 0;
+  top: 0;
+  z-index: 1081;
+  opacity: 0;
+  visibility: hidden;
+  will-change: visibility, opacity;
+  -webkit-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+  -o-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+  transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+}
+
+.lg-outer.lg-dropdown-active .lg-dropdown,
+.lg-outer.lg-dropdown-active .lg-dropdown-overlay {
+  -webkit-transition-delay: 0s;
+  transition-delay: 0s;
+  -moz-transform: translate3d(0, 0px, 0);
+  -o-transform: translate3d(0, 0px, 0);
+  -ms-transform: translate3d(0, 0px, 0);
+  -webkit-transform: translate3d(0, 0px, 0);
+  transform: translate3d(0, 0px, 0);
+  opacity: 1;
+  visibility: visible;
+}
+
+.lg-outer.lg-dropdown-active .lg-share {
+  color: #fff;
+}
+
+.lg-outer .lg-dropdown {
+  background-color: #fff;
+  border-radius: 2px;
+  font-size: 14px;
+  list-style-type: none;
+  margin: 0;
+  padding: 10px 0;
+  position: absolute;
+  right: 0;
+  text-align: left;
+  top: 50px;
+  opacity: 0;
+  visibility: hidden;
+  -moz-transform: translate3d(0, 5px, 0);
+  -o-transform: translate3d(0, 5px, 0);
+  -ms-transform: translate3d(0, 5px, 0);
+  -webkit-transform: translate3d(0, 5px, 0);
+  transform: translate3d(0, 5px, 0);
+  will-change: visibility, opacity, transform;
+  -webkit-transition: -webkit-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
+  -moz-transition: -moz-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
+  -o-transition: -o-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
+  transition: transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
+}
+
+.lg-outer .lg-dropdown:after {
+  content: '';
+  display: block;
+  height: 0;
+  width: 0;
+  position: absolute;
+  border: 8px solid transparent;
+  border-bottom-color: #fff;
+  right: 16px;
+  top: -16px;
+}
+
+.lg-outer .lg-dropdown > li:last-child {
+  margin-bottom: 0px;
+}
+
+.lg-outer .lg-dropdown > li:hover a {
+  color: #333;
+}
+
+.lg-outer .lg-dropdown a {
+  color: #333;
+  display: block;
+  white-space: pre;
+  padding: 4px 12px;
+  font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
+  font-size: 12px;
+}
+
+.lg-outer .lg-dropdown a:hover {
+  background-color: rgba(0, 0, 0, 0.07);
+}
+
+.lg-outer .lg-dropdown .lg-dropdown-text {
+  display: inline-block;
+  line-height: 1;
+  margin-top: -3px;
+  vertical-align: middle;
+}
+
+.lg-outer .lg-dropdown .lg-icon {
+  color: #333;
+  display: inline-block;
+  float: none;
+  font-size: 20px;
+  height: auto;
+  line-height: 1;
+  margin-right: 8px;
+  padding: 0;
+  vertical-align: middle;
+  width: auto;
+}
+
+.lg-outer .lg-share {
+  position: relative;
+}
+
+.lg-outer .lg-share:after {
+  content: '\e80d';
+}
+
+.lg-outer .lg-share-facebook .lg-icon {
+  color: #3b5998;
+}
+
+.lg-outer .lg-share-facebook .lg-icon:after {
+  content: '\e904';
+}
+
+.lg-outer .lg-share-twitter .lg-icon {
+  color: #00aced;
+}
+
+.lg-outer .lg-share-twitter .lg-icon:after {
+  content: '\e907';
+}
+
+.lg-outer .lg-share-pinterest .lg-icon {
+  color: #cb2027;
+}
+
+.lg-outer .lg-share-pinterest .lg-icon:after {
+  content: '\e906';
+}
+
+.lg-comment-box {
+  width: 420px;
+  max-width: 100%;
+  position: absolute;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  z-index: 9999;
+  background-color: #fff;
+  will-change: transform;
+  -moz-transform: translate3d(100%, 0, 0);
+  -o-transform: translate3d(100%, 0, 0);
+  -ms-transform: translate3d(100%, 0, 0);
+  -webkit-transform: translate3d(100%, 0, 0);
+  transform: translate3d(100%, 0, 0);
+  -webkit-transition: -webkit-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+}
+
+.lg-comment-box .lg-comment-title {
+  margin: 0;
+  color: #fff;
+  font-size: 18px;
+}
+
+.lg-comment-box .lg-comment-header {
+  background-color: #000;
+  padding: 12px 20px;
+  position: absolute;
+  left: 0;
+  right: 0;
+  top: 0;
+}
+
+.lg-comment-box .lg-comment-body {
+  height: 100% !important;
+  padding-top: 43px !important;
+  width: 100% !important;
+}
+
+.lg-comment-box .fb-comments {
+  height: 100%;
+  width: 100%;
+  background: url("../images/loading.gif") no-repeat scroll center center #fff;
+  overflow-y: auto;
+  display: inline-block;
+}
+
+.lg-comment-box .fb-comments[fb-xfbml-state='rendered'] {
+  background-image: none;
+}
+
+.lg-comment-box .fb-comments > span {
+  max-width: 100%;
+}
+
+.lg-comment-box .lg-comment-close {
+  position: absolute;
+  right: 5px;
+  top: 12px;
+  cursor: pointer;
+  font-size: 20px;
+  color: #999;
+  will-change: color;
+  -webkit-transition: color 0.2s linear;
+  -o-transition: color 0.2s linear;
+  transition: color 0.2s linear;
+}
+
+.lg-comment-box .lg-comment-close:hover {
+  color: #fff;
+}
+
+.lg-comment-box .lg-comment-close:after {
+  content: '\e070';
+}
+
+.lg-comment-box iframe {
+  max-width: 100% !important;
+  width: 100% !important;
+}
+
+.lg-comment-box #disqus_thread {
+  padding: 0 20px;
+}
+
+.lg-outer .lg-comment-overlay {
+  background-color: rgba(0, 0, 0, 0.25);
+  bottom: 0;
+  cursor: default;
+  left: 0;
+  position: fixed;
+  right: 0;
+  top: 0;
+  z-index: 1081;
+  opacity: 0;
+  visibility: hidden;
+  will-change: visibility, opacity;
+  -webkit-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+  -o-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+  transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
+}
+
+.lg-outer .lg-comment-toggle:after {
+  content: '\e908';
+}
+
+.lg-outer.lg-comment-active .lg-comment-overlay {
+  -webkit-transition-delay: 0s;
+  transition-delay: 0s;
+  -moz-transform: translate3d(0, 0px, 0);
+  -o-transform: translate3d(0, 0px, 0);
+  -ms-transform: translate3d(0, 0px, 0);
+  -webkit-transform: translate3d(0, 0px, 0);
+  transform: translate3d(0, 0px, 0);
+  opacity: 1;
+  visibility: visible;
+}
+
+.lg-outer.lg-comment-active .lg-comment-toggle {
+  color: #fff;
+}
+
+.lg-outer.lg-comment-active .lg-comment-box {
+  -moz-transform: translate3d(0, 0, 0);
+  -o-transform: translate3d(0, 0, 0);
+  -ms-transform: translate3d(0, 0, 0);
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+}
+
+.lg-outer .lg-img-rotate {
+  position: absolute;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  -webkit-transition: -webkit-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 0.4s cubic-bezier(0, 0, 0.25, 1) 0s;
+}
+
+.lg-outer[data-lg-slide-type='video'] .lg-rotate-left,
+.lg-outer[data-lg-slide-type='video'] .lg-rotate-right,
+.lg-outer[data-lg-slide-type='video'] .lg-flip-ver,
+.lg-outer[data-lg-slide-type='video'] .lg-flip-hor, .lg-outer[data-lg-slide-type='iframe'] .lg-rotate-left,
+.lg-outer[data-lg-slide-type='iframe'] .lg-rotate-right,
+.lg-outer[data-lg-slide-type='iframe'] .lg-flip-ver,
+.lg-outer[data-lg-slide-type='iframe'] .lg-flip-hor {
+  opacity: 0.75;
+  pointer-events: none;
+}
+
+.lg-outer .lg-img-rotate:before {
+  content: '';
+  display: inline-block;
+  height: 100%;
+  vertical-align: middle;
+}
+
+.lg-rotate-left:after {
+  content: '\e900';
+}
+
+.lg-rotate-right:after {
+  content: '\e901';
+}
+
+.lg-icon.lg-flip-hor, .lg-icon.lg-flip-ver {
+  font-size: 26px;
+}
+
+.lg-flip-ver:after {
+  content: '\e903';
+}
+
+.lg-flip-hor:after {
+  content: '\e902';
+}
+
+.lg-medium-zoom-item {
+  cursor: zoom-in;
+}
+
+.lg-medium-zoom .lg-outer {
+  cursor: zoom-out;
+}
+
+.lg-medium-zoom .lg-outer.lg-grab img.lg-object {
+  cursor: zoom-out;
+}
+
+.lg-medium-zoom .lg-outer.lg-grabbing img.lg-object {
+  cursor: zoom-out;
+}
+
+.lg-relative-caption .lg-outer .lg-sub-html {
+  white-space: normal;
+  bottom: auto;
+  padding: 0;
+  background-image: none;
+}
+
+.lg-relative-caption .lg-outer .lg-relative-caption-item {
+  opacity: 0;
+  padding: 16px 0;
+  transition: 0.5s opacity ease;
+}
+
+.lg-relative-caption .lg-outer .lg-show-caption .lg-relative-caption-item {
+  opacity: 1;
+}
+
+.lg-group:after {
+  content: '';
+  display: table;
+  clear: both;
+}
+
+.lg-container {
+  display: none;
+  outline: none;
+}
+
+.lg-container.lg-show {
+  display: block;
+}
+
+.lg-on {
+  scroll-behavior: unset;
+}
+
+.lg-overlay-open {
+  overflow: hidden;
+}
+
+.lg-toolbar,
+.lg-prev,
+.lg-next,
+.lg-pager-outer,
+.lg-hide-sub-html .lg-sub-html {
+  opacity: 0;
+  will-change: transform, opacity;
+  -webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
+}
+
+.lg-show-in .lg-toolbar,
+.lg-show-in .lg-prev,
+.lg-show-in .lg-next,
+.lg-show-in .lg-pager-outer {
+  opacity: 1;
+}
+
+.lg-show-in.lg-hide-sub-html .lg-sub-html {
+  opacity: 1;
+}
+
+.lg-show-in .lg-hide-items .lg-prev {
+  opacity: 0;
+  -webkit-transform: translate3d(-10px, 0, 0);
+  transform: translate3d(-10px, 0, 0);
+}
+
+.lg-show-in .lg-hide-items .lg-next {
+  opacity: 0;
+  -webkit-transform: translate3d(10px, 0, 0);
+  transform: translate3d(10px, 0, 0);
+}
+
+.lg-show-in .lg-hide-items .lg-toolbar {
+  opacity: 0;
+  -webkit-transform: translate3d(0, -10px, 0);
+  transform: translate3d(0, -10px, 0);
+}
+
+.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html {
+  opacity: 0;
+  -webkit-transform: translate3d(0, 20px, 0);
+  transform: translate3d(0, 20px, 0);
+}
+
+.lg-outer {
+  width: 100%;
+  height: 100%;
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1050;
+  text-align: left;
+  opacity: 0.001;
+  outline: none;
+  will-change: auto;
+  overflow: hidden;
+  -webkit-transition: opacity 0.15s ease 0s;
+  -o-transition: opacity 0.15s ease 0s;
+  transition: opacity 0.15s ease 0s;
+}
+
+.lg-outer * {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+
+.lg-outer.lg-zoom-from-image {
+  opacity: 1;
+}
+
+.lg-outer.lg-visible {
+  opacity: 1;
+}
+
+.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current {
+  -webkit-transition-duration: inherit !important;
+  transition-duration: inherit !important;
+  -webkit-transition-timing-function: inherit !important;
+  transition-timing-function: inherit !important;
+}
+
+.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-current {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
+  opacity: 1;
+}
+
+.lg-outer.lg-grab img.lg-object {
+  cursor: -webkit-grab;
+  cursor: -moz-grab;
+  cursor: -o-grab;
+  cursor: -ms-grab;
+  cursor: grab;
+}
+
+.lg-outer.lg-grabbing img.lg-object {
+  cursor: move;
+  cursor: -webkit-grabbing;
+  cursor: -moz-grabbing;
+  cursor: -o-grabbing;
+  cursor: -ms-grabbing;
+  cursor: grabbing;
+}
+
+.lg-outer .lg-content {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+
+.lg-outer .lg-inner {
+  width: 100%;
+  position: absolute;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  -webkit-transition: opacity 0s;
+  -o-transition: opacity 0s;
+  transition: opacity 0s;
+  white-space: nowrap;
+}
+
+.lg-outer .lg-item {
+  display: none !important;
+}
+
+.lg-outer .lg-item:not(.lg-start-end-progress) {
+  background: url("../images/loading.gif") no-repeat scroll center center transparent;
+}
+
+.lg-outer.lg-css3 .lg-prev-slide,
+.lg-outer.lg-css3 .lg-current,
+.lg-outer.lg-css3 .lg-next-slide {
+  display: inline-block !important;
+}
+
+.lg-outer.lg-css .lg-current {
+  display: inline-block !important;
+}
+
+.lg-outer .lg-item,
+.lg-outer .lg-img-wrap {
+  display: inline-block;
+  text-align: center;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+}
+
+.lg-outer .lg-item:before,
+.lg-outer .lg-img-wrap:before {
+  content: '';
+  display: inline-block;
+  height: 100%;
+  vertical-align: middle;
+}
+
+.lg-outer .lg-img-wrap {
+  position: absolute;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  white-space: nowrap;
+  font-size: 0;
+}
+
+.lg-outer .lg-item.lg-complete {
+  background-image: none;
+}
+
+.lg-outer .lg-item.lg-current {
+  z-index: 1060;
+}
+
+.lg-outer .lg-object {
+  display: inline-block;
+  vertical-align: middle;
+  max-width: 100%;
+  max-height: 100%;
+  width: auto;
+  height: auto;
+  position: relative;
+}
+
+.lg-outer .lg-empty-html.lg-sub-html,
+.lg-outer .lg-empty-html .lg-sub-html {
+  display: none;
+}
+
+.lg-outer.lg-hide-download .lg-download {
+  opacity: 0.75;
+  pointer-events: none;
+}
+
+.lg-outer .lg-first-slide .lg-dummy-img {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+}
+
+.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components {
+  -webkit-transform: translate3d(0, 0%, 0);
+  transform: translate3d(0, 0%, 0);
+  opacity: 1;
+}
+
+.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html {
+  opacity: 1;
+  transition: opacity 0.2s ease-out 0.15s;
+}
+
+.lg-backdrop {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 1040;
+  background-color: #000;
+  opacity: 0;
+  will-change: auto;
+  -webkit-transition: opacity 333ms ease-in 0s;
+  -o-transition: opacity 333ms ease-in 0s;
+  transition: opacity 333ms ease-in 0s;
+}
+
+.lg-backdrop.in {
+  opacity: 1;
+}
+
+.lg-css3.lg-no-trans .lg-prev-slide,
+.lg-css3.lg-no-trans .lg-next-slide,
+.lg-css3.lg-no-trans .lg-current {
+  -webkit-transition: none 0s ease 0s !important;
+  -moz-transition: none 0s ease 0s !important;
+  -o-transition: none 0s ease 0s !important;
+  transition: none 0s ease 0s !important;
+}
+
+.lg-css3.lg-use-css3 .lg-item {
+  -webkit-backface-visibility: hidden;
+  -moz-backface-visibility: hidden;
+  backface-visibility: hidden;
+}
+
+.lg-css3.lg-fade .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-fade .lg-item.lg-current {
+  opacity: 1;
+}
+
+.lg-css3.lg-fade .lg-item.lg-prev-slide, .lg-css3.lg-fade .lg-item.lg-next-slide, .lg-css3.lg-fade .lg-item.lg-current {
+  -webkit-transition: opacity 0.1s ease 0s;
+  -moz-transition: opacity 0.1s ease 0s;
+  -o-transition: opacity 0.1s ease 0s;
+  transition: opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-use-css3 .lg-item.lg-start-progress {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+  transition: transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+}
+
+.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+}
+
+.lg-css3.lg-slide.lg-use-css3 .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide {
+  -webkit-transform: translate3d(-100%, 0, 0);
+  transform: translate3d(-100%, 0, 0);
+}
+
+.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide {
+  -webkit-transform: translate3d(100%, 0, 0);
+  transform: translate3d(100%, 0, 0);
+}
+
+.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-container {
+  display: none;
+}
+
+.lg-container.lg-show {
+  display: block;
+}
+
+.lg-container.lg-dragging-vertical .lg-backdrop {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
+}
+
+.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
+  opacity: 1;
+}
+
+.lg-inline .lg-backdrop,
+.lg-inline .lg-outer {
+  position: absolute;
+}
+
+.lg-inline .lg-backdrop {
+  z-index: 1;
+}
+
+.lg-inline .lg-outer {
+  z-index: 2;
+}
+
+.lg-inline .lg-maximize:after {
+  content: '\e909';
+}
+
+.lg-components {
+  -webkit-transform: translate3d(0, 100%, 0);
+  transform: translate3d(0, 100%, 0);
+  will-change: transform;
+  -webkit-transition: -webkit-transform 0.35s ease-out 0s;
+  -moz-transition: -moz-transform 0.35s ease-out 0s;
+  -o-transition: -o-transform 0.35s ease-out 0s;
+  transition: transform 0.35s ease-out 0s;
+  z-index: 1080;
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  left: 0;
+}
diff --git a/resources/lightgallery/css/lightgallery-bundle.min.css b/resources/lightgallery/css/lightgallery-bundle.min.css
new file mode 100644
index 0000000..292cc24
--- /dev/null
+++ b/resources/lightgallery/css/lightgallery-bundle.min.css
@@ -0,0 +1 @@
+@font-face{font-family:lg;src:url(../fonts/lg.woff2?io9a6k) format("woff2"),url(../fonts/lg.ttf?io9a6k) format("truetype"),url(../fonts/lg.woff?io9a6k) format("woff"),url(../fonts/lg.svg?io9a6k#lg) format("svg");font-weight:400;font-style:normal;font-display:block}.lg-icon{font-family:lg!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg-container{font-family:system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans','Liberation Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji'}.lg-next,.lg-prev{background-color:rgba(0,0,0,.45);border-radius:2px;color:#999;cursor:pointer;display:block;font-size:22px;margin-top:-10px;padding:8px 10px 9px;position:absolute;top:50%;z-index:1084;outline:0;border:none}.lg-next.disabled,.lg-prev.disabled{opacity:0!important;cursor:default}.lg-next:hover:not(.disabled),.lg-prev:hover:not(.disabled){color:#fff}.lg-single-item .lg-next,.lg-single-item .lg-prev{display:none}.lg-next{right:20px}.lg-next:before{content:'\e095'}.lg-prev{left:20px}.lg-prev:after{content:'\e094'}@-webkit-keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@-moz-keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@-ms-keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@keyframes lg-right-end{0%{left:0}50%{left:-30px}100%{left:0}}@-webkit-keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}@-moz-keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}@-ms-keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}@keyframes lg-left-end{0%{left:0}50%{left:30px}100%{left:0}}.lg-outer.lg-right-end .lg-object{-webkit-animation:lg-right-end .3s;-o-animation:lg-right-end .3s;animation:lg-right-end .3s;position:relative}.lg-outer.lg-left-end .lg-object{-webkit-animation:lg-left-end .3s;-o-animation:lg-left-end .3s;animation:lg-left-end .3s;position:relative}.lg-toolbar{z-index:1082;left:0;position:absolute;top:0;width:100%}.lg-media-overlap .lg-toolbar{background-image:linear-gradient(0deg,rgba(0,0,0,0),rgba(0,0,0,.4))}.lg-toolbar .lg-icon{color:#999;cursor:pointer;float:right;font-size:24px;height:47px;line-height:27px;padding:10px 0;text-align:center;width:50px;text-decoration:none!important;outline:medium none;will-change:color;-webkit-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear;background:0 0;border:none;box-shadow:none}.lg-toolbar .lg-icon.lg-icon-18{font-size:18px}.lg-toolbar .lg-icon:hover{color:#fff}.lg-toolbar .lg-close:after{content:'\e070'}.lg-toolbar .lg-maximize{font-size:22px}.lg-toolbar .lg-maximize:after{content:'\e90a'}.lg-toolbar .lg-download:after{content:'\e0f2'}.lg-sub-html{color:#eee;font-size:16px;padding:10px 40px;text-align:center;z-index:1080;opacity:0;-webkit-transition:opacity .2s ease-out 0s;-o-transition:opacity .2s ease-out 0s;transition:opacity .2s ease-out 0s}.lg-sub-html h4{margin:0;font-size:13px;font-weight:700}.lg-sub-html p{font-size:12px;margin:5px 0 0}.lg-sub-html a{color:inherit}.lg-sub-html a:hover{text-decoration:underline}.lg-media-overlap .lg-sub-html{background-image:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.6))}.lg-item .lg-sub-html{position:absolute;bottom:0;right:0;left:0}.lg-error-msg{font-size:14px;color:#999}.lg-counter{color:#999;display:inline-block;font-size:16px;padding-left:20px;padding-top:12px;height:47px;vertical-align:middle}.lg-closing .lg-next,.lg-closing .lg-prev,.lg-closing .lg-sub-html,.lg-closing .lg-toolbar{opacity:0;-webkit-transition:-webkit-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;-moz-transition:-moz-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;-o-transition:-o-transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear;transition:transform .08 cubic-bezier(0,0,.25,1) 0s,opacity .08 cubic-bezier(0,0,.25,1) 0s,color .08 linear}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-video-cont{opacity:0;-moz-transform:scale3d(.5,.5,.5);-o-transform:scale3d(.5,.5,.5);-ms-transform:scale3d(.5,.5,.5);-webkit-transform:scale3d(.5,.5,.5);transform:scale3d(.5,.5,.5);will-change:transform,opacity;-webkit-transition:-webkit-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-moz-transition:-moz-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-o-transition:-o-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;transition:transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap,body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-video-cont{opacity:1;-moz-transform:scale3d(1,1,1);-o-transform:scale3d(1,1,1);-ms-transform:scale3d(1,1,1);-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}.lg-icon:focus-visible{color:#fff;border-radius:3px;outline:1px dashed rgba(255,255,255,.6)}.lg-toolbar .lg-icon:focus-visible{border-radius:8px;outline-offset:-5px}.lg-outer .lg-thumb-outer{background-color:#0d0a0a;width:100%;max-height:350px;overflow:hidden;float:left}.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer .lg-thumb-outer.lg-rebuilding-thumbnails .lg-thumb{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer .lg-thumb-outer.lg-thumb-align-middle{text-align:center}.lg-outer .lg-thumb-outer.lg-thumb-align-left{text-align:left}.lg-outer .lg-thumb-outer.lg-thumb-align-right{text-align:right}.lg-outer.lg-single-item .lg-thumb-outer{display:none}.lg-outer .lg-thumb{padding:5px 0;height:100%;margin-bottom:-5px;display:inline-block;vertical-align:middle}@media (min-width:768px){.lg-outer .lg-thumb{padding:10px 0}}.lg-outer .lg-thumb-item{cursor:pointer;float:left;overflow:hidden;height:100%;border-radius:2px;margin-bottom:5px;will-change:border-color}@media (min-width:768px){.lg-outer .lg-thumb-item{border-radius:4px;border:2px solid #fff;-webkit-transition:border-color .25s ease;-o-transition:border-color .25s ease;transition:border-color .25s ease}}.lg-outer .lg-thumb-item.active,.lg-outer .lg-thumb-item:hover{border-color:#a90707}.lg-outer .lg-thumb-item img{width:100%;height:100%;object-fit:cover;display:block}.lg-outer.lg-can-toggle .lg-item{padding-bottom:0}.lg-outer .lg-toggle-thumb:after{content:'\e1ff'}.lg-outer.lg-animate-thumb .lg-thumb{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1)}.lg-outer .lg-video-cont{text-align:center;display:inline-block;vertical-align:middle;position:relative}.lg-outer .lg-video-cont .lg-object{width:100%!important;height:100%!important}.lg-outer .lg-has-iframe .lg-video-cont{-webkit-overflow-scrolling:touch;overflow:auto}.lg-outer .lg-video-object{position:absolute;left:0;right:0;width:100%;height:100%;top:0;bottom:0;z-index:3}.lg-outer .lg-video-poster{z-index:1}.lg-outer .lg-has-video .lg-video-object{opacity:0;will-change:opacity;-webkit-transition:opacity .3s ease-in;-o-transition:opacity .3s ease-in;transition:opacity .3s ease-in}.lg-outer .lg-has-video.lg-video-loaded .lg-video-play-button,.lg-outer .lg-has-video.lg-video-loaded .lg-video-poster{opacity:0!important}.lg-outer .lg-has-video.lg-video-loaded .lg-video-object{opacity:1}@keyframes lg-play-stroke{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}@keyframes lg-play-rotate{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.lg-video-play-button{width:18%;max-width:140px;position:absolute;top:50%;left:50%;z-index:2;cursor:pointer;transform:translate(-50%,-50%) scale(1);will-change:opacity,transform;-webkit-transition:-webkit-transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s;-moz-transition:-moz-transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s;-o-transition:-o-transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s;transition:transform .25s cubic-bezier(.17,.88,.32,1.28),opacity .1s}.lg-video-play-button:hover .lg-video-play-icon,.lg-video-play-button:hover .lg-video-play-icon-bg{opacity:1}.lg-video-play-icon-bg{fill:none;stroke-width:3%;stroke:#fcfcfc;opacity:.6;will-change:opacity;-webkit-transition:opacity .12s ease-in;-o-transition:opacity .12s ease-in;transition:opacity .12s ease-in}.lg-video-play-icon-circle{position:absolute;top:0;left:0;bottom:0;right:0;fill:none;stroke-width:3%;stroke:rgba(30,30,30,.9);stroke-opacity:1;stroke-linecap:round;stroke-dasharray:200;stroke-dashoffset:200}.lg-video-play-icon{position:absolute;width:25%;max-width:120px;left:50%;top:50%;transform:translate3d(-50%,-50%,0);opacity:.6;will-change:opacity;-webkit-transition:opacity .12s ease-in;-o-transition:opacity .12s ease-in;transition:opacity .12s ease-in}.lg-video-play-icon .lg-video-play-icon-inner{fill:#fcfcfc}.lg-video-loading .lg-video-play-icon-circle{animation:lg-play-rotate 2s linear .25s infinite,lg-play-stroke 1.5s ease-in-out .25s infinite}.lg-video-loaded .lg-video-play-button{opacity:0;transform:translate(-50%,-50%) scale(.7)}.lg-progress-bar{background-color:#333;height:5px;left:0;position:absolute;top:0;width:100%;z-index:1083;opacity:0;will-change:opacity;-webkit-transition:opacity 80ms ease 0s;-moz-transition:opacity 80ms ease 0s;-o-transition:opacity 80ms ease 0s;transition:opacity 80ms ease 0s}.lg-progress-bar .lg-progress{background-color:#a90707;height:5px;width:0}.lg-progress-bar.lg-start .lg-progress{width:100%}.lg-show-autoplay .lg-progress-bar{opacity:1}.lg-autoplay-button:after{content:'\e01d'}.lg-show-autoplay .lg-autoplay-button:after{content:'\e01a'}.lg-single-item .lg-autoplay-button{opacity:.75;pointer-events:none}.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image,.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer.lg-use-transition-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap{will-change:transform;-webkit-transition:-webkit-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;-moz-transition:-moz-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;-o-transition:-o-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s;transition:transform .5s cubic-bezier(.12,.415,.01,1.19) 0s}.lg-outer.lg-use-transition-for-zoom.lg-zoom-drag-transition .lg-item.lg-complete.lg-zoomable .lg-img-wrap{will-change:transform;-webkit-transition:-webkit-transform .8s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .8s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .8s cubic-bezier(0,0,.25,1) 0s;transition:transform .8s cubic-bezier(0,0,.25,1) 0s}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:-webkit-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-moz-transition:-moz-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-o-transition:-o-transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;transition:transform .5s cubic-bezier(.12,.415,.01,1.19) 0s,opacity .15s!important;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.no-transition,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.no-transition{transition:none!important}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition{transform:scale3d(1,1,1) translate3d(-50%,-50%,0)!important;max-width:none!important;max-height:none!important;top:50%!important;left:50%!important}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-x,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-x{transform:scale3d(1,1,1) translate3d(-50%,0,0)!important;top:0!important;left:50%!important;max-width:none!important;max-height:none!important}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-dummy-img.reset-transition-y,.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image.reset-transition-y{transform:scale3d(1,1,1) translate3d(0,-50%,0)!important;top:50%!important;left:0!important;max-width:none!important;max-height:none!important}.lg-icon.lg-zoom-in:after{content:'\e311'}.lg-actual-size .lg-icon.lg-zoom-in{opacity:.5;pointer-events:none}.lg-icon.lg-actual-size{font-size:20px}.lg-icon.lg-actual-size:after{content:'\e033'}.lg-icon.lg-zoom-out{opacity:.5;pointer-events:none}.lg-icon.lg-zoom-out:after{content:'\e312'}.lg-zoomed .lg-icon.lg-zoom-out{opacity:1;pointer-events:auto}.lg-outer.lg-first-slide-loading .lg-actual-size,.lg-outer.lg-first-slide-loading .lg-zoom-in,.lg-outer.lg-first-slide-loading .lg-zoom-out,.lg-outer[data-lg-slide-type=iframe] .lg-actual-size,.lg-outer[data-lg-slide-type=iframe] .lg-zoom-in,.lg-outer[data-lg-slide-type=iframe] .lg-zoom-out,.lg-outer[data-lg-slide-type=video] .lg-actual-size,.lg-outer[data-lg-slide-type=video] .lg-zoom-in,.lg-outer[data-lg-slide-type=video] .lg-zoom-out{opacity:.75;pointer-events:none}.lg-outer .lg-pager-outer{text-align:center;z-index:1080;height:10px;margin-bottom:10px}.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont{overflow:visible}.lg-outer.lg-single-item .lg-pager-outer{display:none}.lg-outer .lg-pager-cont{cursor:pointer;display:inline-block;overflow:hidden;position:relative;vertical-align:top;margin:0 5px}.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-pager-cont.lg-pager-active .lg-pager{box-shadow:0 0 0 2px #fff inset}.lg-outer .lg-pager-thumb-cont{background-color:#fff;color:#fff;bottom:100%;height:83px;left:0;margin-bottom:20px;margin-left:-60px;opacity:0;padding:5px;position:absolute;width:120px;border-radius:3px;will-change:transform,opacity;-webkit-transition:opacity .15s ease 0s,-webkit-transform .15s ease 0s;-moz-transition:opacity .15s ease 0s,-moz-transform .15s ease 0s;-o-transition:opacity .15s ease 0s,-o-transform .15s ease 0s;transition:opacity .15s ease 0s,transform .15s ease 0s;-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}.lg-outer .lg-pager-thumb-cont img{width:100%;height:100%}.lg-outer .lg-pager{background-color:rgba(255,255,255,.5);border-radius:50%;box-shadow:0 0 0 8px rgba(255,255,255,.7) inset;display:block;height:12px;-webkit-transition:box-shadow .3s ease 0s;-o-transition:box-shadow .3s ease 0s;transition:box-shadow .3s ease 0s;width:12px}.lg-outer .lg-pager:focus,.lg-outer .lg-pager:hover{box-shadow:0 0 0 8px #fff inset}.lg-outer .lg-caret{border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px dashed;bottom:-10px;display:inline-block;height:0;left:50%;margin-left:-5px;position:absolute;vertical-align:middle;width:0}.lg-fullscreen:after{content:"\e20c"}.lg-fullscreen-on .lg-fullscreen:after{content:"\e20d"}.lg-outer .lg-dropdown-overlay{background-color:rgba(0,0,0,.25);bottom:0;cursor:default;left:0;position:absolute;right:0;top:0;z-index:1081;opacity:0;visibility:hidden;will-change:visibility,opacity;-webkit-transition:visibility 0s linear .18s,opacity .18s linear 0s;-o-transition:visibility 0s linear .18s,opacity .18s linear 0s;transition:visibility 0s linear .18s,opacity .18s linear 0s}.lg-outer.lg-dropdown-active .lg-dropdown,.lg-outer.lg-dropdown-active .lg-dropdown-overlay{-webkit-transition-delay:0s;transition-delay:0s;-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;visibility:visible}.lg-outer.lg-dropdown-active .lg-share{color:#fff}.lg-outer .lg-dropdown{background-color:#fff;border-radius:2px;font-size:14px;list-style-type:none;margin:0;padding:10px 0;position:absolute;right:0;text-align:left;top:50px;opacity:0;visibility:hidden;-moz-transform:translate3d(0,5px,0);-o-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0);will-change:visibility,opacity,transform;-webkit-transition:-webkit-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;-moz-transition:-moz-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;-o-transition:-o-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;transition:transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s}.lg-outer .lg-dropdown:after{content:'';display:block;height:0;width:0;position:absolute;border:8px solid transparent;border-bottom-color:#fff;right:16px;top:-16px}.lg-outer .lg-dropdown>li:last-child{margin-bottom:0}.lg-outer .lg-dropdown>li:hover a{color:#333}.lg-outer .lg-dropdown a{color:#333;display:block;white-space:pre;padding:4px 12px;font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;font-size:12px}.lg-outer .lg-dropdown a:hover{background-color:rgba(0,0,0,.07)}.lg-outer .lg-dropdown .lg-dropdown-text{display:inline-block;line-height:1;margin-top:-3px;vertical-align:middle}.lg-outer .lg-dropdown .lg-icon{color:#333;display:inline-block;float:none;font-size:20px;height:auto;line-height:1;margin-right:8px;padding:0;vertical-align:middle;width:auto}.lg-outer .lg-share{position:relative}.lg-outer .lg-share:after{content:'\e80d'}.lg-outer .lg-share-facebook .lg-icon{color:#3b5998}.lg-outer .lg-share-facebook .lg-icon:after{content:'\e904'}.lg-outer .lg-share-twitter .lg-icon{color:#00aced}.lg-outer .lg-share-twitter .lg-icon:after{content:'\e907'}.lg-outer .lg-share-pinterest .lg-icon{color:#cb2027}.lg-outer .lg-share-pinterest .lg-icon:after{content:'\e906'}.lg-comment-box{width:420px;max-width:100%;position:absolute;right:0;top:0;bottom:0;z-index:9999;background-color:#fff;will-change:transform;-moz-transform:translate3d(100%,0,0);-o-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);-webkit-transition:-webkit-transform .4s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .4s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .4s cubic-bezier(0,0,.25,1) 0s;transition:transform .4s cubic-bezier(0,0,.25,1) 0s}.lg-comment-box .lg-comment-title{margin:0;color:#fff;font-size:18px}.lg-comment-box .lg-comment-header{background-color:#000;padding:12px 20px;position:absolute;left:0;right:0;top:0}.lg-comment-box .lg-comment-body{height:100%!important;padding-top:43px!important;width:100%!important}.lg-comment-box .fb-comments{height:100%;width:100%;background:url(../images/loading.gif) no-repeat scroll center center #fff;overflow-y:auto;display:inline-block}.lg-comment-box .fb-comments[fb-xfbml-state=rendered]{background-image:none}.lg-comment-box .fb-comments>span{max-width:100%}.lg-comment-box .lg-comment-close{position:absolute;right:5px;top:12px;cursor:pointer;font-size:20px;color:#999;will-change:color;-webkit-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.lg-comment-box .lg-comment-close:hover{color:#fff}.lg-comment-box .lg-comment-close:after{content:'\e070'}.lg-comment-box iframe{max-width:100%!important;width:100%!important}.lg-comment-box #disqus_thread{padding:0 20px}.lg-outer .lg-comment-overlay{background-color:rgba(0,0,0,.25);bottom:0;cursor:default;left:0;position:fixed;right:0;top:0;z-index:1081;opacity:0;visibility:hidden;will-change:visibility,opacity;-webkit-transition:visibility 0s linear .18s,opacity .18s linear 0s;-o-transition:visibility 0s linear .18s,opacity .18s linear 0s;transition:visibility 0s linear .18s,opacity .18s linear 0s}.lg-outer .lg-comment-toggle:after{content:'\e908'}.lg-outer.lg-comment-active .lg-comment-overlay{-webkit-transition-delay:0s;transition-delay:0s;-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;visibility:visible}.lg-outer.lg-comment-active .lg-comment-toggle{color:#fff}.lg-outer.lg-comment-active .lg-comment-box{-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-img-rotate{position:absolute;left:0;right:0;top:0;bottom:0;-webkit-transition:-webkit-transform .4s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .4s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .4s cubic-bezier(0,0,.25,1) 0s;transition:transform .4s cubic-bezier(0,0,.25,1) 0s}.lg-outer[data-lg-slide-type=iframe] .lg-flip-hor,.lg-outer[data-lg-slide-type=iframe] .lg-flip-ver,.lg-outer[data-lg-slide-type=iframe] .lg-rotate-left,.lg-outer[data-lg-slide-type=iframe] .lg-rotate-right,.lg-outer[data-lg-slide-type=video] .lg-flip-hor,.lg-outer[data-lg-slide-type=video] .lg-flip-ver,.lg-outer[data-lg-slide-type=video] .lg-rotate-left,.lg-outer[data-lg-slide-type=video] .lg-rotate-right{opacity:.75;pointer-events:none}.lg-outer .lg-img-rotate:before{content:'';display:inline-block;height:100%;vertical-align:middle}.lg-rotate-left:after{content:'\e900'}.lg-rotate-right:after{content:'\e901'}.lg-icon.lg-flip-hor,.lg-icon.lg-flip-ver{font-size:26px}.lg-flip-ver:after{content:'\e903'}.lg-flip-hor:after{content:'\e902'}.lg-medium-zoom-item{cursor:zoom-in}.lg-medium-zoom .lg-outer{cursor:zoom-out}.lg-medium-zoom .lg-outer.lg-grab img.lg-object{cursor:zoom-out}.lg-medium-zoom .lg-outer.lg-grabbing img.lg-object{cursor:zoom-out}.lg-relative-caption .lg-outer .lg-sub-html{white-space:normal;bottom:auto;padding:0;background-image:none}.lg-relative-caption .lg-outer .lg-relative-caption-item{opacity:0;padding:16px 0;transition:.5s opacity ease}.lg-relative-caption .lg-outer .lg-show-caption .lg-relative-caption-item{opacity:1}.lg-group:after{content:'';display:table;clear:both}.lg-container{display:none;outline:0}.lg-container.lg-show{display:block}.lg-on{scroll-behavior:unset}.lg-overlay-open{overflow:hidden}.lg-hide-sub-html .lg-sub-html,.lg-next,.lg-pager-outer,.lg-prev,.lg-toolbar{opacity:0;will-change:transform,opacity;-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s;transition:transform .25s cubic-bezier(0,0,.25,1) 0s,opacity .25s cubic-bezier(0,0,.25,1) 0s}.lg-show-in .lg-next,.lg-show-in .lg-pager-outer,.lg-show-in .lg-prev,.lg-show-in .lg-toolbar{opacity:1}.lg-show-in.lg-hide-sub-html .lg-sub-html{opacity:1}.lg-show-in .lg-hide-items .lg-prev{opacity:0;-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}.lg-show-in .lg-hide-items .lg-next{opacity:0;-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}.lg-show-in .lg-hide-items .lg-toolbar{opacity:0;-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html{opacity:0;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}.lg-outer{width:100%;height:100%;position:fixed;top:0;left:0;z-index:1050;text-align:left;opacity:.001;outline:0;will-change:auto;overflow:hidden;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-outer *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.lg-outer.lg-zoom-from-image{opacity:1}.lg-outer.lg-visible{opacity:1}.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current,.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide,.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide{-webkit-transition-duration:inherit!important;transition-duration:inherit!important;-webkit-transition-timing-function:inherit!important;transition-timing-function:inherit!important}.lg-outer.lg-css3.lg-dragging .lg-item.lg-current,.lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide,.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide{-webkit-transition-duration:0s!important;transition-duration:0s!important;opacity:1}.lg-outer.lg-grab img.lg-object{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer.lg-grabbing img.lg-object{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-content{position:absolute;top:0;left:0;right:0;bottom:0}.lg-outer .lg-inner{width:100%;position:absolute;left:0;top:0;bottom:0;-webkit-transition:opacity 0s;-o-transition:opacity 0s;transition:opacity 0s;white-space:nowrap}.lg-outer .lg-item{display:none!important}.lg-outer .lg-item:not(.lg-start-end-progress){background:url(../images/loading.gif) no-repeat scroll center center transparent}.lg-outer.lg-css3 .lg-current,.lg-outer.lg-css3 .lg-next-slide,.lg-outer.lg-css3 .lg-prev-slide{display:inline-block!important}.lg-outer.lg-css .lg-current{display:inline-block!important}.lg-outer .lg-img-wrap,.lg-outer .lg-item{display:inline-block;text-align:center;position:absolute;width:100%;height:100%}.lg-outer .lg-img-wrap:before,.lg-outer .lg-item:before{content:'';display:inline-block;height:100%;vertical-align:middle}.lg-outer .lg-img-wrap{position:absolute;left:0;right:0;top:0;bottom:0;white-space:nowrap;font-size:0}.lg-outer .lg-item.lg-complete{background-image:none}.lg-outer .lg-item.lg-current{z-index:1060}.lg-outer .lg-object{display:inline-block;vertical-align:middle;max-width:100%;max-height:100%;width:auto;height:auto;position:relative}.lg-outer .lg-empty-html .lg-sub-html,.lg-outer .lg-empty-html.lg-sub-html{display:none}.lg-outer.lg-hide-download .lg-download{opacity:.75;pointer-events:none}.lg-outer .lg-first-slide .lg-dummy-img{position:absolute;top:50%;left:50%}.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html{opacity:1;transition:opacity .2s ease-out .15s}.lg-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1040;background-color:#000;opacity:0;will-change:auto;-webkit-transition:opacity 333ms ease-in 0s;-o-transition:opacity 333ms ease-in 0s;transition:opacity 333ms ease-in 0s}.lg-backdrop.in{opacity:1}.lg-css3.lg-no-trans .lg-current,.lg-css3.lg-no-trans .lg-next-slide,.lg-css3.lg-no-trans .lg-prev-slide{-webkit-transition:none 0s ease 0s!important;-moz-transition:none 0s ease 0s!important;-o-transition:none 0s ease 0s!important;transition:none 0s ease 0s!important}.lg-css3.lg-use-css3 .lg-item{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-css3.lg-fade .lg-item{opacity:0}.lg-css3.lg-fade .lg-item.lg-current{opacity:1}.lg-css3.lg-fade .lg-item.lg-current,.lg-css3.lg-fade .lg-item.lg-next-slide,.lg-css3.lg-fade .lg-item.lg-prev-slide{-webkit-transition:opacity .1s ease 0s;-moz-transition:opacity .1s ease 0s;-o-transition:opacity .1s ease 0s;transition:opacity .1s ease 0s}.lg-css3.lg-use-css3 .lg-item.lg-start-progress{-webkit-transition:-webkit-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;-moz-transition:-moz-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;-o-transition:-o-transform 1s cubic-bezier(.175,.885,.32,1.275) 0s;transition:transform 1s cubic-bezier(.175,.885,.32,1.275) 0s}.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s}.lg-css3.lg-slide.lg-use-css3 .lg-item{opacity:0}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-container{display:none}.lg-container.lg-show{display:block}.lg-container.lg-dragging-vertical .lg-backdrop{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current{-webkit-transition-duration:0s!important;transition-duration:0s!important;opacity:1}.lg-inline .lg-backdrop,.lg-inline .lg-outer{position:absolute}.lg-inline .lg-backdrop{z-index:1}.lg-inline .lg-outer{z-index:2}.lg-inline .lg-maximize:after{content:'\e909'}.lg-components{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);will-change:transform;-webkit-transition:-webkit-transform .35s ease-out 0s;-moz-transition:-moz-transform .35s ease-out 0s;-o-transition:-o-transform .35s ease-out 0s;transition:transform .35s ease-out 0s;z-index:1080;position:absolute;bottom:0;right:0;left:0}
\ No newline at end of file
diff --git a/resources/lightgallery/css/lightgallery-core.css b/resources/lightgallery/css/lightgallery-core.css
new file mode 100644
index 0000000..2adba05
--- /dev/null
+++ b/resources/lightgallery/css/lightgallery-core.css
@@ -0,0 +1,382 @@
+.lg-group:after {
+  content: '';
+  display: table;
+  clear: both;
+}
+
+.lg-container {
+  display: none;
+  outline: none;
+}
+
+.lg-container.lg-show {
+  display: block;
+}
+
+.lg-on {
+  scroll-behavior: unset;
+}
+
+.lg-overlay-open {
+  overflow: hidden;
+}
+
+.lg-toolbar,
+.lg-prev,
+.lg-next,
+.lg-pager-outer,
+.lg-hide-sub-html .lg-sub-html {
+  opacity: 0;
+  will-change: transform, opacity;
+  -webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
+}
+
+.lg-show-in .lg-toolbar,
+.lg-show-in .lg-prev,
+.lg-show-in .lg-next,
+.lg-show-in .lg-pager-outer {
+  opacity: 1;
+}
+
+.lg-show-in.lg-hide-sub-html .lg-sub-html {
+  opacity: 1;
+}
+
+.lg-show-in .lg-hide-items .lg-prev {
+  opacity: 0;
+  -webkit-transform: translate3d(-10px, 0, 0);
+  transform: translate3d(-10px, 0, 0);
+}
+
+.lg-show-in .lg-hide-items .lg-next {
+  opacity: 0;
+  -webkit-transform: translate3d(10px, 0, 0);
+  transform: translate3d(10px, 0, 0);
+}
+
+.lg-show-in .lg-hide-items .lg-toolbar {
+  opacity: 0;
+  -webkit-transform: translate3d(0, -10px, 0);
+  transform: translate3d(0, -10px, 0);
+}
+
+.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html {
+  opacity: 0;
+  -webkit-transform: translate3d(0, 20px, 0);
+  transform: translate3d(0, 20px, 0);
+}
+
+.lg-outer {
+  width: 100%;
+  height: 100%;
+  position: fixed;
+  top: 0;
+  left: 0;
+  z-index: 1050;
+  text-align: left;
+  opacity: 0.001;
+  outline: none;
+  will-change: auto;
+  overflow: hidden;
+  -webkit-transition: opacity 0.15s ease 0s;
+  -o-transition: opacity 0.15s ease 0s;
+  transition: opacity 0.15s ease 0s;
+}
+
+.lg-outer * {
+  -webkit-box-sizing: border-box;
+  -moz-box-sizing: border-box;
+  box-sizing: border-box;
+}
+
+.lg-outer.lg-zoom-from-image {
+  opacity: 1;
+}
+
+.lg-outer.lg-visible {
+  opacity: 1;
+}
+
+.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current {
+  -webkit-transition-duration: inherit !important;
+  transition-duration: inherit !important;
+  -webkit-transition-timing-function: inherit !important;
+  transition-timing-function: inherit !important;
+}
+
+.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-current {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
+  opacity: 1;
+}
+
+.lg-outer.lg-grab img.lg-object {
+  cursor: -webkit-grab;
+  cursor: -moz-grab;
+  cursor: -o-grab;
+  cursor: -ms-grab;
+  cursor: grab;
+}
+
+.lg-outer.lg-grabbing img.lg-object {
+  cursor: move;
+  cursor: -webkit-grabbing;
+  cursor: -moz-grabbing;
+  cursor: -o-grabbing;
+  cursor: -ms-grabbing;
+  cursor: grabbing;
+}
+
+.lg-outer .lg-content {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+}
+
+.lg-outer .lg-inner {
+  width: 100%;
+  position: absolute;
+  left: 0;
+  top: 0;
+  bottom: 0;
+  -webkit-transition: opacity 0s;
+  -o-transition: opacity 0s;
+  transition: opacity 0s;
+  white-space: nowrap;
+}
+
+.lg-outer .lg-item {
+  display: none !important;
+}
+
+.lg-outer .lg-item:not(.lg-start-end-progress) {
+  background: url("../images/loading.gif") no-repeat scroll center center transparent;
+}
+
+.lg-outer.lg-css3 .lg-prev-slide,
+.lg-outer.lg-css3 .lg-current,
+.lg-outer.lg-css3 .lg-next-slide {
+  display: inline-block !important;
+}
+
+.lg-outer.lg-css .lg-current {
+  display: inline-block !important;
+}
+
+.lg-outer .lg-item,
+.lg-outer .lg-img-wrap {
+  display: inline-block;
+  text-align: center;
+  position: absolute;
+  width: 100%;
+  height: 100%;
+}
+
+.lg-outer .lg-item:before,
+.lg-outer .lg-img-wrap:before {
+  content: '';
+  display: inline-block;
+  height: 100%;
+  vertical-align: middle;
+}
+
+.lg-outer .lg-img-wrap {
+  position: absolute;
+  left: 0;
+  right: 0;
+  top: 0;
+  bottom: 0;
+  white-space: nowrap;
+  font-size: 0;
+}
+
+.lg-outer .lg-item.lg-complete {
+  background-image: none;
+}
+
+.lg-outer .lg-item.lg-current {
+  z-index: 1060;
+}
+
+.lg-outer .lg-object {
+  display: inline-block;
+  vertical-align: middle;
+  max-width: 100%;
+  max-height: 100%;
+  width: auto;
+  height: auto;
+  position: relative;
+}
+
+.lg-outer .lg-empty-html.lg-sub-html,
+.lg-outer .lg-empty-html .lg-sub-html {
+  display: none;
+}
+
+.lg-outer.lg-hide-download .lg-download {
+  opacity: 0.75;
+  pointer-events: none;
+}
+
+.lg-outer .lg-first-slide .lg-dummy-img {
+  position: absolute;
+  top: 50%;
+  left: 50%;
+}
+
+.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components {
+  -webkit-transform: translate3d(0, 0%, 0);
+  transform: translate3d(0, 0%, 0);
+  opacity: 1;
+}
+
+.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html {
+  opacity: 1;
+  transition: opacity 0.2s ease-out 0.15s;
+}
+
+.lg-backdrop {
+  position: fixed;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
+  z-index: 1040;
+  background-color: #000;
+  opacity: 0;
+  will-change: auto;
+  -webkit-transition: opacity 333ms ease-in 0s;
+  -o-transition: opacity 333ms ease-in 0s;
+  transition: opacity 333ms ease-in 0s;
+}
+
+.lg-backdrop.in {
+  opacity: 1;
+}
+
+.lg-css3.lg-no-trans .lg-prev-slide,
+.lg-css3.lg-no-trans .lg-next-slide,
+.lg-css3.lg-no-trans .lg-current {
+  -webkit-transition: none 0s ease 0s !important;
+  -moz-transition: none 0s ease 0s !important;
+  -o-transition: none 0s ease 0s !important;
+  transition: none 0s ease 0s !important;
+}
+
+.lg-css3.lg-use-css3 .lg-item {
+  -webkit-backface-visibility: hidden;
+  -moz-backface-visibility: hidden;
+  backface-visibility: hidden;
+}
+
+.lg-css3.lg-fade .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-fade .lg-item.lg-current {
+  opacity: 1;
+}
+
+.lg-css3.lg-fade .lg-item.lg-prev-slide, .lg-css3.lg-fade .lg-item.lg-next-slide, .lg-css3.lg-fade .lg-item.lg-current {
+  -webkit-transition: opacity 0.1s ease 0s;
+  -moz-transition: opacity 0.1s ease 0s;
+  -o-transition: opacity 0.1s ease 0s;
+  transition: opacity 0.1s ease 0s;
+}
+
+.lg-css3.lg-use-css3 .lg-item.lg-start-progress {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+  transition: transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+}
+
+.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+}
+
+.lg-css3.lg-slide.lg-use-css3 .lg-item {
+  opacity: 0;
+}
+
+.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide {
+  -webkit-transform: translate3d(-100%, 0, 0);
+  transform: translate3d(-100%, 0, 0);
+}
+
+.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide {
+  -webkit-transform: translate3d(100%, 0, 0);
+  transform: translate3d(100%, 0, 0);
+}
+
+.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {
+  -webkit-transform: translate3d(0, 0, 0);
+  transform: translate3d(0, 0, 0);
+  opacity: 1;
+}
+
+.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+}
+
+.lg-container {
+  display: none;
+}
+
+.lg-container.lg-show {
+  display: block;
+}
+
+.lg-container.lg-dragging-vertical .lg-backdrop {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
+}
+
+.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
+  opacity: 1;
+}
+
+.lg-inline .lg-backdrop,
+.lg-inline .lg-outer {
+  position: absolute;
+}
+
+.lg-inline .lg-backdrop {
+  z-index: 1;
+}
+
+.lg-inline .lg-outer {
+  z-index: 2;
+}
+
+.lg-inline .lg-maximize:after {
+  content: '\e909';
+}
+
+.lg-components {
+  -webkit-transform: translate3d(0, 100%, 0);
+  transform: translate3d(0, 100%, 0);
+  will-change: transform;
+  -webkit-transition: -webkit-transform 0.35s ease-out 0s;
+  -moz-transition: -moz-transform 0.35s ease-out 0s;
+  -o-transition: -o-transform 0.35s ease-out 0s;
+  transition: transform 0.35s ease-out 0s;
+  z-index: 1080;
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  left: 0;
+}
diff --git a/resources/lightgallery/css/lightgallery.css b/resources/lightgallery/css/lightgallery.css
index 6b4f645..a5a15ca 100644
--- a/resources/lightgallery/css/lightgallery.css
+++ b/resources/lightgallery/css/lightgallery.css
@@ -1,16 +1,15 @@
-/*! lightgallery - v1.6.12 - 2019-02-19
-* http://sachinchoolur.github.io/lightGallery/
-* Copyright (c) 2019 Sachin N; Licensed GPLv3 */
 @font-face {
   font-family: 'lg';
-  src: url("../fonts/lg.eot?n1z373");
-  src: url("../fonts/lg.eot?#iefixn1z373") format("embedded-opentype"), url("../fonts/lg.woff?n1z373") format("woff"), url("../fonts/lg.ttf?n1z373") format("truetype"), url("../fonts/lg.svg?n1z373#lg") format("svg");
+  src: url("../fonts/lg.woff2?io9a6k") format("woff2"), url("../fonts/lg.ttf?io9a6k") format("truetype"), url("../fonts/lg.woff?io9a6k") format("woff"), url("../fonts/lg.svg?io9a6k#lg") format("svg");
   font-weight: normal;
   font-style: normal;
+  font-display: block;
 }
+
 .lg-icon {
-  font-family: 'lg';
-  speak: none;
+  /* use !important to prevent issues with browser extensions that change fonts */
+  font-family: 'lg' !important;
+  speak: never;
   font-style: normal;
   font-weight: normal;
   font-variant: normal;
@@ -21,7 +20,12 @@
   -moz-osx-font-smoothing: grayscale;
 }
 
-.lg-actions .lg-next, .lg-actions .lg-prev {
+.lg-container {
+  font-family: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', 'Liberation Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
+}
+
+.lg-next,
+.lg-prev {
   background-color: rgba(0, 0, 0, 0.45);
   border-radius: 2px;
   color: #999;
@@ -32,28 +36,41 @@
   padding: 8px 10px 9px;
   position: absolute;
   top: 50%;
-  z-index: 1080;
-  border: none;
+  z-index: 1084;
   outline: none;
+  border: none;
 }
-.lg-actions .lg-next.disabled, .lg-actions .lg-prev.disabled {
-  pointer-events: none;
-  opacity: 0.5;
+
+.lg-next.disabled,
+.lg-prev.disabled {
+  opacity: 0 !important;
+  cursor: default;
 }
-.lg-actions .lg-next:hover, .lg-actions .lg-prev:hover {
-  color: #FFF;
+
+.lg-next:hover:not(.disabled),
+.lg-prev:hover:not(.disabled) {
+  color: #fff;
+}
+
+.lg-single-item .lg-next, .lg-single-item
+.lg-prev {
+  display: none;
 }
-.lg-actions .lg-next {
+
+.lg-next {
   right: 20px;
 }
-.lg-actions .lg-next:before {
-  content: "\e095";
+
+.lg-next:before {
+  content: '\e095';
 }
-.lg-actions .lg-prev {
+
+.lg-prev {
   left: 20px;
 }
-.lg-actions .lg-prev:after {
-  content: "\e094";
+
+.lg-prev:after {
+  content: '\e094';
 }
 
 @-webkit-keyframes lg-right-end {
@@ -67,6 +84,7 @@
     left: 0;
   }
 }
+
 @-moz-keyframes lg-right-end {
   0% {
     left: 0;
@@ -78,6 +96,7 @@
     left: 0;
   }
 }
+
 @-ms-keyframes lg-right-end {
   0% {
     left: 0;
@@ -89,6 +108,7 @@
     left: 0;
   }
 }
+
 @keyframes lg-right-end {
   0% {
     left: 0;
@@ -100,6 +120,7 @@
     left: 0;
   }
 }
+
 @-webkit-keyframes lg-left-end {
   0% {
     left: 0;
@@ -111,6 +132,7 @@
     left: 0;
   }
 }
+
 @-moz-keyframes lg-left-end {
   0% {
     left: 0;
@@ -122,6 +144,7 @@
     left: 0;
   }
 }
+
 @-ms-keyframes lg-left-end {
   0% {
     left: 0;
@@ -133,6 +156,7 @@
     left: 0;
   }
 }
+
 @keyframes lg-left-end {
   0% {
     left: 0;
@@ -144,12 +168,14 @@
     left: 0;
   }
 }
+
 .lg-outer.lg-right-end .lg-object {
   -webkit-animation: lg-right-end 0.3s;
   -o-animation: lg-right-end 0.3s;
   animation: lg-right-end 0.3s;
   position: relative;
 }
+
 .lg-outer.lg-left-end .lg-object {
   -webkit-animation: lg-left-end 0.3s;
   -o-animation: lg-left-end 0.3s;
@@ -163,8 +189,12 @@
   position: absolute;
   top: 0;
   width: 100%;
-  background-color: rgba(0, 0, 0, 0.45);
 }
+
+.lg-media-overlap .lg-toolbar {
+  background-image: linear-gradient(0deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.4));
+}
+
 .lg-toolbar .lg-icon {
   color: #999;
   cursor: pointer;
@@ -177,590 +207,212 @@
   width: 50px;
   text-decoration: none !important;
   outline: medium none;
+  will-change: color;
   -webkit-transition: color 0.2s linear;
   -o-transition: color 0.2s linear;
   transition: color 0.2s linear;
+  background: none;
+  border: none;
+  box-shadow: none;
 }
+
+.lg-toolbar .lg-icon.lg-icon-18 {
+  font-size: 18px;
+}
+
 .lg-toolbar .lg-icon:hover {
-  color: #FFF;
+  color: #fff;
 }
+
 .lg-toolbar .lg-close:after {
-  content: "\e070";
+  content: '\e070';
+}
+
+.lg-toolbar .lg-maximize {
+  font-size: 22px;
 }
+
+.lg-toolbar .lg-maximize:after {
+  content: '\e90a';
+}
+
 .lg-toolbar .lg-download:after {
-  content: "\e0f2";
+  content: '\e0f2';
 }
 
 .lg-sub-html {
-  background-color: rgba(0, 0, 0, 0.45);
-  bottom: 0;
-  color: #EEE;
+  color: #eee;
   font-size: 16px;
-  left: 0;
   padding: 10px 40px;
-  position: fixed;
-  right: 0;
   text-align: center;
   z-index: 1080;
+  opacity: 0;
+  -webkit-transition: opacity 0.2s ease-out 0s;
+  -o-transition: opacity 0.2s ease-out 0s;
+  transition: opacity 0.2s ease-out 0s;
 }
+
 .lg-sub-html h4 {
   margin: 0;
   font-size: 13px;
   font-weight: bold;
 }
+
 .lg-sub-html p {
   font-size: 12px;
   margin: 5px 0 0;
 }
 
-#lg-counter {
+.lg-sub-html a {
+  color: inherit;
+}
+
+.lg-sub-html a:hover {
+  text-decoration: underline;
+}
+
+.lg-media-overlap .lg-sub-html {
+  background-image: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.6));
+}
+
+.lg-item .lg-sub-html {
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  left: 0;
+}
+
+.lg-error-msg {
+  font-size: 14px;
+  color: #999;
+}
+
+.lg-counter {
   color: #999;
   display: inline-block;
   font-size: 16px;
   padding-left: 20px;
   padding-top: 12px;
+  height: 47px;
   vertical-align: middle;
 }
 
-.lg-toolbar, .lg-prev, .lg-next {
-  opacity: 1;
-  -webkit-transition: -webkit-transform 0.35s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.35s cubic-bezier(0, 0, 0.25, 1) 0s, color 0.2s linear;
-  -moz-transition: -moz-transform 0.35s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.35s cubic-bezier(0, 0, 0.25, 1) 0s, color 0.2s linear;
-  -o-transition: -o-transform 0.35s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.35s cubic-bezier(0, 0, 0.25, 1) 0s, color 0.2s linear;
-  transition: transform 0.35s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.35s cubic-bezier(0, 0, 0.25, 1) 0s, color 0.2s linear;
-}
-
-.lg-hide-items .lg-prev {
-  opacity: 0;
-  -webkit-transform: translate3d(-10px, 0, 0);
-  transform: translate3d(-10px, 0, 0);
-}
-.lg-hide-items .lg-next {
-  opacity: 0;
-  -webkit-transform: translate3d(10px, 0, 0);
-  transform: translate3d(10px, 0, 0);
-}
-.lg-hide-items .lg-toolbar {
+.lg-closing .lg-toolbar,
+.lg-closing .lg-prev,
+.lg-closing .lg-next,
+.lg-closing .lg-sub-html {
   opacity: 0;
-  -webkit-transform: translate3d(0, -10px, 0);
-  transform: translate3d(0, -10px, 0);
+  -webkit-transition: -webkit-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
+  -moz-transition: -moz-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
+  -o-transition: -o-transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
+  transition: transform 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.08 cubic-bezier(0, 0, 0.25, 1) 0s, color 0.08 linear;
 }
 
-body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-object {
+body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-img-wrap,
+body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable) .lg-video-cont {
+  opacity: 0;
+  -moz-transform: scale3d(0.5, 0.5, 0.5);
+  -o-transform: scale3d(0.5, 0.5, 0.5);
+  -ms-transform: scale3d(0.5, 0.5, 0.5);
   -webkit-transform: scale3d(0.5, 0.5, 0.5);
   transform: scale3d(0.5, 0.5, 0.5);
-  opacity: 0;
+  will-change: transform, opacity;
   -webkit-transition: -webkit-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
   -moz-transition: -moz-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
   -o-transition: -o-transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
   transition: transform 250ms cubic-bezier(0, 0, 0.25, 1) 0s, opacity 250ms cubic-bezier(0, 0, 0.25, 1) !important;
-  -webkit-transform-origin: 50% 50%;
-  -moz-transform-origin: 50% 50%;
-  -ms-transform-origin: 50% 50%;
-  transform-origin: 50% 50%;
 }
-body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item.lg-complete .lg-object {
+
+body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-img-wrap,
+body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item:not(.lg-zoomable).lg-complete .lg-video-cont {
+  opacity: 1;
+  -moz-transform: scale3d(1, 1, 1);
+  -o-transform: scale3d(1, 1, 1);
+  -ms-transform: scale3d(1, 1, 1);
   -webkit-transform: scale3d(1, 1, 1);
   transform: scale3d(1, 1, 1);
-  opacity: 1;
 }
 
-.lg-outer .lg-thumb-outer {
-  background-color: #0D0A0A;
-  bottom: 0;
-  position: absolute;
-  width: 100%;
-  z-index: 1080;
-  max-height: 350px;
-  -webkit-transform: translate3d(0, 100%, 0);
-  transform: translate3d(0, 100%, 0);
-  -webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
-  -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
-  -o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
-  transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
-}
-.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item {
-  cursor: -webkit-grab;
-  cursor: -moz-grab;
-  cursor: -o-grab;
-  cursor: -ms-grab;
-  cursor: grab;
-}
-.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item {
-  cursor: move;
-  cursor: -webkit-grabbing;
-  cursor: -moz-grabbing;
-  cursor: -o-grabbing;
-  cursor: -ms-grabbing;
-  cursor: grabbing;
-}
-.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb {
-  -webkit-transition-duration: 0s !important;
-  transition-duration: 0s !important;
-}
-.lg-outer.lg-thumb-open .lg-thumb-outer {
-  -webkit-transform: translate3d(0, 0%, 0);
-  transform: translate3d(0, 0%, 0);
-}
-.lg-outer .lg-thumb {
-  padding: 10px 0;
-  height: 100%;
-  margin-bottom: -5px;
-}
-.lg-outer .lg-thumb-item {
-  border-radius: 5px;
-  cursor: pointer;
-  float: left;
-  overflow: hidden;
-  height: 100%;
-  border: 2px solid #FFF;
-  border-radius: 4px;
-  margin-bottom: 5px;
-}
-@media (min-width: 1025px) {
-  .lg-outer .lg-thumb-item {
-    -webkit-transition: border-color 0.25s ease;
-    -o-transition: border-color 0.25s ease;
-    transition: border-color 0.25s ease;
-  }
-}
-.lg-outer .lg-thumb-item.active, .lg-outer .lg-thumb-item:hover {
-  border-color: #a90707;
-}
-.lg-outer .lg-thumb-item img {
-  width: 100%;
-  height: 100%;
-  object-fit: cover;
-}
-.lg-outer.lg-has-thumb .lg-item {
-  padding-bottom: 120px;
-}
-.lg-outer.lg-can-toggle .lg-item {
-  padding-bottom: 0;
-}
-.lg-outer.lg-pull-caption-up .lg-sub-html {
-  -webkit-transition: bottom 0.25s ease;
-  -o-transition: bottom 0.25s ease;
-  transition: bottom 0.25s ease;
-}
-.lg-outer.lg-pull-caption-up.lg-thumb-open .lg-sub-html {
-  bottom: 100px;
-}
-.lg-outer .lg-toogle-thumb {
-  background-color: #0D0A0A;
-  border-radius: 2px 2px 0 0;
-  color: #999;
-  cursor: pointer;
-  font-size: 24px;
-  height: 39px;
-  line-height: 27px;
-  padding: 5px 0;
-  position: absolute;
-  right: 20px;
-  text-align: center;
-  top: -39px;
-  width: 50px;
-}
-.lg-outer .lg-toogle-thumb:after {
-  content: "\e1ff";
-}
-.lg-outer .lg-toogle-thumb:hover {
-  color: #FFF;
+.lg-icon:focus-visible {
+  color: #fff;
+  border-radius: 3px;
+  outline: 1px dashed rgba(255, 255, 255, 0.6);
 }
 
-.lg-outer .lg-video-cont {
-  display: inline-block;
-  vertical-align: middle;
-  max-width: 1140px;
-  max-height: 100%;
-  width: 100%;
-  padding: 0 5px;
-}
-.lg-outer .lg-video {
-  width: 100%;
-  height: 0;
-  padding-bottom: 56.25%;
-  overflow: hidden;
-  position: relative;
-}
-.lg-outer .lg-video .lg-object {
-  display: inline-block;
-  position: absolute;
-  top: 0;
-  left: 0;
-  width: 100% !important;
-  height: 100% !important;
-}
-.lg-outer .lg-video .lg-video-play {
-  width: 84px;
-  height: 59px;
-  position: absolute;
-  left: 50%;
-  top: 50%;
-  margin-left: -42px;
-  margin-top: -30px;
-  z-index: 1080;
-  cursor: pointer;
-}
-.lg-outer .lg-has-iframe .lg-video {
-  -webkit-overflow-scrolling: touch;
-  overflow: auto;
-}
-.lg-outer .lg-has-vimeo .lg-video-play {
-  background: url("../img/vimeo-play.png") no-repeat scroll 0 0 transparent;
-}
-.lg-outer .lg-has-vimeo:hover .lg-video-play {
-  background: url("../img/vimeo-play.png") no-repeat scroll 0 -58px transparent;
-}
-.lg-outer .lg-has-html5 .lg-video-play {
-  background: transparent url("../img/video-play.png") no-repeat scroll 0 0;
-  height: 64px;
-  margin-left: -32px;
-  margin-top: -32px;
-  width: 64px;
-  opacity: 0.8;
-}
-.lg-outer .lg-has-html5:hover .lg-video-play {
-  opacity: 1;
-}
-.lg-outer .lg-has-youtube .lg-video-play {
-  background: url("../img/youtube-play.png") no-repeat scroll 0 0 transparent;
-}
-.lg-outer .lg-has-youtube:hover .lg-video-play {
-  background: url("../img/youtube-play.png") no-repeat scroll 0 -60px transparent;
-}
-.lg-outer .lg-video-object {
-  width: 100% !important;
-  height: 100% !important;
-  position: absolute;
-  top: 0;
-  left: 0;
-}
-.lg-outer .lg-has-video .lg-video-object {
-  visibility: hidden;
-}
-.lg-outer .lg-has-video.lg-video-playing .lg-object, .lg-outer .lg-has-video.lg-video-playing .lg-video-play {
-  display: none;
-}
-.lg-outer .lg-has-video.lg-video-playing .lg-video-object {
-  visibility: visible;
+.lg-toolbar .lg-icon:focus-visible {
+  border-radius: 8px;
+  outline-offset: -5px;
 }
 
-.lg-progress-bar {
-  background-color: #333;
-  height: 5px;
-  left: 0;
-  position: absolute;
-  top: 0;
-  width: 100%;
-  z-index: 1083;
-  opacity: 0;
-  -webkit-transition: opacity 0.08s ease 0s;
-  -moz-transition: opacity 0.08s ease 0s;
-  -o-transition: opacity 0.08s ease 0s;
-  transition: opacity 0.08s ease 0s;
-}
-.lg-progress-bar .lg-progress {
-  background-color: #a90707;
-  height: 5px;
-  width: 0;
-}
-.lg-progress-bar.lg-start .lg-progress {
-  width: 100%;
-}
-.lg-show-autoplay .lg-progress-bar {
-  opacity: 1;
+.lg-group:after {
+  content: '';
+  display: table;
+  clear: both;
 }
 
-.lg-autoplay-button:after {
-  content: "\e01d";
-}
-.lg-show-autoplay .lg-autoplay-button:after {
-  content: "\e01a";
+.lg-container {
+  display: none;
+  outline: none;
 }
 
-.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap, .lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image {
-  -webkit-transition-duration: 0s;
-  transition-duration: 0s;
-}
-.lg-outer.lg-use-transition-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap {
-  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0, 0, 0.25, 1) 0s;
-  -moz-transition: -moz-transform 0.3s cubic-bezier(0, 0, 0.25, 1) 0s;
-  -o-transition: -o-transform 0.3s cubic-bezier(0, 0, 0.25, 1) 0s;
-  transition: transform 0.3s cubic-bezier(0, 0, 0.25, 1) 0s;
-}
-.lg-outer.lg-use-left-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap {
-  -webkit-transition: left 0.3s cubic-bezier(0, 0, 0.25, 1) 0s, top 0.3s cubic-bezier(0, 0, 0.25, 1) 0s;
-  -moz-transition: left 0.3s cubic-bezier(0, 0, 0.25, 1) 0s, top 0.3s cubic-bezier(0, 0, 0.25, 1) 0s;
-  -o-transition: left 0.3s cubic-bezier(0, 0, 0.25, 1) 0s, top 0.3s cubic-bezier(0, 0, 0.25, 1) 0s;
-  transition: left 0.3s cubic-bezier(0, 0, 0.25, 1) 0s, top 0.3s cubic-bezier(0, 0, 0.25, 1) 0s;
-}
-.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap {
-  -webkit-transform: translate3d(0, 0, 0);
-  transform: translate3d(0, 0, 0);
-  -webkit-backface-visibility: hidden;
-  -moz-backface-visibility: hidden;
-  backface-visibility: hidden;
-}
-.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image {
-  -webkit-transform: scale3d(1, 1, 1);
-  transform: scale3d(1, 1, 1);
-  -webkit-transition: -webkit-transform 0.3s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.15s !important;
-  -moz-transition: -moz-transform 0.3s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.15s !important;
-  -o-transition: -o-transform 0.3s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.15s !important;
-  transition: transform 0.3s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.15s !important;
-  -webkit-transform-origin: 0 0;
-  -moz-transform-origin: 0 0;
-  -ms-transform-origin: 0 0;
-  transform-origin: 0 0;
-  -webkit-backface-visibility: hidden;
-  -moz-backface-visibility: hidden;
-  backface-visibility: hidden;
+.lg-container.lg-show {
+  display: block;
 }
 
-#lg-zoom-in:after {
-  content: "\e311";
+.lg-on {
+  scroll-behavior: unset;
 }
 
-#lg-actual-size {
-  font-size: 20px;
-}
-#lg-actual-size:after {
-  content: "\e033";
+.lg-overlay-open {
+  overflow: hidden;
 }
 
-#lg-zoom-out {
-  opacity: 0.5;
-  pointer-events: none;
-}
-#lg-zoom-out:after {
-  content: "\e312";
+.lg-toolbar,
+.lg-prev,
+.lg-next,
+.lg-pager-outer,
+.lg-hide-sub-html .lg-sub-html {
+  opacity: 0;
+  will-change: transform, opacity;
+  -webkit-transition: -webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 0.25s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.25s cubic-bezier(0, 0, 0.25, 1) 0s;
 }
-.lg-zoomed #lg-zoom-out {
+
+.lg-show-in .lg-toolbar,
+.lg-show-in .lg-prev,
+.lg-show-in .lg-next,
+.lg-show-in .lg-pager-outer {
   opacity: 1;
-  pointer-events: auto;
 }
 
-.lg-outer .lg-pager-outer {
-  bottom: 60px;
-  left: 0;
-  position: absolute;
-  right: 0;
-  text-align: center;
-  z-index: 1080;
-  height: 10px;
-}
-.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont {
-  overflow: visible;
-}
-.lg-outer .lg-pager-cont {
-  cursor: pointer;
-  display: inline-block;
-  overflow: hidden;
-  position: relative;
-  vertical-align: top;
-  margin: 0 5px;
-}
-.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont {
+.lg-show-in.lg-hide-sub-html .lg-sub-html {
   opacity: 1;
-  -webkit-transform: translate3d(0, 0, 0);
-  transform: translate3d(0, 0, 0);
-}
-.lg-outer .lg-pager-cont.lg-pager-active .lg-pager {
-  box-shadow: 0 0 0 2px white inset;
-}
-.lg-outer .lg-pager-thumb-cont {
-  background-color: #fff;
-  color: #FFF;
-  bottom: 100%;
-  height: 83px;
-  left: 0;
-  margin-bottom: 20px;
-  margin-left: -60px;
-  opacity: 0;
-  padding: 5px;
-  position: absolute;
-  width: 120px;
-  border-radius: 3px;
-  -webkit-transition: opacity 0.15s ease 0s, -webkit-transform 0.15s ease 0s;
-  -moz-transition: opacity 0.15s ease 0s, -moz-transform 0.15s ease 0s;
-  -o-transition: opacity 0.15s ease 0s, -o-transform 0.15s ease 0s;
-  transition: opacity 0.15s ease 0s, transform 0.15s ease 0s;
-  -webkit-transform: translate3d(0, 5px, 0);
-  transform: translate3d(0, 5px, 0);
-}
-.lg-outer .lg-pager-thumb-cont img {
-  width: 100%;
-  height: 100%;
-}
-.lg-outer .lg-pager {
-  background-color: rgba(255, 255, 255, 0.5);
-  border-radius: 50%;
-  box-shadow: 0 0 0 8px rgba(255, 255, 255, 0.7) inset;
-  display: block;
-  height: 12px;
-  -webkit-transition: box-shadow 0.3s ease 0s;
-  -o-transition: box-shadow 0.3s ease 0s;
-  transition: box-shadow 0.3s ease 0s;
-  width: 12px;
-}
-.lg-outer .lg-pager:hover, .lg-outer .lg-pager:focus {
-  box-shadow: 0 0 0 8px white inset;
-}
-.lg-outer .lg-caret {
-  border-left: 10px solid transparent;
-  border-right: 10px solid transparent;
-  border-top: 10px dashed;
-  bottom: -10px;
-  display: inline-block;
-  height: 0;
-  left: 50%;
-  margin-left: -5px;
-  position: absolute;
-  vertical-align: middle;
-  width: 0;
 }
 
-.lg-fullscreen:after {
-  content: "\e20c";
-}
-.lg-fullscreen-on .lg-fullscreen:after {
-  content: "\e20d";
+.lg-show-in .lg-hide-items .lg-prev {
+  opacity: 0;
+  -webkit-transform: translate3d(-10px, 0, 0);
+  transform: translate3d(-10px, 0, 0);
 }
 
-.lg-outer #lg-dropdown-overlay {
-  background-color: rgba(0, 0, 0, 0.25);
-  bottom: 0;
-  cursor: default;
-  left: 0;
-  position: fixed;
-  right: 0;
-  top: 0;
-  z-index: 1081;
+.lg-show-in .lg-hide-items .lg-next {
   opacity: 0;
-  visibility: hidden;
-  -webkit-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
-  -o-transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
-  transition: visibility 0s linear 0.18s, opacity 0.18s linear 0s;
-}
-.lg-outer.lg-dropdown-active .lg-dropdown, .lg-outer.lg-dropdown-active #lg-dropdown-overlay {
-  -webkit-transition-delay: 0s;
-  transition-delay: 0s;
-  -moz-transform: translate3d(0, 0px, 0);
-  -o-transform: translate3d(0, 0px, 0);
-  -ms-transform: translate3d(0, 0px, 0);
-  -webkit-transform: translate3d(0, 0px, 0);
-  transform: translate3d(0, 0px, 0);
-  opacity: 1;
-  visibility: visible;
-}
-.lg-outer.lg-dropdown-active #lg-share {
-  color: #FFF;
+  -webkit-transform: translate3d(10px, 0, 0);
+  transform: translate3d(10px, 0, 0);
 }
-.lg-outer .lg-dropdown {
-  background-color: #fff;
-  border-radius: 2px;
-  font-size: 14px;
-  list-style-type: none;
-  margin: 0;
-  padding: 10px 0;
-  position: absolute;
-  right: 0;
-  text-align: left;
-  top: 50px;
+
+.lg-show-in .lg-hide-items .lg-toolbar {
   opacity: 0;
-  visibility: hidden;
-  -moz-transform: translate3d(0, 5px, 0);
-  -o-transform: translate3d(0, 5px, 0);
-  -ms-transform: translate3d(0, 5px, 0);
-  -webkit-transform: translate3d(0, 5px, 0);
-  transform: translate3d(0, 5px, 0);
-  -webkit-transition: -webkit-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
-  -moz-transition: -moz-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
-  -o-transition: -o-transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
-  transition: transform 0.18s linear 0s, visibility 0s linear 0.5s, opacity 0.18s linear 0s;
-}
-.lg-outer .lg-dropdown:after {
-  content: "";
-  display: block;
-  height: 0;
-  width: 0;
-  position: absolute;
-  border: 8px solid transparent;
-  border-bottom-color: #FFF;
-  right: 16px;
-  top: -16px;
-}
-.lg-outer .lg-dropdown > li:last-child {
-  margin-bottom: 0px;
-}
-.lg-outer .lg-dropdown > li:hover a, .lg-outer .lg-dropdown > li:hover .lg-icon {
-  color: #333;
-}
-.lg-outer .lg-dropdown a {
-  color: #333;
-  display: block;
-  white-space: pre;
-  padding: 4px 12px;
-  font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
-  font-size: 12px;
-}
-.lg-outer .lg-dropdown a:hover {
-  background-color: rgba(0, 0, 0, 0.07);
-}
-.lg-outer .lg-dropdown .lg-dropdown-text {
-  display: inline-block;
-  line-height: 1;
-  margin-top: -3px;
-  vertical-align: middle;
-}
-.lg-outer .lg-dropdown .lg-icon {
-  color: #333;
-  display: inline-block;
-  float: none;
-  font-size: 20px;
-  height: auto;
-  line-height: 1;
-  margin-right: 8px;
-  padding: 0;
-  vertical-align: middle;
-  width: auto;
-}
-.lg-outer #lg-share {
-  position: relative;
-}
-.lg-outer #lg-share:after {
-  content: "\e80d";
-}
-.lg-outer #lg-share-facebook .lg-icon {
-  color: #3b5998;
-}
-.lg-outer #lg-share-facebook .lg-icon:after {
-  content: "\e901";
-}
-.lg-outer #lg-share-twitter .lg-icon {
-  color: #00aced;
-}
-.lg-outer #lg-share-twitter .lg-icon:after {
-  content: "\e904";
-}
-.lg-outer #lg-share-googleplus .lg-icon {
-  color: #dd4b39;
-}
-.lg-outer #lg-share-googleplus .lg-icon:after {
-  content: "\e902";
-}
-.lg-outer #lg-share-pinterest .lg-icon {
-  color: #cb2027;
-}
-.lg-outer #lg-share-pinterest .lg-icon:after {
-  content: "\e903";
+  -webkit-transform: translate3d(0, -10px, 0);
+  transform: translate3d(0, -10px, 0);
 }
 
-.lg-group:after {
-  content: "";
-  display: table;
-  clear: both;
+.lg-show-in .lg-hide-items.lg-hide-sub-html .lg-sub-html {
+  opacity: 0;
+  -webkit-transform: translate3d(0, 20px, 0);
+  transform: translate3d(0, 20px, 0);
 }
 
 .lg-outer {
@@ -771,30 +423,42 @@ body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item.lg-complete .lg-object
   left: 0;
   z-index: 1050;
   text-align: left;
-  opacity: 0;
+  opacity: 0.001;
+  outline: none;
+  will-change: auto;
+  overflow: hidden;
   -webkit-transition: opacity 0.15s ease 0s;
   -o-transition: opacity 0.15s ease 0s;
   transition: opacity 0.15s ease 0s;
 }
+
 .lg-outer * {
   -webkit-box-sizing: border-box;
   -moz-box-sizing: border-box;
   box-sizing: border-box;
 }
+
+.lg-outer.lg-zoom-from-image {
+  opacity: 1;
+}
+
 .lg-outer.lg-visible {
   opacity: 1;
 }
-.lg-outer.lg-css3 .lg-item.lg-prev-slide, .lg-outer.lg-css3 .lg-item.lg-next-slide, .lg-outer.lg-css3 .lg-item.lg-current {
+
+.lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-prev-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-next-slide, .lg-outer.lg-css3 .lg-item:not(.lg-start-end-progress).lg-current {
   -webkit-transition-duration: inherit !important;
   transition-duration: inherit !important;
   -webkit-transition-timing-function: inherit !important;
   transition-timing-function: inherit !important;
 }
+
 .lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide, .lg-outer.lg-css3.lg-dragging .lg-item.lg-current {
   -webkit-transition-duration: 0s !important;
   transition-duration: 0s !important;
   opacity: 1;
 }
+
 .lg-outer.lg-grab img.lg-object {
   cursor: -webkit-grab;
   cursor: -moz-grab;
@@ -802,6 +466,7 @@ body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item.lg-complete .lg-object
   cursor: -ms-grab;
   cursor: grab;
 }
+
 .lg-outer.lg-grabbing img.lg-object {
   cursor: move;
   cursor: -webkit-grabbing;
@@ -810,84 +475,115 @@ body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item.lg-complete .lg-object
   cursor: -ms-grabbing;
   cursor: grabbing;
 }
-.lg-outer .lg {
-  height: 100%;
-  width: 100%;
-  position: relative;
-  overflow: hidden;
-  margin-left: auto;
-  margin-right: auto;
-  max-width: 100%;
-  max-height: 100%;
+
+.lg-outer .lg-content {
+  position: absolute;
+  top: 0;
+  left: 0;
+  right: 0;
+  bottom: 0;
 }
+
 .lg-outer .lg-inner {
   width: 100%;
-  height: 100%;
   position: absolute;
   left: 0;
   top: 0;
+  bottom: 0;
+  -webkit-transition: opacity 0s;
+  -o-transition: opacity 0s;
+  transition: opacity 0s;
   white-space: nowrap;
 }
+
 .lg-outer .lg-item {
-  background: url("../img/loading.gif") no-repeat scroll center center transparent;
   display: none !important;
 }
-.lg-outer.lg-css3 .lg-prev-slide, .lg-outer.lg-css3 .lg-current, .lg-outer.lg-css3 .lg-next-slide {
+
+.lg-outer .lg-item:not(.lg-start-end-progress) {
+  background: url("../images/loading.gif") no-repeat scroll center center transparent;
+}
+
+.lg-outer.lg-css3 .lg-prev-slide,
+.lg-outer.lg-css3 .lg-current,
+.lg-outer.lg-css3 .lg-next-slide {
   display: inline-block !important;
 }
+
 .lg-outer.lg-css .lg-current {
   display: inline-block !important;
 }
-.lg-outer .lg-item, .lg-outer .lg-img-wrap {
+
+.lg-outer .lg-item,
+.lg-outer .lg-img-wrap {
   display: inline-block;
   text-align: center;
   position: absolute;
   width: 100%;
   height: 100%;
 }
-.lg-outer .lg-item:before, .lg-outer .lg-img-wrap:before {
-  content: "";
+
+.lg-outer .lg-item:before,
+.lg-outer .lg-img-wrap:before {
+  content: '';
   display: inline-block;
-  height: 50%;
-  width: 1px;
-  margin-right: -1px;
+  height: 100%;
+  vertical-align: middle;
 }
+
 .lg-outer .lg-img-wrap {
   position: absolute;
-  padding: 0 5px;
   left: 0;
   right: 0;
   top: 0;
   bottom: 0;
+  white-space: nowrap;
+  font-size: 0;
 }
+
 .lg-outer .lg-item.lg-complete {
   background-image: none;
 }
+
 .lg-outer .lg-item.lg-current {
   z-index: 1060;
 }
-.lg-outer .lg-image {
+
+.lg-outer .lg-object {
   display: inline-block;
   vertical-align: middle;
   max-width: 100%;
   max-height: 100%;
-  width: auto !important;
-  height: auto !important;
+  width: auto;
+  height: auto;
+  position: relative;
 }
-.lg-outer.lg-show-after-load .lg-item .lg-object, .lg-outer.lg-show-after-load .lg-item .lg-video-play {
-  opacity: 0;
-  -webkit-transition: opacity 0.15s ease 0s;
-  -o-transition: opacity 0.15s ease 0s;
-  transition: opacity 0.15s ease 0s;
+
+.lg-outer .lg-empty-html.lg-sub-html,
+.lg-outer .lg-empty-html .lg-sub-html {
+  display: none;
 }
-.lg-outer.lg-show-after-load .lg-item.lg-complete .lg-object, .lg-outer.lg-show-after-load .lg-item.lg-complete .lg-video-play {
-  opacity: 1;
+
+.lg-outer.lg-hide-download .lg-download {
+  opacity: 0.75;
+  pointer-events: none;
 }
-.lg-outer .lg-empty-html {
-  display: none;
+
+.lg-outer .lg-first-slide .lg-dummy-img {
+  position: absolute;
+  top: 50%;
+  left: 50%;
 }
-.lg-outer.lg-hide-download #lg-download {
-  display: none;
+
+.lg-outer.lg-components-open:not(.lg-zoomed) .lg-components {
+  -webkit-transform: translate3d(0, 0%, 0);
+  transform: translate3d(0, 0%, 0);
+  opacity: 1;
+}
+
+.lg-outer.lg-components-open:not(.lg-zoomed) .lg-sub-html {
+  opacity: 1;
+  transition: opacity 0.2s ease-out 0.15s;
 }
 
 .lg-backdrop {
@@ -899,84 +595,134 @@ body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item.lg-complete .lg-object
   z-index: 1040;
   background-color: #000;
   opacity: 0;
-  -webkit-transition: opacity 0.15s ease 0s;
-  -o-transition: opacity 0.15s ease 0s;
-  transition: opacity 0.15s ease 0s;
+  will-change: auto;
+  -webkit-transition: opacity 333ms ease-in 0s;
+  -o-transition: opacity 333ms ease-in 0s;
+  transition: opacity 333ms ease-in 0s;
 }
+
 .lg-backdrop.in {
   opacity: 1;
 }
 
-.lg-css3.lg-no-trans .lg-prev-slide, .lg-css3.lg-no-trans .lg-next-slide, .lg-css3.lg-no-trans .lg-current {
+.lg-css3.lg-no-trans .lg-prev-slide,
+.lg-css3.lg-no-trans .lg-next-slide,
+.lg-css3.lg-no-trans .lg-current {
   -webkit-transition: none 0s ease 0s !important;
   -moz-transition: none 0s ease 0s !important;
   -o-transition: none 0s ease 0s !important;
   transition: none 0s ease 0s !important;
 }
+
 .lg-css3.lg-use-css3 .lg-item {
   -webkit-backface-visibility: hidden;
   -moz-backface-visibility: hidden;
   backface-visibility: hidden;
 }
-.lg-css3.lg-use-left .lg-item {
-  -webkit-backface-visibility: hidden;
-  -moz-backface-visibility: hidden;
-  backface-visibility: hidden;
-}
+
 .lg-css3.lg-fade .lg-item {
   opacity: 0;
 }
+
 .lg-css3.lg-fade .lg-item.lg-current {
   opacity: 1;
 }
+
 .lg-css3.lg-fade .lg-item.lg-prev-slide, .lg-css3.lg-fade .lg-item.lg-next-slide, .lg-css3.lg-fade .lg-item.lg-current {
   -webkit-transition: opacity 0.1s ease 0s;
   -moz-transition: opacity 0.1s ease 0s;
   -o-transition: opacity 0.1s ease 0s;
   transition: opacity 0.1s ease 0s;
 }
+
+.lg-css3.lg-use-css3 .lg-item.lg-start-progress {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+  transition: transform 1s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0s;
+}
+
+.lg-css3.lg-use-css3 .lg-item.lg-start-end-progress {
+  -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+  -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+  transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s;
+}
+
 .lg-css3.lg-slide.lg-use-css3 .lg-item {
   opacity: 0;
 }
+
 .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide {
   -webkit-transform: translate3d(-100%, 0, 0);
   transform: translate3d(-100%, 0, 0);
 }
+
 .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide {
   -webkit-transform: translate3d(100%, 0, 0);
   transform: translate3d(100%, 0, 0);
 }
+
 .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {
   -webkit-transform: translate3d(0, 0, 0);
   transform: translate3d(0, 0, 0);
   opacity: 1;
 }
+
 .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current {
   -webkit-transition: -webkit-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
   -moz-transition: -moz-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
   -o-transition: -o-transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
   transition: transform 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
 }
-.lg-css3.lg-slide.lg-use-left .lg-item {
-  opacity: 0;
-  position: absolute;
-  left: 0;
+
+.lg-container {
+  display: none;
 }
-.lg-css3.lg-slide.lg-use-left .lg-item.lg-prev-slide {
-  left: -100%;
+
+.lg-container.lg-show {
+  display: block;
 }
-.lg-css3.lg-slide.lg-use-left .lg-item.lg-next-slide {
-  left: 100%;
+
+.lg-container.lg-dragging-vertical .lg-backdrop {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
 }
-.lg-css3.lg-slide.lg-use-left .lg-item.lg-current {
-  left: 0;
+
+.lg-container.lg-dragging-vertical .lg-css3 .lg-item.lg-current {
+  -webkit-transition-duration: 0s !important;
+  transition-duration: 0s !important;
   opacity: 1;
 }
-.lg-css3.lg-slide.lg-use-left .lg-item.lg-prev-slide, .lg-css3.lg-slide.lg-use-left .lg-item.lg-next-slide, .lg-css3.lg-slide.lg-use-left .lg-item.lg-current {
-  -webkit-transition: left 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-  -moz-transition: left 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-  -o-transition: left 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
-  transition: left 1s cubic-bezier(0, 0, 0.25, 1) 0s, opacity 0.1s ease 0s;
+
+.lg-inline .lg-backdrop,
+.lg-inline .lg-outer {
+  position: absolute;
+}
+
+.lg-inline .lg-backdrop {
+  z-index: 1;
 }
 
-/*# sourceMappingURL=lightgallery.css.map */
+.lg-inline .lg-outer {
+  z-index: 2;
+}
+
+.lg-inline .lg-maximize:after {
+  content: '\e909';
+}
+
+.lg-components {
+  -webkit-transform: translate3d(0, 100%, 0);
+  transform: translate3d(0, 100%, 0);
+  will-change: transform;
+  -webkit-transition: -webkit-transform 0.35s ease-out 0s;
+  -moz-transition: -moz-transform 0.35s ease-out 0s;
+  -o-transition: -o-transform 0.35s ease-out 0s;
+  transition: transform 0.35s ease-out 0s;
+  z-index: 1080;
+  position: absolute;
+  bottom: 0;
+  right: 0;
+  left: 0;
+}
diff --git a/resources/lightgallery/css/lightgallery.min.css b/resources/lightgallery/css/lightgallery.min.css
deleted file mode 100644
index 20c20c6..0000000
--- a/resources/lightgallery/css/lightgallery.min.css
+++ /dev/null
@@ -1 +0,0 @@
-.lg-sub-html,.lg-toolbar{background-color:rgba(0,0,0,.45)}@font-face{font-family:lg;src:url(../fonts/lg.eot?n1z373);src:url(../fonts/lg.eot?#iefixn1z373) format("embedded-opentype"),url(../fonts/lg.woff?n1z373) format("woff"),url(../fonts/lg.ttf?n1z373) format("truetype"),url(../fonts/lg.svg?n1z373#lg) format("svg");font-weight:400;font-style:normal}.lg-icon{font-family:lg;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.lg-actions .lg-next,.lg-actions .lg-prev{background-color:rgba(0,0,0,.45);border-radius:2px;color:#999;cursor:pointer;display:block;font-size:22px;margin-top:-10px;padding:8px 10px 9px;position:absolute;top:50%;z-index:1080;border:none;outline:0}.lg-actions .lg-next.disabled,.lg-actions .lg-prev.disabled{pointer-events:none;opacity:.5}.lg-actions .lg-next:hover,.lg-actions .lg-prev:hover{color:#FFF}.lg-actions .lg-next{right:20px}.lg-actions .lg-next:before{content:"\e095"}.lg-actions .lg-prev{left:20px}.lg-actions .lg-prev:after{content:"\e094"}@-webkit-keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@-moz-keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@-ms-keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@keyframes lg-right-end{0%,100%{left:0}50%{left:-30px}}@-webkit-keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}@-moz-keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}@-ms-keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}@keyframes lg-left-end{0%,100%{left:0}50%{left:30px}}.lg-outer.lg-right-end .lg-object{-webkit-animation:lg-right-end .3s;-o-animation:lg-right-end .3s;animation:lg-right-end .3s;position:relative}.lg-outer.lg-left-end .lg-object{-webkit-animation:lg-left-end .3s;-o-animation:lg-left-end .3s;animation:lg-left-end .3s;position:relative}.lg-toolbar{z-index:1082;left:0;position:absolute;top:0;width:100%}.lg-toolbar .lg-icon{color:#999;cursor:pointer;float:right;font-size:24px;height:47px;line-height:27px;padding:10px 0;text-align:center;width:50px;text-decoration:none!important;outline:0;-webkit-transition:color .2s linear;-o-transition:color .2s linear;transition:color .2s linear}.lg-toolbar .lg-icon:hover{color:#FFF}.lg-toolbar .lg-close:after{content:"\e070"}.lg-toolbar .lg-download:after{content:"\e0f2"}.lg-sub-html{bottom:0;color:#EEE;font-size:16px;left:0;padding:10px 40px;position:fixed;right:0;text-align:center;z-index:1080}.lg-sub-html h4{margin:0;font-size:13px;font-weight:700}.lg-sub-html p{font-size:12px;margin:5px 0 0}#lg-counter{color:#999;display:inline-block;font-size:16px;padding-left:20px;padding-top:12px;vertical-align:middle}.lg-next,.lg-prev,.lg-toolbar{opacity:1;-webkit-transition:-webkit-transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s,color .2s linear;-moz-transition:-moz-transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s,color .2s linear;-o-transition:-o-transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s,color .2s linear;transition:transform .35s cubic-bezier(0,0,.25,1) 0s,opacity .35s cubic-bezier(0,0,.25,1) 0s,color .2s linear}.lg-hide-items .lg-prev{opacity:0;-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}.lg-hide-items .lg-next{opacity:0;-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}.lg-hide-items .lg-toolbar{opacity:0;-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-object{-webkit-transform:scale3d(.5,.5,.5);transform:scale3d(.5,.5,.5);opacity:0;-webkit-transition:-webkit-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-moz-transition:-moz-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-o-transition:-o-transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;transition:transform 250ms cubic-bezier(0,0,.25,1) 0s,opacity 250ms cubic-bezier(0,0,.25,1)!important;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;transform-origin:50% 50%}body:not(.lg-from-hash) .lg-outer.lg-start-zoom .lg-item.lg-complete .lg-object{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);opacity:1}.lg-outer .lg-thumb-outer{background-color:#0D0A0A;bottom:0;position:absolute;width:100%;z-index:1080;max-height:350px;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1) 0s;transition:transform .25s cubic-bezier(0,0,.25,1) 0s}.lg-outer .lg-thumb-outer.lg-grab .lg-thumb-item{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer .lg-thumb-outer.lg-grabbing .lg-thumb-item{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg-thumb-outer.lg-dragging .lg-thumb{-webkit-transition-duration:0s!important;transition-duration:0s!important}.lg-outer.lg-thumb-open .lg-thumb-outer{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-thumb{padding:10px 0;height:100%;margin-bottom:-5px}.lg-outer .lg-thumb-item{cursor:pointer;float:left;overflow:hidden;height:100%;border:2px solid #FFF;border-radius:4px;margin-bottom:5px}@media (min-width:1025px){.lg-outer .lg-thumb-item{-webkit-transition:border-color .25s ease;-o-transition:border-color .25s ease;transition:border-color .25s ease}}.lg-outer .lg-thumb-item.active,.lg-outer .lg-thumb-item:hover{border-color:#a90707}.lg-outer .lg-thumb-item img{width:100%;height:100%;object-fit:cover}.lg-outer.lg-has-thumb .lg-item{padding-bottom:120px}.lg-outer.lg-can-toggle .lg-item{padding-bottom:0}.lg-outer.lg-pull-caption-up .lg-sub-html{-webkit-transition:bottom .25s ease;-o-transition:bottom .25s ease;transition:bottom .25s ease}.lg-outer.lg-pull-caption-up.lg-thumb-open .lg-sub-html{bottom:100px}.lg-outer .lg-toogle-thumb{background-color:#0D0A0A;border-radius:2px 2px 0 0;color:#999;cursor:pointer;font-size:24px;height:39px;line-height:27px;padding:5px 0;position:absolute;right:20px;text-align:center;top:-39px;width:50px}.lg-outer .lg-toogle-thumb:hover,.lg-outer.lg-dropdown-active #lg-share{color:#FFF}.lg-outer .lg-toogle-thumb:after{content:"\e1ff"}.lg-outer .lg-video-cont{display:inline-block;vertical-align:middle;max-width:1140px;max-height:100%;width:100%;padding:0 5px}.lg-outer .lg-video{width:100%;height:0;padding-bottom:56.25%;overflow:hidden;position:relative}.lg-outer .lg-video .lg-object{display:inline-block;position:absolute;top:0;left:0;width:100%!important;height:100%!important}.lg-outer .lg-video .lg-video-play{width:84px;height:59px;position:absolute;left:50%;top:50%;margin-left:-42px;margin-top:-30px;z-index:1080;cursor:pointer}.lg-outer .lg-has-iframe .lg-video{-webkit-overflow-scrolling:touch;overflow:auto}.lg-outer .lg-has-vimeo .lg-video-play{background:url(../img/vimeo-play.png) no-repeat}.lg-outer .lg-has-vimeo:hover .lg-video-play{background:url(../img/vimeo-play.png) 0 -58px no-repeat}.lg-outer .lg-has-html5 .lg-video-play{background:url(../img/video-play.png) no-repeat;height:64px;margin-left:-32px;margin-top:-32px;width:64px;opacity:.8}.lg-outer .lg-has-html5:hover .lg-video-play{opacity:1}.lg-outer .lg-has-youtube .lg-video-play{background:url(../img/youtube-play.png) no-repeat}.lg-outer .lg-has-youtube:hover .lg-video-play{background:url(../img/youtube-play.png) 0 -60px no-repeat}.lg-outer .lg-video-object{width:100%!important;height:100%!important;position:absolute;top:0;left:0}.lg-outer .lg-has-video .lg-video-object{visibility:hidden}.lg-outer .lg-has-video.lg-video-playing .lg-object,.lg-outer .lg-has-video.lg-video-playing .lg-video-play{display:none}.lg-outer .lg-has-video.lg-video-playing .lg-video-object{visibility:visible}.lg-progress-bar{background-color:#333;height:5px;left:0;position:absolute;top:0;width:100%;z-index:1083;opacity:0;-webkit-transition:opacity 80ms ease 0s;-moz-transition:opacity 80ms ease 0s;-o-transition:opacity 80ms ease 0s;transition:opacity 80ms ease 0s}.lg-progress-bar .lg-progress{background-color:#a90707;height:5px;width:0}.lg-progress-bar.lg-start .lg-progress{width:100%}.lg-show-autoplay .lg-progress-bar{opacity:1}.lg-autoplay-button:after{content:"\e01d"}.lg-show-autoplay .lg-autoplay-button:after{content:"\e01a"}.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-image,.lg-outer.lg-css3.lg-zoom-dragging .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transition-duration:0s;transition-duration:0s}.lg-outer.lg-use-transition-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transition:-webkit-transform .3s cubic-bezier(0,0,.25,1) 0s;-moz-transition:-moz-transform .3s cubic-bezier(0,0,.25,1) 0s;-o-transition:-o-transform .3s cubic-bezier(0,0,.25,1) 0s;transition:transform .3s cubic-bezier(0,0,.25,1) 0s}.lg-outer.lg-use-left-for-zoom .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transition:left .3s cubic-bezier(0,0,.25,1) 0s,top .3s cubic-bezier(0,0,.25,1) 0s;-moz-transition:left .3s cubic-bezier(0,0,.25,1) 0s,top .3s cubic-bezier(0,0,.25,1) 0s;-o-transition:left .3s cubic-bezier(0,0,.25,1) 0s,top .3s cubic-bezier(0,0,.25,1) 0s;transition:left .3s cubic-bezier(0,0,.25,1) 0s,top .3s cubic-bezier(0,0,.25,1) 0s}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-img-wrap{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-outer .lg-item.lg-complete.lg-zoomable .lg-image{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1);-webkit-transition:-webkit-transform .3s cubic-bezier(0,0,.25,1) 0s,opacity .15s!important;-moz-transition:-moz-transform .3s cubic-bezier(0,0,.25,1) 0s,opacity .15s!important;-o-transition:-o-transform .3s cubic-bezier(0,0,.25,1) 0s,opacity .15s!important;transition:transform .3s cubic-bezier(0,0,.25,1) 0s,opacity .15s!important;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}#lg-zoom-in:after{content:"\e311"}#lg-actual-size{font-size:20px}#lg-actual-size:after{content:"\e033"}#lg-zoom-out{opacity:.5;pointer-events:none}#lg-zoom-out:after{content:"\e312"}.lg-zoomed #lg-zoom-out{opacity:1;pointer-events:auto}.lg-outer .lg-pager-outer{bottom:60px;left:0;position:absolute;right:0;text-align:center;z-index:1080;height:10px}.lg-outer .lg-pager-outer.lg-pager-hover .lg-pager-cont{overflow:visible}.lg-outer .lg-pager-cont{cursor:pointer;display:inline-block;overflow:hidden;position:relative;vertical-align:top;margin:0 5px}.lg-outer .lg-pager-cont:hover .lg-pager-thumb-cont{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.lg-outer .lg-pager-cont.lg-pager-active .lg-pager{box-shadow:0 0 0 2px #fff inset}.lg-outer .lg-pager-thumb-cont{background-color:#fff;color:#FFF;bottom:100%;height:83px;left:0;margin-bottom:20px;margin-left:-60px;opacity:0;padding:5px;position:absolute;width:120px;border-radius:3px;-webkit-transition:opacity .15s ease 0s,-webkit-transform .15s ease 0s;-moz-transition:opacity .15s ease 0s,-moz-transform .15s ease 0s;-o-transition:opacity .15s ease 0s,-o-transform .15s ease 0s;transition:opacity .15s ease 0s,transform .15s ease 0s;-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}.lg-outer .lg-pager-thumb-cont img{width:100%;height:100%}.lg-outer .lg-pager{background-color:rgba(255,255,255,.5);border-radius:50%;box-shadow:0 0 0 8px rgba(255,255,255,.7) inset;display:block;height:12px;-webkit-transition:box-shadow .3s ease 0s;-o-transition:box-shadow .3s ease 0s;transition:box-shadow .3s ease 0s;width:12px}.lg-outer .lg-pager:focus,.lg-outer .lg-pager:hover{box-shadow:0 0 0 8px #fff inset}.lg-outer .lg-caret{border-left:10px solid transparent;border-right:10px solid transparent;border-top:10px dashed;bottom:-10px;display:inline-block;height:0;left:50%;margin-left:-5px;position:absolute;vertical-align:middle;width:0}.lg-fullscreen:after{content:"\e20c"}.lg-fullscreen-on .lg-fullscreen:after{content:"\e20d"}.lg-outer #lg-dropdown-overlay{background-color:rgba(0,0,0,.25);bottom:0;cursor:default;left:0;position:fixed;right:0;top:0;z-index:1081;opacity:0;visibility:hidden;-webkit-transition:visibility 0s linear .18s,opacity .18s linear 0s;-o-transition:visibility 0s linear .18s,opacity .18s linear 0s;transition:visibility 0s linear .18s,opacity .18s linear 0s}.lg-outer.lg-dropdown-active #lg-dropdown-overlay,.lg-outer.lg-dropdown-active .lg-dropdown{-webkit-transition-delay:0s;transition-delay:0s;-moz-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;visibility:visible}.lg-outer .lg-dropdown{background-color:#fff;border-radius:2px;font-size:14px;list-style-type:none;margin:0;padding:10px 0;position:absolute;right:0;text-align:left;top:50px;opacity:0;visibility:hidden;-moz-transform:translate3d(0,5px,0);-o-transform:translate3d(0,5px,0);-ms-transform:translate3d(0,5px,0);-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0);-webkit-transition:-webkit-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;-moz-transition:-moz-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;-o-transition:-o-transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s;transition:transform .18s linear 0s,visibility 0s linear .5s,opacity .18s linear 0s}.lg-outer .lg-dropdown:after{content:"";display:block;height:0;width:0;position:absolute;border:8px solid transparent;border-bottom-color:#FFF;right:16px;top:-16px}.lg-outer .lg-dropdown>li:last-child{margin-bottom:0}.lg-outer .lg-dropdown>li:hover .lg-icon,.lg-outer .lg-dropdown>li:hover a{color:#333}.lg-outer .lg-dropdown a{color:#333;display:block;white-space:pre;padding:4px 12px;font-family:"Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px}.lg-outer .lg-dropdown a:hover{background-color:rgba(0,0,0,.07)}.lg-outer .lg-dropdown .lg-dropdown-text{display:inline-block;line-height:1;margin-top:-3px;vertical-align:middle}.lg-outer .lg-dropdown .lg-icon{color:#333;display:inline-block;float:none;font-size:20px;height:auto;line-height:1;margin-right:8px;padding:0;vertical-align:middle;width:auto}.lg-outer,.lg-outer .lg,.lg-outer .lg-inner{width:100%;height:100%}.lg-outer #lg-share{position:relative}.lg-outer #lg-share:after{content:"\e80d"}.lg-outer #lg-share-facebook .lg-icon{color:#3b5998}.lg-outer #lg-share-facebook .lg-icon:after{content:"\e901"}.lg-outer #lg-share-twitter .lg-icon{color:#00aced}.lg-outer #lg-share-twitter .lg-icon:after{content:"\e904"}.lg-outer #lg-share-googleplus .lg-icon{color:#dd4b39}.lg-outer #lg-share-googleplus .lg-icon:after{content:"\e902"}.lg-outer #lg-share-pinterest .lg-icon{color:#cb2027}.lg-outer #lg-share-pinterest .lg-icon:after{content:"\e903"}.lg-group:after{content:"";display:table;clear:both}.lg-outer{position:fixed;top:0;left:0;z-index:1050;text-align:left;opacity:0;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-outer *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.lg-outer.lg-visible{opacity:1}.lg-outer.lg-css3 .lg-item.lg-current,.lg-outer.lg-css3 .lg-item.lg-next-slide,.lg-outer.lg-css3 .lg-item.lg-prev-slide{-webkit-transition-duration:inherit!important;transition-duration:inherit!important;-webkit-transition-timing-function:inherit!important;transition-timing-function:inherit!important}.lg-outer.lg-css3.lg-dragging .lg-item.lg-current,.lg-outer.lg-css3.lg-dragging .lg-item.lg-next-slide,.lg-outer.lg-css3.lg-dragging .lg-item.lg-prev-slide{-webkit-transition-duration:0s!important;transition-duration:0s!important;opacity:1}.lg-outer.lg-grab img.lg-object{cursor:-webkit-grab;cursor:-moz-grab;cursor:-o-grab;cursor:-ms-grab;cursor:grab}.lg-outer.lg-grabbing img.lg-object{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:-o-grabbing;cursor:-ms-grabbing;cursor:grabbing}.lg-outer .lg{position:relative;overflow:hidden;margin-left:auto;margin-right:auto;max-width:100%;max-height:100%}.lg-outer .lg-inner{position:absolute;left:0;top:0;white-space:nowrap}.lg-outer .lg-item{background:url(../img/loading.gif) center center no-repeat;display:none!important}.lg-outer.lg-css .lg-current,.lg-outer.lg-css3 .lg-current,.lg-outer.lg-css3 .lg-next-slide,.lg-outer.lg-css3 .lg-prev-slide{display:inline-block!important}.lg-outer .lg-img-wrap,.lg-outer .lg-item{display:inline-block;text-align:center;position:absolute;width:100%;height:100%}.lg-outer .lg-img-wrap:before,.lg-outer .lg-item:before{content:"";display:inline-block;height:50%;width:1px;margin-right:-1px}.lg-outer .lg-img-wrap{position:absolute;padding:0 5px;left:0;right:0;top:0;bottom:0}.lg-outer .lg-item.lg-complete{background-image:none}.lg-outer .lg-item.lg-current{z-index:1060}.lg-outer .lg-image{display:inline-block;vertical-align:middle;max-width:100%;max-height:100%;width:auto!important;height:auto!important}.lg-outer.lg-show-after-load .lg-item .lg-object,.lg-outer.lg-show-after-load .lg-item .lg-video-play{opacity:0;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-outer.lg-show-after-load .lg-item.lg-complete .lg-object,.lg-outer.lg-show-after-load .lg-item.lg-complete .lg-video-play{opacity:1}.lg-outer .lg-empty-html,.lg-outer.lg-hide-download #lg-download{display:none}.lg-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1040;background-color:#000;opacity:0;-webkit-transition:opacity .15s ease 0s;-o-transition:opacity .15s ease 0s;transition:opacity .15s ease 0s}.lg-backdrop.in{opacity:1}.lg-css3.lg-no-trans .lg-current,.lg-css3.lg-no-trans .lg-next-slide,.lg-css3.lg-no-trans .lg-prev-slide{-webkit-transition:none 0s ease 0s!important;-moz-transition:none 0s ease 0s!important;-o-transition:none 0s ease 0s!important;transition:none 0s ease 0s!important}.lg-css3.lg-use-css3 .lg-item,.lg-css3.lg-use-left .lg-item{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden}.lg-css3.lg-fade .lg-item{opacity:0}.lg-css3.lg-fade .lg-item.lg-current{opacity:1}.lg-css3.lg-fade .lg-item.lg-current,.lg-css3.lg-fade .lg-item.lg-next-slide,.lg-css3.lg-fade .lg-item.lg-prev-slide{-webkit-transition:opacity .1s ease 0s;-moz-transition:opacity .1s ease 0s;-o-transition:opacity .1s ease 0s;transition:opacity .1s ease 0s}.lg-css3.lg-slide.lg-use-css3 .lg-item{opacity:0}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-current,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-next-slide,.lg-css3.lg-slide.lg-use-css3 .lg-item.lg-prev-slide{-webkit-transition:-webkit-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:-moz-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:-o-transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:transform 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}.lg-css3.lg-slide.lg-use-left .lg-item{opacity:0;position:absolute;left:0}.lg-css3.lg-slide.lg-use-left .lg-item.lg-prev-slide{left:-100%}.lg-css3.lg-slide.lg-use-left .lg-item.lg-next-slide{left:100%}.lg-css3.lg-slide.lg-use-left .lg-item.lg-current{left:0;opacity:1}.lg-css3.lg-slide.lg-use-left .lg-item.lg-current,.lg-css3.lg-slide.lg-use-left .lg-item.lg-next-slide,.lg-css3.lg-slide.lg-use-left .lg-item.lg-prev-slide{-webkit-transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-moz-transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;-o-transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s;transition:left 1s cubic-bezier(0,0,.25,1) 0s,opacity .1s ease 0s}
\ No newline at end of file
diff --git a/resources/lightgallery/fonts/lg.eot b/resources/lightgallery/fonts/lg.eot
deleted file mode 100644
index 51264c4..0000000
Binary files a/resources/lightgallery/fonts/lg.eot and /dev/null differ
diff --git a/resources/lightgallery/fonts/lg.svg b/resources/lightgallery/fonts/lg.svg
index 22b1a1f..fe8b075 100644
--- a/resources/lightgallery/fonts/lg.svg
+++ b/resources/lightgallery/fonts/lg.svg
@@ -6,18 +6,18 @@
 <![CDATA[
 {
 	"fontFamily": "lg",
-	"majorVersion": 1,
+	"majorVersion": 2,
 	"minorVersion": 0,
-	"fontURL": "https://github.com/sachinchoolur/lightGallery",
-	"copyright": "sachin",
-	"license": "MLT",
-	"licenseURL": "http://opensource.org/licenses/MIT",
-	"version": "Version 1.0",
+	"fontURL": "",
+	"copyright": "",
+	"license": "",
+	"licenseURL": "",
+	"description": "Font generated by IcoMoon.",
+	"version": "Version 2.0",
 	"fontId": "lg",
 	"psName": "lg",
 	"subFamily": "Regular",
-	"fullName": "lg",
-	"description": "Font generated by IcoMoon."
+	"fullName": "lg"
 }
 ]]>
 </json>
@@ -40,8 +40,15 @@
 <glyph unicode="&#xe311;" glyph-name="zoom_in" data-tags="zoom_in" d="M512 512.667h-86v-86h-42v86h-86v42h86v86h42v-86h86v-42zM406 340.667q80 0 136 56t56 136-56 136-136 56-136-56-56-136 56-136 136-56zM662 340.667l212-212-64-64-212 212v34l-12 12q-76-66-180-66-116 0-197 80t-81 196 81 197 197 81 196-81 80-197q0-104-66-180l12-12h34z" />
 <glyph unicode="&#xe312;" glyph-name="zoom_out" data-tags="zoom_out" d="M298 554.667h214v-42h-214v42zM406 340.667q80 0 136 56t56 136-56 136-136 56-136-56-56-136 56-136 136-56zM662 340.667l212-212-64-64-212 212v34l-12 12q-76-66-180-66-116 0-197 80t-81 196 81 197 197 81 196-81 80-197q0-104-66-180l12-12h34z" />
 <glyph unicode="&#xe80d;" glyph-name="share" data-tags="share" d="M768 252.667c68 0 124-56 124-124s-56-126-124-126-124 58-124 126c0 10 0 20 2 28l-302 176c-24-22-54-34-88-34-70 0-128 58-128 128s58 128 128 128c34 0 64-12 88-34l300 174c-2 10-4 20-4 30 0 70 58 128 128 128s128-58 128-128-58-128-128-128c-34 0-64 14-88 36l-300-176c2-10 4-20 4-30s-2-20-4-30l304-176c22 20 52 32 84 32z" />
-<glyph unicode="&#xe901;" glyph-name="facebook-with-circle" data-tags="facebook-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM628.429 612.659h-73.882c-8.755 0-18.483-11.52-18.483-26.829v-53.35h92.416l-13.978-76.083h-78.438v-228.403h-87.194v228.403h-79.104v76.083h79.104v44.749c0 64.205 44.544 116.378 105.677 116.378h73.882v-80.947z" />
-<glyph unicode="&#xe902;" glyph-name="google-with-circle" data-tags="google+-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM483.686 249.805c-30.874-15.002-64.102-16.589-76.954-16.589-2.458 0-3.84 0-3.84 0s-1.178 0-2.765 0c-20.070 0-119.962 4.608-119.962 95.59 0 89.395 108.8 96.41 142.131 96.41h0.87c-19.251 25.702-15.258 51.61-15.258 51.61-1.69-0.102-4.147-0.205-7.168-0.205-12.544 0-36.762 1.997-57.549 15.411-25.498 16.384-38.4 44.288-38.4 82.893 0 109.107 119.142 113.51 120.32 113.613h118.989v-2.611c0-13.312-23.91-15.923-40.192-18.125-5.53-0.819-16.64-1.894-19.763-3.482 30.157-16.128 35.021-41.421 35.021-79.104 0-42.906-16.794-65.587-34.611-81.51-11.059-9.882-19.712-17.613-19.712-28.006 0-10.189 11.878-20.582 25.702-32.717 22.579-19.917 53.555-47.002 53.555-92.723 0-47.258-20.326-81.050-60.416-100.454zM742.4 460.8h-76.8v-76.8h-51.2v76.8h-76.8v51.2h76.8v76.8h51.2v-76.8h76.8v-51.2zM421.018 401.92c-2.662 0-5.325-0.102-8.038-0.307-22.733-1.69-43.725-10.189-58.88-24.013-15.053-13.619-22.733-30.822-21.658-48.179 2.304-36.403 41.37-57.702 88.832-54.323 46.694 3.379 77.824 30.31 75.571 66.714-2.15 34.202-31.898 60.109-75.827 60.109zM465.766 599.808c-12.39 43.52-32.358 56.422-63.386 56.422-3.328 0-6.707-0.512-9.933-1.382-13.466-3.84-24.166-15.053-30.106-31.744-6.093-16.896-6.451-34.509-1.229-54.579 9.472-35.891 34.97-61.901 60.672-61.901 3.379 0 6.758 0.41 9.933 1.382 28.109 7.885 45.722 50.79 34.048 91.802z" />
-<glyph unicode="&#xe903;" glyph-name="pinterest-with-circle" data-tags="pinterest-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM545.638 344.32c-31.539 2.406-44.749 18.022-69.427 32.973-13.568-71.219-30.157-139.52-79.309-175.206-15.206 107.725 22.221 188.518 39.629 274.381-29.645 49.92 3.533 150.323 66.099 125.645 76.954-30.515-66.662-185.6 29.747-205.005 100.659-20.173 141.773 174.694 79.36 237.978-90.214 91.494-262.502 2.099-241.306-128.87 5.12-32 38.246-41.728 13.21-85.914-57.702 12.8-74.957 58.317-72.704 118.989 3.533 99.328 89.242 168.909 175.155 178.483 108.698 12.083 210.688-39.885 224.819-142.182 15.821-115.405-49.101-240.282-165.274-231.27z" />
-<glyph unicode="&#xe904;" glyph-name="twitter-with-circle" data-tags="twitter-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM711.936 549.683c0.205-4.198 0.256-8.397 0.256-12.493 0-128-97.331-275.507-275.405-275.507-54.682 0-105.574 15.974-148.378 43.52 7.526-0.922 15.258-1.28 23.091-1.28 45.363 0 87.091 15.411 120.218 41.421-42.342 0.819-78.080 28.774-90.419 67.174 5.888-1.075 11.93-1.69 18.176-1.69 8.806 0 17.408 1.178 25.498 3.379-44.288 8.909-77.67 48.026-77.67 94.925v1.178c13.056-7.219 28.006-11.622 43.878-12.134-26.010 17.408-43.059 47.002-43.059 80.64 0 17.715 4.762 34.406 13.107 48.691 47.77-58.573 119.040-97.075 199.526-101.222-1.69 7.117-2.509 14.49-2.509 22.118 0 53.402 43.315 96.819 96.819 96.819 27.802 0 52.992-11.776 70.656-30.618 22.067 4.403 42.752 12.39 61.44 23.501-7.219-22.579-22.528-41.574-42.547-53.606 19.61 2.406 38.246 7.578 55.603 15.309-12.954-19.405-29.389-36.506-48.282-50.125z" />
+<glyph unicode="&#xe900;" glyph-name="rotate_left" data-tags="rotate_left" d="M554 764.667q126-16 213-112t87-226-87-226-213-112v86q92 16 153 87t61 165-61 165-153 87v-166l-194 190 194 194v-132zM302 156.667l62 62q46-34 106-44v-86q-96 12-168 68zM260 384.667q10-58 42-106l-60-60q-56 74-68 166h86zM304 574.667q-36-52-44-106h-86q12 90 70 166z" />
+<glyph unicode="&#xe901;" glyph-name="rotate_right" data-tags="rotate_right" d="M720 278.667q34 46 44 106h86q-12-92-68-166zM554 174.667q60 10 106 44l62-62q-72-56-168-68v86zM850 468.667h-86q-10 60-44 106l62 60q58-72 68-166zM664 702.667l-194-190v166q-92-16-153-87t-61-165 61-165 153-87v-86q-126 16-213 112t-87 226 87 226 213 112v132z" />
+<glyph unicode="&#xe902;" glyph-name="swap_horiz" data-tags="swap_horiz" d="M896 554.667l-170-170v128h-300v84h300v128zM298 468.667v-128h300v-84h-300v-128l-170 170z" />
+<glyph unicode="&#xe903;" glyph-name="swap_vert" data-tags="swap_vert" d="M384 810.667l170-170h-128v-300h-84v300h-128zM682 212.667h128l-170-170-170 170h128v300h84v-300z" />
+<glyph unicode="&#xe904;" glyph-name="facebook-with-circle" data-tags="facebook-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM628.429 612.659h-73.882c-8.755 0-18.483-11.52-18.483-26.829v-53.35h92.416l-13.978-76.083h-78.438v-228.403h-87.194v228.403h-79.104v76.083h79.104v44.749c0 64.205 44.544 116.378 105.677 116.378h73.882v-80.947z" />
+<glyph unicode="&#xe905;" glyph-name="google-with-circle" data-tags="google+-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM483.686 249.805c-30.874-15.002-64.102-16.589-76.954-16.589-2.458 0-3.84 0-3.84 0s-1.178 0-2.765 0c-20.070 0-119.962 4.608-119.962 95.59 0 89.395 108.8 96.41 142.131 96.41h0.87c-19.251 25.702-15.258 51.61-15.258 51.61-1.69-0.102-4.147-0.205-7.168-0.205-12.544 0-36.762 1.997-57.549 15.411-25.498 16.384-38.4 44.288-38.4 82.893 0 109.107 119.142 113.51 120.32 113.613h118.989v-2.611c0-13.312-23.91-15.923-40.192-18.125-5.53-0.819-16.64-1.894-19.763-3.482 30.157-16.128 35.021-41.421 35.021-79.104 0-42.906-16.794-65.587-34.611-81.51-11.059-9.882-19.712-17.613-19.712-28.006 0-10.189 11.878-20.582 25.702-32.717 22.579-19.917 53.555-47.002 53.555-92.723 0-47.258-20.326-81.050-60.416-100.454zM742.4 460.8h-76.8v-76.8h-51.2v76.8h-76.8v51.2h76.8v76.8h51.2v-76.8h76.8v-51.2zM421.018 401.92c-2.662 0-5.325-0.102-8.038-0.307-22.733-1.69-43.725-10.189-58.88-24.013-15.053-13.619-22.733-30.822-21.658-48.179 2.304-36.403 41.37-57.702 88.832-54.323 46.694 3.379 77.824 30.31 75.571 66.714-2.15 34.202-31.898 60.109-75.827 60.109zM465.766 599.808c-12.39 43.52-32.358 56.422-63.386 56.422-3.328 0-6.707-0.512-9.933-1.382-13.466-3.84-24.166-15.053-30.106-31.744-6.093-16.896-6.451-34.509-1.229-54.579 9.472-35.891 34.97-61.901 60.672-61.901 3.379 0 6.758 0.41 9.933 1.382 28.109 7.885 45.722 50.79 34.048 91.802z" />
+<glyph unicode="&#xe906;" glyph-name="pinterest-with-circle" data-tags="pinterest-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM545.638 344.32c-31.539 2.406-44.749 18.022-69.427 32.973-13.568-71.219-30.157-139.52-79.309-175.206-15.206 107.725 22.221 188.518 39.629 274.381-29.645 49.92 3.533 150.323 66.099 125.645 76.954-30.515-66.662-185.6 29.747-205.005 100.659-20.173 141.773 174.694 79.36 237.978-90.214 91.494-262.502 2.099-241.306-128.87 5.12-32 38.246-41.728 13.21-85.914-57.702 12.8-74.957 58.317-72.704 118.989 3.533 99.328 89.242 168.909 175.155 178.483 108.698 12.083 210.688-39.885 224.819-142.182 15.821-115.405-49.101-240.282-165.274-231.27z" />
+<glyph unicode="&#xe907;" glyph-name="twitter-with-circle" data-tags="twitter-with-circle" d="M512 952.32c-271.462 0-491.52-220.058-491.52-491.52s220.058-491.52 491.52-491.52 491.52 220.058 491.52 491.52-220.058 491.52-491.52 491.52zM711.936 549.683c0.205-4.198 0.256-8.397 0.256-12.493 0-128-97.331-275.507-275.405-275.507-54.682 0-105.574 15.974-148.378 43.52 7.526-0.922 15.258-1.28 23.091-1.28 45.363 0 87.091 15.411 120.218 41.421-42.342 0.819-78.080 28.774-90.419 67.174 5.888-1.075 11.93-1.69 18.176-1.69 8.806 0 17.408 1.178 25.498 3.379-44.288 8.909-77.67 48.026-77.67 94.925v1.178c13.056-7.219 28.006-11.622 43.878-12.134-26.010 17.408-43.059 47.002-43.059 80.64 0 17.715 4.762 34.406 13.107 48.691 47.77-58.573 119.040-97.075 199.526-101.222-1.69 7.117-2.509 14.49-2.509 22.118 0 53.402 43.315 96.819 96.819 96.819 27.802 0 52.992-11.776 70.656-30.618 22.067 4.403 42.752 12.39 61.44 23.501-7.219-22.579-22.528-41.574-42.547-53.606 19.61 2.406 38.246 7.578 55.603 15.309-12.954-19.405-29.389-36.506-48.282-50.125z" />
+<glyph unicode="&#xe908;" glyph-name="message-circle" data-tags="message-circle" d="M938.667 448.128v21.205c0 0.725-0.043 1.621-0.085 2.475-5.803 99.755-47.488 190.336-112.725 258.176-68.352 71.125-162.731 117.419-268.843 123.264-0.683 0.043-1.536 0.085-2.347 0.085h-20.864c-59.947 0.683-122.965-13.227-181.931-43.008-52.181-26.496-97.749-63.488-133.931-108.16-56.405-69.717-89.899-158.080-89.941-253.696-0.597-54.4 10.795-111.36 35.157-165.419l-75.605-226.859c-2.816-8.363-3.072-17.835 0-26.965 7.467-22.357 31.616-34.432 53.973-26.965l226.731 75.563c49.493-22.485 105.984-35.243 165.376-35.115 58.539 0.384 115.797 13.141 168.149 36.949 81.579 37.163 151.040 101.248 193.749 186.667 27.477 53.291 43.307 115.84 43.136 181.803zM853.333 447.872c0.128-52.267-12.459-101.333-33.664-142.464-34.176-68.352-88.832-118.827-153.259-148.139-41.387-18.859-86.827-28.971-133.376-29.269-52.096-0.128-101.163 12.459-142.293 33.664-10.624 5.504-22.528 6.059-33.067 2.56l-162.261-54.101 54.101 162.261c3.755 11.221 2.56 22.912-2.389 32.725-23.552 46.677-34.304 96.171-33.792 142.421 0.043 76.331 26.411 145.92 70.955 200.917 28.629 35.371 64.768 64.725 106.24 85.76 46.592 23.552 96.085 34.304 142.336 33.792h19.456c83.712-4.565 158.037-41.003 212.011-97.152 51.285-53.376 84.139-124.416 89.003-202.795z" />
+<glyph unicode="&#xe909;" glyph-name="maximize-2" data-tags="maximize-2" d="M793.003 768l-225.835-225.835c-16.683-16.683-16.683-43.691 0-60.331s43.691-16.683 60.331 0l225.835 225.835v-153.003c0-23.552 19.115-42.667 42.667-42.667s42.667 19.115 42.667 42.667v256c0 5.803-1.152 11.307-3.243 16.341s-5.163 9.728-9.216 13.781c-0.043 0.043-0.043 0.043-0.085 0.085-3.925 3.925-8.619 7.083-13.781 9.216-5.035 2.091-10.539 3.243-16.341 3.243h-256c-23.552 0-42.667-19.115-42.667-42.667s19.115-42.667 42.667-42.667zM230.997 85.334l225.835 225.835c16.683 16.683 16.683 43.691 0 60.331s-43.691 16.683-60.331 0l-225.835-225.835v153.003c0 23.552-19.115 42.667-42.667 42.667s-42.667-19.115-42.667-42.667v-256c0-23.552 19.115-42.667 42.667-42.667h256c23.552 0 42.667 19.115 42.667 42.667s-19.115 42.667-42.667 42.667z" />
+<glyph unicode="&#xe90a;" glyph-name="minimize-2" data-tags="minimize-2" d="M700.331 554.667l225.835 225.835c16.683 16.683 16.683 43.691 0 60.331s-43.691 16.683-60.331 0l-225.835-225.835v153.003c0 23.552-19.115 42.667-42.667 42.667s-42.667-19.115-42.667-42.667v-256c0-5.803 1.152-11.307 3.243-16.341s5.163-9.728 9.216-13.781c0.043-0.043 0.043-0.043 0.085-0.085 3.925-3.925 8.619-7.083 13.781-9.216 5.035-2.091 10.539-3.243 16.341-3.243h256c23.552 0 42.667 19.115 42.667 42.667s-19.115 42.667-42.667 42.667zM158.165 12.502l225.835 225.835v-153.003c0-23.552 19.115-42.667 42.667-42.667s42.667 19.115 42.667 42.667v256c0 5.803-1.152 11.307-3.243 16.341s-5.163 9.728-9.216 13.781c-0.043 0.043-0.043 0.043-0.085 0.085-4.096 4.053-8.789 7.125-13.781 9.216-5.035 2.091-10.539 3.243-16.341 3.243h-256c-23.552 0-42.667-19.115-42.667-42.667s19.115-42.667 42.667-42.667h153.003l-225.835-225.835c-16.683-16.683-16.683-43.691 0-60.331s43.691-16.683 60.331 0z" />
 </font></defs></svg>
\ No newline at end of file
diff --git a/resources/lightgallery/fonts/lg.ttf b/resources/lightgallery/fonts/lg.ttf
index 8ad8199..825f483 100644
Binary files a/resources/lightgallery/fonts/lg.ttf and b/resources/lightgallery/fonts/lg.ttf differ
diff --git a/resources/lightgallery/fonts/lg.woff b/resources/lightgallery/fonts/lg.woff
index d98ff60..fd02a6f 100644
Binary files a/resources/lightgallery/fonts/lg.woff and b/resources/lightgallery/fonts/lg.woff differ
diff --git a/resources/lightgallery/fonts/lg.woff2 b/resources/lightgallery/fonts/lg.woff2
new file mode 100644
index 0000000..2c2e289
Binary files /dev/null and b/resources/lightgallery/fonts/lg.woff2 differ
diff --git a/resources/lightgallery/img/loading.gif b/resources/lightgallery/images/loading.gif
similarity index 100%
rename from resources/lightgallery/img/loading.gif
rename to resources/lightgallery/images/loading.gif
diff --git a/resources/lightgallery/img/video-play.png b/resources/lightgallery/img/video-play.png
deleted file mode 100644
index 1976723..0000000
Binary files a/resources/lightgallery/img/video-play.png and /dev/null differ
diff --git a/resources/lightgallery/img/vimeo-play.png b/resources/lightgallery/img/vimeo-play.png
deleted file mode 100644
index b244856..0000000
Binary files a/resources/lightgallery/img/vimeo-play.png and /dev/null differ
diff --git a/resources/lightgallery/img/youtube-play.png b/resources/lightgallery/img/youtube-play.png
deleted file mode 100644
index 580d949..0000000
Binary files a/resources/lightgallery/img/youtube-play.png and /dev/null differ
diff --git a/resources/lightgallery/js/lightgallery-all.js b/resources/lightgallery/js/lightgallery-all.js
deleted file mode 100644
index ad98df8..0000000
--- a/resources/lightgallery/js/lightgallery-all.js
+++ /dev/null
@@ -1,3364 +0,0 @@
-/*! lightgallery - v1.6.12 - 2019-02-19
-* http://sachinchoolur.github.io/lightGallery/
-* Copyright (c) 2019 Sachin N; Licensed GPLv3 */
-/*! lightgallery - v1.6.12 - 2019-02-19
-* http://sachinchoolur.github.io/lightGallery/
-* Copyright (c) 2019 Sachin N; Licensed GPLv3 */
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof module === 'object' && module.exports) {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(root["jQuery"]);
-  }
-}(this, function ($) {
-
-(function() {
-    'use strict';
-
-    var defaults = {
-
-        mode: 'lg-slide',
-
-        // Ex : 'ease'
-        cssEasing: 'ease',
-
-        //'for jquery animation'
-        easing: 'linear',
-        speed: 600,
-        height: '100%',
-        width: '100%',
-        addClass: '',
-        startClass: 'lg-start-zoom',
-        backdropDuration: 150,
-        hideBarsDelay: 6000,
-
-        useLeft: false,
-
-        closable: true,
-        loop: true,
-        escKey: true,
-        keyPress: true,
-        controls: true,
-        slideEndAnimatoin: true,
-        hideControlOnEnd: false,
-        mousewheel: true,
-
-        getCaptionFromTitleOrAlt: true,
-
-        // .lg-item || '.lg-sub-html'
-        appendSubHtmlTo: '.lg-sub-html',
-
-        subHtmlSelectorRelative: false,
-
-        /**
-         * @desc number of preload slides
-         * will exicute only after the current slide is fully loaded.
-         *
-         * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th
-         * slide will be loaded in the background after the 4th slide is fully loaded..
-         * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...
-         *
-         */
-        preload: 1,
-        showAfterLoad: true,
-        selector: '',
-        selectWithin: '',
-        nextHtml: '',
-        prevHtml: '',
-
-        // 0, 1
-        index: false,
-
-        iframeMaxWidth: '100%',
-
-        download: true,
-        counter: true,
-        appendCounterTo: '.lg-toolbar',
-
-        swipeThreshold: 50,
-        enableSwipe: true,
-        enableDrag: true,
-
-        dynamic: false,
-        dynamicEl: [],
-        galleryId: 1
-    };
-
-    function Plugin(element, options) {
-
-        // Current lightGallery element
-        this.el = element;
-
-        // Current jquery element
-        this.$el = $(element);
-
-        // lightGallery settings
-        this.s = $.extend({}, defaults, options);
-
-        // When using dynamic mode, ensure dynamicEl is an array
-        if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {
-            throw ('When using dynamic mode, you must also define dynamicEl as an Array.');
-        }
-
-        // lightGallery modules
-        this.modules = {};
-
-        // false when lightgallery complete first slide;
-        this.lGalleryOn = false;
-
-        this.lgBusy = false;
-
-        // Timeout function for hiding controls;
-        this.hideBartimeout = false;
-
-        // To determine browser supports for touch events;
-        this.isTouch = ('ontouchstart' in document.documentElement);
-
-        // Disable hideControlOnEnd if sildeEndAnimation is true
-        if (this.s.slideEndAnimatoin) {
-            this.s.hideControlOnEnd = false;
-        }
-
-        // Gallery items
-        if (this.s.dynamic) {
-            this.$items = this.s.dynamicEl;
-        } else {
-            if (this.s.selector === 'this') {
-                this.$items = this.$el;
-            } else if (this.s.selector !== '') {
-                if (this.s.selectWithin) {
-                    this.$items = $(this.s.selectWithin).find(this.s.selector);
-                } else {
-                    this.$items = this.$el.find($(this.s.selector));
-                }
-            } else {
-                this.$items = this.$el.children();
-            }
-        }
-
-        // .lg-item
-        this.$slide = '';
-
-        // .lg-outer
-        this.$outer = '';
-
-        this.init();
-
-        return this;
-    }
-
-    Plugin.prototype.init = function() {
-
-        var _this = this;
-
-        // s.preload should not be more than $item.length
-        if (_this.s.preload > _this.$items.length) {
-            _this.s.preload = _this.$items.length;
-        }
-
-        // if dynamic option is enabled execute immediately
-        var _hash = window.location.hash;
-        if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {
-
-            _this.index = parseInt(_hash.split('&slide=')[1], 10);
-
-            $('body').addClass('lg-from-hash');
-            if (!$('body').hasClass('lg-on')) {
-                setTimeout(function() {
-                    _this.build(_this.index);
-                });
-
-                $('body').addClass('lg-on');
-            }
-        }
-
-        if (_this.s.dynamic) {
-
-            _this.$el.trigger('onBeforeOpen.lg');
-
-            _this.index = _this.s.index || 0;
-
-            // prevent accidental double execution
-            if (!$('body').hasClass('lg-on')) {
-                setTimeout(function() {
-                    _this.build(_this.index);
-                    $('body').addClass('lg-on');
-                });
-            }
-        } else {
-
-            // Using different namespace for click because click event should not unbind if selector is same object('this')
-            _this.$items.on('click.lgcustom', function(event) {
-
-                // For IE8
-                try {
-                    event.preventDefault();
-                    event.preventDefault();
-                } catch (er) {
-                    event.returnValue = false;
-                }
-
-                _this.$el.trigger('onBeforeOpen.lg');
-
-                _this.index = _this.s.index || _this.$items.index(this);
-
-                // prevent accidental double execution
-                if (!$('body').hasClass('lg-on')) {
-                    _this.build(_this.index);
-                    $('body').addClass('lg-on');
-                }
-            });
-        }
-
-    };
-
-    Plugin.prototype.build = function(index) {
-
-        var _this = this;
-
-        _this.structure();
-
-        // module constructor
-        $.each($.fn.lightGallery.modules, function(key) {
-            _this.modules[key] = new $.fn.lightGallery.modules[key](_this.el);
-        });
-
-        // initiate slide function
-        _this.slide(index, false, false, false);
-
-        if (_this.s.keyPress) {
-            _this.keyPress();
-        }
-
-        if (_this.$items.length > 1) {
-
-            _this.arrow();
-
-            setTimeout(function() {
-                _this.enableDrag();
-                _this.enableSwipe();
-            }, 50);
-
-            if (_this.s.mousewheel) {
-                _this.mousewheel();
-            }
-        } else {
-            _this.$slide.on('click.lg', function() {
-                _this.$el.trigger('onSlideClick.lg');
-            });
-        }
-
-        _this.counter();
-
-        _this.closeGallery();
-
-        _this.$el.trigger('onAfterOpen.lg');
-
-        // Hide controllers if mouse doesn't move for some period
-        _this.$outer.on('mousemove.lg click.lg touchstart.lg', function() {
-
-            _this.$outer.removeClass('lg-hide-items');
-
-            clearTimeout(_this.hideBartimeout);
-
-            // Timeout will be cleared on each slide movement also
-            _this.hideBartimeout = setTimeout(function() {
-                _this.$outer.addClass('lg-hide-items');
-            }, _this.s.hideBarsDelay);
-
-        });
-
-        _this.$outer.trigger('mousemove.lg');
-
-    };
-
-    Plugin.prototype.structure = function() {
-        var list = '';
-        var controls = '';
-        var i = 0;
-        var subHtmlCont = '';
-        var template;
-        var _this = this;
-
-        $('body').append('<div class="lg-backdrop"></div>');
-        $('.lg-backdrop').css('transition-duration', this.s.backdropDuration + 'ms');
-
-        // Create gallery items
-        for (i = 0; i < this.$items.length; i++) {
-            list += '<div class="lg-item"></div>';
-        }
-
-        // Create controlls
-        if (this.s.controls && this.$items.length > 1) {
-            controls = '<div class="lg-actions">' +
-                '<button class="lg-prev lg-icon">' + this.s.prevHtml + '</button>' +
-                '<button class="lg-next lg-icon">' + this.s.nextHtml + '</button>' +
-                '</div>';
-        }
-
-        if (this.s.appendSubHtmlTo === '.lg-sub-html') {
-            subHtmlCont = '<div class="lg-sub-html"></div>';
-        }
-
-        template = '<div class="lg-outer ' + this.s.addClass + ' ' + this.s.startClass + '">' +
-            '<div class="lg" style="width:' + this.s.width + '; height:' + this.s.height + '">' +
-            '<div class="lg-inner">' + list + '</div>' +
-            '<div class="lg-toolbar lg-group">' +
-            '<span class="lg-close lg-icon"></span>' +
-            '</div>' +
-            controls +
-            subHtmlCont +
-            '</div>' +
-            '</div>';
-
-        $('body').append(template);
-        this.$outer = $('.lg-outer');
-        this.$slide = this.$outer.find('.lg-item');
-
-        if (this.s.useLeft) {
-            this.$outer.addClass('lg-use-left');
-
-            // Set mode lg-slide if use left is true;
-            this.s.mode = 'lg-slide';
-        } else {
-            this.$outer.addClass('lg-use-css3');
-        }
-
-        // For fixed height gallery
-        _this.setTop();
-        $(window).on('resize.lg orientationchange.lg', function() {
-            setTimeout(function() {
-                _this.setTop();
-            }, 100);
-        });
-
-        // add class lg-current to remove initial transition
-        this.$slide.eq(this.index).addClass('lg-current');
-
-        // add Class for css support and transition mode
-        if (this.doCss()) {
-            this.$outer.addClass('lg-css3');
-        } else {
-            this.$outer.addClass('lg-css');
-
-            // Set speed 0 because no animation will happen if browser doesn't support css3
-            this.s.speed = 0;
-        }
-
-        this.$outer.addClass(this.s.mode);
-
-        if (this.s.enableDrag && this.$items.length > 1) {
-            this.$outer.addClass('lg-grab');
-        }
-
-        if (this.s.showAfterLoad) {
-            this.$outer.addClass('lg-show-after-load');
-        }
-
-        if (this.doCss()) {
-            var $inner = this.$outer.find('.lg-inner');
-            $inner.css('transition-timing-function', this.s.cssEasing);
-            $inner.css('transition-duration', this.s.speed + 'ms');
-        }
-
-        setTimeout(function() {
-            $('.lg-backdrop').addClass('in');
-        });
-
-        setTimeout(function() {
-            _this.$outer.addClass('lg-visible');
-        }, this.s.backdropDuration);
-
-        if (this.s.download) {
-            this.$outer.find('.lg-toolbar').append('<a id="lg-download" target="_blank" download class="lg-download lg-icon"></a>');
-        }
-
-        // Store the current scroll top value to scroll back after closing the gallery..
-        this.prevScrollTop = $(window).scrollTop();
-
-    };
-
-    // For fixed height gallery
-    Plugin.prototype.setTop = function() {
-        if (this.s.height !== '100%') {
-            var wH = $(window).height();
-            var top = (wH - parseInt(this.s.height, 10)) / 2;
-            var $lGallery = this.$outer.find('.lg');
-            if (wH >= parseInt(this.s.height, 10)) {
-                $lGallery.css('top', top + 'px');
-            } else {
-                $lGallery.css('top', '0px');
-            }
-        }
-    };
-
-    // Find css3 support
-    Plugin.prototype.doCss = function() {
-        // check for css animation support
-        var support = function() {
-            var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];
-            var root = document.documentElement;
-            var i = 0;
-            for (i = 0; i < transition.length; i++) {
-                if (transition[i] in root.style) {
-                    return true;
-                }
-            }
-        };
-
-        if (support()) {
-            return true;
-        }
-
-        return false;
-    };
-
-    /**
-     *  @desc Check the given src is video
-     *  @param {String} src
-     *  @return {Object} video type
-     *  Ex:{ youtube  :  ["//www.youtube.com/watch?v=c0asJgSyxcY", "c0asJgSyxcY"] }
-     */
-    Plugin.prototype.isVideo = function(src, index) {
-
-        var html;
-        if (this.s.dynamic) {
-            html = this.s.dynamicEl[index].html;
-        } else {
-            html = this.$items.eq(index).attr('data-html');
-        }
-
-        if (!src) {
-            if(html) {
-                return {
-                    html5: true
-                };
-            } else {
-                console.error('lightGallery :- data-src is not pvovided on slide item ' + (index + 1) + '. Please make sure the selector property is properly configured. More info - http://sachinchoolur.github.io/lightGallery/demos/html-markup.html');
-                return false;
-            }
-        }
-
-        var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i);
-        var vimeo = src.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i);
-        var dailymotion = src.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i);
-        var vk = src.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i);
-
-        if (youtube) {
-            return {
-                youtube: youtube
-            };
-        } else if (vimeo) {
-            return {
-                vimeo: vimeo
-            };
-        } else if (dailymotion) {
-            return {
-                dailymotion: dailymotion
-            };
-        } else if (vk) {
-            return {
-                vk: vk
-            };
-        }
-    };
-
-    /**
-     *  @desc Create image counter
-     *  Ex: 1/10
-     */
-    Plugin.prototype.counter = function() {
-        if (this.s.counter) {
-            $(this.s.appendCounterTo).append('<div id="lg-counter"><span id="lg-counter-current">' + (parseInt(this.index, 10) + 1) + '</span> / <span id="lg-counter-all">' + this.$items.length + '</span></div>');
-        }
-    };
-
-    /**
-     *  @desc add sub-html into the slide
-     *  @param {Number} index - index of the slide
-     */
-    Plugin.prototype.addHtml = function(index) {
-        var subHtml = null;
-        var subHtmlUrl;
-        var $currentEle;
-        if (this.s.dynamic) {
-            if (this.s.dynamicEl[index].subHtmlUrl) {
-                subHtmlUrl = this.s.dynamicEl[index].subHtmlUrl;
-            } else {
-                subHtml = this.s.dynamicEl[index].subHtml;
-            }
-        } else {
-            $currentEle = this.$items.eq(index);
-            if ($currentEle.attr('data-sub-html-url')) {
-                subHtmlUrl = $currentEle.attr('data-sub-html-url');
-            } else {
-                subHtml = $currentEle.attr('data-sub-html');
-                if (this.s.getCaptionFromTitleOrAlt && !subHtml) {
-                    subHtml = $currentEle.attr('title') || $currentEle.find('img').first().attr('alt');
-                }
-            }
-        }
-
-        if (!subHtmlUrl) {
-            if (typeof subHtml !== 'undefined' && subHtml !== null) {
-
-                // get first letter of subhtml
-                // if first letter starts with . or # get the html form the jQuery object
-                var fL = subHtml.substring(0, 1);
-                if (fL === '.' || fL === '#') {
-                    if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {
-                        subHtml = $currentEle.find(subHtml).html();
-                    } else {
-                        subHtml = $(subHtml).html();
-                    }
-                }
-            } else {
-                subHtml = '';
-            }
-        }
-
-        if (this.s.appendSubHtmlTo === '.lg-sub-html') {
-
-            if (subHtmlUrl) {
-                this.$outer.find(this.s.appendSubHtmlTo).load(subHtmlUrl);
-            } else {
-                this.$outer.find(this.s.appendSubHtmlTo).html(subHtml);
-            }
-
-        } else {
-
-            if (subHtmlUrl) {
-                this.$slide.eq(index).load(subHtmlUrl);
-            } else {
-                this.$slide.eq(index).append(subHtml);
-            }
-        }
-
-        // Add lg-empty-html class if title doesn't exist
-        if (typeof subHtml !== 'undefined' && subHtml !== null) {
-            if (subHtml === '') {
-                this.$outer.find(this.s.appendSubHtmlTo).addClass('lg-empty-html');
-            } else {
-                this.$outer.find(this.s.appendSubHtmlTo).removeClass('lg-empty-html');
-            }
-        }
-
-        this.$el.trigger('onAfterAppendSubHtml.lg', [index]);
-    };
-
-    /**
-     *  @desc Preload slides
-     *  @param {Number} index - index of the slide
-     */
-    Plugin.prototype.preload = function(index) {
-        var i = 1;
-        var j = 1;
-        for (i = 1; i <= this.s.preload; i++) {
-            if (i >= this.$items.length - index) {
-                break;
-            }
-
-            this.loadContent(index + i, false, 0);
-        }
-
-        for (j = 1; j <= this.s.preload; j++) {
-            if (index - j < 0) {
-                break;
-            }
-
-            this.loadContent(index - j, false, 0);
-        }
-    };
-
-    /**
-     *  @desc Load slide content into slide.
-     *  @param {Number} index - index of the slide.
-     *  @param {Boolean} rec - if true call loadcontent() function again.
-     *  @param {Boolean} delay - delay for adding complete class. it is 0 except first time.
-     */
-    Plugin.prototype.loadContent = function(index, rec, delay) {
-
-        var _this = this;
-        var _hasPoster = false;
-        var _$img;
-        var _src;
-        var _poster;
-        var _srcset;
-        var _sizes;
-        var _html;
-        var getResponsiveSrc = function(srcItms) {
-            var rsWidth = [];
-            var rsSrc = [];
-            for (var i = 0; i < srcItms.length; i++) {
-                var __src = srcItms[i].split(' ');
-
-                // Manage empty space
-                if (__src[0] === '') {
-                    __src.splice(0, 1);
-                }
-
-                rsSrc.push(__src[0]);
-                rsWidth.push(__src[1]);
-            }
-
-            var wWidth = $(window).width();
-            for (var j = 0; j < rsWidth.length; j++) {
-                if (parseInt(rsWidth[j], 10) > wWidth) {
-                    _src = rsSrc[j];
-                    break;
-                }
-            }
-        };
-
-        if (_this.s.dynamic) {
-
-            if (_this.s.dynamicEl[index].poster) {
-                _hasPoster = true;
-                _poster = _this.s.dynamicEl[index].poster;
-            }
-
-            _html = _this.s.dynamicEl[index].html;
-            _src = _this.s.dynamicEl[index].src;
-
-            if (_this.s.dynamicEl[index].responsive) {
-                var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');
-                getResponsiveSrc(srcDyItms);
-            }
-
-            _srcset = _this.s.dynamicEl[index].srcset;
-            _sizes = _this.s.dynamicEl[index].sizes;
-
-        } else {
-
-            if (_this.$items.eq(index).attr('data-poster')) {
-                _hasPoster = true;
-                _poster = _this.$items.eq(index).attr('data-poster');
-            }
-
-            _html = _this.$items.eq(index).attr('data-html');
-            _src = _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src');
-
-            if (_this.$items.eq(index).attr('data-responsive')) {
-                var srcItms = _this.$items.eq(index).attr('data-responsive').split(',');
-                getResponsiveSrc(srcItms);
-            }
-
-            _srcset = _this.$items.eq(index).attr('data-srcset');
-            _sizes = _this.$items.eq(index).attr('data-sizes');
-
-        }
-
-        //if (_src || _srcset || _sizes || _poster) {
-
-        var iframe = false;
-        if (_this.s.dynamic) {
-            if (_this.s.dynamicEl[index].iframe) {
-                iframe = true;
-            }
-        } else {
-            if (_this.$items.eq(index).attr('data-iframe') === 'true') {
-                iframe = true;
-            }
-        }
-
-        var _isVideo = _this.isVideo(_src, index);
-        if (!_this.$slide.eq(index).hasClass('lg-loaded')) {
-            if (iframe) {
-                _this.$slide.eq(index).prepend('<div class="lg-video-cont lg-has-iframe" style="max-width:' + _this.s.iframeMaxWidth + '"><div class="lg-video"><iframe class="lg-object" frameborder="0" src="' + _src + '"  allowfullscreen="true"></iframe></div></div>');
-            } else if (_hasPoster) {
-                var videoClass = '';
-                if (_isVideo && _isVideo.youtube) {
-                    videoClass = 'lg-has-youtube';
-                } else if (_isVideo && _isVideo.vimeo) {
-                    videoClass = 'lg-has-vimeo';
-                } else {
-                    videoClass = 'lg-has-html5';
-                }
-
-                _this.$slide.eq(index).prepend('<div class="lg-video-cont ' + videoClass + ' "><div class="lg-video"><span class="lg-video-play"></span><img class="lg-object lg-has-poster" src="' + _poster + '" /></div></div>');
-
-            } else if (_isVideo) {
-                _this.$slide.eq(index).prepend('<div class="lg-video-cont "><div class="lg-video"></div></div>');
-                _this.$el.trigger('hasVideo.lg', [index, _src, _html]);
-            } else {
-                _this.$slide.eq(index).prepend('<div class="lg-img-wrap"><img class="lg-object lg-image" src="' + _src + '" /></div>');
-            }
-
-            _this.$el.trigger('onAferAppendSlide.lg', [index]);
-
-            _$img = _this.$slide.eq(index).find('.lg-object');
-            if (_sizes) {
-                _$img.attr('sizes', _sizes);
-            }
-
-            if (_srcset) {
-                _$img.attr('srcset', _srcset);
-                try {
-                    picturefill({
-                        elements: [_$img[0]]
-                    });
-                } catch (e) {
-                    console.warn('lightGallery :- If you want srcset to be supported for older browser please include picturefil version 2 javascript library in your document.');
-                }
-            }
-
-            if (this.s.appendSubHtmlTo !== '.lg-sub-html') {
-                _this.addHtml(index);
-            }
-
-            _this.$slide.eq(index).addClass('lg-loaded');
-        }
-
-        _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() {
-
-            // For first time add some delay for displaying the start animation.
-            var _speed = 0;
-
-            // Do not change the delay value because it is required for zoom plugin.
-            // If gallery opened from direct url (hash) speed value should be 0
-            if (delay && !$('body').hasClass('lg-from-hash')) {
-                _speed = delay;
-            }
-
-            setTimeout(function() {
-                _this.$slide.eq(index).addClass('lg-complete');
-                _this.$el.trigger('onSlideItemLoad.lg', [index, delay || 0]);
-            }, _speed);
-
-        });
-
-        // @todo check load state for html5 videos
-        if (_isVideo && _isVideo.html5 && !_hasPoster) {
-            _this.$slide.eq(index).addClass('lg-complete');
-        }
-
-        if (rec === true) {
-            if (!_this.$slide.eq(index).hasClass('lg-complete')) {
-                _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() {
-                    _this.preload(index);
-                });
-            } else {
-                _this.preload(index);
-            }
-        }
-
-        //}
-    };
-
-    /**
-    *   @desc slide function for lightgallery
-        ** Slide() gets call on start
-        ** ** Set lg.on true once slide() function gets called.
-        ** Call loadContent() on slide() function inside setTimeout
-        ** ** On first slide we do not want any animation like slide of fade
-        ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately
-        ** ** Else loadContent() should wait for the transition to complete.
-        ** ** So set timeout s.speed + 50
-    <=> ** loadContent() will load slide content in to the particular slide
-        ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.
-        ** ** preload will execute only when the previous slide is fully loaded (images iframe)
-        ** ** avoid simultaneous image load
-    <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value
-        ** loadContent()  <====> Preload();
-
-    *   @param {Number} index - index of the slide
-    *   @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag
-    *   @param {Boolean} fromThumb - true if slide function called via thumbnail click
-    *   @param {String} direction - Direction of the slide(next/prev)
-    */
-    Plugin.prototype.slide = function(index, fromTouch, fromThumb, direction) {
-
-        var _prevIndex = this.$outer.find('.lg-current').index();
-        var _this = this;
-
-        // Prevent if multiple call
-        // Required for hsh plugin
-        if (_this.lGalleryOn && (_prevIndex === index)) {
-            return;
-        }
-
-        var _length = this.$slide.length;
-        var _time = _this.lGalleryOn ? this.s.speed : 0;
-
-        if (!_this.lgBusy) {
-
-            if (this.s.download) {
-                var _src;
-                if (_this.s.dynamic) {
-                    _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);
-                } else {
-                    _src = _this.$items.eq(index).attr('data-download-url') !== 'false' && (_this.$items.eq(index).attr('data-download-url') || _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src'));
-
-                }
-
-                if (_src) {
-                    $('#lg-download').attr('href', _src);
-                    _this.$outer.removeClass('lg-hide-download');
-                } else {
-                    _this.$outer.addClass('lg-hide-download');
-                }
-            }
-
-            this.$el.trigger('onBeforeSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);
-
-            _this.lgBusy = true;
-
-            clearTimeout(_this.hideBartimeout);
-
-            // Add title if this.s.appendSubHtmlTo === lg-sub-html
-            if (this.s.appendSubHtmlTo === '.lg-sub-html') {
-
-                // wait for slide animation to complete
-                setTimeout(function() {
-                    _this.addHtml(index);
-                }, _time);
-            }
-
-            this.arrowDisable(index);
-
-            if (!direction) {
-                if (index < _prevIndex) {
-                    direction = 'prev';
-                } else if (index > _prevIndex) {
-                    direction = 'next';
-                }
-            }
-
-            if (!fromTouch) {
-
-                // remove all transitions
-                _this.$outer.addClass('lg-no-trans');
-
-                this.$slide.removeClass('lg-prev-slide lg-next-slide');
-
-                if (direction === 'prev') {
-
-                    //prevslide
-                    this.$slide.eq(index).addClass('lg-prev-slide');
-                    this.$slide.eq(_prevIndex).addClass('lg-next-slide');
-                } else {
-
-                    // next slide
-                    this.$slide.eq(index).addClass('lg-next-slide');
-                    this.$slide.eq(_prevIndex).addClass('lg-prev-slide');
-                }
-
-                // give 50 ms for browser to add/remove class
-                setTimeout(function() {
-                    _this.$slide.removeClass('lg-current');
-
-                    //_this.$slide.eq(_prevIndex).removeClass('lg-current');
-                    _this.$slide.eq(index).addClass('lg-current');
-
-                    // reset all transitions
-                    _this.$outer.removeClass('lg-no-trans');
-                }, 50);
-            } else {
-
-                this.$slide.removeClass('lg-prev-slide lg-current lg-next-slide');
-                var touchPrev;
-                var touchNext;
-                if (_length > 2) {
-                    touchPrev = index - 1;
-                    touchNext = index + 1;
-
-                    if ((index === 0) && (_prevIndex === _length - 1)) {
-
-                        // next slide
-                        touchNext = 0;
-                        touchPrev = _length - 1;
-                    } else if ((index === _length - 1) && (_prevIndex === 0)) {
-
-                        // prev slide
-                        touchNext = 0;
-                        touchPrev = _length - 1;
-                    }
-
-                } else {
-                    touchPrev = 0;
-                    touchNext = 1;
-                }
-
-                if (direction === 'prev') {
-                    _this.$slide.eq(touchNext).addClass('lg-next-slide');
-                } else {
-                    _this.$slide.eq(touchPrev).addClass('lg-prev-slide');
-                }
-
-                _this.$slide.eq(index).addClass('lg-current');
-            }
-
-            if (_this.lGalleryOn) {
-                setTimeout(function() {
-                    _this.loadContent(index, true, 0);
-                }, this.s.speed + 50);
-
-                setTimeout(function() {
-                    _this.lgBusy = false;
-                    _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);
-                }, this.s.speed);
-
-            } else {
-                _this.loadContent(index, true, _this.s.backdropDuration);
-
-                _this.lgBusy = false;
-                _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);
-            }
-
-            _this.lGalleryOn = true;
-
-            if (this.s.counter) {
-                $('#lg-counter-current').text(index + 1);
-            }
-
-        }
-        _this.index = index;
-
-    };
-
-    /**
-     *  @desc Go to next slide
-     *  @param {Boolean} fromTouch - true if slide function called via touch event
-     */
-    Plugin.prototype.goToNextSlide = function(fromTouch) {
-        var _this = this;
-        var _loop = _this.s.loop;
-        if (fromTouch && _this.$slide.length < 3) {
-            _loop = false;
-        }
-
-        if (!_this.lgBusy) {
-            if ((_this.index + 1) < _this.$slide.length) {
-                _this.index++;
-                _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]);
-                _this.slide(_this.index, fromTouch, false, 'next');
-            } else {
-                if (_loop) {
-                    _this.index = 0;
-                    _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]);
-                    _this.slide(_this.index, fromTouch, false, 'next');
-                } else if (_this.s.slideEndAnimatoin && !fromTouch) {
-                    _this.$outer.addClass('lg-right-end');
-                    setTimeout(function() {
-                        _this.$outer.removeClass('lg-right-end');
-                    }, 400);
-                }
-            }
-        }
-    };
-
-    /**
-     *  @desc Go to previous slide
-     *  @param {Boolean} fromTouch - true if slide function called via touch event
-     */
-    Plugin.prototype.goToPrevSlide = function(fromTouch) {
-        var _this = this;
-        var _loop = _this.s.loop;
-        if (fromTouch && _this.$slide.length < 3) {
-            _loop = false;
-        }
-
-        if (!_this.lgBusy) {
-            if (_this.index > 0) {
-                _this.index--;
-                _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]);
-                _this.slide(_this.index, fromTouch, false, 'prev');
-            } else {
-                if (_loop) {
-                    _this.index = _this.$items.length - 1;
-                    _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]);
-                    _this.slide(_this.index, fromTouch, false, 'prev');
-                } else if (_this.s.slideEndAnimatoin && !fromTouch) {
-                    _this.$outer.addClass('lg-left-end');
-                    setTimeout(function() {
-                        _this.$outer.removeClass('lg-left-end');
-                    }, 400);
-                }
-            }
-        }
-    };
-
-    Plugin.prototype.keyPress = function() {
-        var _this = this;
-        if (this.$items.length > 1) {
-            $(window).on('keyup.lg', function(e) {
-                if (_this.$items.length > 1) {
-                    if (e.keyCode === 37) {
-                        e.preventDefault();
-                        _this.goToPrevSlide();
-                    }
-
-                    if (e.keyCode === 39) {
-                        e.preventDefault();
-                        _this.goToNextSlide();
-                    }
-                }
-            });
-        }
-
-        $(window).on('keydown.lg', function(e) {
-            if (_this.s.escKey === true && e.keyCode === 27) {
-                e.preventDefault();
-                if (!_this.$outer.hasClass('lg-thumb-open')) {
-                    _this.destroy();
-                } else {
-                    _this.$outer.removeClass('lg-thumb-open');
-                }
-            }
-        });
-    };
-
-    Plugin.prototype.arrow = function() {
-        var _this = this;
-        this.$outer.find('.lg-prev').on('click.lg', function() {
-            _this.goToPrevSlide();
-        });
-
-        this.$outer.find('.lg-next').on('click.lg', function() {
-            _this.goToNextSlide();
-        });
-    };
-
-    Plugin.prototype.arrowDisable = function(index) {
-
-        // Disable arrows if s.hideControlOnEnd is true
-        if (!this.s.loop && this.s.hideControlOnEnd) {
-            if ((index + 1) < this.$slide.length) {
-                this.$outer.find('.lg-next').removeAttr('disabled').removeClass('disabled');
-            } else {
-                this.$outer.find('.lg-next').attr('disabled', 'disabled').addClass('disabled');
-            }
-
-            if (index > 0) {
-                this.$outer.find('.lg-prev').removeAttr('disabled').removeClass('disabled');
-            } else {
-                this.$outer.find('.lg-prev').attr('disabled', 'disabled').addClass('disabled');
-            }
-        }
-    };
-
-    Plugin.prototype.setTranslate = function($el, xValue, yValue) {
-        // jQuery supports Automatic CSS prefixing since jQuery 1.8.0
-        if (this.s.useLeft) {
-            $el.css('left', xValue);
-        } else {
-            $el.css({
-                transform: 'translate3d(' + (xValue) + 'px, ' + yValue + 'px, 0px)'
-            });
-        }
-    };
-
-    Plugin.prototype.touchMove = function(startCoords, endCoords) {
-
-        var distance = endCoords - startCoords;
-
-        if (Math.abs(distance) > 15) {
-            // reset opacity and transition duration
-            this.$outer.addClass('lg-dragging');
-
-            // move current slide
-            this.setTranslate(this.$slide.eq(this.index), distance, 0);
-
-            // move next and prev slide with current slide
-            this.setTranslate($('.lg-prev-slide'), -this.$slide.eq(this.index).width() + distance, 0);
-            this.setTranslate($('.lg-next-slide'), this.$slide.eq(this.index).width() + distance, 0);
-        }
-    };
-
-    Plugin.prototype.touchEnd = function(distance) {
-        var _this = this;
-
-        // keep slide animation for any mode while dragg/swipe
-        if (_this.s.mode !== 'lg-slide') {
-            _this.$outer.addClass('lg-slide');
-        }
-
-        this.$slide.not('.lg-current, .lg-prev-slide, .lg-next-slide').css('opacity', '0');
-
-        // set transition duration
-        setTimeout(function() {
-            _this.$outer.removeClass('lg-dragging');
-            if ((distance < 0) && (Math.abs(distance) > _this.s.swipeThreshold)) {
-                _this.goToNextSlide(true);
-            } else if ((distance > 0) && (Math.abs(distance) > _this.s.swipeThreshold)) {
-                _this.goToPrevSlide(true);
-            } else if (Math.abs(distance) < 5) {
-
-                // Trigger click if distance is less than 5 pix
-                _this.$el.trigger('onSlideClick.lg');
-            }
-
-            _this.$slide.removeAttr('style');
-        });
-
-        // remove slide class once drag/swipe is completed if mode is not slide
-        setTimeout(function() {
-            if (!_this.$outer.hasClass('lg-dragging') && _this.s.mode !== 'lg-slide') {
-                _this.$outer.removeClass('lg-slide');
-            }
-        }, _this.s.speed + 100);
-
-    };
-
-    Plugin.prototype.enableSwipe = function() {
-        var _this = this;
-        var startCoords = 0;
-        var endCoords = 0;
-        var isMoved = false;
-
-        if (_this.s.enableSwipe && _this.doCss()) {
-
-            _this.$slide.on('touchstart.lg', function(e) {
-                if (!_this.$outer.hasClass('lg-zoomed') && !_this.lgBusy) {
-                    e.preventDefault();
-                    _this.manageSwipeClass();
-                    startCoords = e.originalEvent.targetTouches[0].pageX;
-                }
-            });
-
-            _this.$slide.on('touchmove.lg', function(e) {
-                if (!_this.$outer.hasClass('lg-zoomed')) {
-                    e.preventDefault();
-                    endCoords = e.originalEvent.targetTouches[0].pageX;
-                    _this.touchMove(startCoords, endCoords);
-                    isMoved = true;
-                }
-            });
-
-            _this.$slide.on('touchend.lg', function() {
-                if (!_this.$outer.hasClass('lg-zoomed')) {
-                    if (isMoved) {
-                        isMoved = false;
-                        _this.touchEnd(endCoords - startCoords);
-                    } else {
-                        _this.$el.trigger('onSlideClick.lg');
-                    }
-                }
-            });
-        }
-
-    };
-
-    Plugin.prototype.enableDrag = function() {
-        var _this = this;
-        var startCoords = 0;
-        var endCoords = 0;
-        var isDraging = false;
-        var isMoved = false;
-        if (_this.s.enableDrag && _this.doCss()) {
-            _this.$slide.on('mousedown.lg', function(e) {
-                if (!_this.$outer.hasClass('lg-zoomed') && !_this.lgBusy && !$(e.target).text().trim()) {
-                    e.preventDefault();
-                    _this.manageSwipeClass();
-                    startCoords = e.pageX;
-                    isDraging = true;
-
-                    // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
-                    _this.$outer.scrollLeft += 1;
-                    _this.$outer.scrollLeft -= 1;
-
-                    // *
-
-                    _this.$outer.removeClass('lg-grab').addClass('lg-grabbing');
-
-                    _this.$el.trigger('onDragstart.lg');
-                }
-            });
-
-            $(window).on('mousemove.lg', function(e) {
-                if (isDraging) {
-                    isMoved = true;
-                    endCoords = e.pageX;
-                    _this.touchMove(startCoords, endCoords);
-                    _this.$el.trigger('onDragmove.lg');
-                }
-            });
-
-            $(window).on('mouseup.lg', function(e) {
-                if (isMoved) {
-                    isMoved = false;
-                    _this.touchEnd(endCoords - startCoords);
-                    _this.$el.trigger('onDragend.lg');
-                } else if ($(e.target).hasClass('lg-object') || $(e.target).hasClass('lg-video-play')) {
-                    _this.$el.trigger('onSlideClick.lg');
-                }
-
-                // Prevent execution on click
-                if (isDraging) {
-                    isDraging = false;
-                    _this.$outer.removeClass('lg-grabbing').addClass('lg-grab');
-                }
-            });
-
-        }
-    };
-
-    Plugin.prototype.manageSwipeClass = function() {
-        var _touchNext = this.index + 1;
-        var _touchPrev = this.index - 1;
-        if (this.s.loop && this.$slide.length > 2) {
-            if (this.index === 0) {
-                _touchPrev = this.$slide.length - 1;
-            } else if (this.index === this.$slide.length - 1) {
-                _touchNext = 0;
-            }
-        }
-
-        this.$slide.removeClass('lg-next-slide lg-prev-slide');
-        if (_touchPrev > -1) {
-            this.$slide.eq(_touchPrev).addClass('lg-prev-slide');
-        }
-
-        this.$slide.eq(_touchNext).addClass('lg-next-slide');
-    };
-
-    Plugin.prototype.mousewheel = function() {
-        var _this = this;
-        _this.$outer.on('mousewheel.lg', function(e) {
-
-            if (!e.deltaY) {
-                return;
-            }
-
-            if (e.deltaY > 0) {
-                _this.goToPrevSlide();
-            } else {
-                _this.goToNextSlide();
-            }
-
-            e.preventDefault();
-        });
-
-    };
-
-    Plugin.prototype.closeGallery = function() {
-
-        var _this = this;
-        var mousedown = false;
-        this.$outer.find('.lg-close').on('click.lg', function() {
-            _this.destroy();
-        });
-
-        if (_this.s.closable) {
-
-            // If you drag the slide and release outside gallery gets close on chrome
-            // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer
-            _this.$outer.on('mousedown.lg', function(e) {
-
-                if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap')) {
-                    mousedown = true;
-                } else {
-                    mousedown = false;
-                }
-
-            });
-            
-            _this.$outer.on('mousemove.lg', function() {
-                mousedown = false;
-            });
-
-            _this.$outer.on('mouseup.lg', function(e) {
-
-                if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap') && mousedown) {
-                    if (!_this.$outer.hasClass('lg-dragging')) {
-                        _this.destroy();
-                    }
-                }
-
-            });
-
-        }
-
-    };
-
-    Plugin.prototype.destroy = function(d) {
-
-        var _this = this;
-
-        if (!d) {
-            _this.$el.trigger('onBeforeClose.lg');
-            $(window).scrollTop(_this.prevScrollTop);
-        }
-
-
-        /**
-         * if d is false or undefined destroy will only close the gallery
-         * plugins instance remains with the element
-         *
-         * if d is true destroy will completely remove the plugin
-         */
-
-        if (d) {
-            if (!_this.s.dynamic) {
-                // only when not using dynamic mode is $items a jquery collection
-                this.$items.off('click.lg click.lgcustom');
-            }
-
-            $.removeData(_this.el, 'lightGallery');
-        }
-
-        // Unbind all events added by lightGallery
-        this.$el.off('.lg.tm');
-
-        // Distroy all lightGallery modules
-        $.each($.fn.lightGallery.modules, function(key) {
-            if (_this.modules[key]) {
-                _this.modules[key].destroy();
-            }
-        });
-
-        this.lGalleryOn = false;
-
-        clearTimeout(_this.hideBartimeout);
-        this.hideBartimeout = false;
-        $(window).off('.lg');
-        $('body').removeClass('lg-on lg-from-hash');
-
-        if (_this.$outer) {
-            _this.$outer.removeClass('lg-visible');
-        }
-
-        $('.lg-backdrop').removeClass('in');
-
-        setTimeout(function() {
-            if (_this.$outer) {
-                _this.$outer.remove();
-            }
-
-            $('.lg-backdrop').remove();
-
-            if (!d) {
-                _this.$el.trigger('onCloseAfter.lg');
-            }
-
-        }, _this.s.backdropDuration + 50);
-    };
-
-    $.fn.lightGallery = function(options) {
-        return this.each(function() {
-            if (!$.data(this, 'lightGallery')) {
-                $.data(this, 'lightGallery', new Plugin(this, options));
-            } else {
-                try {
-                    $(this).data('lightGallery').init();
-                } catch (err) {
-                    console.error('lightGallery has not initiated properly');
-                }
-            }
-        });
-    };
-
-    $.fn.lightGallery.modules = {};
-
-})();
-
-
-}));
-
-/*! lg-autoplay - v1.0.4 - 2017-03-28
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        autoplay: false,
-        pause: 5000,
-        progressBar: true,
-        fourceAutoplay: false,
-        autoplayControls: true,
-        appendAutoplayControlsTo: '.lg-toolbar'
-    };
-
-    /**
-     * Creates the autoplay plugin.
-     * @param {object} element - lightGallery element
-     */
-    var Autoplay = function(element) {
-
-        this.core = $(element).data('lightGallery');
-
-        this.$el = $(element);
-
-        // Execute only if items are above 1
-        if (this.core.$items.length < 2) {
-            return false;
-        }
-
-        this.core.s = $.extend({}, defaults, this.core.s);
-        this.interval = false;
-
-        // Identify if slide happened from autoplay
-        this.fromAuto = true;
-
-        // Identify if autoplay canceled from touch/drag
-        this.canceledOnTouch = false;
-
-        // save fourceautoplay value
-        this.fourceAutoplayTemp = this.core.s.fourceAutoplay;
-
-        // do not allow progress bar if browser does not support css3 transitions
-        if (!this.core.doCss()) {
-            this.core.s.progressBar = false;
-        }
-
-        this.init();
-
-        return this;
-    };
-
-    Autoplay.prototype.init = function() {
-        var _this = this;
-
-        // append autoplay controls
-        if (_this.core.s.autoplayControls) {
-            _this.controls();
-        }
-
-        // Create progress bar
-        if (_this.core.s.progressBar) {
-            _this.core.$outer.find('.lg').append('<div class="lg-progress-bar"><div class="lg-progress"></div></div>');
-        }
-
-        // set progress
-        _this.progress();
-
-        // Start autoplay
-        if (_this.core.s.autoplay) {
-            _this.$el.one('onSlideItemLoad.lg.tm', function() {
-                _this.startlAuto();
-            });
-        }
-
-        // cancel interval on touchstart and dragstart
-        _this.$el.on('onDragstart.lg.tm touchstart.lg.tm', function() {
-            if (_this.interval) {
-                _this.cancelAuto();
-                _this.canceledOnTouch = true;
-            }
-        });
-
-        // restore autoplay if autoplay canceled from touchstart / dragstart
-        _this.$el.on('onDragend.lg.tm touchend.lg.tm onSlideClick.lg.tm', function() {
-            if (!_this.interval && _this.canceledOnTouch) {
-                _this.startlAuto();
-                _this.canceledOnTouch = false;
-            }
-        });
-
-    };
-
-    Autoplay.prototype.progress = function() {
-
-        var _this = this;
-        var _$progressBar;
-        var _$progress;
-
-        _this.$el.on('onBeforeSlide.lg.tm', function() {
-
-            // start progress bar animation
-            if (_this.core.s.progressBar && _this.fromAuto) {
-                _$progressBar = _this.core.$outer.find('.lg-progress-bar');
-                _$progress = _this.core.$outer.find('.lg-progress');
-                if (_this.interval) {
-                    _$progress.removeAttr('style');
-                    _$progressBar.removeClass('lg-start');
-                    setTimeout(function() {
-                        _$progress.css('transition', 'width ' + (_this.core.s.speed + _this.core.s.pause) + 'ms ease 0s');
-                        _$progressBar.addClass('lg-start');
-                    }, 20);
-                }
-            }
-
-            // Remove setinterval if slide is triggered manually and fourceautoplay is false
-            if (!_this.fromAuto && !_this.core.s.fourceAutoplay) {
-                _this.cancelAuto();
-            }
-
-            _this.fromAuto = false;
-
-        });
-    };
-
-    // Manage autoplay via play/stop buttons
-    Autoplay.prototype.controls = function() {
-        var _this = this;
-        var _html = '<span class="lg-autoplay-button lg-icon"></span>';
-
-        // Append autoplay controls
-        $(this.core.s.appendAutoplayControlsTo).append(_html);
-
-        _this.core.$outer.find('.lg-autoplay-button').on('click.lg', function() {
-            if ($(_this.core.$outer).hasClass('lg-show-autoplay')) {
-                _this.cancelAuto();
-                _this.core.s.fourceAutoplay = false;
-            } else {
-                if (!_this.interval) {
-                    _this.startlAuto();
-                    _this.core.s.fourceAutoplay = _this.fourceAutoplayTemp;
-                }
-            }
-        });
-    };
-
-    // Autostart gallery
-    Autoplay.prototype.startlAuto = function() {
-        var _this = this;
-
-        _this.core.$outer.find('.lg-progress').css('transition', 'width ' + (_this.core.s.speed + _this.core.s.pause) + 'ms ease 0s');
-        _this.core.$outer.addClass('lg-show-autoplay');
-        _this.core.$outer.find('.lg-progress-bar').addClass('lg-start');
-
-        _this.interval = setInterval(function() {
-            if (_this.core.index + 1 < _this.core.$items.length) {
-                _this.core.index++;
-            } else {
-                _this.core.index = 0;
-            }
-
-            _this.fromAuto = true;
-            _this.core.slide(_this.core.index, false, false, 'next');
-        }, _this.core.s.speed + _this.core.s.pause);
-    };
-
-    // cancel Autostart
-    Autoplay.prototype.cancelAuto = function() {
-        clearInterval(this.interval);
-        this.interval = false;
-        this.core.$outer.find('.lg-progress').removeAttr('style');
-        this.core.$outer.removeClass('lg-show-autoplay');
-        this.core.$outer.find('.lg-progress-bar').removeClass('lg-start');
-    };
-
-    Autoplay.prototype.destroy = function() {
-
-        this.cancelAuto();
-        this.core.$outer.find('.lg-progress-bar').remove();
-    };
-
-    $.fn.lightGallery.modules.autoplay = Autoplay;
-
-})();
-
-
-}));
-
-/*! lg-fullscreen - v1.1.0 - 2019-02-19
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2019 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof module === 'object' && module.exports) {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(root["jQuery"]);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        fullScreen: true
-    };
-
-    function isFullScreen() {
-        return (
-            document.fullscreenElement ||
-            document.mozFullScreenElement ||
-            document.webkitFullscreenElement ||
-            document.msFullscreenElement
-        );
-    }
-
-    var Fullscreen = function(element) {
-
-        // get lightGallery core plugin data
-        this.core = $(element).data('lightGallery');
-
-        this.$el = $(element);
-
-        // extend module defalut settings with lightGallery core settings
-        this.core.s = $.extend({}, defaults, this.core.s);
-
-        this.init();
-
-        return this;
-    };
-
-    Fullscreen.prototype.init = function() {
-        var fullScreen = '';
-        if (this.core.s.fullScreen) {
-
-            // check for fullscreen browser support
-            if (!document.fullscreenEnabled && !document.webkitFullscreenEnabled &&
-                !document.mozFullScreenEnabled && !document.msFullscreenEnabled) {
-                return;
-            } else {
-                fullScreen = '<span class="lg-fullscreen lg-icon"></span>';
-                this.core.$outer.find('.lg-toolbar').append(fullScreen);
-                this.fullScreen();
-            }
-        }
-    };
-
-    Fullscreen.prototype.requestFullscreen = function() {
-        var el = document.documentElement;
-        if (el.requestFullscreen) {
-            el.requestFullscreen();
-        } else if (el.msRequestFullscreen) {
-            el.msRequestFullscreen();
-        } else if (el.mozRequestFullScreen) {
-            el.mozRequestFullScreen();
-        } else if (el.webkitRequestFullscreen) {
-            el.webkitRequestFullscreen();
-        }
-    };
-
-    Fullscreen.prototype.exitFullscreen = function() {
-        if (document.exitFullscreen) {
-            document.exitFullscreen();
-        } else if (document.msExitFullscreen) {
-            document.msExitFullscreen();
-        } else if (document.mozCancelFullScreen) {
-            document.mozCancelFullScreen();
-        } else if (document.webkitExitFullscreen) {
-            document.webkitExitFullscreen();
-        }
-    };
-
-    // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode
-    Fullscreen.prototype.fullScreen = function() {
-        var _this = this;
-
-        $(document).on('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg', function() {
-            _this.core.$outer.toggleClass('lg-fullscreen-on');
-        });
-
-        this.core.$outer.find('.lg-fullscreen').on('click.lg', function() {
-            if (isFullScreen()) {
-                _this.exitFullscreen();
-            } else {
-                _this.requestFullscreen();
-            }
-        });
-
-    };
-
-    Fullscreen.prototype.destroy = function() {
-
-        // exit from fullscreen if activated
-        if(isFullScreen()) {
-            this.exitFullscreen();
-        }
-
-        $(document).off('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg');
-    };
-
-    $.fn.lightGallery.modules.fullscreen = Fullscreen;
-
-})();
-
-}));
-
-/*! lg-pager - v1.0.2 - 2017-01-22
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        pager: false
-    };
-
-    var Pager = function(element) {
-
-        this.core = $(element).data('lightGallery');
-
-        this.$el = $(element);
-        this.core.s = $.extend({}, defaults, this.core.s);
-        if (this.core.s.pager && this.core.$items.length > 1) {
-            this.init();
-        }
-
-        return this;
-    };
-
-    Pager.prototype.init = function() {
-        var _this = this;
-        var pagerList = '';
-        var $pagerCont;
-        var $pagerOuter;
-        var timeout;
-
-        _this.core.$outer.find('.lg').append('<div class="lg-pager-outer"></div>');
-
-        if (_this.core.s.dynamic) {
-            for (var i = 0; i < _this.core.s.dynamicEl.length; i++) {
-                pagerList += '<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' + _this.core.s.dynamicEl[i].thumb + '" /></div></span>';
-            }
-        } else {
-            _this.core.$items.each(function() {
-
-                if (!_this.core.s.exThumbImage) {
-                    pagerList += '<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' + $(this).find('img').attr('src') + '" /></div></span>';
-                } else {
-                    pagerList += '<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' + $(this).attr(_this.core.s.exThumbImage) + '" /></div></span>';
-                }
-
-            });
-        }
-
-        $pagerOuter = _this.core.$outer.find('.lg-pager-outer');
-
-        $pagerOuter.html(pagerList);
-
-        $pagerCont = _this.core.$outer.find('.lg-pager-cont');
-        $pagerCont.on('click.lg touchend.lg', function() {
-            var _$this = $(this);
-            _this.core.index = _$this.index();
-            _this.core.slide(_this.core.index, false, true, false);
-        });
-
-        $pagerOuter.on('mouseover.lg', function() {
-            clearTimeout(timeout);
-            $pagerOuter.addClass('lg-pager-hover');
-        });
-
-        $pagerOuter.on('mouseout.lg', function() {
-            timeout = setTimeout(function() {
-                $pagerOuter.removeClass('lg-pager-hover');
-            });
-        });
-
-        _this.core.$el.on('onBeforeSlide.lg.tm', function(e, prevIndex, index) {
-            $pagerCont.removeClass('lg-pager-active');
-            $pagerCont.eq(index).addClass('lg-pager-active');
-        });
-
-    };
-
-    Pager.prototype.destroy = function() {
-
-    };
-
-    $.fn.lightGallery.modules.pager = Pager;
-
-})();
-
-
-}));
-
-/*! lg-thumbnail - v1.1.0 - 2017-08-08
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        thumbnail: true,
-
-        animateThumb: true,
-        currentPagerPosition: 'middle',
-
-        thumbWidth: 100,
-        thumbHeight: '80px',
-        thumbContHeight: 100,
-        thumbMargin: 5,
-
-        exThumbImage: false,
-        showThumbByDefault: true,
-        toogleThumb: true,
-        pullCaptionUp: true,
-
-        enableThumbDrag: true,
-        enableThumbSwipe: true,
-        swipeThreshold: 50,
-
-        loadYoutubeThumbnail: true,
-        youtubeThumbSize: 1,
-
-        loadVimeoThumbnail: true,
-        vimeoThumbSize: 'thumbnail_small',
-
-        loadDailymotionThumbnail: true
-    };
-
-    var Thumbnail = function(element) {
-
-        // get lightGallery core plugin data
-        this.core = $(element).data('lightGallery');
-
-        // extend module default settings with lightGallery core settings
-        this.core.s = $.extend({}, defaults, this.core.s);
-
-        this.$el = $(element);
-        this.$thumbOuter = null;
-        this.thumbOuterWidth = 0;
-        this.thumbTotalWidth = (this.core.$items.length * (this.core.s.thumbWidth + this.core.s.thumbMargin));
-        this.thumbIndex = this.core.index;
-
-        if (this.core.s.animateThumb) {
-            this.core.s.thumbHeight = '100%';
-        }
-
-        // Thumbnail animation value
-        this.left = 0;
-
-        this.init();
-
-        return this;
-    };
-
-    Thumbnail.prototype.init = function() {
-        var _this = this;
-        if (this.core.s.thumbnail && this.core.$items.length > 1) {
-            if (this.core.s.showThumbByDefault) {
-                setTimeout(function(){
-                    _this.core.$outer.addClass('lg-thumb-open');
-                }, 700);
-            }
-
-            if (this.core.s.pullCaptionUp) {
-                this.core.$outer.addClass('lg-pull-caption-up');
-            }
-
-            this.build();
-            if (this.core.s.animateThumb && this.core.doCss()) {
-                if (this.core.s.enableThumbDrag) {
-                    this.enableThumbDrag();
-                }
-
-                if (this.core.s.enableThumbSwipe) {
-                    this.enableThumbSwipe();
-                }
-
-                this.thumbClickable = false;
-            } else {
-                this.thumbClickable = true;
-            }
-
-            this.toogle();
-            this.thumbkeyPress();
-        }
-    };
-
-    Thumbnail.prototype.build = function() {
-        var _this = this;
-        var thumbList = '';
-        var vimeoErrorThumbSize = '';
-        var $thumb;
-        var html = '<div class="lg-thumb-outer">' +
-            '<div class="lg-thumb lg-group">' +
-            '</div>' +
-            '</div>';
-
-        switch (this.core.s.vimeoThumbSize) {
-            case 'thumbnail_large':
-                vimeoErrorThumbSize = '640';
-                break;
-            case 'thumbnail_medium':
-                vimeoErrorThumbSize = '200x150';
-                break;
-            case 'thumbnail_small':
-                vimeoErrorThumbSize = '100x75';
-        }
-
-        _this.core.$outer.addClass('lg-has-thumb');
-
-        _this.core.$outer.find('.lg').append(html);
-
-        _this.$thumbOuter = _this.core.$outer.find('.lg-thumb-outer');
-        _this.thumbOuterWidth = _this.$thumbOuter.width();
-
-        if (_this.core.s.animateThumb) {
-            _this.core.$outer.find('.lg-thumb').css({
-                width: _this.thumbTotalWidth + 'px',
-                position: 'relative'
-            });
-        }
-
-        if (this.core.s.animateThumb) {
-            _this.$thumbOuter.css('height', _this.core.s.thumbContHeight + 'px');
-        }
-
-        function getThumb(src, thumb, index) {
-            var isVideo = _this.core.isVideo(src, index) || {};
-            var thumbImg;
-            var vimeoId = '';
-
-            if (isVideo.youtube || isVideo.vimeo || isVideo.dailymotion) {
-                if (isVideo.youtube) {
-                    if (_this.core.s.loadYoutubeThumbnail) {
-                        thumbImg = '//img.youtube.com/vi/' + isVideo.youtube[1] + '/' + _this.core.s.youtubeThumbSize + '.jpg';
-                    } else {
-                        thumbImg = thumb;
-                    }
-                } else if (isVideo.vimeo) {
-                    if (_this.core.s.loadVimeoThumbnail) {
-                        thumbImg = '//i.vimeocdn.com/video/error_' + vimeoErrorThumbSize + '.jpg';
-                        vimeoId = isVideo.vimeo[1];
-                    } else {
-                        thumbImg = thumb;
-                    }
-                } else if (isVideo.dailymotion) {
-                    if (_this.core.s.loadDailymotionThumbnail) {
-                        thumbImg = '//www.dailymotion.com/thumbnail/video/' + isVideo.dailymotion[1];
-                    } else {
-                        thumbImg = thumb;
-                    }
-                }
-            } else {
-                thumbImg = thumb;
-            }
-
-            thumbList += '<div data-vimeo-id="' + vimeoId + '" class="lg-thumb-item" style="width:' + _this.core.s.thumbWidth + 'px; height: ' + _this.core.s.thumbHeight + '; margin-right: ' + _this.core.s.thumbMargin + 'px"><img src="' + thumbImg + '" /></div>';
-            vimeoId = '';
-        }
-
-        if (_this.core.s.dynamic) {
-            for (var i = 0; i < _this.core.s.dynamicEl.length; i++) {
-                getThumb(_this.core.s.dynamicEl[i].src, _this.core.s.dynamicEl[i].thumb, i);
-            }
-        } else {
-            _this.core.$items.each(function(i) {
-
-                if (!_this.core.s.exThumbImage) {
-                    getThumb($(this).attr('href') || $(this).attr('data-src'), $(this).find('img').attr('src'), i);
-                } else {
-                    getThumb($(this).attr('href') || $(this).attr('data-src'), $(this).attr(_this.core.s.exThumbImage), i);
-                }
-
-            });
-        }
-
-        _this.core.$outer.find('.lg-thumb').html(thumbList);
-
-        $thumb = _this.core.$outer.find('.lg-thumb-item');
-
-        // Load vimeo thumbnails
-        $thumb.each(function() {
-            var $this = $(this);
-            var vimeoVideoId = $this.attr('data-vimeo-id');
-
-            if (vimeoVideoId) {
-                $.getJSON('//www.vimeo.com/api/v2/video/' + vimeoVideoId + '.json?callback=?', {
-                    format: 'json'
-                }, function(data) {
-                    $this.find('img').attr('src', data[0][_this.core.s.vimeoThumbSize]);
-                });
-            }
-        });
-
-        // manage active class for thumbnail
-        $thumb.eq(_this.core.index).addClass('active');
-        _this.core.$el.on('onBeforeSlide.lg.tm', function() {
-            $thumb.removeClass('active');
-            $thumb.eq(_this.core.index).addClass('active');
-        });
-
-        $thumb.on('click.lg touchend.lg', function() {
-            var _$this = $(this);
-            setTimeout(function() {
-
-                // In IE9 and bellow touch does not support
-                // Go to slide if browser does not support css transitions
-                if ((_this.thumbClickable && !_this.core.lgBusy) || !_this.core.doCss()) {
-                    _this.core.index = _$this.index();
-                    _this.core.slide(_this.core.index, false, true, false);
-                }
-            }, 50);
-        });
-
-        _this.core.$el.on('onBeforeSlide.lg.tm', function() {
-            _this.animateThumb(_this.core.index);
-        });
-
-        $(window).on('resize.lg.thumb orientationchange.lg.thumb', function() {
-            setTimeout(function() {
-                _this.animateThumb(_this.core.index);
-                _this.thumbOuterWidth = _this.$thumbOuter.width();
-            }, 200);
-        });
-
-    };
-
-    Thumbnail.prototype.setTranslate = function(value) {
-        // jQuery supports Automatic CSS prefixing since jQuery 1.8.0
-        this.core.$outer.find('.lg-thumb').css({
-            transform: 'translate3d(-' + (value) + 'px, 0px, 0px)'
-        });
-    };
-
-    Thumbnail.prototype.animateThumb = function(index) {
-        var $thumb = this.core.$outer.find('.lg-thumb');
-        if (this.core.s.animateThumb) {
-            var position;
-            switch (this.core.s.currentPagerPosition) {
-                case 'left':
-                    position = 0;
-                    break;
-                case 'middle':
-                    position = (this.thumbOuterWidth / 2) - (this.core.s.thumbWidth / 2);
-                    break;
-                case 'right':
-                    position = this.thumbOuterWidth - this.core.s.thumbWidth;
-            }
-            this.left = ((this.core.s.thumbWidth + this.core.s.thumbMargin) * index - 1) - position;
-            if (this.left > (this.thumbTotalWidth - this.thumbOuterWidth)) {
-                this.left = this.thumbTotalWidth - this.thumbOuterWidth;
-            }
-
-            if (this.left < 0) {
-                this.left = 0;
-            }
-
-            if (this.core.lGalleryOn) {
-                if (!$thumb.hasClass('on')) {
-                    this.core.$outer.find('.lg-thumb').css('transition-duration', this.core.s.speed + 'ms');
-                }
-
-                if (!this.core.doCss()) {
-                    $thumb.animate({
-                        left: -this.left + 'px'
-                    }, this.core.s.speed);
-                }
-            } else {
-                if (!this.core.doCss()) {
-                    $thumb.css('left', -this.left + 'px');
-                }
-            }
-
-            this.setTranslate(this.left);
-
-        }
-    };
-
-    // Enable thumbnail dragging and swiping
-    Thumbnail.prototype.enableThumbDrag = function() {
-
-        var _this = this;
-        var startCoords = 0;
-        var endCoords = 0;
-        var isDraging = false;
-        var isMoved = false;
-        var tempLeft = 0;
-
-        _this.$thumbOuter.addClass('lg-grab');
-
-        _this.core.$outer.find('.lg-thumb').on('mousedown.lg.thumb', function(e) {
-            if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
-                // execute only on .lg-object
-                e.preventDefault();
-                startCoords = e.pageX;
-                isDraging = true;
-
-                // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
-                _this.core.$outer.scrollLeft += 1;
-                _this.core.$outer.scrollLeft -= 1;
-
-                // *
-                _this.thumbClickable = false;
-                _this.$thumbOuter.removeClass('lg-grab').addClass('lg-grabbing');
-            }
-        });
-
-        $(window).on('mousemove.lg.thumb', function(e) {
-            if (isDraging) {
-                tempLeft = _this.left;
-                isMoved = true;
-                endCoords = e.pageX;
-
-                _this.$thumbOuter.addClass('lg-dragging');
-
-                tempLeft = tempLeft - (endCoords - startCoords);
-
-                if (tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)) {
-                    tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;
-                }
-
-                if (tempLeft < 0) {
-                    tempLeft = 0;
-                }
-
-                // move current slide
-                _this.setTranslate(tempLeft);
-
-            }
-        });
-
-        $(window).on('mouseup.lg.thumb', function() {
-            if (isMoved) {
-                isMoved = false;
-                _this.$thumbOuter.removeClass('lg-dragging');
-
-                _this.left = tempLeft;
-
-                if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {
-                    _this.thumbClickable = true;
-                }
-
-            } else {
-                _this.thumbClickable = true;
-            }
-
-            if (isDraging) {
-                isDraging = false;
-                _this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab');
-            }
-        });
-
-    };
-
-    Thumbnail.prototype.enableThumbSwipe = function() {
-        var _this = this;
-        var startCoords = 0;
-        var endCoords = 0;
-        var isMoved = false;
-        var tempLeft = 0;
-
-        _this.core.$outer.find('.lg-thumb').on('touchstart.lg', function(e) {
-            if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
-                e.preventDefault();
-                startCoords = e.originalEvent.targetTouches[0].pageX;
-                _this.thumbClickable = false;
-            }
-        });
-
-        _this.core.$outer.find('.lg-thumb').on('touchmove.lg', function(e) {
-            if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
-                e.preventDefault();
-                endCoords = e.originalEvent.targetTouches[0].pageX;
-                isMoved = true;
-
-                _this.$thumbOuter.addClass('lg-dragging');
-
-                tempLeft = _this.left;
-
-                tempLeft = tempLeft - (endCoords - startCoords);
-
-                if (tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)) {
-                    tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;
-                }
-
-                if (tempLeft < 0) {
-                    tempLeft = 0;
-                }
-
-                // move current slide
-                _this.setTranslate(tempLeft);
-
-            }
-        });
-
-        _this.core.$outer.find('.lg-thumb').on('touchend.lg', function() {
-            if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
-
-                if (isMoved) {
-                    isMoved = false;
-                    _this.$thumbOuter.removeClass('lg-dragging');
-                    if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {
-                        _this.thumbClickable = true;
-                    }
-
-                    _this.left = tempLeft;
-                } else {
-                    _this.thumbClickable = true;
-                }
-            } else {
-                _this.thumbClickable = true;
-            }
-        });
-
-    };
-
-    Thumbnail.prototype.toogle = function() {
-        var _this = this;
-        if (_this.core.s.toogleThumb) {
-            _this.core.$outer.addClass('lg-can-toggle');
-            _this.$thumbOuter.append('<span class="lg-toogle-thumb lg-icon"></span>');
-            _this.core.$outer.find('.lg-toogle-thumb').on('click.lg', function() {
-                _this.core.$outer.toggleClass('lg-thumb-open');
-            });
-        }
-    };
-
-    Thumbnail.prototype.thumbkeyPress = function() {
-        var _this = this;
-        $(window).on('keydown.lg.thumb', function(e) {
-            if (e.keyCode === 38) {
-                e.preventDefault();
-                _this.core.$outer.addClass('lg-thumb-open');
-            } else if (e.keyCode === 40) {
-                e.preventDefault();
-                _this.core.$outer.removeClass('lg-thumb-open');
-            }
-        });
-    };
-
-    Thumbnail.prototype.destroy = function() {
-        if (this.core.s.thumbnail && this.core.$items.length > 1) {
-            $(window).off('resize.lg.thumb orientationchange.lg.thumb keydown.lg.thumb');
-            this.$thumbOuter.remove();
-            this.core.$outer.removeClass('lg-has-thumb');
-        }
-    };
-
-    $.fn.lightGallery.modules.Thumbnail = Thumbnail;
-
-})();
-
-}));
-
-/*! lg-video - v1.2.2 - 2018-05-01
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2018 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof module === 'object' && module.exports) {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(root["jQuery"]);
-  }
-}(this, function ($) {
-
-(function() {
-    
-        'use strict';
-    
-        var defaults = {
-            videoMaxWidth: '855px',
-
-            autoplayFirstVideo: true,
-
-            youtubePlayerParams: false,
-            vimeoPlayerParams: false,
-            dailymotionPlayerParams: false,
-            vkPlayerParams: false,
-
-            videojs: false,
-            videojsOptions: {}
-        };
-    
-        var Video = function(element) {
-    
-            this.core = $(element).data('lightGallery');
-    
-            this.$el = $(element);
-            this.core.s = $.extend({}, defaults, this.core.s);
-            this.videoLoaded = false;
-    
-            this.init();
-    
-            return this;
-        };
-    
-        Video.prototype.init = function() {
-            var _this = this;
-    
-            // Event triggered when video url found without poster
-            _this.core.$el.on('hasVideo.lg.tm', onHasVideo.bind(this));
-    
-            // Set max width for video
-            _this.core.$el.on('onAferAppendSlide.lg.tm', onAferAppendSlide.bind(this));
-    
-            if (_this.core.doCss() && (_this.core.$items.length > 1) && (_this.core.s.enableSwipe || _this.core.s.enableDrag)) {
-                _this.core.$el.on('onSlideClick.lg.tm', function() {
-                    var $el = _this.core.$slide.eq(_this.core.index);
-                    _this.loadVideoOnclick($el);
-                });
-            } else {
-    
-                // For IE 9 and bellow
-                _this.core.$slide.on('click.lg', function() {
-                    _this.loadVideoOnclick($(this));
-                });
-            }
-    
-            _this.core.$el.on('onBeforeSlide.lg.tm', onBeforeSlide.bind(this));
-    
-            _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex) {
-                _this.core.$slide.eq(prevIndex).removeClass('lg-video-playing');
-            });
-            
-            if (_this.core.s.autoplayFirstVideo) {
-                _this.core.$el.on('onAferAppendSlide.lg.tm', function (e, index) {
-                    if (!_this.core.lGalleryOn) {
-                        var $el = _this.core.$slide.eq(index);
-                        setTimeout(function () {
-                            _this.loadVideoOnclick($el);
-                        }, 100);
-                    }
-                });
-            }
-        };
-    
-        Video.prototype.loadVideo = function(src, addClass, noPoster, index, html) {
-            var video = '';
-            var autoplay = 1;
-            var a = '';
-            var isVideo = this.core.isVideo(src, index) || {};
-    
-            // Enable autoplay based on setting for first video if poster doesn't exist
-            if (noPoster) {
-                if (this.videoLoaded) {
-                    autoplay = 0;
-                } else {
-                    autoplay = this.core.s.autoplayFirstVideo ? 1 : 0;
-                }
-            }
-    
-            if (isVideo.youtube) {
-    
-                a = '?wmode=opaque&autoplay=' + autoplay + '&enablejsapi=1';
-                if (this.core.s.youtubePlayerParams) {
-                    a = a + '&' + $.param(this.core.s.youtubePlayerParams);
-                }
-    
-                video = '<iframe class="lg-video-object lg-youtube ' + addClass + '" width="560" height="315" src="//www.youtube.com/embed/' + isVideo.youtube[1] + a + '" frameborder="0" allowfullscreen></iframe>';
-    
-            } else if (isVideo.vimeo) {
-    
-                a = '?autoplay=' + autoplay + '&api=1';
-                if (this.core.s.vimeoPlayerParams) {
-                    a = a + '&' + $.param(this.core.s.vimeoPlayerParams);
-                }
-    
-                video = '<iframe class="lg-video-object lg-vimeo ' + addClass + '" width="560" height="315"  src="//player.vimeo.com/video/' + isVideo.vimeo[1] + a + '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
-    
-            } else if (isVideo.dailymotion) {
-    
-                a = '?wmode=opaque&autoplay=' + autoplay + '&api=postMessage';
-                if (this.core.s.dailymotionPlayerParams) {
-                    a = a + '&' + $.param(this.core.s.dailymotionPlayerParams);
-                }
-    
-                video = '<iframe class="lg-video-object lg-dailymotion ' + addClass + '" width="560" height="315" src="//www.dailymotion.com/embed/video/' + isVideo.dailymotion[1] + a + '" frameborder="0" allowfullscreen></iframe>';
-    
-            } else if (isVideo.html5) {
-                var fL = html.substring(0, 1);
-                if (fL === '.' || fL === '#') {
-                    html = $(html).html();
-                }
-    
-                video = html;
-    
-            } else if (isVideo.vk) {
-    
-                a = '&autoplay=' + autoplay;
-                if (this.core.s.vkPlayerParams) {
-                    a = a + '&' + $.param(this.core.s.vkPlayerParams);
-                }
-    
-                video = '<iframe class="lg-video-object lg-vk ' + addClass + '" width="560" height="315" src="//vk.com/video_ext.php?' + isVideo.vk[1] + a + '" frameborder="0" allowfullscreen></iframe>';
-    
-            }
-    
-            return video;
-        };
-
-        Video.prototype.loadVideoOnclick = function($el){
-
-            var _this = this;
-            // check slide has poster
-            if ($el.find('.lg-object').hasClass('lg-has-poster') && $el.find('.lg-object').is(':visible')) {
-
-                // check already video element present
-                if (!$el.hasClass('lg-has-video')) {
-
-                    $el.addClass('lg-video-playing lg-has-video');
-
-                    var _src;
-                    var _html;
-                    var _loadVideo = function(_src, _html) {
-
-                        $el.find('.lg-video').append(_this.loadVideo(_src, '', false, _this.core.index, _html));
-
-                        if (_html) {
-                            if (_this.core.s.videojs) {
-                                try {
-                                    videojs(_this.core.$slide.eq(_this.core.index).find('.lg-html5').get(0), _this.core.s.videojsOptions, function() {
-                                        this.play();
-                                    });
-                                } catch (e) {
-                                    console.error('Make sure you have included videojs');
-                                }
-                            } else {
-                                _this.core.$slide.eq(_this.core.index).find('.lg-html5').get(0).play();
-                            }
-                        }
-
-                    };
-
-                    if (_this.core.s.dynamic) {
-
-                        _src = _this.core.s.dynamicEl[_this.core.index].src;
-                        _html = _this.core.s.dynamicEl[_this.core.index].html;
-
-                        _loadVideo(_src, _html);
-
-                    } else {
-
-                        _src = _this.core.$items.eq(_this.core.index).attr('href') || _this.core.$items.eq(_this.core.index).attr('data-src');
-                        _html = _this.core.$items.eq(_this.core.index).attr('data-html');
-
-                        _loadVideo(_src, _html);
-
-                    }
-
-                    var $tempImg = $el.find('.lg-object');
-                    $el.find('.lg-video').append($tempImg);
-
-                    // @todo loading icon for html5 videos also
-                    // for showing the loading indicator while loading video
-                    if (!$el.find('.lg-video-object').hasClass('lg-html5')) {
-                        $el.removeClass('lg-complete');
-                        $el.find('.lg-video-object').on('load.lg error.lg', function() {
-                            $el.addClass('lg-complete');
-                        });
-                    }
-
-                } else {
-
-                    var youtubePlayer = $el.find('.lg-youtube').get(0);
-                    var vimeoPlayer = $el.find('.lg-vimeo').get(0);
-                    var dailymotionPlayer = $el.find('.lg-dailymotion').get(0);
-                    var html5Player = $el.find('.lg-html5').get(0);
-                    if (youtubePlayer) {
-                        youtubePlayer.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*');
-                    } else if (vimeoPlayer) {
-                        try {
-                            $f(vimeoPlayer).api('play');
-                        } catch (e) {
-                            console.error('Make sure you have included froogaloop2 js');
-                        }
-                    } else if (dailymotionPlayer) {
-                        dailymotionPlayer.contentWindow.postMessage('play', '*');
-
-                    } else if (html5Player) {
-                        if (_this.core.s.videojs) {
-                            try {
-                                videojs(html5Player).play();
-                            } catch (e) {
-                                console.error('Make sure you have included videojs');
-                            }
-                        } else {
-                            html5Player.play();
-                        }
-                    }
-
-                    $el.addClass('lg-video-playing');
-
-                }
-            }
-        };
-    
-        Video.prototype.destroy = function() {
-            this.videoLoaded = false;
-        };
-
-        function onHasVideo(event, index, src, html) {
-            /*jshint validthis:true */
-            var _this = this;
-            _this.core.$slide.eq(index).find('.lg-video').append(_this.loadVideo(src, 'lg-object', true, index, html));
-            if (html) {
-                if (_this.core.s.videojs) {
-                    try {
-                        videojs(_this.core.$slide.eq(index).find('.lg-html5').get(0), _this.core.s.videojsOptions, function() {
-                            if (!_this.videoLoaded && _this.core.s.autoplayFirstVideo) {
-                                this.play();
-                            }
-                        });
-                    } catch (e) {
-                        console.error('Make sure you have included videojs');
-                    }
-                } else {
-                    if(!_this.videoLoaded && _this.core.s.autoplayFirstVideo) {
-                        _this.core.$slide.eq(index).find('.lg-html5').get(0).play();
-                    }
-                }
-            }
-        }
-
-        function onAferAppendSlide(event, index) {
-            /*jshint validthis:true */
-            var $videoCont = this.core.$slide.eq(index).find('.lg-video-cont');
-            if (!$videoCont.hasClass('lg-has-iframe')) {
-                $videoCont.css('max-width', this.core.s.videoMaxWidth);
-                this.videoLoaded = true;
-            }
-        }
-
-        function onBeforeSlide(event, prevIndex, index) {
-            /*jshint validthis:true */
-            var _this = this;
-
-            var $videoSlide = _this.core.$slide.eq(prevIndex);
-            var youtubePlayer = $videoSlide.find('.lg-youtube').get(0);
-            var vimeoPlayer = $videoSlide.find('.lg-vimeo').get(0);
-            var dailymotionPlayer = $videoSlide.find('.lg-dailymotion').get(0);
-            var vkPlayer = $videoSlide.find('.lg-vk').get(0);
-            var html5Player = $videoSlide.find('.lg-html5').get(0);
-            if (youtubePlayer) {
-                youtubePlayer.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
-            } else if (vimeoPlayer) {
-                try {
-                    $f(vimeoPlayer).api('pause');
-                } catch (e) {
-                    console.error('Make sure you have included froogaloop2 js');
-                }
-            } else if (dailymotionPlayer) {
-                dailymotionPlayer.contentWindow.postMessage('pause', '*');
-
-            } else if (html5Player) {
-                if (_this.core.s.videojs) {
-                    try {
-                        videojs(html5Player).pause();
-                    } catch (e) {
-                        console.error('Make sure you have included videojs');
-                    }
-                } else {
-                    html5Player.pause();
-                }
-            } if (vkPlayer) {
-                $(vkPlayer).attr('src', $(vkPlayer).attr('src').replace('&autoplay', '&noplay'));
-            }
-
-            var _src;
-            if (_this.core.s.dynamic) {
-                _src = _this.core.s.dynamicEl[index].src;
-            } else {
-                _src = _this.core.$items.eq(index).attr('href') || _this.core.$items.eq(index).attr('data-src');
-
-            }
-
-            var _isVideo = _this.core.isVideo(_src, index) || {};
-            if (_isVideo.youtube || _isVideo.vimeo || _isVideo.dailymotion || _isVideo.vk) {
-                _this.core.$outer.addClass('lg-hide-download');
-            }
-
-        }
-    
-        $.fn.lightGallery.modules.video = Video;
-    
-    })();
-
-}));
-
-/*! lg-zoom - v1.1.0 - 2017-08-08
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var getUseLeft = function() {
-        var useLeft = false;
-        var isChrome = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
-        if (isChrome && parseInt(isChrome[2], 10) < 54) {
-            useLeft = true;
-        }
-
-        return useLeft;
-    };
-
-    var defaults = {
-        scale: 1,
-        zoom: true,
-        actualSize: true,
-        enableZoomAfter: 300,
-        useLeftForZoom: getUseLeft()
-    };
-
-    var Zoom = function(element) {
-
-        this.core = $(element).data('lightGallery');
-
-        this.core.s = $.extend({}, defaults, this.core.s);
-
-        if (this.core.s.zoom && this.core.doCss()) {
-            this.init();
-
-            // Store the zoomable timeout value just to clear it while closing
-            this.zoomabletimeout = false;
-
-            // Set the initial value center
-            this.pageX = $(window).width() / 2;
-            this.pageY = ($(window).height() / 2) + $(window).scrollTop();
-        }
-
-        return this;
-    };
-
-    Zoom.prototype.init = function() {
-
-        var _this = this;
-        var zoomIcons = '<span id="lg-zoom-in" class="lg-icon"></span><span id="lg-zoom-out" class="lg-icon"></span>';
-
-        if (_this.core.s.actualSize) {
-            zoomIcons += '<span id="lg-actual-size" class="lg-icon"></span>';
-        }
-
-        if (_this.core.s.useLeftForZoom) {
-            _this.core.$outer.addClass('lg-use-left-for-zoom');
-        } else {
-            _this.core.$outer.addClass('lg-use-transition-for-zoom');
-        }
-
-        this.core.$outer.find('.lg-toolbar').append(zoomIcons);
-
-        // Add zoomable class
-        _this.core.$el.on('onSlideItemLoad.lg.tm.zoom', function(event, index, delay) {
-
-            // delay will be 0 except first time
-            var _speed = _this.core.s.enableZoomAfter + delay;
-
-            // set _speed value 0 if gallery opened from direct url and if it is first slide
-            if ($('body').hasClass('lg-from-hash') && delay) {
-
-                // will execute only once
-                _speed = 0;
-            } else {
-
-                // Remove lg-from-hash to enable starting animation.
-                $('body').removeClass('lg-from-hash');
-            }
-
-            _this.zoomabletimeout = setTimeout(function() {
-                _this.core.$slide.eq(index).addClass('lg-zoomable');
-            }, _speed + 30);
-        });
-
-        var scale = 1;
-        /**
-         * @desc Image zoom
-         * Translate the wrap and scale the image to get better user experience
-         *
-         * @param {String} scaleVal - Zoom decrement/increment value
-         */
-        var zoom = function(scaleVal) {
-
-            var $image = _this.core.$outer.find('.lg-current .lg-image');
-            var _x;
-            var _y;
-
-            // Find offset manually to avoid issue after zoom
-            var offsetX = ($(window).width() - $image.prop('offsetWidth')) / 2;
-            var offsetY = (($(window).height() - $image.prop('offsetHeight')) / 2) + $(window).scrollTop();
-
-            _x = _this.pageX - offsetX;
-            _y = _this.pageY - offsetY;
-
-            var x = (scaleVal - 1) * (_x);
-            var y = (scaleVal - 1) * (_y);
-
-            $image.css('transform', 'scale3d(' + scaleVal + ', ' + scaleVal + ', 1)').attr('data-scale', scaleVal);
-
-            if (_this.core.s.useLeftForZoom) {
-                $image.parent().css({
-                    left: -x + 'px',
-                    top: -y + 'px'
-                }).attr('data-x', x).attr('data-y', y);
-            } else {
-                $image.parent().css('transform', 'translate3d(-' + x + 'px, -' + y + 'px, 0)').attr('data-x', x).attr('data-y', y);
-            }
-        };
-
-        var callScale = function() {
-            if (scale > 1) {
-                _this.core.$outer.addClass('lg-zoomed');
-            } else {
-                _this.resetZoom();
-            }
-
-            if (scale < 1) {
-                scale = 1;
-            }
-
-            zoom(scale);
-        };
-
-        var actualSize = function(event, $image, index, fromIcon) {
-            var w = $image.prop('offsetWidth');
-            var nw;
-            if (_this.core.s.dynamic) {
-                nw = _this.core.s.dynamicEl[index].width || $image[0].naturalWidth || w;
-            } else {
-                nw = _this.core.$items.eq(index).attr('data-width') || $image[0].naturalWidth || w;
-            }
-
-            var _scale;
-
-            if (_this.core.$outer.hasClass('lg-zoomed')) {
-                scale = 1;
-            } else {
-                if (nw > w) {
-                    _scale = nw / w;
-                    scale = _scale || 2;
-                }
-            }
-
-            if (fromIcon) {
-                _this.pageX = $(window).width() / 2;
-                _this.pageY = ($(window).height() / 2) + $(window).scrollTop();
-            } else {
-                _this.pageX = event.pageX || event.originalEvent.targetTouches[0].pageX;
-                _this.pageY = event.pageY || event.originalEvent.targetTouches[0].pageY;
-            }
-
-            callScale();
-            setTimeout(function() {
-                _this.core.$outer.removeClass('lg-grabbing').addClass('lg-grab');
-            }, 10);
-        };
-
-        var tapped = false;
-
-        // event triggered after appending slide content
-        _this.core.$el.on('onAferAppendSlide.lg.tm.zoom', function(event, index) {
-
-            // Get the current element
-            var $image = _this.core.$slide.eq(index).find('.lg-image');
-
-            $image.on('dblclick', function(event) {
-                actualSize(event, $image, index);
-            });
-
-            $image.on('touchstart', function(event) {
-                if (!tapped) {
-                    tapped = setTimeout(function() {
-                        tapped = null;
-                    }, 300);
-                } else {
-                    clearTimeout(tapped);
-                    tapped = null;
-                    actualSize(event, $image, index);
-                }
-
-                event.preventDefault();
-            });
-
-        });
-
-        // Update zoom on resize and orientationchange
-        $(window).on('resize.lg.zoom scroll.lg.zoom orientationchange.lg.zoom', function() {
-            _this.pageX = $(window).width() / 2;
-            _this.pageY = ($(window).height() / 2) + $(window).scrollTop();
-            zoom(scale);
-        });
-
-        $('#lg-zoom-out').on('click.lg', function() {
-            if (_this.core.$outer.find('.lg-current .lg-image').length) {
-                scale -= _this.core.s.scale;
-                callScale();
-            }
-        });
-
-        $('#lg-zoom-in').on('click.lg', function() {
-            if (_this.core.$outer.find('.lg-current .lg-image').length) {
-                scale += _this.core.s.scale;
-                callScale();
-            }
-        });
-
-        $('#lg-actual-size').on('click.lg', function(event) {
-            actualSize(event, _this.core.$slide.eq(_this.core.index).find('.lg-image'), _this.core.index, true);
-        });
-
-        // Reset zoom on slide change
-        _this.core.$el.on('onBeforeSlide.lg.tm', function() {
-            scale = 1;
-            _this.resetZoom();
-        });
-
-        // Drag option after zoom
-        _this.zoomDrag();
-
-        _this.zoomSwipe();
-
-    };
-
-    // Reset zoom effect
-    Zoom.prototype.resetZoom = function() {
-        this.core.$outer.removeClass('lg-zoomed');
-        this.core.$slide.find('.lg-img-wrap').removeAttr('style data-x data-y');
-        this.core.$slide.find('.lg-image').removeAttr('style data-scale');
-
-        // Reset pagx pagy values to center
-        this.pageX = $(window).width() / 2;
-        this.pageY = ($(window).height() / 2) + $(window).scrollTop();
-    };
-
-    Zoom.prototype.zoomSwipe = function() {
-        var _this = this;
-        var startCoords = {};
-        var endCoords = {};
-        var isMoved = false;
-
-        // Allow x direction drag
-        var allowX = false;
-
-        // Allow Y direction drag
-        var allowY = false;
-
-        _this.core.$slide.on('touchstart.lg', function(e) {
-
-            if (_this.core.$outer.hasClass('lg-zoomed')) {
-                var $image = _this.core.$slide.eq(_this.core.index).find('.lg-object');
-
-                allowY = $image.prop('offsetHeight') * $image.attr('data-scale') > _this.core.$outer.find('.lg').height();
-                allowX = $image.prop('offsetWidth') * $image.attr('data-scale') > _this.core.$outer.find('.lg').width();
-                if ((allowX || allowY)) {
-                    e.preventDefault();
-                    startCoords = {
-                        x: e.originalEvent.targetTouches[0].pageX,
-                        y: e.originalEvent.targetTouches[0].pageY
-                    };
-                }
-            }
-
-        });
-
-        _this.core.$slide.on('touchmove.lg', function(e) {
-
-            if (_this.core.$outer.hasClass('lg-zoomed')) {
-
-                var _$el = _this.core.$slide.eq(_this.core.index).find('.lg-img-wrap');
-                var distanceX;
-                var distanceY;
-
-                e.preventDefault();
-                isMoved = true;
-
-                endCoords = {
-                    x: e.originalEvent.targetTouches[0].pageX,
-                    y: e.originalEvent.targetTouches[0].pageY
-                };
-
-                // reset opacity and transition duration
-                _this.core.$outer.addClass('lg-zoom-dragging');
-
-                if (allowY) {
-                    distanceY = (-Math.abs(_$el.attr('data-y'))) + (endCoords.y - startCoords.y);
-                } else {
-                    distanceY = -Math.abs(_$el.attr('data-y'));
-                }
-
-                if (allowX) {
-                    distanceX = (-Math.abs(_$el.attr('data-x'))) + (endCoords.x - startCoords.x);
-                } else {
-                    distanceX = -Math.abs(_$el.attr('data-x'));
-                }
-
-                if ((Math.abs(endCoords.x - startCoords.x) > 15) || (Math.abs(endCoords.y - startCoords.y) > 15)) {
-
-                    if (_this.core.s.useLeftForZoom) {
-                        _$el.css({
-                            left: distanceX + 'px',
-                            top: distanceY + 'px'
-                        });
-                    } else {
-                        _$el.css('transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');
-                    }
-                }
-
-            }
-
-        });
-
-        _this.core.$slide.on('touchend.lg', function() {
-            if (_this.core.$outer.hasClass('lg-zoomed')) {
-                if (isMoved) {
-                    isMoved = false;
-                    _this.core.$outer.removeClass('lg-zoom-dragging');
-                    _this.touchendZoom(startCoords, endCoords, allowX, allowY);
-
-                }
-            }
-        });
-
-    };
-
-    Zoom.prototype.zoomDrag = function() {
-
-        var _this = this;
-        var startCoords = {};
-        var endCoords = {};
-        var isDraging = false;
-        var isMoved = false;
-
-        // Allow x direction drag
-        var allowX = false;
-
-        // Allow Y direction drag
-        var allowY = false;
-
-        _this.core.$slide.on('mousedown.lg.zoom', function(e) {
-
-            // execute only on .lg-object
-            var $image = _this.core.$slide.eq(_this.core.index).find('.lg-object');
-
-            allowY = $image.prop('offsetHeight') * $image.attr('data-scale') > _this.core.$outer.find('.lg').height();
-            allowX = $image.prop('offsetWidth') * $image.attr('data-scale') > _this.core.$outer.find('.lg').width();
-
-            if (_this.core.$outer.hasClass('lg-zoomed')) {
-                if ($(e.target).hasClass('lg-object') && (allowX || allowY)) {
-                    e.preventDefault();
-                    startCoords = {
-                        x: e.pageX,
-                        y: e.pageY
-                    };
-
-                    isDraging = true;
-
-                    // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
-                    _this.core.$outer.scrollLeft += 1;
-                    _this.core.$outer.scrollLeft -= 1;
-
-                    _this.core.$outer.removeClass('lg-grab').addClass('lg-grabbing');
-                }
-            }
-        });
-
-        $(window).on('mousemove.lg.zoom', function(e) {
-            if (isDraging) {
-                var _$el = _this.core.$slide.eq(_this.core.index).find('.lg-img-wrap');
-                var distanceX;
-                var distanceY;
-
-                isMoved = true;
-                endCoords = {
-                    x: e.pageX,
-                    y: e.pageY
-                };
-
-                // reset opacity and transition duration
-                _this.core.$outer.addClass('lg-zoom-dragging');
-
-                if (allowY) {
-                    distanceY = (-Math.abs(_$el.attr('data-y'))) + (endCoords.y - startCoords.y);
-                } else {
-                    distanceY = -Math.abs(_$el.attr('data-y'));
-                }
-
-                if (allowX) {
-                    distanceX = (-Math.abs(_$el.attr('data-x'))) + (endCoords.x - startCoords.x);
-                } else {
-                    distanceX = -Math.abs(_$el.attr('data-x'));
-                }
-
-                if (_this.core.s.useLeftForZoom) {
-                    _$el.css({
-                        left: distanceX + 'px',
-                        top: distanceY + 'px'
-                    });
-                } else {
-                    _$el.css('transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');
-                }
-            }
-        });
-
-        $(window).on('mouseup.lg.zoom', function(e) {
-
-            if (isDraging) {
-                isDraging = false;
-                _this.core.$outer.removeClass('lg-zoom-dragging');
-
-                // Fix for chrome mouse move on click
-                if (isMoved && ((startCoords.x !== endCoords.x) || (startCoords.y !== endCoords.y))) {
-                    endCoords = {
-                        x: e.pageX,
-                        y: e.pageY
-                    };
-                    _this.touchendZoom(startCoords, endCoords, allowX, allowY);
-
-                }
-
-                isMoved = false;
-            }
-
-            _this.core.$outer.removeClass('lg-grabbing').addClass('lg-grab');
-
-        });
-    };
-
-    Zoom.prototype.touchendZoom = function(startCoords, endCoords, allowX, allowY) {
-
-        var _this = this;
-        var _$el = _this.core.$slide.eq(_this.core.index).find('.lg-img-wrap');
-        var $image = _this.core.$slide.eq(_this.core.index).find('.lg-object');
-        var distanceX = (-Math.abs(_$el.attr('data-x'))) + (endCoords.x - startCoords.x);
-        var distanceY = (-Math.abs(_$el.attr('data-y'))) + (endCoords.y - startCoords.y);
-        var minY = (_this.core.$outer.find('.lg').height() - $image.prop('offsetHeight')) / 2;
-        var maxY = Math.abs(($image.prop('offsetHeight') * Math.abs($image.attr('data-scale'))) - _this.core.$outer.find('.lg').height() + minY);
-        var minX = (_this.core.$outer.find('.lg').width() - $image.prop('offsetWidth')) / 2;
-        var maxX = Math.abs(($image.prop('offsetWidth') * Math.abs($image.attr('data-scale'))) - _this.core.$outer.find('.lg').width() + minX);
-
-        if ((Math.abs(endCoords.x - startCoords.x) > 15) || (Math.abs(endCoords.y - startCoords.y) > 15)) {
-            if (allowY) {
-                if (distanceY <= -maxY) {
-                    distanceY = -maxY;
-                } else if (distanceY >= -minY) {
-                    distanceY = -minY;
-                }
-            }
-
-            if (allowX) {
-                if (distanceX <= -maxX) {
-                    distanceX = -maxX;
-                } else if (distanceX >= -minX) {
-                    distanceX = -minX;
-                }
-            }
-
-            if (allowY) {
-                _$el.attr('data-y', Math.abs(distanceY));
-            } else {
-                distanceY = -Math.abs(_$el.attr('data-y'));
-            }
-
-            if (allowX) {
-                _$el.attr('data-x', Math.abs(distanceX));
-            } else {
-                distanceX = -Math.abs(_$el.attr('data-x'));
-            }
-
-            if (_this.core.s.useLeftForZoom) {
-                _$el.css({
-                    left: distanceX + 'px',
-                    top: distanceY + 'px'
-                });
-            } else {
-                _$el.css('transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');
-            }
-
-        }
-    };
-
-    Zoom.prototype.destroy = function() {
-
-        var _this = this;
-
-        // Unbind all events added by lightGallery zoom plugin
-        _this.core.$el.off('.lg.zoom');
-        $(window).off('.lg.zoom');
-        _this.core.$slide.off('.lg.zoom');
-        _this.core.$el.off('.lg.tm.zoom');
-        _this.resetZoom();
-        clearTimeout(_this.zoomabletimeout);
-        _this.zoomabletimeout = false;
-    };
-
-    $.fn.lightGallery.modules.zoom = Zoom;
-
-})();
-
-
-}));
-
-/*! lg-hash - v1.0.4 - 2017-12-20
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        hash: true
-    };
-
-    var Hash = function(element) {
-
-        this.core = $(element).data('lightGallery');
-
-        this.core.s = $.extend({}, defaults, this.core.s);
-
-        if (this.core.s.hash) {
-            this.oldHash = window.location.hash;
-            this.init();
-        }
-
-        return this;
-    };
-
-    Hash.prototype.init = function() {
-        var _this = this;
-        var _hash;
-
-        // Change hash value on after each slide transition
-        _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex, index) {
-            if (history.replaceState) {
-                history.replaceState(null, null, window.location.pathname + window.location.search + '#lg=' + _this.core.s.galleryId + '&slide=' + index);
-            } else {
-                window.location.hash = 'lg=' + _this.core.s.galleryId + '&slide=' + index;
-            }
-        });
-
-        // Listen hash change and change the slide according to slide value
-        $(window).on('hashchange.lg.hash', function() {
-            _hash = window.location.hash;
-            var _idx = parseInt(_hash.split('&slide=')[1], 10);
-
-            // it galleryId doesn't exist in the url close the gallery
-            if ((_hash.indexOf('lg=' + _this.core.s.galleryId) > -1)) {
-                _this.core.slide(_idx, false, false);
-            } else if (_this.core.lGalleryOn) {
-                _this.core.destroy();
-            }
-
-        });
-    };
-
-    Hash.prototype.destroy = function() {
-
-        if (!this.core.s.hash) {
-            return;
-        }
-
-        // Reset to old hash value
-        if (this.oldHash && this.oldHash.indexOf('lg=' + this.core.s.galleryId) < 0) {
-            if (history.replaceState) {
-                history.replaceState(null, null, this.oldHash);
-            } else {
-                window.location.hash = this.oldHash;
-            }
-        } else {
-            if (history.replaceState) {
-                history.replaceState(null, document.title, window.location.pathname + window.location.search);
-            } else {
-                window.location.hash = '';
-            }
-        }
-
-        this.core.$el.off('.lg.hash');
-
-    };
-
-    $.fn.lightGallery.modules.hash = Hash;
-
-})();
-
-
-}));
-
-/*! lg-share - v1.1.0 - 2017-10-03
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        share: true,
-        facebook: true,
-        facebookDropdownText: 'Facebook',
-        twitter: true,
-        twitterDropdownText: 'Twitter',
-        googlePlus: true,
-        googlePlusDropdownText: 'GooglePlus',
-        pinterest: true,
-        pinterestDropdownText: 'Pinterest'
-    };
-
-    var Share = function(element) {
-
-        this.core = $(element).data('lightGallery');
-
-        this.core.s = $.extend({}, defaults, this.core.s);
-        if (this.core.s.share) {
-            this.init();
-        }
-
-        return this;
-    };
-
-    Share.prototype.init = function() {
-        var _this = this;
-        var shareHtml = '<span id="lg-share" class="lg-icon">' +
-            '<ul class="lg-dropdown" style="position: absolute;">';
-        shareHtml += _this.core.s.facebook ? '<li><a id="lg-share-facebook" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">' + this.core.s.facebookDropdownText + '</span></a></li>' : '';
-        shareHtml += _this.core.s.twitter ? '<li><a id="lg-share-twitter" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">' + this.core.s.twitterDropdownText + '</span></a></li>' : '';
-        shareHtml += _this.core.s.googlePlus ? '<li><a id="lg-share-googleplus" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">' + this.core.s.googlePlusDropdownText + '</span></a></li>' : '';
-        shareHtml += _this.core.s.pinterest ? '<li><a id="lg-share-pinterest" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">' + this.core.s.pinterestDropdownText + '</span></a></li>' : '';
-        shareHtml += '</ul></span>';
-
-        this.core.$outer.find('.lg-toolbar').append(shareHtml);
-        this.core.$outer.find('.lg').append('<div id="lg-dropdown-overlay"></div>');
-        $('#lg-share').on('click.lg', function(){
-            _this.core.$outer.toggleClass('lg-dropdown-active');
-        });
-
-        $('#lg-dropdown-overlay').on('click.lg', function(){
-            _this.core.$outer.removeClass('lg-dropdown-active');
-        });
-
-        _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex, index) {
-
-            setTimeout(function() {
-
-                $('#lg-share-facebook').attr('href', 'https://www.facebook.com/sharer/sharer.php?u=' + (encodeURIComponent(_this.getSahreProps(index, 'facebookShareUrl') || window.location.href)));
-
-                $('#lg-share-twitter').attr('href', 'https://twitter.com/intent/tweet?text=' + _this.getSahreProps(index, 'tweetText') + '&url=' + (encodeURIComponent(_this.getSahreProps(index, 'twitterShareUrl') || window.location.href)));
-
-                $('#lg-share-googleplus').attr('href', 'https://plus.google.com/share?url=' + (encodeURIComponent(_this.getSahreProps(index, 'googleplusShareUrl') || window.location.href)));
-
-                $('#lg-share-pinterest').attr('href', 'http://www.pinterest.com/pin/create/button/?url=' + (encodeURIComponent(_this.getSahreProps(index, 'pinterestShareUrl') || window.location.href)) + '&media=' + encodeURIComponent(_this.getSahreProps(index, 'src')) + '&description=' + _this.getSahreProps(index, 'pinterestText'));
-
-            }, 100);
-        });
-    };
-
-    Share.prototype.getSahreProps = function(index, prop){
-        var shareProp = '';
-        if(this.core.s.dynamic) {
-            shareProp = this.core.s.dynamicEl[index][prop];
-        } else {
-            var _href = this.core.$items.eq(index).attr('href');
-            var _prop = this.core.$items.eq(index).data(prop);
-            shareProp = prop === 'src' ? _href || _prop : _prop;
-        }
-        return shareProp;
-    };
-
-    Share.prototype.destroy = function() {
-
-    };
-
-    $.fn.lightGallery.modules.share = Share;
-
-})();
-
-
-
-}));
diff --git a/resources/lightgallery/js/lightgallery-all.min.js b/resources/lightgallery/js/lightgallery-all.min.js
deleted file mode 100644
index 3600cf4..0000000
--- a/resources/lightgallery/js/lightgallery-all.min.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! lightgallery - v1.6.12 - 2019-02-19
-* http://sachinchoolur.github.io/lightGallery/
-* Copyright (c) 2019 Sachin N; Licensed GPLv3 */
-!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){!function(){"use strict";function b(b,d){if(this.el=b,this.$el=a(b),this.s=a.extend({},c,d),this.s.dynamic&&"undefined"!==this.s.dynamicEl&&this.s.dynamicEl.constructor===Array&&!this.s.dynamicEl.length)throw"When using dynamic mode, you must also define dynamicEl as an Array.";return this.modules={},this.lGalleryOn=!1,this.lgBusy=!1,this.hideBartimeout=!1,this.isTouch="ontouchstart"in document.documentElement,this.s.slideEndAnimatoin&&(this.s.hideControlOnEnd=!1),this.s.dynamic?this.$items=this.s.dynamicEl:"this"===this.s.selector?this.$items=this.$el:""!==this.s.selector?this.s.selectWithin?this.$items=a(this.s.selectWithin).find(this.s.selector):this.$items=this.$el.find(a(this.s.selector)):this.$items=this.$el.children(),this.$slide="",this.$outer="",this.init(),this}var c={mode:"lg-slide",cssEasing:"ease",easing:"linear",speed:600,height:"100%",width:"100%",addClass:"",startClass:"lg-start-zoom",backdropDuration:150,hideBarsDelay:6e3,useLeft:!1,closable:!0,loop:!0,escKey:!0,keyPress:!0,controls:!0,slideEndAnimatoin:!0,hideControlOnEnd:!1,mousewheel:!0,getCaptionFromTitleOrAlt:!0,appendSubHtmlTo:".lg-sub-html",subHtmlSelectorRelative:!1,preload:1,showAfterLoad:!0,selector:"",selectWithin:"",nextHtml:"",prevHtml:"",index:!1,iframeMaxWidth:"100%",download:!0,counter:!0,appendCounterTo:".lg-toolbar",swipeThreshold:50,enableSwipe:!0,enableDrag:!0,dynamic:!1,dynamicEl:[],galleryId:1};b.prototype.init=function(){var b=this;b.s.preload>b.$items.length&&(b.s.preload=b.$items.length);var c=window.location.hash;c.indexOf("lg="+this.s.galleryId)>0&&(b.index=parseInt(c.split("&slide=")[1],10),a("body").addClass("lg-from-hash"),a("body").hasClass("lg-on")||(setTimeout(function(){b.build(b.index)}),a("body").addClass("lg-on"))),b.s.dynamic?(b.$el.trigger("onBeforeOpen.lg"),b.index=b.s.index||0,a("body").hasClass("lg-on")||setTimeout(function(){b.build(b.index),a("body").addClass("lg-on")})):b.$items.on("click.lgcustom",function(c){try{c.preventDefault(),c.preventDefault()}catch(a){c.returnValue=!1}b.$el.trigger("onBeforeOpen.lg"),b.index=b.s.index||b.$items.index(this),a("body").hasClass("lg-on")||(b.build(b.index),a("body").addClass("lg-on"))})},b.prototype.build=function(b){var c=this;c.structure(),a.each(a.fn.lightGallery.modules,function(b){c.modules[b]=new a.fn.lightGallery.modules[b](c.el)}),c.slide(b,!1,!1,!1),c.s.keyPress&&c.keyPress(),c.$items.length>1?(c.arrow(),setTimeout(function(){c.enableDrag(),c.enableSwipe()},50),c.s.mousewheel&&c.mousewheel()):c.$slide.on("click.lg",function(){c.$el.trigger("onSlideClick.lg")}),c.counter(),c.closeGallery(),c.$el.trigger("onAfterOpen.lg"),c.$outer.on("mousemove.lg click.lg touchstart.lg",function(){c.$outer.removeClass("lg-hide-items"),clearTimeout(c.hideBartimeout),c.hideBartimeout=setTimeout(function(){c.$outer.addClass("lg-hide-items")},c.s.hideBarsDelay)}),c.$outer.trigger("mousemove.lg")},b.prototype.structure=function(){var b,c="",d="",e=0,f="",g=this;for(a("body").append('<div class="lg-backdrop"></div>'),a(".lg-backdrop").css("transition-duration",this.s.backdropDuration+"ms"),e=0;e<this.$items.length;e++)c+='<div class="lg-item"></div>';if(this.s.controls&&this.$items.length>1&&(d='<div class="lg-actions"><button class="lg-prev lg-icon">'+this.s.prevHtml+'</button><button class="lg-next lg-icon">'+this.s.nextHtml+"</button></div>"),".lg-sub-html"===this.s.appendSubHtmlTo&&(f='<div class="lg-sub-html"></div>'),b='<div class="lg-outer '+this.s.addClass+" "+this.s.startClass+'"><div class="lg" style="width:'+this.s.width+"; height:"+this.s.height+'"><div class="lg-inner">'+c+'</div><div class="lg-toolbar lg-group"><span class="lg-close lg-icon"></span></div>'+d+f+"</div></div>",a("body").append(b),this.$outer=a(".lg-outer"),this.$slide=this.$outer.find(".lg-item"),this.s.useLeft?(this.$outer.addClass("lg-use-left"),this.s.mode="lg-slide"):this.$outer.addClass("lg-use-css3"),g.setTop(),a(window).on("resize.lg orientationchange.lg",function(){setTimeout(function(){g.setTop()},100)}),this.$slide.eq(this.index).addClass("lg-current"),this.doCss()?this.$outer.addClass("lg-css3"):(this.$outer.addClass("lg-css"),this.s.speed=0),this.$outer.addClass(this.s.mode),this.s.enableDrag&&this.$items.length>1&&this.$outer.addClass("lg-grab"),this.s.showAfterLoad&&this.$outer.addClass("lg-show-after-load"),this.doCss()){var h=this.$outer.find(".lg-inner");h.css("transition-timing-function",this.s.cssEasing),h.css("transition-duration",this.s.speed+"ms")}setTimeout(function(){a(".lg-backdrop").addClass("in")}),setTimeout(function(){g.$outer.addClass("lg-visible")},this.s.backdropDuration),this.s.download&&this.$outer.find(".lg-toolbar").append('<a id="lg-download" target="_blank" download class="lg-download lg-icon"></a>'),this.prevScrollTop=a(window).scrollTop()},b.prototype.setTop=function(){if("100%"!==this.s.height){var b=a(window).height(),c=(b-parseInt(this.s.height,10))/2,d=this.$outer.find(".lg");b>=parseInt(this.s.height,10)?d.css("top",c+"px"):d.css("top","0px")}},b.prototype.doCss=function(){return!!function(){var a=["transition","MozTransition","WebkitTransition","OTransition","msTransition","KhtmlTransition"],b=document.documentElement,c=0;for(c=0;c<a.length;c++)if(a[c]in b.style)return!0}()},b.prototype.isVideo=function(a,b){var c;if(c=this.s.dynamic?this.s.dynamicEl[b].html:this.$items.eq(b).attr("data-html"),!a)return c?{html5:!0}:(console.error("lightGallery :- data-src is not pvovided on slide item "+(b+1)+". Please make sure the selector property is properly configured. More info - http://sachinchoolur.github.io/lightGallery/demos/html-markup.html"),!1);var d=a.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i),e=a.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i),f=a.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i),g=a.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i);return d?{youtube:d}:e?{vimeo:e}:f?{dailymotion:f}:g?{vk:g}:void 0},b.prototype.counter=function(){this.s.counter&&a(this.s.appendCounterTo).append('<div id="lg-counter"><span id="lg-counter-current">'+(parseInt(this.index,10)+1)+'</span> / <span id="lg-counter-all">'+this.$items.length+"</span></div>")},b.prototype.addHtml=function(b){var c,d,e=null;if(this.s.dynamic?this.s.dynamicEl[b].subHtmlUrl?c=this.s.dynamicEl[b].subHtmlUrl:e=this.s.dynamicEl[b].subHtml:(d=this.$items.eq(b),d.attr("data-sub-html-url")?c=d.attr("data-sub-html-url"):(e=d.attr("data-sub-html"),this.s.getCaptionFromTitleOrAlt&&!e&&(e=d.attr("title")||d.find("img").first().attr("alt")))),!c)if(void 0!==e&&null!==e){var f=e.substring(0,1);"."!==f&&"#"!==f||(e=this.s.subHtmlSelectorRelative&&!this.s.dynamic?d.find(e).html():a(e).html())}else e="";".lg-sub-html"===this.s.appendSubHtmlTo?c?this.$outer.find(this.s.appendSubHtmlTo).load(c):this.$outer.find(this.s.appendSubHtmlTo).html(e):c?this.$slide.eq(b).load(c):this.$slide.eq(b).append(e),void 0!==e&&null!==e&&(""===e?this.$outer.find(this.s.appendSubHtmlTo).addClass("lg-empty-html"):this.$outer.find(this.s.appendSubHtmlTo).removeClass("lg-empty-html")),this.$el.trigger("onAfterAppendSubHtml.lg",[b])},b.prototype.preload=function(a){var b=1,c=1;for(b=1;b<=this.s.preload&&!(b>=this.$items.length-a);b++)this.loadContent(a+b,!1,0);for(c=1;c<=this.s.preload&&!(a-c<0);c++)this.loadContent(a-c,!1,0)},b.prototype.loadContent=function(b,c,d){var e,f,g,h,i,j,k=this,l=!1,m=function(b){for(var c=[],d=[],e=0;e<b.length;e++){var g=b[e].split(" ");""===g[0]&&g.splice(0,1),d.push(g[0]),c.push(g[1])}for(var h=a(window).width(),i=0;i<c.length;i++)if(parseInt(c[i],10)>h){f=d[i];break}};if(k.s.dynamic){if(k.s.dynamicEl[b].poster&&(l=!0,g=k.s.dynamicEl[b].poster),j=k.s.dynamicEl[b].html,f=k.s.dynamicEl[b].src,k.s.dynamicEl[b].responsive){m(k.s.dynamicEl[b].responsive.split(","))}h=k.s.dynamicEl[b].srcset,i=k.s.dynamicEl[b].sizes}else{if(k.$items.eq(b).attr("data-poster")&&(l=!0,g=k.$items.eq(b).attr("data-poster")),j=k.$items.eq(b).attr("data-html"),f=k.$items.eq(b).attr("href")||k.$items.eq(b).attr("data-src"),k.$items.eq(b).attr("data-responsive")){m(k.$items.eq(b).attr("data-responsive").split(","))}h=k.$items.eq(b).attr("data-srcset"),i=k.$items.eq(b).attr("data-sizes")}var n=!1;k.s.dynamic?k.s.dynamicEl[b].iframe&&(n=!0):"true"===k.$items.eq(b).attr("data-iframe")&&(n=!0);var o=k.isVideo(f,b);if(!k.$slide.eq(b).hasClass("lg-loaded")){if(n)k.$slide.eq(b).prepend('<div class="lg-video-cont lg-has-iframe" style="max-width:'+k.s.iframeMaxWidth+'"><div class="lg-video"><iframe class="lg-object" frameborder="0" src="'+f+'"  allowfullscreen="true"></iframe></div></div>');else if(l){var p="";p=o&&o.youtube?"lg-has-youtube":o&&o.vimeo?"lg-has-vimeo":"lg-has-html5",k.$slide.eq(b).prepend('<div class="lg-video-cont '+p+' "><div class="lg-video"><span class="lg-video-play"></span><img class="lg-object lg-has-poster" src="'+g+'" /></div></div>')}else o?(k.$slide.eq(b).prepend('<div class="lg-video-cont "><div class="lg-video"></div></div>'),k.$el.trigger("hasVideo.lg",[b,f,j])):k.$slide.eq(b).prepend('<div class="lg-img-wrap"><img class="lg-object lg-image" src="'+f+'" /></div>');if(k.$el.trigger("onAferAppendSlide.lg",[b]),e=k.$slide.eq(b).find(".lg-object"),i&&e.attr("sizes",i),h){e.attr("srcset",h);try{picturefill({elements:[e[0]]})}catch(a){console.warn("lightGallery :- If you want srcset to be supported for older browser please include picturefil version 2 javascript library in your document.")}}".lg-sub-html"!==this.s.appendSubHtmlTo&&k.addHtml(b),k.$slide.eq(b).addClass("lg-loaded")}k.$slide.eq(b).find(".lg-object").on("load.lg error.lg",function(){var c=0;d&&!a("body").hasClass("lg-from-hash")&&(c=d),setTimeout(function(){k.$slide.eq(b).addClass("lg-complete"),k.$el.trigger("onSlideItemLoad.lg",[b,d||0])},c)}),o&&o.html5&&!l&&k.$slide.eq(b).addClass("lg-complete"),!0===c&&(k.$slide.eq(b).hasClass("lg-complete")?k.preload(b):k.$slide.eq(b).find(".lg-object").on("load.lg error.lg",function(){k.preload(b)}))},b.prototype.slide=function(b,c,d,e){var f=this.$outer.find(".lg-current").index(),g=this;if(!g.lGalleryOn||f!==b){var h=this.$slide.length,i=g.lGalleryOn?this.s.speed:0;if(!g.lgBusy){if(this.s.download){var j;j=g.s.dynamic?!1!==g.s.dynamicEl[b].downloadUrl&&(g.s.dynamicEl[b].downloadUrl||g.s.dynamicEl[b].src):"false"!==g.$items.eq(b).attr("data-download-url")&&(g.$items.eq(b).attr("data-download-url")||g.$items.eq(b).attr("href")||g.$items.eq(b).attr("data-src")),j?(a("#lg-download").attr("href",j),g.$outer.removeClass("lg-hide-download")):g.$outer.addClass("lg-hide-download")}if(this.$el.trigger("onBeforeSlide.lg",[f,b,c,d]),g.lgBusy=!0,clearTimeout(g.hideBartimeout),".lg-sub-html"===this.s.appendSubHtmlTo&&setTimeout(function(){g.addHtml(b)},i),this.arrowDisable(b),e||(b<f?e="prev":b>f&&(e="next")),c){this.$slide.removeClass("lg-prev-slide lg-current lg-next-slide");var k,l;h>2?(k=b-1,l=b+1,0===b&&f===h-1?(l=0,k=h-1):b===h-1&&0===f&&(l=0,k=h-1)):(k=0,l=1),"prev"===e?g.$slide.eq(l).addClass("lg-next-slide"):g.$slide.eq(k).addClass("lg-prev-slide"),g.$slide.eq(b).addClass("lg-current")}else g.$outer.addClass("lg-no-trans"),this.$slide.removeClass("lg-prev-slide lg-next-slide"),"prev"===e?(this.$slide.eq(b).addClass("lg-prev-slide"),this.$slide.eq(f).addClass("lg-next-slide")):(this.$slide.eq(b).addClass("lg-next-slide"),this.$slide.eq(f).addClass("lg-prev-slide")),setTimeout(function(){g.$slide.removeClass("lg-current"),g.$slide.eq(b).addClass("lg-current"),g.$outer.removeClass("lg-no-trans")},50);g.lGalleryOn?(setTimeout(function(){g.loadContent(b,!0,0)},this.s.speed+50),setTimeout(function(){g.lgBusy=!1,g.$el.trigger("onAfterSlide.lg",[f,b,c,d])},this.s.speed)):(g.loadContent(b,!0,g.s.backdropDuration),g.lgBusy=!1,g.$el.trigger("onAfterSlide.lg",[f,b,c,d])),g.lGalleryOn=!0,this.s.counter&&a("#lg-counter-current").text(b+1)}g.index=b}},b.prototype.goToNextSlide=function(a){var b=this,c=b.s.loop;a&&b.$slide.length<3&&(c=!1),b.lgBusy||(b.index+1<b.$slide.length?(b.index++,b.$el.trigger("onBeforeNextSlide.lg",[b.index]),b.slide(b.index,a,!1,"next")):c?(b.index=0,b.$el.trigger("onBeforeNextSlide.lg",[b.index]),b.slide(b.index,a,!1,"next")):b.s.slideEndAnimatoin&&!a&&(b.$outer.addClass("lg-right-end"),setTimeout(function(){b.$outer.removeClass("lg-right-end")},400)))},b.prototype.goToPrevSlide=function(a){var b=this,c=b.s.loop;a&&b.$slide.length<3&&(c=!1),b.lgBusy||(b.index>0?(b.index--,b.$el.trigger("onBeforePrevSlide.lg",[b.index,a]),b.slide(b.index,a,!1,"prev")):c?(b.index=b.$items.length-1,b.$el.trigger("onBeforePrevSlide.lg",[b.index,a]),b.slide(b.index,a,!1,"prev")):b.s.slideEndAnimatoin&&!a&&(b.$outer.addClass("lg-left-end"),setTimeout(function(){b.$outer.removeClass("lg-left-end")},400)))},b.prototype.keyPress=function(){var b=this;this.$items.length>1&&a(window).on("keyup.lg",function(a){b.$items.length>1&&(37===a.keyCode&&(a.preventDefault(),b.goToPrevSlide()),39===a.keyCode&&(a.preventDefault(),b.goToNextSlide()))}),a(window).on("keydown.lg",function(a){!0===b.s.escKey&&27===a.keyCode&&(a.preventDefault(),b.$outer.hasClass("lg-thumb-open")?b.$outer.removeClass("lg-thumb-open"):b.destroy())})},b.prototype.arrow=function(){var a=this;this.$outer.find(".lg-prev").on("click.lg",function(){a.goToPrevSlide()}),this.$outer.find(".lg-next").on("click.lg",function(){a.goToNextSlide()})},b.prototype.arrowDisable=function(a){!this.s.loop&&this.s.hideControlOnEnd&&(a+1<this.$slide.length?this.$outer.find(".lg-next").removeAttr("disabled").removeClass("disabled"):this.$outer.find(".lg-next").attr("disabled","disabled").addClass("disabled"),a>0?this.$outer.find(".lg-prev").removeAttr("disabled").removeClass("disabled"):this.$outer.find(".lg-prev").attr("disabled","disabled").addClass("disabled"))},b.prototype.setTranslate=function(a,b,c){this.s.useLeft?a.css("left",b):a.css({transform:"translate3d("+b+"px, "+c+"px, 0px)"})},b.prototype.touchMove=function(b,c){var d=c-b;Math.abs(d)>15&&(this.$outer.addClass("lg-dragging"),this.setTranslate(this.$slide.eq(this.index),d,0),this.setTranslate(a(".lg-prev-slide"),-this.$slide.eq(this.index).width()+d,0),this.setTranslate(a(".lg-next-slide"),this.$slide.eq(this.index).width()+d,0))},b.prototype.touchEnd=function(a){var b=this;"lg-slide"!==b.s.mode&&b.$outer.addClass("lg-slide"),this.$slide.not(".lg-current, .lg-prev-slide, .lg-next-slide").css("opacity","0"),setTimeout(function(){b.$outer.removeClass("lg-dragging"),a<0&&Math.abs(a)>b.s.swipeThreshold?b.goToNextSlide(!0):a>0&&Math.abs(a)>b.s.swipeThreshold?b.goToPrevSlide(!0):Math.abs(a)<5&&b.$el.trigger("onSlideClick.lg"),b.$slide.removeAttr("style")}),setTimeout(function(){b.$outer.hasClass("lg-dragging")||"lg-slide"===b.s.mode||b.$outer.removeClass("lg-slide")},b.s.speed+100)},b.prototype.enableSwipe=function(){var a=this,b=0,c=0,d=!1;a.s.enableSwipe&&a.doCss()&&(a.$slide.on("touchstart.lg",function(c){a.$outer.hasClass("lg-zoomed")||a.lgBusy||(c.preventDefault(),a.manageSwipeClass(),b=c.originalEvent.targetTouches[0].pageX)}),a.$slide.on("touchmove.lg",function(e){a.$outer.hasClass("lg-zoomed")||(e.preventDefault(),c=e.originalEvent.targetTouches[0].pageX,a.touchMove(b,c),d=!0)}),a.$slide.on("touchend.lg",function(){a.$outer.hasClass("lg-zoomed")||(d?(d=!1,a.touchEnd(c-b)):a.$el.trigger("onSlideClick.lg"))}))},b.prototype.enableDrag=function(){var b=this,c=0,d=0,e=!1,f=!1;b.s.enableDrag&&b.doCss()&&(b.$slide.on("mousedown.lg",function(d){b.$outer.hasClass("lg-zoomed")||b.lgBusy||a(d.target).text().trim()||(d.preventDefault(),b.manageSwipeClass(),c=d.pageX,e=!0,b.$outer.scrollLeft+=1,b.$outer.scrollLeft-=1,b.$outer.removeClass("lg-grab").addClass("lg-grabbing"),b.$el.trigger("onDragstart.lg"))}),a(window).on("mousemove.lg",function(a){e&&(f=!0,d=a.pageX,b.touchMove(c,d),b.$el.trigger("onDragmove.lg"))}),a(window).on("mouseup.lg",function(g){f?(f=!1,b.touchEnd(d-c),b.$el.trigger("onDragend.lg")):(a(g.target).hasClass("lg-object")||a(g.target).hasClass("lg-video-play"))&&b.$el.trigger("onSlideClick.lg"),e&&(e=!1,b.$outer.removeClass("lg-grabbing").addClass("lg-grab"))}))},b.prototype.manageSwipeClass=function(){var a=this.index+1,b=this.index-1;this.s.loop&&this.$slide.length>2&&(0===this.index?b=this.$slide.length-1:this.index===this.$slide.length-1&&(a=0)),this.$slide.removeClass("lg-next-slide lg-prev-slide"),b>-1&&this.$slide.eq(b).addClass("lg-prev-slide"),this.$slide.eq(a).addClass("lg-next-slide")},b.prototype.mousewheel=function(){var a=this;a.$outer.on("mousewheel.lg",function(b){b.deltaY&&(b.deltaY>0?a.goToPrevSlide():a.goToNextSlide(),b.preventDefault())})},b.prototype.closeGallery=function(){var b=this,c=!1;this.$outer.find(".lg-close").on("click.lg",function(){b.destroy()}),b.s.closable&&(b.$outer.on("mousedown.lg",function(b){c=!!(a(b.target).is(".lg-outer")||a(b.target).is(".lg-item ")||a(b.target).is(".lg-img-wrap"))}),b.$outer.on("mousemove.lg",function(){c=!1}),b.$outer.on("mouseup.lg",function(d){(a(d.target).is(".lg-outer")||a(d.target).is(".lg-item ")||a(d.target).is(".lg-img-wrap")&&c)&&(b.$outer.hasClass("lg-dragging")||b.destroy())}))},b.prototype.destroy=function(b){var c=this;b||(c.$el.trigger("onBeforeClose.lg"),a(window).scrollTop(c.prevScrollTop)),b&&(c.s.dynamic||this.$items.off("click.lg click.lgcustom"),a.removeData(c.el,"lightGallery")),this.$el.off(".lg.tm"),a.each(a.fn.lightGallery.modules,function(a){c.modules[a]&&c.modules[a].destroy()}),this.lGalleryOn=!1,clearTimeout(c.hideBartimeout),this.hideBartimeout=!1,a(window).off(".lg"),a("body").removeClass("lg-on lg-from-hash"),c.$outer&&c.$outer.removeClass("lg-visible"),a(".lg-backdrop").removeClass("in"),setTimeout(function(){c.$outer&&c.$outer.remove(),a(".lg-backdrop").remove(),b||c.$el.trigger("onCloseAfter.lg")},c.s.backdropDuration+50)},a.fn.lightGallery=function(c){return this.each(function(){if(a.data(this,"lightGallery"))try{a(this).data("lightGallery").init()}catch(a){console.error("lightGallery has not initiated properly")}else a.data(this,"lightGallery",new b(this,c))})},a.fn.lightGallery.modules={}}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b={autoplay:!1,pause:5e3,progressBar:!0,fourceAutoplay:!1,autoplayControls:!0,appendAutoplayControlsTo:".lg-toolbar"},c=function(c){return this.core=a(c).data("lightGallery"),this.$el=a(c),!(this.core.$items.length<2)&&(this.core.s=a.extend({},b,this.core.s),this.interval=!1,this.fromAuto=!0,this.canceledOnTouch=!1,this.fourceAutoplayTemp=this.core.s.fourceAutoplay,this.core.doCss()||(this.core.s.progressBar=!1),this.init(),this)};c.prototype.init=function(){var a=this;a.core.s.autoplayControls&&a.controls(),a.core.s.progressBar&&a.core.$outer.find(".lg").append('<div class="lg-progress-bar"><div class="lg-progress"></div></div>'),a.progress(),a.core.s.autoplay&&a.$el.one("onSlideItemLoad.lg.tm",function(){a.startlAuto()}),a.$el.on("onDragstart.lg.tm touchstart.lg.tm",function(){a.interval&&(a.cancelAuto(),a.canceledOnTouch=!0)}),a.$el.on("onDragend.lg.tm touchend.lg.tm onSlideClick.lg.tm",function(){!a.interval&&a.canceledOnTouch&&(a.startlAuto(),a.canceledOnTouch=!1)})},c.prototype.progress=function(){var a,b,c=this;c.$el.on("onBeforeSlide.lg.tm",function(){c.core.s.progressBar&&c.fromAuto&&(a=c.core.$outer.find(".lg-progress-bar"),b=c.core.$outer.find(".lg-progress"),c.interval&&(b.removeAttr("style"),a.removeClass("lg-start"),setTimeout(function(){b.css("transition","width "+(c.core.s.speed+c.core.s.pause)+"ms ease 0s"),a.addClass("lg-start")},20))),c.fromAuto||c.core.s.fourceAutoplay||c.cancelAuto(),c.fromAuto=!1})},c.prototype.controls=function(){var b=this;a(this.core.s.appendAutoplayControlsTo).append('<span class="lg-autoplay-button lg-icon"></span>'),b.core.$outer.find(".lg-autoplay-button").on("click.lg",function(){a(b.core.$outer).hasClass("lg-show-autoplay")?(b.cancelAuto(),b.core.s.fourceAutoplay=!1):b.interval||(b.startlAuto(),b.core.s.fourceAutoplay=b.fourceAutoplayTemp)})},c.prototype.startlAuto=function(){var a=this;a.core.$outer.find(".lg-progress").css("transition","width "+(a.core.s.speed+a.core.s.pause)+"ms ease 0s"),a.core.$outer.addClass("lg-show-autoplay"),a.core.$outer.find(".lg-progress-bar").addClass("lg-start"),a.interval=setInterval(function(){a.core.index+1<a.core.$items.length?a.core.index++:a.core.index=0,a.fromAuto=!0,a.core.slide(a.core.index,!1,!1,"next")},a.core.s.speed+a.core.s.pause)},c.prototype.cancelAuto=function(){clearInterval(this.interval),this.interval=!1,this.core.$outer.find(".lg-progress").removeAttr("style"),this.core.$outer.removeClass("lg-show-autoplay"),this.core.$outer.find(".lg-progress-bar").removeClass("lg-start")},c.prototype.destroy=function(){this.cancelAuto(),this.core.$outer.find(".lg-progress-bar").remove()},a.fn.lightGallery.modules.autoplay=c}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){!function(){"use strict";function b(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement}var c={fullScreen:!0},d=function(b){return this.core=a(b).data("lightGallery"),this.$el=a(b),this.core.s=a.extend({},c,this.core.s),this.init(),this};d.prototype.init=function(){var a="";if(this.core.s.fullScreen){if(!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled))return;a='<span class="lg-fullscreen lg-icon"></span>',this.core.$outer.find(".lg-toolbar").append(a),this.fullScreen()}},d.prototype.requestFullscreen=function(){var a=document.documentElement;a.requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen&&a.webkitRequestFullscreen()},d.prototype.exitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},d.prototype.fullScreen=function(){var c=this;a(document).on("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg",function(){c.core.$outer.toggleClass("lg-fullscreen-on")}),this.core.$outer.find(".lg-fullscreen").on("click.lg",function(){b()?c.exitFullscreen():c.requestFullscreen()})},d.prototype.destroy=function(){b()&&this.exitFullscreen(),a(document).off("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg")},a.fn.lightGallery.modules.fullscreen=d}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b={pager:!1},c=function(c){return this.core=a(c).data("lightGallery"),this.$el=a(c),this.core.s=a.extend({},b,this.core.s),this.core.s.pager&&this.core.$items.length>1&&this.init(),this};c.prototype.init=function(){var b,c,d,e=this,f="";if(e.core.$outer.find(".lg").append('<div class="lg-pager-outer"></div>'),e.core.s.dynamic)for(var g=0;g<e.core.s.dynamicEl.length;g++)f+='<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="'+e.core.s.dynamicEl[g].thumb+'" /></div></span>';else e.core.$items.each(function(){e.core.s.exThumbImage?f+='<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="'+a(this).attr(e.core.s.exThumbImage)+'" /></div></span>':f+='<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="'+a(this).find("img").attr("src")+'" /></div></span>'});c=e.core.$outer.find(".lg-pager-outer"),c.html(f),b=e.core.$outer.find(".lg-pager-cont"),b.on("click.lg touchend.lg",function(){var b=a(this);e.core.index=b.index(),e.core.slide(e.core.index,!1,!0,!1)}),c.on("mouseover.lg",function(){clearTimeout(d),c.addClass("lg-pager-hover")}),c.on("mouseout.lg",function(){d=setTimeout(function(){c.removeClass("lg-pager-hover")})}),e.core.$el.on("onBeforeSlide.lg.tm",function(a,c,d){b.removeClass("lg-pager-active"),b.eq(d).addClass("lg-pager-active")})},c.prototype.destroy=function(){},a.fn.lightGallery.modules.pager=c}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b={thumbnail:!0,animateThumb:!0,currentPagerPosition:"middle",thumbWidth:100,thumbHeight:"80px",thumbContHeight:100,thumbMargin:5,exThumbImage:!1,showThumbByDefault:!0,toogleThumb:!0,pullCaptionUp:!0,enableThumbDrag:!0,enableThumbSwipe:!0,swipeThreshold:50,loadYoutubeThumbnail:!0,youtubeThumbSize:1,loadVimeoThumbnail:!0,vimeoThumbSize:"thumbnail_small",loadDailymotionThumbnail:!0},c=function(c){return this.core=a(c).data("lightGallery"),this.core.s=a.extend({},b,this.core.s),this.$el=a(c),this.$thumbOuter=null,this.thumbOuterWidth=0,this.thumbTotalWidth=this.core.$items.length*(this.core.s.thumbWidth+this.core.s.thumbMargin),this.thumbIndex=this.core.index,this.core.s.animateThumb&&(this.core.s.thumbHeight="100%"),this.left=0,this.init(),this};c.prototype.init=function(){var a=this;this.core.s.thumbnail&&this.core.$items.length>1&&(this.core.s.showThumbByDefault&&setTimeout(function(){a.core.$outer.addClass("lg-thumb-open")},700),this.core.s.pullCaptionUp&&this.core.$outer.addClass("lg-pull-caption-up"),this.build(),this.core.s.animateThumb&&this.core.doCss()?(this.core.s.enableThumbDrag&&this.enableThumbDrag(),this.core.s.enableThumbSwipe&&this.enableThumbSwipe(),this.thumbClickable=!1):this.thumbClickable=!0,this.toogle(),this.thumbkeyPress())},c.prototype.build=function(){function b(a,b,c){var g,h=d.core.isVideo(a,c)||{},i="";h.youtube||h.vimeo||h.dailymotion?h.youtube?g=d.core.s.loadYoutubeThumbnail?"//img.youtube.com/vi/"+h.youtube[1]+"/"+d.core.s.youtubeThumbSize+".jpg":b:h.vimeo?d.core.s.loadVimeoThumbnail?(g="//i.vimeocdn.com/video/error_"+f+".jpg",i=h.vimeo[1]):g=b:h.dailymotion&&(g=d.core.s.loadDailymotionThumbnail?"//www.dailymotion.com/thumbnail/video/"+h.dailymotion[1]:b):g=b,e+='<div data-vimeo-id="'+i+'" class="lg-thumb-item" style="width:'+d.core.s.thumbWidth+"px; height: "+d.core.s.thumbHeight+"; margin-right: "+d.core.s.thumbMargin+'px"><img src="'+g+'" /></div>',i=""}var c,d=this,e="",f="",g='<div class="lg-thumb-outer"><div class="lg-thumb lg-group"></div></div>';switch(this.core.s.vimeoThumbSize){case"thumbnail_large":f="640";break;case"thumbnail_medium":f="200x150";break;case"thumbnail_small":f="100x75"}if(d.core.$outer.addClass("lg-has-thumb"),d.core.$outer.find(".lg").append(g),d.$thumbOuter=d.core.$outer.find(".lg-thumb-outer"),d.thumbOuterWidth=d.$thumbOuter.width(),d.core.s.animateThumb&&d.core.$outer.find(".lg-thumb").css({width:d.thumbTotalWidth+"px",position:"relative"}),this.core.s.animateThumb&&d.$thumbOuter.css("height",d.core.s.thumbContHeight+"px"),d.core.s.dynamic)for(var h=0;h<d.core.s.dynamicEl.length;h++)b(d.core.s.dynamicEl[h].src,d.core.s.dynamicEl[h].thumb,h);else d.core.$items.each(function(c){d.core.s.exThumbImage?b(a(this).attr("href")||a(this).attr("data-src"),a(this).attr(d.core.s.exThumbImage),c):b(a(this).attr("href")||a(this).attr("data-src"),a(this).find("img").attr("src"),c)});d.core.$outer.find(".lg-thumb").html(e),c=d.core.$outer.find(".lg-thumb-item"),c.each(function(){var b=a(this),c=b.attr("data-vimeo-id");c&&a.getJSON("//www.vimeo.com/api/v2/video/"+c+".json?callback=?",{format:"json"},function(a){b.find("img").attr("src",a[0][d.core.s.vimeoThumbSize])})}),c.eq(d.core.index).addClass("active"),d.core.$el.on("onBeforeSlide.lg.tm",function(){c.removeClass("active"),c.eq(d.core.index).addClass("active")}),c.on("click.lg touchend.lg",function(){var b=a(this);setTimeout(function(){(d.thumbClickable&&!d.core.lgBusy||!d.core.doCss())&&(d.core.index=b.index(),d.core.slide(d.core.index,!1,!0,!1))},50)}),d.core.$el.on("onBeforeSlide.lg.tm",function(){d.animateThumb(d.core.index)}),a(window).on("resize.lg.thumb orientationchange.lg.thumb",function(){setTimeout(function(){d.animateThumb(d.core.index),d.thumbOuterWidth=d.$thumbOuter.width()},200)})},c.prototype.setTranslate=function(a){this.core.$outer.find(".lg-thumb").css({transform:"translate3d(-"+a+"px, 0px, 0px)"})},c.prototype.animateThumb=function(a){var b=this.core.$outer.find(".lg-thumb");if(this.core.s.animateThumb){var c;switch(this.core.s.currentPagerPosition){case"left":c=0;break;case"middle":c=this.thumbOuterWidth/2-this.core.s.thumbWidth/2;break;case"right":c=this.thumbOuterWidth-this.core.s.thumbWidth}this.left=(this.core.s.thumbWidth+this.core.s.thumbMargin)*a-1-c,this.left>this.thumbTotalWidth-this.thumbOuterWidth&&(this.left=this.thumbTotalWidth-this.thumbOuterWidth),this.left<0&&(this.left=0),this.core.lGalleryOn?(b.hasClass("on")||this.core.$outer.find(".lg-thumb").css("transition-duration",this.core.s.speed+"ms"),this.core.doCss()||b.animate({left:-this.left+"px"},this.core.s.speed)):this.core.doCss()||b.css("left",-this.left+"px"),this.setTranslate(this.left)}},c.prototype.enableThumbDrag=function(){var b=this,c=0,d=0,e=!1,f=!1,g=0;b.$thumbOuter.addClass("lg-grab"),b.core.$outer.find(".lg-thumb").on("mousedown.lg.thumb",function(a){b.thumbTotalWidth>b.thumbOuterWidth&&(a.preventDefault(),c=a.pageX,e=!0,b.core.$outer.scrollLeft+=1,b.core.$outer.scrollLeft-=1,b.thumbClickable=!1,b.$thumbOuter.removeClass("lg-grab").addClass("lg-grabbing"))}),a(window).on("mousemove.lg.thumb",function(a){e&&(g=b.left,f=!0,d=a.pageX,b.$thumbOuter.addClass("lg-dragging"),g-=d-c,g>b.thumbTotalWidth-b.thumbOuterWidth&&(g=b.thumbTotalWidth-b.thumbOuterWidth),g<0&&(g=0),b.setTranslate(g))}),a(window).on("mouseup.lg.thumb",function(){f?(f=!1,b.$thumbOuter.removeClass("lg-dragging"),b.left=g,Math.abs(d-c)<b.core.s.swipeThreshold&&(b.thumbClickable=!0)):b.thumbClickable=!0,e&&(e=!1,b.$thumbOuter.removeClass("lg-grabbing").addClass("lg-grab"))})},c.prototype.enableThumbSwipe=function(){var a=this,b=0,c=0,d=!1,e=0;a.core.$outer.find(".lg-thumb").on("touchstart.lg",function(c){a.thumbTotalWidth>a.thumbOuterWidth&&(c.preventDefault(),b=c.originalEvent.targetTouches[0].pageX,a.thumbClickable=!1)}),a.core.$outer.find(".lg-thumb").on("touchmove.lg",function(f){a.thumbTotalWidth>a.thumbOuterWidth&&(f.preventDefault(),c=f.originalEvent.targetTouches[0].pageX,d=!0,a.$thumbOuter.addClass("lg-dragging"),e=a.left,e-=c-b,e>a.thumbTotalWidth-a.thumbOuterWidth&&(e=a.thumbTotalWidth-a.thumbOuterWidth),e<0&&(e=0),a.setTranslate(e))}),a.core.$outer.find(".lg-thumb").on("touchend.lg",function(){a.thumbTotalWidth>a.thumbOuterWidth&&d?(d=!1,a.$thumbOuter.removeClass("lg-dragging"),Math.abs(c-b)<a.core.s.swipeThreshold&&(a.thumbClickable=!0),a.left=e):a.thumbClickable=!0})},c.prototype.toogle=function(){var a=this;a.core.s.toogleThumb&&(a.core.$outer.addClass("lg-can-toggle"),a.$thumbOuter.append('<span class="lg-toogle-thumb lg-icon"></span>'),a.core.$outer.find(".lg-toogle-thumb").on("click.lg",function(){a.core.$outer.toggleClass("lg-thumb-open")}))},c.prototype.thumbkeyPress=function(){var b=this;a(window).on("keydown.lg.thumb",function(a){38===a.keyCode?(a.preventDefault(),b.core.$outer.addClass("lg-thumb-open")):40===a.keyCode&&(a.preventDefault(),b.core.$outer.removeClass("lg-thumb-open"))})},c.prototype.destroy=function(){
-this.core.s.thumbnail&&this.core.$items.length>1&&(a(window).off("resize.lg.thumb orientationchange.lg.thumb keydown.lg.thumb"),this.$thumbOuter.remove(),this.core.$outer.removeClass("lg-has-thumb"))},a.fn.lightGallery.modules.Thumbnail=c}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){!function(){"use strict";function b(a,b,c,d){var e=this;if(e.core.$slide.eq(b).find(".lg-video").append(e.loadVideo(c,"lg-object",!0,b,d)),d)if(e.core.s.videojs)try{videojs(e.core.$slide.eq(b).find(".lg-html5").get(0),e.core.s.videojsOptions,function(){!e.videoLoaded&&e.core.s.autoplayFirstVideo&&this.play()})}catch(a){console.error("Make sure you have included videojs")}else!e.videoLoaded&&e.core.s.autoplayFirstVideo&&e.core.$slide.eq(b).find(".lg-html5").get(0).play()}function c(a,b){var c=this.core.$slide.eq(b).find(".lg-video-cont");c.hasClass("lg-has-iframe")||(c.css("max-width",this.core.s.videoMaxWidth),this.videoLoaded=!0)}function d(b,c,d){var e=this,f=e.core.$slide.eq(c),g=f.find(".lg-youtube").get(0),h=f.find(".lg-vimeo").get(0),i=f.find(".lg-dailymotion").get(0),j=f.find(".lg-vk").get(0),k=f.find(".lg-html5").get(0);if(g)g.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*");else if(h)try{$f(h).api("pause")}catch(a){console.error("Make sure you have included froogaloop2 js")}else if(i)i.contentWindow.postMessage("pause","*");else if(k)if(e.core.s.videojs)try{videojs(k).pause()}catch(a){console.error("Make sure you have included videojs")}else k.pause();j&&a(j).attr("src",a(j).attr("src").replace("&autoplay","&noplay"));var l;l=e.core.s.dynamic?e.core.s.dynamicEl[d].src:e.core.$items.eq(d).attr("href")||e.core.$items.eq(d).attr("data-src");var m=e.core.isVideo(l,d)||{};(m.youtube||m.vimeo||m.dailymotion||m.vk)&&e.core.$outer.addClass("lg-hide-download")}var e={videoMaxWidth:"855px",autoplayFirstVideo:!0,youtubePlayerParams:!1,vimeoPlayerParams:!1,dailymotionPlayerParams:!1,vkPlayerParams:!1,videojs:!1,videojsOptions:{}},f=function(b){return this.core=a(b).data("lightGallery"),this.$el=a(b),this.core.s=a.extend({},e,this.core.s),this.videoLoaded=!1,this.init(),this};f.prototype.init=function(){var e=this;e.core.$el.on("hasVideo.lg.tm",b.bind(this)),e.core.$el.on("onAferAppendSlide.lg.tm",c.bind(this)),e.core.doCss()&&e.core.$items.length>1&&(e.core.s.enableSwipe||e.core.s.enableDrag)?e.core.$el.on("onSlideClick.lg.tm",function(){var a=e.core.$slide.eq(e.core.index);e.loadVideoOnclick(a)}):e.core.$slide.on("click.lg",function(){e.loadVideoOnclick(a(this))}),e.core.$el.on("onBeforeSlide.lg.tm",d.bind(this)),e.core.$el.on("onAfterSlide.lg.tm",function(a,b){e.core.$slide.eq(b).removeClass("lg-video-playing")}),e.core.s.autoplayFirstVideo&&e.core.$el.on("onAferAppendSlide.lg.tm",function(a,b){if(!e.core.lGalleryOn){var c=e.core.$slide.eq(b);setTimeout(function(){e.loadVideoOnclick(c)},100)}})},f.prototype.loadVideo=function(b,c,d,e,f){var g="",h=1,i="",j=this.core.isVideo(b,e)||{};if(d&&(h=this.videoLoaded?0:this.core.s.autoplayFirstVideo?1:0),j.youtube)i="?wmode=opaque&autoplay="+h+"&enablejsapi=1",this.core.s.youtubePlayerParams&&(i=i+"&"+a.param(this.core.s.youtubePlayerParams)),g='<iframe class="lg-video-object lg-youtube '+c+'" width="560" height="315" src="//www.youtube.com/embed/'+j.youtube[1]+i+'" frameborder="0" allowfullscreen></iframe>';else if(j.vimeo)i="?autoplay="+h+"&api=1",this.core.s.vimeoPlayerParams&&(i=i+"&"+a.param(this.core.s.vimeoPlayerParams)),g='<iframe class="lg-video-object lg-vimeo '+c+'" width="560" height="315"  src="//player.vimeo.com/video/'+j.vimeo[1]+i+'" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';else if(j.dailymotion)i="?wmode=opaque&autoplay="+h+"&api=postMessage",this.core.s.dailymotionPlayerParams&&(i=i+"&"+a.param(this.core.s.dailymotionPlayerParams)),g='<iframe class="lg-video-object lg-dailymotion '+c+'" width="560" height="315" src="//www.dailymotion.com/embed/video/'+j.dailymotion[1]+i+'" frameborder="0" allowfullscreen></iframe>';else if(j.html5){var k=f.substring(0,1);"."!==k&&"#"!==k||(f=a(f).html()),g=f}else j.vk&&(i="&autoplay="+h,this.core.s.vkPlayerParams&&(i=i+"&"+a.param(this.core.s.vkPlayerParams)),g='<iframe class="lg-video-object lg-vk '+c+'" width="560" height="315" src="//vk.com/video_ext.php?'+j.vk[1]+i+'" frameborder="0" allowfullscreen></iframe>');return g},f.prototype.loadVideoOnclick=function(a){var b=this;if(a.find(".lg-object").hasClass("lg-has-poster")&&a.find(".lg-object").is(":visible"))if(a.hasClass("lg-has-video")){var c=a.find(".lg-youtube").get(0),d=a.find(".lg-vimeo").get(0),e=a.find(".lg-dailymotion").get(0),f=a.find(".lg-html5").get(0);if(c)c.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*");else if(d)try{$f(d).api("play")}catch(a){console.error("Make sure you have included froogaloop2 js")}else if(e)e.contentWindow.postMessage("play","*");else if(f)if(b.core.s.videojs)try{videojs(f).play()}catch(a){console.error("Make sure you have included videojs")}else f.play();a.addClass("lg-video-playing")}else{a.addClass("lg-video-playing lg-has-video");var g,h,i=function(c,d){if(a.find(".lg-video").append(b.loadVideo(c,"",!1,b.core.index,d)),d)if(b.core.s.videojs)try{videojs(b.core.$slide.eq(b.core.index).find(".lg-html5").get(0),b.core.s.videojsOptions,function(){this.play()})}catch(a){console.error("Make sure you have included videojs")}else b.core.$slide.eq(b.core.index).find(".lg-html5").get(0).play()};b.core.s.dynamic?(g=b.core.s.dynamicEl[b.core.index].src,h=b.core.s.dynamicEl[b.core.index].html,i(g,h)):(g=b.core.$items.eq(b.core.index).attr("href")||b.core.$items.eq(b.core.index).attr("data-src"),h=b.core.$items.eq(b.core.index).attr("data-html"),i(g,h));var j=a.find(".lg-object");a.find(".lg-video").append(j),a.find(".lg-video-object").hasClass("lg-html5")||(a.removeClass("lg-complete"),a.find(".lg-video-object").on("load.lg error.lg",function(){a.addClass("lg-complete")}))}},f.prototype.destroy=function(){this.videoLoaded=!1},a.fn.lightGallery.modules.video=f}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b=function(){var a=!1,b=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);return b&&parseInt(b[2],10)<54&&(a=!0),a},c={scale:1,zoom:!0,actualSize:!0,enableZoomAfter:300,useLeftForZoom:b()},d=function(b){return this.core=a(b).data("lightGallery"),this.core.s=a.extend({},c,this.core.s),this.core.s.zoom&&this.core.doCss()&&(this.init(),this.zoomabletimeout=!1,this.pageX=a(window).width()/2,this.pageY=a(window).height()/2+a(window).scrollTop()),this};d.prototype.init=function(){var b=this,c='<span id="lg-zoom-in" class="lg-icon"></span><span id="lg-zoom-out" class="lg-icon"></span>';b.core.s.actualSize&&(c+='<span id="lg-actual-size" class="lg-icon"></span>'),b.core.s.useLeftForZoom?b.core.$outer.addClass("lg-use-left-for-zoom"):b.core.$outer.addClass("lg-use-transition-for-zoom"),this.core.$outer.find(".lg-toolbar").append(c),b.core.$el.on("onSlideItemLoad.lg.tm.zoom",function(c,d,e){var f=b.core.s.enableZoomAfter+e;a("body").hasClass("lg-from-hash")&&e?f=0:a("body").removeClass("lg-from-hash"),b.zoomabletimeout=setTimeout(function(){b.core.$slide.eq(d).addClass("lg-zoomable")},f+30)});var d=1,e=function(c){var d,e,f=b.core.$outer.find(".lg-current .lg-image"),g=(a(window).width()-f.prop("offsetWidth"))/2,h=(a(window).height()-f.prop("offsetHeight"))/2+a(window).scrollTop();d=b.pageX-g,e=b.pageY-h;var i=(c-1)*d,j=(c-1)*e;f.css("transform","scale3d("+c+", "+c+", 1)").attr("data-scale",c),b.core.s.useLeftForZoom?f.parent().css({left:-i+"px",top:-j+"px"}).attr("data-x",i).attr("data-y",j):f.parent().css("transform","translate3d(-"+i+"px, -"+j+"px, 0)").attr("data-x",i).attr("data-y",j)},f=function(){d>1?b.core.$outer.addClass("lg-zoomed"):b.resetZoom(),d<1&&(d=1),e(d)},g=function(c,e,g,h){var i,j=e.prop("offsetWidth");i=b.core.s.dynamic?b.core.s.dynamicEl[g].width||e[0].naturalWidth||j:b.core.$items.eq(g).attr("data-width")||e[0].naturalWidth||j;var k;b.core.$outer.hasClass("lg-zoomed")?d=1:i>j&&(k=i/j,d=k||2),h?(b.pageX=a(window).width()/2,b.pageY=a(window).height()/2+a(window).scrollTop()):(b.pageX=c.pageX||c.originalEvent.targetTouches[0].pageX,b.pageY=c.pageY||c.originalEvent.targetTouches[0].pageY),f(),setTimeout(function(){b.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")},10)},h=!1;b.core.$el.on("onAferAppendSlide.lg.tm.zoom",function(a,c){var d=b.core.$slide.eq(c).find(".lg-image");d.on("dblclick",function(a){g(a,d,c)}),d.on("touchstart",function(a){h?(clearTimeout(h),h=null,g(a,d,c)):h=setTimeout(function(){h=null},300),a.preventDefault()})}),a(window).on("resize.lg.zoom scroll.lg.zoom orientationchange.lg.zoom",function(){b.pageX=a(window).width()/2,b.pageY=a(window).height()/2+a(window).scrollTop(),e(d)}),a("#lg-zoom-out").on("click.lg",function(){b.core.$outer.find(".lg-current .lg-image").length&&(d-=b.core.s.scale,f())}),a("#lg-zoom-in").on("click.lg",function(){b.core.$outer.find(".lg-current .lg-image").length&&(d+=b.core.s.scale,f())}),a("#lg-actual-size").on("click.lg",function(a){g(a,b.core.$slide.eq(b.core.index).find(".lg-image"),b.core.index,!0)}),b.core.$el.on("onBeforeSlide.lg.tm",function(){d=1,b.resetZoom()}),b.zoomDrag(),b.zoomSwipe()},d.prototype.resetZoom=function(){this.core.$outer.removeClass("lg-zoomed"),this.core.$slide.find(".lg-img-wrap").removeAttr("style data-x data-y"),this.core.$slide.find(".lg-image").removeAttr("style data-scale"),this.pageX=a(window).width()/2,this.pageY=a(window).height()/2+a(window).scrollTop()},d.prototype.zoomSwipe=function(){var a=this,b={},c={},d=!1,e=!1,f=!1;a.core.$slide.on("touchstart.lg",function(c){if(a.core.$outer.hasClass("lg-zoomed")){var d=a.core.$slide.eq(a.core.index).find(".lg-object");f=d.prop("offsetHeight")*d.attr("data-scale")>a.core.$outer.find(".lg").height(),e=d.prop("offsetWidth")*d.attr("data-scale")>a.core.$outer.find(".lg").width(),(e||f)&&(c.preventDefault(),b={x:c.originalEvent.targetTouches[0].pageX,y:c.originalEvent.targetTouches[0].pageY})}}),a.core.$slide.on("touchmove.lg",function(g){if(a.core.$outer.hasClass("lg-zoomed")){var h,i,j=a.core.$slide.eq(a.core.index).find(".lg-img-wrap");g.preventDefault(),d=!0,c={x:g.originalEvent.targetTouches[0].pageX,y:g.originalEvent.targetTouches[0].pageY},a.core.$outer.addClass("lg-zoom-dragging"),i=f?-Math.abs(j.attr("data-y"))+(c.y-b.y):-Math.abs(j.attr("data-y")),h=e?-Math.abs(j.attr("data-x"))+(c.x-b.x):-Math.abs(j.attr("data-x")),(Math.abs(c.x-b.x)>15||Math.abs(c.y-b.y)>15)&&(a.core.s.useLeftForZoom?j.css({left:h+"px",top:i+"px"}):j.css("transform","translate3d("+h+"px, "+i+"px, 0)"))}}),a.core.$slide.on("touchend.lg",function(){a.core.$outer.hasClass("lg-zoomed")&&d&&(d=!1,a.core.$outer.removeClass("lg-zoom-dragging"),a.touchendZoom(b,c,e,f))})},d.prototype.zoomDrag=function(){var b=this,c={},d={},e=!1,f=!1,g=!1,h=!1;b.core.$slide.on("mousedown.lg.zoom",function(d){var f=b.core.$slide.eq(b.core.index).find(".lg-object");h=f.prop("offsetHeight")*f.attr("data-scale")>b.core.$outer.find(".lg").height(),g=f.prop("offsetWidth")*f.attr("data-scale")>b.core.$outer.find(".lg").width(),b.core.$outer.hasClass("lg-zoomed")&&a(d.target).hasClass("lg-object")&&(g||h)&&(d.preventDefault(),c={x:d.pageX,y:d.pageY},e=!0,b.core.$outer.scrollLeft+=1,b.core.$outer.scrollLeft-=1,b.core.$outer.removeClass("lg-grab").addClass("lg-grabbing"))}),a(window).on("mousemove.lg.zoom",function(a){if(e){var i,j,k=b.core.$slide.eq(b.core.index).find(".lg-img-wrap");f=!0,d={x:a.pageX,y:a.pageY},b.core.$outer.addClass("lg-zoom-dragging"),j=h?-Math.abs(k.attr("data-y"))+(d.y-c.y):-Math.abs(k.attr("data-y")),i=g?-Math.abs(k.attr("data-x"))+(d.x-c.x):-Math.abs(k.attr("data-x")),b.core.s.useLeftForZoom?k.css({left:i+"px",top:j+"px"}):k.css("transform","translate3d("+i+"px, "+j+"px, 0)")}}),a(window).on("mouseup.lg.zoom",function(a){e&&(e=!1,b.core.$outer.removeClass("lg-zoom-dragging"),!f||c.x===d.x&&c.y===d.y||(d={x:a.pageX,y:a.pageY},b.touchendZoom(c,d,g,h)),f=!1),b.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")})},d.prototype.touchendZoom=function(a,b,c,d){var e=this,f=e.core.$slide.eq(e.core.index).find(".lg-img-wrap"),g=e.core.$slide.eq(e.core.index).find(".lg-object"),h=-Math.abs(f.attr("data-x"))+(b.x-a.x),i=-Math.abs(f.attr("data-y"))+(b.y-a.y),j=(e.core.$outer.find(".lg").height()-g.prop("offsetHeight"))/2,k=Math.abs(g.prop("offsetHeight")*Math.abs(g.attr("data-scale"))-e.core.$outer.find(".lg").height()+j),l=(e.core.$outer.find(".lg").width()-g.prop("offsetWidth"))/2,m=Math.abs(g.prop("offsetWidth")*Math.abs(g.attr("data-scale"))-e.core.$outer.find(".lg").width()+l);(Math.abs(b.x-a.x)>15||Math.abs(b.y-a.y)>15)&&(d&&(i<=-k?i=-k:i>=-j&&(i=-j)),c&&(h<=-m?h=-m:h>=-l&&(h=-l)),d?f.attr("data-y",Math.abs(i)):i=-Math.abs(f.attr("data-y")),c?f.attr("data-x",Math.abs(h)):h=-Math.abs(f.attr("data-x")),e.core.s.useLeftForZoom?f.css({left:h+"px",top:i+"px"}):f.css("transform","translate3d("+h+"px, "+i+"px, 0)"))},d.prototype.destroy=function(){var b=this;b.core.$el.off(".lg.zoom"),a(window).off(".lg.zoom"),b.core.$slide.off(".lg.zoom"),b.core.$el.off(".lg.tm.zoom"),b.resetZoom(),clearTimeout(b.zoomabletimeout),b.zoomabletimeout=!1},a.fn.lightGallery.modules.zoom=d}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b={hash:!0},c=function(c){return this.core=a(c).data("lightGallery"),this.core.s=a.extend({},b,this.core.s),this.core.s.hash&&(this.oldHash=window.location.hash,this.init()),this};c.prototype.init=function(){var b,c=this;c.core.$el.on("onAfterSlide.lg.tm",function(a,b,d){history.replaceState?history.replaceState(null,null,window.location.pathname+window.location.search+"#lg="+c.core.s.galleryId+"&slide="+d):window.location.hash="lg="+c.core.s.galleryId+"&slide="+d}),a(window).on("hashchange.lg.hash",function(){b=window.location.hash;var a=parseInt(b.split("&slide=")[1],10);b.indexOf("lg="+c.core.s.galleryId)>-1?c.core.slide(a,!1,!1):c.core.lGalleryOn&&c.core.destroy()})},c.prototype.destroy=function(){this.core.s.hash&&(this.oldHash&&this.oldHash.indexOf("lg="+this.core.s.galleryId)<0?history.replaceState?history.replaceState(null,null,this.oldHash):window.location.hash=this.oldHash:history.replaceState?history.replaceState(null,document.title,window.location.pathname+window.location.search):window.location.hash="",this.core.$el.off(".lg.hash"))},a.fn.lightGallery.modules.hash=c}()}),function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(0,function(a){!function(){"use strict";var b={share:!0,facebook:!0,facebookDropdownText:"Facebook",twitter:!0,twitterDropdownText:"Twitter",googlePlus:!0,googlePlusDropdownText:"GooglePlus",pinterest:!0,pinterestDropdownText:"Pinterest"},c=function(c){return this.core=a(c).data("lightGallery"),this.core.s=a.extend({},b,this.core.s),this.core.s.share&&this.init(),this};c.prototype.init=function(){var b=this,c='<span id="lg-share" class="lg-icon"><ul class="lg-dropdown" style="position: absolute;">';c+=b.core.s.facebook?'<li><a id="lg-share-facebook" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.facebookDropdownText+"</span></a></li>":"",c+=b.core.s.twitter?'<li><a id="lg-share-twitter" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.twitterDropdownText+"</span></a></li>":"",c+=b.core.s.googlePlus?'<li><a id="lg-share-googleplus" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.googlePlusDropdownText+"</span></a></li>":"",c+=b.core.s.pinterest?'<li><a id="lg-share-pinterest" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.pinterestDropdownText+"</span></a></li>":"",c+="</ul></span>",this.core.$outer.find(".lg-toolbar").append(c),this.core.$outer.find(".lg").append('<div id="lg-dropdown-overlay"></div>'),a("#lg-share").on("click.lg",function(){b.core.$outer.toggleClass("lg-dropdown-active")}),a("#lg-dropdown-overlay").on("click.lg",function(){b.core.$outer.removeClass("lg-dropdown-active")}),b.core.$el.on("onAfterSlide.lg.tm",function(c,d,e){setTimeout(function(){a("#lg-share-facebook").attr("href","https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(b.getSahreProps(e,"facebookShareUrl")||window.location.href)),a("#lg-share-twitter").attr("href","https://twitter.com/intent/tweet?text="+b.getSahreProps(e,"tweetText")+"&url="+encodeURIComponent(b.getSahreProps(e,"twitterShareUrl")||window.location.href)),a("#lg-share-googleplus").attr("href","https://plus.google.com/share?url="+encodeURIComponent(b.getSahreProps(e,"googleplusShareUrl")||window.location.href)),a("#lg-share-pinterest").attr("href","http://www.pinterest.com/pin/create/button/?url="+encodeURIComponent(b.getSahreProps(e,"pinterestShareUrl")||window.location.href)+"&media="+encodeURIComponent(b.getSahreProps(e,"src"))+"&description="+b.getSahreProps(e,"pinterestText"))},100)})},c.prototype.getSahreProps=function(a,b){var c="";if(this.core.s.dynamic)c=this.core.s.dynamicEl[a][b];else{var d=this.core.$items.eq(a).attr("href"),e=this.core.$items.eq(a).data(b);c="src"===b?d||e:e}return c},c.prototype.destroy=function(){},a.fn.lightGallery.modules.share=c}()});
\ No newline at end of file
diff --git a/resources/lightgallery/js/lightgallery.js b/resources/lightgallery/js/lightgallery.js
deleted file mode 100644
index 83b7e37..0000000
--- a/resources/lightgallery/js/lightgallery.js
+++ /dev/null
@@ -1,1361 +0,0 @@
-/*! lightgallery - v1.6.12 - 2019-02-19
-* http://sachinchoolur.github.io/lightGallery/
-* Copyright (c) 2019 Sachin N; Licensed GPLv3 */
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof module === 'object' && module.exports) {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(root["jQuery"]);
-  }
-}(this, function ($) {
-
-(function() {
-    'use strict';
-
-    var defaults = {
-
-        mode: 'lg-slide',
-
-        // Ex : 'ease'
-        cssEasing: 'ease',
-
-        //'for jquery animation'
-        easing: 'linear',
-        speed: 600,
-        height: '100%',
-        width: '100%',
-        addClass: '',
-        startClass: 'lg-start-zoom',
-        backdropDuration: 150,
-        hideBarsDelay: 6000,
-
-        useLeft: false,
-
-        closable: true,
-        loop: true,
-        escKey: true,
-        keyPress: true,
-        controls: true,
-        slideEndAnimatoin: true,
-        hideControlOnEnd: false,
-        mousewheel: true,
-
-        getCaptionFromTitleOrAlt: true,
-
-        // .lg-item || '.lg-sub-html'
-        appendSubHtmlTo: '.lg-sub-html',
-
-        subHtmlSelectorRelative: false,
-
-        /**
-         * @desc number of preload slides
-         * will exicute only after the current slide is fully loaded.
-         *
-         * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th
-         * slide will be loaded in the background after the 4th slide is fully loaded..
-         * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...
-         *
-         */
-        preload: 1,
-        showAfterLoad: true,
-        selector: '',
-        selectWithin: '',
-        nextHtml: '',
-        prevHtml: '',
-
-        // 0, 1
-        index: false,
-
-        iframeMaxWidth: '100%',
-
-        download: true,
-        counter: true,
-        appendCounterTo: '.lg-toolbar',
-
-        swipeThreshold: 50,
-        enableSwipe: true,
-        enableDrag: true,
-
-        dynamic: false,
-        dynamicEl: [],
-        galleryId: 1
-    };
-
-    function Plugin(element, options) {
-
-        // Current lightGallery element
-        this.el = element;
-
-        // Current jquery element
-        this.$el = $(element);
-
-        // lightGallery settings
-        this.s = $.extend({}, defaults, options);
-
-        // When using dynamic mode, ensure dynamicEl is an array
-        if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {
-            throw ('When using dynamic mode, you must also define dynamicEl as an Array.');
-        }
-
-        // lightGallery modules
-        this.modules = {};
-
-        // false when lightgallery complete first slide;
-        this.lGalleryOn = false;
-
-        this.lgBusy = false;
-
-        // Timeout function for hiding controls;
-        this.hideBartimeout = false;
-
-        // To determine browser supports for touch events;
-        this.isTouch = ('ontouchstart' in document.documentElement);
-
-        // Disable hideControlOnEnd if sildeEndAnimation is true
-        if (this.s.slideEndAnimatoin) {
-            this.s.hideControlOnEnd = false;
-        }
-
-        // Gallery items
-        if (this.s.dynamic) {
-            this.$items = this.s.dynamicEl;
-        } else {
-            if (this.s.selector === 'this') {
-                this.$items = this.$el;
-            } else if (this.s.selector !== '') {
-                if (this.s.selectWithin) {
-                    this.$items = $(this.s.selectWithin).find(this.s.selector);
-                } else {
-                    this.$items = this.$el.find($(this.s.selector));
-                }
-            } else {
-                this.$items = this.$el.children();
-            }
-        }
-
-        // .lg-item
-        this.$slide = '';
-
-        // .lg-outer
-        this.$outer = '';
-
-        this.init();
-
-        return this;
-    }
-
-    Plugin.prototype.init = function() {
-
-        var _this = this;
-
-        // s.preload should not be more than $item.length
-        if (_this.s.preload > _this.$items.length) {
-            _this.s.preload = _this.$items.length;
-        }
-
-        // if dynamic option is enabled execute immediately
-        var _hash = window.location.hash;
-        if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {
-
-            _this.index = parseInt(_hash.split('&slide=')[1], 10);
-
-            $('body').addClass('lg-from-hash');
-            if (!$('body').hasClass('lg-on')) {
-                setTimeout(function() {
-                    _this.build(_this.index);
-                });
-
-                $('body').addClass('lg-on');
-            }
-        }
-
-        if (_this.s.dynamic) {
-
-            _this.$el.trigger('onBeforeOpen.lg');
-
-            _this.index = _this.s.index || 0;
-
-            // prevent accidental double execution
-            if (!$('body').hasClass('lg-on')) {
-                setTimeout(function() {
-                    _this.build(_this.index);
-                    $('body').addClass('lg-on');
-                });
-            }
-        } else {
-
-            // Using different namespace for click because click event should not unbind if selector is same object('this')
-            _this.$items.on('click.lgcustom', function(event) {
-
-                // For IE8
-                try {
-                    event.preventDefault();
-                    event.preventDefault();
-                } catch (er) {
-                    event.returnValue = false;
-                }
-
-                _this.$el.trigger('onBeforeOpen.lg');
-
-                _this.index = _this.s.index || _this.$items.index(this);
-
-                // prevent accidental double execution
-                if (!$('body').hasClass('lg-on')) {
-                    _this.build(_this.index);
-                    $('body').addClass('lg-on');
-                }
-            });
-        }
-
-    };
-
-    Plugin.prototype.build = function(index) {
-
-        var _this = this;
-
-        _this.structure();
-
-        // module constructor
-        $.each($.fn.lightGallery.modules, function(key) {
-            _this.modules[key] = new $.fn.lightGallery.modules[key](_this.el);
-        });
-
-        // initiate slide function
-        _this.slide(index, false, false, false);
-
-        if (_this.s.keyPress) {
-            _this.keyPress();
-        }
-
-        if (_this.$items.length > 1) {
-
-            _this.arrow();
-
-            setTimeout(function() {
-                _this.enableDrag();
-                _this.enableSwipe();
-            }, 50);
-
-            if (_this.s.mousewheel) {
-                _this.mousewheel();
-            }
-        } else {
-            _this.$slide.on('click.lg', function() {
-                _this.$el.trigger('onSlideClick.lg');
-            });
-        }
-
-        _this.counter();
-
-        _this.closeGallery();
-
-        _this.$el.trigger('onAfterOpen.lg');
-
-        // Hide controllers if mouse doesn't move for some period
-        _this.$outer.on('mousemove.lg click.lg touchstart.lg', function() {
-
-            _this.$outer.removeClass('lg-hide-items');
-
-            clearTimeout(_this.hideBartimeout);
-
-            // Timeout will be cleared on each slide movement also
-            _this.hideBartimeout = setTimeout(function() {
-                _this.$outer.addClass('lg-hide-items');
-            }, _this.s.hideBarsDelay);
-
-        });
-
-        _this.$outer.trigger('mousemove.lg');
-
-    };
-
-    Plugin.prototype.structure = function() {
-        var list = '';
-        var controls = '';
-        var i = 0;
-        var subHtmlCont = '';
-        var template;
-        var _this = this;
-
-        $('body').append('<div class="lg-backdrop"></div>');
-        $('.lg-backdrop').css('transition-duration', this.s.backdropDuration + 'ms');
-
-        // Create gallery items
-        for (i = 0; i < this.$items.length; i++) {
-            list += '<div class="lg-item"></div>';
-        }
-
-        // Create controlls
-        if (this.s.controls && this.$items.length > 1) {
-            controls = '<div class="lg-actions">' +
-                '<button class="lg-prev lg-icon">' + this.s.prevHtml + '</button>' +
-                '<button class="lg-next lg-icon">' + this.s.nextHtml + '</button>' +
-                '</div>';
-        }
-
-        if (this.s.appendSubHtmlTo === '.lg-sub-html') {
-            subHtmlCont = '<div class="lg-sub-html"></div>';
-        }
-
-        template = '<div class="lg-outer ' + this.s.addClass + ' ' + this.s.startClass + '">' +
-            '<div class="lg" style="width:' + this.s.width + '; height:' + this.s.height + '">' +
-            '<div class="lg-inner">' + list + '</div>' +
-            '<div class="lg-toolbar lg-group">' +
-            '<span class="lg-close lg-icon"></span>' +
-            '</div>' +
-            controls +
-            subHtmlCont +
-            '</div>' +
-            '</div>';
-
-        $('body').append(template);
-        this.$outer = $('.lg-outer');
-        this.$slide = this.$outer.find('.lg-item');
-
-        if (this.s.useLeft) {
-            this.$outer.addClass('lg-use-left');
-
-            // Set mode lg-slide if use left is true;
-            this.s.mode = 'lg-slide';
-        } else {
-            this.$outer.addClass('lg-use-css3');
-        }
-
-        // For fixed height gallery
-        _this.setTop();
-        $(window).on('resize.lg orientationchange.lg', function() {
-            setTimeout(function() {
-                _this.setTop();
-            }, 100);
-        });
-
-        // add class lg-current to remove initial transition
-        this.$slide.eq(this.index).addClass('lg-current');
-
-        // add Class for css support and transition mode
-        if (this.doCss()) {
-            this.$outer.addClass('lg-css3');
-        } else {
-            this.$outer.addClass('lg-css');
-
-            // Set speed 0 because no animation will happen if browser doesn't support css3
-            this.s.speed = 0;
-        }
-
-        this.$outer.addClass(this.s.mode);
-
-        if (this.s.enableDrag && this.$items.length > 1) {
-            this.$outer.addClass('lg-grab');
-        }
-
-        if (this.s.showAfterLoad) {
-            this.$outer.addClass('lg-show-after-load');
-        }
-
-        if (this.doCss()) {
-            var $inner = this.$outer.find('.lg-inner');
-            $inner.css('transition-timing-function', this.s.cssEasing);
-            $inner.css('transition-duration', this.s.speed + 'ms');
-        }
-
-        setTimeout(function() {
-            $('.lg-backdrop').addClass('in');
-        });
-
-        setTimeout(function() {
-            _this.$outer.addClass('lg-visible');
-        }, this.s.backdropDuration);
-
-        if (this.s.download) {
-            this.$outer.find('.lg-toolbar').append('<a id="lg-download" target="_blank" download class="lg-download lg-icon"></a>');
-        }
-
-        // Store the current scroll top value to scroll back after closing the gallery..
-        this.prevScrollTop = $(window).scrollTop();
-
-    };
-
-    // For fixed height gallery
-    Plugin.prototype.setTop = function() {
-        if (this.s.height !== '100%') {
-            var wH = $(window).height();
-            var top = (wH - parseInt(this.s.height, 10)) / 2;
-            var $lGallery = this.$outer.find('.lg');
-            if (wH >= parseInt(this.s.height, 10)) {
-                $lGallery.css('top', top + 'px');
-            } else {
-                $lGallery.css('top', '0px');
-            }
-        }
-    };
-
-    // Find css3 support
-    Plugin.prototype.doCss = function() {
-        // check for css animation support
-        var support = function() {
-            var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];
-            var root = document.documentElement;
-            var i = 0;
-            for (i = 0; i < transition.length; i++) {
-                if (transition[i] in root.style) {
-                    return true;
-                }
-            }
-        };
-
-        if (support()) {
-            return true;
-        }
-
-        return false;
-    };
-
-    /**
-     *  @desc Check the given src is video
-     *  @param {String} src
-     *  @return {Object} video type
-     *  Ex:{ youtube  :  ["//www.youtube.com/watch?v=c0asJgSyxcY", "c0asJgSyxcY"] }
-     */
-    Plugin.prototype.isVideo = function(src, index) {
-
-        var html;
-        if (this.s.dynamic) {
-            html = this.s.dynamicEl[index].html;
-        } else {
-            html = this.$items.eq(index).attr('data-html');
-        }
-
-        if (!src) {
-            if(html) {
-                return {
-                    html5: true
-                };
-            } else {
-                console.error('lightGallery :- data-src is not pvovided on slide item ' + (index + 1) + '. Please make sure the selector property is properly configured. More info - http://sachinchoolur.github.io/lightGallery/demos/html-markup.html');
-                return false;
-            }
-        }
-
-        var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i);
-        var vimeo = src.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i);
-        var dailymotion = src.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i);
-        var vk = src.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i);
-
-        if (youtube) {
-            return {
-                youtube: youtube
-            };
-        } else if (vimeo) {
-            return {
-                vimeo: vimeo
-            };
-        } else if (dailymotion) {
-            return {
-                dailymotion: dailymotion
-            };
-        } else if (vk) {
-            return {
-                vk: vk
-            };
-        }
-    };
-
-    /**
-     *  @desc Create image counter
-     *  Ex: 1/10
-     */
-    Plugin.prototype.counter = function() {
-        if (this.s.counter) {
-            $(this.s.appendCounterTo).append('<div id="lg-counter"><span id="lg-counter-current">' + (parseInt(this.index, 10) + 1) + '</span> / <span id="lg-counter-all">' + this.$items.length + '</span></div>');
-        }
-    };
-
-    /**
-     *  @desc add sub-html into the slide
-     *  @param {Number} index - index of the slide
-     */
-    Plugin.prototype.addHtml = function(index) {
-        var subHtml = null;
-        var subHtmlUrl;
-        var $currentEle;
-        if (this.s.dynamic) {
-            if (this.s.dynamicEl[index].subHtmlUrl) {
-                subHtmlUrl = this.s.dynamicEl[index].subHtmlUrl;
-            } else {
-                subHtml = this.s.dynamicEl[index].subHtml;
-            }
-        } else {
-            $currentEle = this.$items.eq(index);
-            if ($currentEle.attr('data-sub-html-url')) {
-                subHtmlUrl = $currentEle.attr('data-sub-html-url');
-            } else {
-                subHtml = $currentEle.attr('data-sub-html');
-                if (this.s.getCaptionFromTitleOrAlt && !subHtml) {
-                    subHtml = $currentEle.attr('title') || $currentEle.find('img').first().attr('alt');
-                }
-            }
-        }
-
-        if (!subHtmlUrl) {
-            if (typeof subHtml !== 'undefined' && subHtml !== null) {
-
-                // get first letter of subhtml
-                // if first letter starts with . or # get the html form the jQuery object
-                var fL = subHtml.substring(0, 1);
-                if (fL === '.' || fL === '#') {
-                    if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {
-                        subHtml = $currentEle.find(subHtml).html();
-                    } else {
-                        subHtml = $(subHtml).html();
-                    }
-                }
-            } else {
-                subHtml = '';
-            }
-        }
-
-        if (this.s.appendSubHtmlTo === '.lg-sub-html') {
-
-            if (subHtmlUrl) {
-                this.$outer.find(this.s.appendSubHtmlTo).load(subHtmlUrl);
-            } else {
-                this.$outer.find(this.s.appendSubHtmlTo).html(subHtml);
-            }
-
-        } else {
-
-            if (subHtmlUrl) {
-                this.$slide.eq(index).load(subHtmlUrl);
-            } else {
-                this.$slide.eq(index).append(subHtml);
-            }
-        }
-
-        // Add lg-empty-html class if title doesn't exist
-        if (typeof subHtml !== 'undefined' && subHtml !== null) {
-            if (subHtml === '') {
-                this.$outer.find(this.s.appendSubHtmlTo).addClass('lg-empty-html');
-            } else {
-                this.$outer.find(this.s.appendSubHtmlTo).removeClass('lg-empty-html');
-            }
-        }
-
-        this.$el.trigger('onAfterAppendSubHtml.lg', [index]);
-    };
-
-    /**
-     *  @desc Preload slides
-     *  @param {Number} index - index of the slide
-     */
-    Plugin.prototype.preload = function(index) {
-        var i = 1;
-        var j = 1;
-        for (i = 1; i <= this.s.preload; i++) {
-            if (i >= this.$items.length - index) {
-                break;
-            }
-
-            this.loadContent(index + i, false, 0);
-        }
-
-        for (j = 1; j <= this.s.preload; j++) {
-            if (index - j < 0) {
-                break;
-            }
-
-            this.loadContent(index - j, false, 0);
-        }
-    };
-
-    /**
-     *  @desc Load slide content into slide.
-     *  @param {Number} index - index of the slide.
-     *  @param {Boolean} rec - if true call loadcontent() function again.
-     *  @param {Boolean} delay - delay for adding complete class. it is 0 except first time.
-     */
-    Plugin.prototype.loadContent = function(index, rec, delay) {
-
-        var _this = this;
-        var _hasPoster = false;
-        var _$img;
-        var _src;
-        var _poster;
-        var _srcset;
-        var _sizes;
-        var _html;
-        var getResponsiveSrc = function(srcItms) {
-            var rsWidth = [];
-            var rsSrc = [];
-            for (var i = 0; i < srcItms.length; i++) {
-                var __src = srcItms[i].split(' ');
-
-                // Manage empty space
-                if (__src[0] === '') {
-                    __src.splice(0, 1);
-                }
-
-                rsSrc.push(__src[0]);
-                rsWidth.push(__src[1]);
-            }
-
-            var wWidth = $(window).width();
-            for (var j = 0; j < rsWidth.length; j++) {
-                if (parseInt(rsWidth[j], 10) > wWidth) {
-                    _src = rsSrc[j];
-                    break;
-                }
-            }
-        };
-
-        if (_this.s.dynamic) {
-
-            if (_this.s.dynamicEl[index].poster) {
-                _hasPoster = true;
-                _poster = _this.s.dynamicEl[index].poster;
-            }
-
-            _html = _this.s.dynamicEl[index].html;
-            _src = _this.s.dynamicEl[index].src;
-
-            if (_this.s.dynamicEl[index].responsive) {
-                var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');
-                getResponsiveSrc(srcDyItms);
-            }
-
-            _srcset = _this.s.dynamicEl[index].srcset;
-            _sizes = _this.s.dynamicEl[index].sizes;
-
-        } else {
-
-            if (_this.$items.eq(index).attr('data-poster')) {
-                _hasPoster = true;
-                _poster = _this.$items.eq(index).attr('data-poster');
-            }
-
-            _html = _this.$items.eq(index).attr('data-html');
-            _src = _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src');
-
-            if (_this.$items.eq(index).attr('data-responsive')) {
-                var srcItms = _this.$items.eq(index).attr('data-responsive').split(',');
-                getResponsiveSrc(srcItms);
-            }
-
-            _srcset = _this.$items.eq(index).attr('data-srcset');
-            _sizes = _this.$items.eq(index).attr('data-sizes');
-
-        }
-
-        //if (_src || _srcset || _sizes || _poster) {
-
-        var iframe = false;
-        if (_this.s.dynamic) {
-            if (_this.s.dynamicEl[index].iframe) {
-                iframe = true;
-            }
-        } else {
-            if (_this.$items.eq(index).attr('data-iframe') === 'true') {
-                iframe = true;
-            }
-        }
-
-        var _isVideo = _this.isVideo(_src, index);
-        if (!_this.$slide.eq(index).hasClass('lg-loaded')) {
-            if (iframe) {
-                _this.$slide.eq(index).prepend('<div class="lg-video-cont lg-has-iframe" style="max-width:' + _this.s.iframeMaxWidth + '"><div class="lg-video"><iframe class="lg-object" frameborder="0" src="' + _src + '"  allowfullscreen="true"></iframe></div></div>');
-            } else if (_hasPoster) {
-                var videoClass = '';
-                if (_isVideo && _isVideo.youtube) {
-                    videoClass = 'lg-has-youtube';
-                } else if (_isVideo && _isVideo.vimeo) {
-                    videoClass = 'lg-has-vimeo';
-                } else {
-                    videoClass = 'lg-has-html5';
-                }
-
-                _this.$slide.eq(index).prepend('<div class="lg-video-cont ' + videoClass + ' "><div class="lg-video"><span class="lg-video-play"></span><img class="lg-object lg-has-poster" src="' + _poster + '" /></div></div>');
-
-            } else if (_isVideo) {
-                _this.$slide.eq(index).prepend('<div class="lg-video-cont "><div class="lg-video"></div></div>');
-                _this.$el.trigger('hasVideo.lg', [index, _src, _html]);
-            } else {
-                _this.$slide.eq(index).prepend('<div class="lg-img-wrap"><img class="lg-object lg-image" src="' + _src + '" /></div>');
-            }
-
-            _this.$el.trigger('onAferAppendSlide.lg', [index]);
-
-            _$img = _this.$slide.eq(index).find('.lg-object');
-            if (_sizes) {
-                _$img.attr('sizes', _sizes);
-            }
-
-            if (_srcset) {
-                _$img.attr('srcset', _srcset);
-                try {
-                    picturefill({
-                        elements: [_$img[0]]
-                    });
-                } catch (e) {
-                    console.warn('lightGallery :- If you want srcset to be supported for older browser please include picturefil version 2 javascript library in your document.');
-                }
-            }
-
-            if (this.s.appendSubHtmlTo !== '.lg-sub-html') {
-                _this.addHtml(index);
-            }
-
-            _this.$slide.eq(index).addClass('lg-loaded');
-        }
-
-        _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() {
-
-            // For first time add some delay for displaying the start animation.
-            var _speed = 0;
-
-            // Do not change the delay value because it is required for zoom plugin.
-            // If gallery opened from direct url (hash) speed value should be 0
-            if (delay && !$('body').hasClass('lg-from-hash')) {
-                _speed = delay;
-            }
-
-            setTimeout(function() {
-                _this.$slide.eq(index).addClass('lg-complete');
-                _this.$el.trigger('onSlideItemLoad.lg', [index, delay || 0]);
-            }, _speed);
-
-        });
-
-        // @todo check load state for html5 videos
-        if (_isVideo && _isVideo.html5 && !_hasPoster) {
-            _this.$slide.eq(index).addClass('lg-complete');
-        }
-
-        if (rec === true) {
-            if (!_this.$slide.eq(index).hasClass('lg-complete')) {
-                _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() {
-                    _this.preload(index);
-                });
-            } else {
-                _this.preload(index);
-            }
-        }
-
-        //}
-    };
-
-    /**
-    *   @desc slide function for lightgallery
-        ** Slide() gets call on start
-        ** ** Set lg.on true once slide() function gets called.
-        ** Call loadContent() on slide() function inside setTimeout
-        ** ** On first slide we do not want any animation like slide of fade
-        ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately
-        ** ** Else loadContent() should wait for the transition to complete.
-        ** ** So set timeout s.speed + 50
-    <=> ** loadContent() will load slide content in to the particular slide
-        ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.
-        ** ** preload will execute only when the previous slide is fully loaded (images iframe)
-        ** ** avoid simultaneous image load
-    <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value
-        ** loadContent()  <====> Preload();
-
-    *   @param {Number} index - index of the slide
-    *   @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag
-    *   @param {Boolean} fromThumb - true if slide function called via thumbnail click
-    *   @param {String} direction - Direction of the slide(next/prev)
-    */
-    Plugin.prototype.slide = function(index, fromTouch, fromThumb, direction) {
-
-        var _prevIndex = this.$outer.find('.lg-current').index();
-        var _this = this;
-
-        // Prevent if multiple call
-        // Required for hsh plugin
-        if (_this.lGalleryOn && (_prevIndex === index)) {
-            return;
-        }
-
-        var _length = this.$slide.length;
-        var _time = _this.lGalleryOn ? this.s.speed : 0;
-
-        if (!_this.lgBusy) {
-
-            if (this.s.download) {
-                var _src;
-                if (_this.s.dynamic) {
-                    _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);
-                } else {
-                    _src = _this.$items.eq(index).attr('data-download-url') !== 'false' && (_this.$items.eq(index).attr('data-download-url') || _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src'));
-
-                }
-
-                if (_src) {
-                    $('#lg-download').attr('href', _src);
-                    _this.$outer.removeClass('lg-hide-download');
-                } else {
-                    _this.$outer.addClass('lg-hide-download');
-                }
-            }
-
-            this.$el.trigger('onBeforeSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);
-
-            _this.lgBusy = true;
-
-            clearTimeout(_this.hideBartimeout);
-
-            // Add title if this.s.appendSubHtmlTo === lg-sub-html
-            if (this.s.appendSubHtmlTo === '.lg-sub-html') {
-
-                // wait for slide animation to complete
-                setTimeout(function() {
-                    _this.addHtml(index);
-                }, _time);
-            }
-
-            this.arrowDisable(index);
-
-            if (!direction) {
-                if (index < _prevIndex) {
-                    direction = 'prev';
-                } else if (index > _prevIndex) {
-                    direction = 'next';
-                }
-            }
-
-            if (!fromTouch) {
-
-                // remove all transitions
-                _this.$outer.addClass('lg-no-trans');
-
-                this.$slide.removeClass('lg-prev-slide lg-next-slide');
-
-                if (direction === 'prev') {
-
-                    //prevslide
-                    this.$slide.eq(index).addClass('lg-prev-slide');
-                    this.$slide.eq(_prevIndex).addClass('lg-next-slide');
-                } else {
-
-                    // next slide
-                    this.$slide.eq(index).addClass('lg-next-slide');
-                    this.$slide.eq(_prevIndex).addClass('lg-prev-slide');
-                }
-
-                // give 50 ms for browser to add/remove class
-                setTimeout(function() {
-                    _this.$slide.removeClass('lg-current');
-
-                    //_this.$slide.eq(_prevIndex).removeClass('lg-current');
-                    _this.$slide.eq(index).addClass('lg-current');
-
-                    // reset all transitions
-                    _this.$outer.removeClass('lg-no-trans');
-                }, 50);
-            } else {
-
-                this.$slide.removeClass('lg-prev-slide lg-current lg-next-slide');
-                var touchPrev;
-                var touchNext;
-                if (_length > 2) {
-                    touchPrev = index - 1;
-                    touchNext = index + 1;
-
-                    if ((index === 0) && (_prevIndex === _length - 1)) {
-
-                        // next slide
-                        touchNext = 0;
-                        touchPrev = _length - 1;
-                    } else if ((index === _length - 1) && (_prevIndex === 0)) {
-
-                        // prev slide
-                        touchNext = 0;
-                        touchPrev = _length - 1;
-                    }
-
-                } else {
-                    touchPrev = 0;
-                    touchNext = 1;
-                }
-
-                if (direction === 'prev') {
-                    _this.$slide.eq(touchNext).addClass('lg-next-slide');
-                } else {
-                    _this.$slide.eq(touchPrev).addClass('lg-prev-slide');
-                }
-
-                _this.$slide.eq(index).addClass('lg-current');
-            }
-
-            if (_this.lGalleryOn) {
-                setTimeout(function() {
-                    _this.loadContent(index, true, 0);
-                }, this.s.speed + 50);
-
-                setTimeout(function() {
-                    _this.lgBusy = false;
-                    _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);
-                }, this.s.speed);
-
-            } else {
-                _this.loadContent(index, true, _this.s.backdropDuration);
-
-                _this.lgBusy = false;
-                _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);
-            }
-
-            _this.lGalleryOn = true;
-
-            if (this.s.counter) {
-                $('#lg-counter-current').text(index + 1);
-            }
-
-        }
-        _this.index = index;
-
-    };
-
-    /**
-     *  @desc Go to next slide
-     *  @param {Boolean} fromTouch - true if slide function called via touch event
-     */
-    Plugin.prototype.goToNextSlide = function(fromTouch) {
-        var _this = this;
-        var _loop = _this.s.loop;
-        if (fromTouch && _this.$slide.length < 3) {
-            _loop = false;
-        }
-
-        if (!_this.lgBusy) {
-            if ((_this.index + 1) < _this.$slide.length) {
-                _this.index++;
-                _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]);
-                _this.slide(_this.index, fromTouch, false, 'next');
-            } else {
-                if (_loop) {
-                    _this.index = 0;
-                    _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]);
-                    _this.slide(_this.index, fromTouch, false, 'next');
-                } else if (_this.s.slideEndAnimatoin && !fromTouch) {
-                    _this.$outer.addClass('lg-right-end');
-                    setTimeout(function() {
-                        _this.$outer.removeClass('lg-right-end');
-                    }, 400);
-                }
-            }
-        }
-    };
-
-    /**
-     *  @desc Go to previous slide
-     *  @param {Boolean} fromTouch - true if slide function called via touch event
-     */
-    Plugin.prototype.goToPrevSlide = function(fromTouch) {
-        var _this = this;
-        var _loop = _this.s.loop;
-        if (fromTouch && _this.$slide.length < 3) {
-            _loop = false;
-        }
-
-        if (!_this.lgBusy) {
-            if (_this.index > 0) {
-                _this.index--;
-                _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]);
-                _this.slide(_this.index, fromTouch, false, 'prev');
-            } else {
-                if (_loop) {
-                    _this.index = _this.$items.length - 1;
-                    _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]);
-                    _this.slide(_this.index, fromTouch, false, 'prev');
-                } else if (_this.s.slideEndAnimatoin && !fromTouch) {
-                    _this.$outer.addClass('lg-left-end');
-                    setTimeout(function() {
-                        _this.$outer.removeClass('lg-left-end');
-                    }, 400);
-                }
-            }
-        }
-    };
-
-    Plugin.prototype.keyPress = function() {
-        var _this = this;
-        if (this.$items.length > 1) {
-            $(window).on('keyup.lg', function(e) {
-                if (_this.$items.length > 1) {
-                    if (e.keyCode === 37) {
-                        e.preventDefault();
-                        _this.goToPrevSlide();
-                    }
-
-                    if (e.keyCode === 39) {
-                        e.preventDefault();
-                        _this.goToNextSlide();
-                    }
-                }
-            });
-        }
-
-        $(window).on('keydown.lg', function(e) {
-            if (_this.s.escKey === true && e.keyCode === 27) {
-                e.preventDefault();
-                if (!_this.$outer.hasClass('lg-thumb-open')) {
-                    _this.destroy();
-                } else {
-                    _this.$outer.removeClass('lg-thumb-open');
-                }
-            }
-        });
-    };
-
-    Plugin.prototype.arrow = function() {
-        var _this = this;
-        this.$outer.find('.lg-prev').on('click.lg', function() {
-            _this.goToPrevSlide();
-        });
-
-        this.$outer.find('.lg-next').on('click.lg', function() {
-            _this.goToNextSlide();
-        });
-    };
-
-    Plugin.prototype.arrowDisable = function(index) {
-
-        // Disable arrows if s.hideControlOnEnd is true
-        if (!this.s.loop && this.s.hideControlOnEnd) {
-            if ((index + 1) < this.$slide.length) {
-                this.$outer.find('.lg-next').removeAttr('disabled').removeClass('disabled');
-            } else {
-                this.$outer.find('.lg-next').attr('disabled', 'disabled').addClass('disabled');
-            }
-
-            if (index > 0) {
-                this.$outer.find('.lg-prev').removeAttr('disabled').removeClass('disabled');
-            } else {
-                this.$outer.find('.lg-prev').attr('disabled', 'disabled').addClass('disabled');
-            }
-        }
-    };
-
-    Plugin.prototype.setTranslate = function($el, xValue, yValue) {
-        // jQuery supports Automatic CSS prefixing since jQuery 1.8.0
-        if (this.s.useLeft) {
-            $el.css('left', xValue);
-        } else {
-            $el.css({
-                transform: 'translate3d(' + (xValue) + 'px, ' + yValue + 'px, 0px)'
-            });
-        }
-    };
-
-    Plugin.prototype.touchMove = function(startCoords, endCoords) {
-
-        var distance = endCoords - startCoords;
-
-        if (Math.abs(distance) > 15) {
-            // reset opacity and transition duration
-            this.$outer.addClass('lg-dragging');
-
-            // move current slide
-            this.setTranslate(this.$slide.eq(this.index), distance, 0);
-
-            // move next and prev slide with current slide
-            this.setTranslate($('.lg-prev-slide'), -this.$slide.eq(this.index).width() + distance, 0);
-            this.setTranslate($('.lg-next-slide'), this.$slide.eq(this.index).width() + distance, 0);
-        }
-    };
-
-    Plugin.prototype.touchEnd = function(distance) {
-        var _this = this;
-
-        // keep slide animation for any mode while dragg/swipe
-        if (_this.s.mode !== 'lg-slide') {
-            _this.$outer.addClass('lg-slide');
-        }
-
-        this.$slide.not('.lg-current, .lg-prev-slide, .lg-next-slide').css('opacity', '0');
-
-        // set transition duration
-        setTimeout(function() {
-            _this.$outer.removeClass('lg-dragging');
-            if ((distance < 0) && (Math.abs(distance) > _this.s.swipeThreshold)) {
-                _this.goToNextSlide(true);
-            } else if ((distance > 0) && (Math.abs(distance) > _this.s.swipeThreshold)) {
-                _this.goToPrevSlide(true);
-            } else if (Math.abs(distance) < 5) {
-
-                // Trigger click if distance is less than 5 pix
-                _this.$el.trigger('onSlideClick.lg');
-            }
-
-            _this.$slide.removeAttr('style');
-        });
-
-        // remove slide class once drag/swipe is completed if mode is not slide
-        setTimeout(function() {
-            if (!_this.$outer.hasClass('lg-dragging') && _this.s.mode !== 'lg-slide') {
-                _this.$outer.removeClass('lg-slide');
-            }
-        }, _this.s.speed + 100);
-
-    };
-
-    Plugin.prototype.enableSwipe = function() {
-        var _this = this;
-        var startCoords = 0;
-        var endCoords = 0;
-        var isMoved = false;
-
-        if (_this.s.enableSwipe && _this.doCss()) {
-
-            _this.$slide.on('touchstart.lg', function(e) {
-                if (!_this.$outer.hasClass('lg-zoomed') && !_this.lgBusy) {
-                    e.preventDefault();
-                    _this.manageSwipeClass();
-                    startCoords = e.originalEvent.targetTouches[0].pageX;
-                }
-            });
-
-            _this.$slide.on('touchmove.lg', function(e) {
-                if (!_this.$outer.hasClass('lg-zoomed')) {
-                    e.preventDefault();
-                    endCoords = e.originalEvent.targetTouches[0].pageX;
-                    _this.touchMove(startCoords, endCoords);
-                    isMoved = true;
-                }
-            });
-
-            _this.$slide.on('touchend.lg', function() {
-                if (!_this.$outer.hasClass('lg-zoomed')) {
-                    if (isMoved) {
-                        isMoved = false;
-                        _this.touchEnd(endCoords - startCoords);
-                    } else {
-                        _this.$el.trigger('onSlideClick.lg');
-                    }
-                }
-            });
-        }
-
-    };
-
-    Plugin.prototype.enableDrag = function() {
-        var _this = this;
-        var startCoords = 0;
-        var endCoords = 0;
-        var isDraging = false;
-        var isMoved = false;
-        if (_this.s.enableDrag && _this.doCss()) {
-            _this.$slide.on('mousedown.lg', function(e) {
-                if (!_this.$outer.hasClass('lg-zoomed') && !_this.lgBusy && !$(e.target).text().trim()) {
-                    e.preventDefault();
-                    _this.manageSwipeClass();
-                    startCoords = e.pageX;
-                    isDraging = true;
-
-                    // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
-                    _this.$outer.scrollLeft += 1;
-                    _this.$outer.scrollLeft -= 1;
-
-                    // *
-
-                    _this.$outer.removeClass('lg-grab').addClass('lg-grabbing');
-
-                    _this.$el.trigger('onDragstart.lg');
-                }
-            });
-
-            $(window).on('mousemove.lg', function(e) {
-                if (isDraging) {
-                    isMoved = true;
-                    endCoords = e.pageX;
-                    _this.touchMove(startCoords, endCoords);
-                    _this.$el.trigger('onDragmove.lg');
-                }
-            });
-
-            $(window).on('mouseup.lg', function(e) {
-                if (isMoved) {
-                    isMoved = false;
-                    _this.touchEnd(endCoords - startCoords);
-                    _this.$el.trigger('onDragend.lg');
-                } else if ($(e.target).hasClass('lg-object') || $(e.target).hasClass('lg-video-play')) {
-                    _this.$el.trigger('onSlideClick.lg');
-                }
-
-                // Prevent execution on click
-                if (isDraging) {
-                    isDraging = false;
-                    _this.$outer.removeClass('lg-grabbing').addClass('lg-grab');
-                }
-            });
-
-        }
-    };
-
-    Plugin.prototype.manageSwipeClass = function() {
-        var _touchNext = this.index + 1;
-        var _touchPrev = this.index - 1;
-        if (this.s.loop && this.$slide.length > 2) {
-            if (this.index === 0) {
-                _touchPrev = this.$slide.length - 1;
-            } else if (this.index === this.$slide.length - 1) {
-                _touchNext = 0;
-            }
-        }
-
-        this.$slide.removeClass('lg-next-slide lg-prev-slide');
-        if (_touchPrev > -1) {
-            this.$slide.eq(_touchPrev).addClass('lg-prev-slide');
-        }
-
-        this.$slide.eq(_touchNext).addClass('lg-next-slide');
-    };
-
-    Plugin.prototype.mousewheel = function() {
-        var _this = this;
-        _this.$outer.on('mousewheel.lg', function(e) {
-
-            if (!e.deltaY) {
-                return;
-            }
-
-            if (e.deltaY > 0) {
-                _this.goToPrevSlide();
-            } else {
-                _this.goToNextSlide();
-            }
-
-            e.preventDefault();
-        });
-
-    };
-
-    Plugin.prototype.closeGallery = function() {
-
-        var _this = this;
-        var mousedown = false;
-        this.$outer.find('.lg-close').on('click.lg', function() {
-            _this.destroy();
-        });
-
-        if (_this.s.closable) {
-
-            // If you drag the slide and release outside gallery gets close on chrome
-            // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer
-            _this.$outer.on('mousedown.lg', function(e) {
-
-                if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap')) {
-                    mousedown = true;
-                } else {
-                    mousedown = false;
-                }
-
-            });
-            
-            _this.$outer.on('mousemove.lg', function() {
-                mousedown = false;
-            });
-
-            _this.$outer.on('mouseup.lg', function(e) {
-
-                if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap') && mousedown) {
-                    if (!_this.$outer.hasClass('lg-dragging')) {
-                        _this.destroy();
-                    }
-                }
-
-            });
-
-        }
-
-    };
-
-    Plugin.prototype.destroy = function(d) {
-
-        var _this = this;
-
-        if (!d) {
-            _this.$el.trigger('onBeforeClose.lg');
-            $(window).scrollTop(_this.prevScrollTop);
-        }
-
-
-        /**
-         * if d is false or undefined destroy will only close the gallery
-         * plugins instance remains with the element
-         *
-         * if d is true destroy will completely remove the plugin
-         */
-
-        if (d) {
-            if (!_this.s.dynamic) {
-                // only when not using dynamic mode is $items a jquery collection
-                this.$items.off('click.lg click.lgcustom');
-            }
-
-            $.removeData(_this.el, 'lightGallery');
-        }
-
-        // Unbind all events added by lightGallery
-        this.$el.off('.lg.tm');
-
-        // Distroy all lightGallery modules
-        $.each($.fn.lightGallery.modules, function(key) {
-            if (_this.modules[key]) {
-                _this.modules[key].destroy();
-            }
-        });
-
-        this.lGalleryOn = false;
-
-        clearTimeout(_this.hideBartimeout);
-        this.hideBartimeout = false;
-        $(window).off('.lg');
-        $('body').removeClass('lg-on lg-from-hash');
-
-        if (_this.$outer) {
-            _this.$outer.removeClass('lg-visible');
-        }
-
-        $('.lg-backdrop').removeClass('in');
-
-        setTimeout(function() {
-            if (_this.$outer) {
-                _this.$outer.remove();
-            }
-
-            $('.lg-backdrop').remove();
-
-            if (!d) {
-                _this.$el.trigger('onCloseAfter.lg');
-            }
-
-        }, _this.s.backdropDuration + 50);
-    };
-
-    $.fn.lightGallery = function(options) {
-        return this.each(function() {
-            if (!$.data(this, 'lightGallery')) {
-                $.data(this, 'lightGallery', new Plugin(this, options));
-            } else {
-                try {
-                    $(this).data('lightGallery').init();
-                } catch (err) {
-                    console.error('lightGallery has not initiated properly');
-                }
-            }
-        });
-    };
-
-    $.fn.lightGallery.modules = {};
-
-})();
-
-
-}));
diff --git a/resources/lightgallery/js/lightgallery.min.js b/resources/lightgallery/js/lightgallery.min.js
deleted file mode 100644
index d8c03de..0000000
--- a/resources/lightgallery/js/lightgallery.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! lightgallery - v1.6.12 - 2019-02-19
-* http://sachinchoolur.github.io/lightGallery/
-* Copyright (c) 2019 Sachin N; Licensed GPLv3 */
-!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){!function(){"use strict";function b(b,d){if(this.el=b,this.$el=a(b),this.s=a.extend({},c,d),this.s.dynamic&&"undefined"!==this.s.dynamicEl&&this.s.dynamicEl.constructor===Array&&!this.s.dynamicEl.length)throw"When using dynamic mode, you must also define dynamicEl as an Array.";return this.modules={},this.lGalleryOn=!1,this.lgBusy=!1,this.hideBartimeout=!1,this.isTouch="ontouchstart"in document.documentElement,this.s.slideEndAnimatoin&&(this.s.hideControlOnEnd=!1),this.s.dynamic?this.$items=this.s.dynamicEl:"this"===this.s.selector?this.$items=this.$el:""!==this.s.selector?this.s.selectWithin?this.$items=a(this.s.selectWithin).find(this.s.selector):this.$items=this.$el.find(a(this.s.selector)):this.$items=this.$el.children(),this.$slide="",this.$outer="",this.init(),this}var c={mode:"lg-slide",cssEasing:"ease",easing:"linear",speed:600,height:"100%",width:"100%",addClass:"",startClass:"lg-start-zoom",backdropDuration:150,hideBarsDelay:6e3,useLeft:!1,closable:!0,loop:!0,escKey:!0,keyPress:!0,controls:!0,slideEndAnimatoin:!0,hideControlOnEnd:!1,mousewheel:!0,getCaptionFromTitleOrAlt:!0,appendSubHtmlTo:".lg-sub-html",subHtmlSelectorRelative:!1,preload:1,showAfterLoad:!0,selector:"",selectWithin:"",nextHtml:"",prevHtml:"",index:!1,iframeMaxWidth:"100%",download:!0,counter:!0,appendCounterTo:".lg-toolbar",swipeThreshold:50,enableSwipe:!0,enableDrag:!0,dynamic:!1,dynamicEl:[],galleryId:1};b.prototype.init=function(){var b=this;b.s.preload>b.$items.length&&(b.s.preload=b.$items.length);var c=window.location.hash;c.indexOf("lg="+this.s.galleryId)>0&&(b.index=parseInt(c.split("&slide=")[1],10),a("body").addClass("lg-from-hash"),a("body").hasClass("lg-on")||(setTimeout(function(){b.build(b.index)}),a("body").addClass("lg-on"))),b.s.dynamic?(b.$el.trigger("onBeforeOpen.lg"),b.index=b.s.index||0,a("body").hasClass("lg-on")||setTimeout(function(){b.build(b.index),a("body").addClass("lg-on")})):b.$items.on("click.lgcustom",function(c){try{c.preventDefault(),c.preventDefault()}catch(a){c.returnValue=!1}b.$el.trigger("onBeforeOpen.lg"),b.index=b.s.index||b.$items.index(this),a("body").hasClass("lg-on")||(b.build(b.index),a("body").addClass("lg-on"))})},b.prototype.build=function(b){var c=this;c.structure(),a.each(a.fn.lightGallery.modules,function(b){c.modules[b]=new a.fn.lightGallery.modules[b](c.el)}),c.slide(b,!1,!1,!1),c.s.keyPress&&c.keyPress(),c.$items.length>1?(c.arrow(),setTimeout(function(){c.enableDrag(),c.enableSwipe()},50),c.s.mousewheel&&c.mousewheel()):c.$slide.on("click.lg",function(){c.$el.trigger("onSlideClick.lg")}),c.counter(),c.closeGallery(),c.$el.trigger("onAfterOpen.lg"),c.$outer.on("mousemove.lg click.lg touchstart.lg",function(){c.$outer.removeClass("lg-hide-items"),clearTimeout(c.hideBartimeout),c.hideBartimeout=setTimeout(function(){c.$outer.addClass("lg-hide-items")},c.s.hideBarsDelay)}),c.$outer.trigger("mousemove.lg")},b.prototype.structure=function(){var b,c="",d="",e=0,f="",g=this;for(a("body").append('<div class="lg-backdrop"></div>'),a(".lg-backdrop").css("transition-duration",this.s.backdropDuration+"ms"),e=0;e<this.$items.length;e++)c+='<div class="lg-item"></div>';if(this.s.controls&&this.$items.length>1&&(d='<div class="lg-actions"><button class="lg-prev lg-icon">'+this.s.prevHtml+'</button><button class="lg-next lg-icon">'+this.s.nextHtml+"</button></div>"),".lg-sub-html"===this.s.appendSubHtmlTo&&(f='<div class="lg-sub-html"></div>'),b='<div class="lg-outer '+this.s.addClass+" "+this.s.startClass+'"><div class="lg" style="width:'+this.s.width+"; height:"+this.s.height+'"><div class="lg-inner">'+c+'</div><div class="lg-toolbar lg-group"><span class="lg-close lg-icon"></span></div>'+d+f+"</div></div>",a("body").append(b),this.$outer=a(".lg-outer"),this.$slide=this.$outer.find(".lg-item"),this.s.useLeft?(this.$outer.addClass("lg-use-left"),this.s.mode="lg-slide"):this.$outer.addClass("lg-use-css3"),g.setTop(),a(window).on("resize.lg orientationchange.lg",function(){setTimeout(function(){g.setTop()},100)}),this.$slide.eq(this.index).addClass("lg-current"),this.doCss()?this.$outer.addClass("lg-css3"):(this.$outer.addClass("lg-css"),this.s.speed=0),this.$outer.addClass(this.s.mode),this.s.enableDrag&&this.$items.length>1&&this.$outer.addClass("lg-grab"),this.s.showAfterLoad&&this.$outer.addClass("lg-show-after-load"),this.doCss()){var h=this.$outer.find(".lg-inner");h.css("transition-timing-function",this.s.cssEasing),h.css("transition-duration",this.s.speed+"ms")}setTimeout(function(){a(".lg-backdrop").addClass("in")}),setTimeout(function(){g.$outer.addClass("lg-visible")},this.s.backdropDuration),this.s.download&&this.$outer.find(".lg-toolbar").append('<a id="lg-download" target="_blank" download class="lg-download lg-icon"></a>'),this.prevScrollTop=a(window).scrollTop()},b.prototype.setTop=function(){if("100%"!==this.s.height){var b=a(window).height(),c=(b-parseInt(this.s.height,10))/2,d=this.$outer.find(".lg");b>=parseInt(this.s.height,10)?d.css("top",c+"px"):d.css("top","0px")}},b.prototype.doCss=function(){return!!function(){var a=["transition","MozTransition","WebkitTransition","OTransition","msTransition","KhtmlTransition"],b=document.documentElement,c=0;for(c=0;c<a.length;c++)if(a[c]in b.style)return!0}()},b.prototype.isVideo=function(a,b){var c;if(c=this.s.dynamic?this.s.dynamicEl[b].html:this.$items.eq(b).attr("data-html"),!a)return c?{html5:!0}:(console.error("lightGallery :- data-src is not pvovided on slide item "+(b+1)+". Please make sure the selector property is properly configured. More info - http://sachinchoolur.github.io/lightGallery/demos/html-markup.html"),!1);var d=a.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)/i),e=a.match(/\/\/(?:www\.)?vimeo.com\/([0-9a-z\-_]+)/i),f=a.match(/\/\/(?:www\.)?dai.ly\/([0-9a-z\-_]+)/i),g=a.match(/\/\/(?:www\.)?(?:vk\.com|vkontakte\.ru)\/(?:video_ext\.php\?)(.*)/i);return d?{youtube:d}:e?{vimeo:e}:f?{dailymotion:f}:g?{vk:g}:void 0},b.prototype.counter=function(){this.s.counter&&a(this.s.appendCounterTo).append('<div id="lg-counter"><span id="lg-counter-current">'+(parseInt(this.index,10)+1)+'</span> / <span id="lg-counter-all">'+this.$items.length+"</span></div>")},b.prototype.addHtml=function(b){var c,d,e=null;if(this.s.dynamic?this.s.dynamicEl[b].subHtmlUrl?c=this.s.dynamicEl[b].subHtmlUrl:e=this.s.dynamicEl[b].subHtml:(d=this.$items.eq(b),d.attr("data-sub-html-url")?c=d.attr("data-sub-html-url"):(e=d.attr("data-sub-html"),this.s.getCaptionFromTitleOrAlt&&!e&&(e=d.attr("title")||d.find("img").first().attr("alt")))),!c)if(void 0!==e&&null!==e){var f=e.substring(0,1);"."!==f&&"#"!==f||(e=this.s.subHtmlSelectorRelative&&!this.s.dynamic?d.find(e).html():a(e).html())}else e="";".lg-sub-html"===this.s.appendSubHtmlTo?c?this.$outer.find(this.s.appendSubHtmlTo).load(c):this.$outer.find(this.s.appendSubHtmlTo).html(e):c?this.$slide.eq(b).load(c):this.$slide.eq(b).append(e),void 0!==e&&null!==e&&(""===e?this.$outer.find(this.s.appendSubHtmlTo).addClass("lg-empty-html"):this.$outer.find(this.s.appendSubHtmlTo).removeClass("lg-empty-html")),this.$el.trigger("onAfterAppendSubHtml.lg",[b])},b.prototype.preload=function(a){var b=1,c=1;for(b=1;b<=this.s.preload&&!(b>=this.$items.length-a);b++)this.loadContent(a+b,!1,0);for(c=1;c<=this.s.preload&&!(a-c<0);c++)this.loadContent(a-c,!1,0)},b.prototype.loadContent=function(b,c,d){var e,f,g,h,i,j,k=this,l=!1,m=function(b){for(var c=[],d=[],e=0;e<b.length;e++){var g=b[e].split(" ");""===g[0]&&g.splice(0,1),d.push(g[0]),c.push(g[1])}for(var h=a(window).width(),i=0;i<c.length;i++)if(parseInt(c[i],10)>h){f=d[i];break}};if(k.s.dynamic){if(k.s.dynamicEl[b].poster&&(l=!0,g=k.s.dynamicEl[b].poster),j=k.s.dynamicEl[b].html,f=k.s.dynamicEl[b].src,k.s.dynamicEl[b].responsive){m(k.s.dynamicEl[b].responsive.split(","))}h=k.s.dynamicEl[b].srcset,i=k.s.dynamicEl[b].sizes}else{if(k.$items.eq(b).attr("data-poster")&&(l=!0,g=k.$items.eq(b).attr("data-poster")),j=k.$items.eq(b).attr("data-html"),f=k.$items.eq(b).attr("href")||k.$items.eq(b).attr("data-src"),k.$items.eq(b).attr("data-responsive")){m(k.$items.eq(b).attr("data-responsive").split(","))}h=k.$items.eq(b).attr("data-srcset"),i=k.$items.eq(b).attr("data-sizes")}var n=!1;k.s.dynamic?k.s.dynamicEl[b].iframe&&(n=!0):"true"===k.$items.eq(b).attr("data-iframe")&&(n=!0);var o=k.isVideo(f,b);if(!k.$slide.eq(b).hasClass("lg-loaded")){if(n)k.$slide.eq(b).prepend('<div class="lg-video-cont lg-has-iframe" style="max-width:'+k.s.iframeMaxWidth+'"><div class="lg-video"><iframe class="lg-object" frameborder="0" src="'+f+'"  allowfullscreen="true"></iframe></div></div>');else if(l){var p="";p=o&&o.youtube?"lg-has-youtube":o&&o.vimeo?"lg-has-vimeo":"lg-has-html5",k.$slide.eq(b).prepend('<div class="lg-video-cont '+p+' "><div class="lg-video"><span class="lg-video-play"></span><img class="lg-object lg-has-poster" src="'+g+'" /></div></div>')}else o?(k.$slide.eq(b).prepend('<div class="lg-video-cont "><div class="lg-video"></div></div>'),k.$el.trigger("hasVideo.lg",[b,f,j])):k.$slide.eq(b).prepend('<div class="lg-img-wrap"><img class="lg-object lg-image" src="'+f+'" /></div>');if(k.$el.trigger("onAferAppendSlide.lg",[b]),e=k.$slide.eq(b).find(".lg-object"),i&&e.attr("sizes",i),h){e.attr("srcset",h);try{picturefill({elements:[e[0]]})}catch(a){console.warn("lightGallery :- If you want srcset to be supported for older browser please include picturefil version 2 javascript library in your document.")}}".lg-sub-html"!==this.s.appendSubHtmlTo&&k.addHtml(b),k.$slide.eq(b).addClass("lg-loaded")}k.$slide.eq(b).find(".lg-object").on("load.lg error.lg",function(){var c=0;d&&!a("body").hasClass("lg-from-hash")&&(c=d),setTimeout(function(){k.$slide.eq(b).addClass("lg-complete"),k.$el.trigger("onSlideItemLoad.lg",[b,d||0])},c)}),o&&o.html5&&!l&&k.$slide.eq(b).addClass("lg-complete"),!0===c&&(k.$slide.eq(b).hasClass("lg-complete")?k.preload(b):k.$slide.eq(b).find(".lg-object").on("load.lg error.lg",function(){k.preload(b)}))},b.prototype.slide=function(b,c,d,e){var f=this.$outer.find(".lg-current").index(),g=this;if(!g.lGalleryOn||f!==b){var h=this.$slide.length,i=g.lGalleryOn?this.s.speed:0;if(!g.lgBusy){if(this.s.download){var j;j=g.s.dynamic?!1!==g.s.dynamicEl[b].downloadUrl&&(g.s.dynamicEl[b].downloadUrl||g.s.dynamicEl[b].src):"false"!==g.$items.eq(b).attr("data-download-url")&&(g.$items.eq(b).attr("data-download-url")||g.$items.eq(b).attr("href")||g.$items.eq(b).attr("data-src")),j?(a("#lg-download").attr("href",j),g.$outer.removeClass("lg-hide-download")):g.$outer.addClass("lg-hide-download")}if(this.$el.trigger("onBeforeSlide.lg",[f,b,c,d]),g.lgBusy=!0,clearTimeout(g.hideBartimeout),".lg-sub-html"===this.s.appendSubHtmlTo&&setTimeout(function(){g.addHtml(b)},i),this.arrowDisable(b),e||(b<f?e="prev":b>f&&(e="next")),c){this.$slide.removeClass("lg-prev-slide lg-current lg-next-slide");var k,l;h>2?(k=b-1,l=b+1,0===b&&f===h-1?(l=0,k=h-1):b===h-1&&0===f&&(l=0,k=h-1)):(k=0,l=1),"prev"===e?g.$slide.eq(l).addClass("lg-next-slide"):g.$slide.eq(k).addClass("lg-prev-slide"),g.$slide.eq(b).addClass("lg-current")}else g.$outer.addClass("lg-no-trans"),this.$slide.removeClass("lg-prev-slide lg-next-slide"),"prev"===e?(this.$slide.eq(b).addClass("lg-prev-slide"),this.$slide.eq(f).addClass("lg-next-slide")):(this.$slide.eq(b).addClass("lg-next-slide"),this.$slide.eq(f).addClass("lg-prev-slide")),setTimeout(function(){g.$slide.removeClass("lg-current"),g.$slide.eq(b).addClass("lg-current"),g.$outer.removeClass("lg-no-trans")},50);g.lGalleryOn?(setTimeout(function(){g.loadContent(b,!0,0)},this.s.speed+50),setTimeout(function(){g.lgBusy=!1,g.$el.trigger("onAfterSlide.lg",[f,b,c,d])},this.s.speed)):(g.loadContent(b,!0,g.s.backdropDuration),g.lgBusy=!1,g.$el.trigger("onAfterSlide.lg",[f,b,c,d])),g.lGalleryOn=!0,this.s.counter&&a("#lg-counter-current").text(b+1)}g.index=b}},b.prototype.goToNextSlide=function(a){var b=this,c=b.s.loop;a&&b.$slide.length<3&&(c=!1),b.lgBusy||(b.index+1<b.$slide.length?(b.index++,b.$el.trigger("onBeforeNextSlide.lg",[b.index]),b.slide(b.index,a,!1,"next")):c?(b.index=0,b.$el.trigger("onBeforeNextSlide.lg",[b.index]),b.slide(b.index,a,!1,"next")):b.s.slideEndAnimatoin&&!a&&(b.$outer.addClass("lg-right-end"),setTimeout(function(){b.$outer.removeClass("lg-right-end")},400)))},b.prototype.goToPrevSlide=function(a){var b=this,c=b.s.loop;a&&b.$slide.length<3&&(c=!1),b.lgBusy||(b.index>0?(b.index--,b.$el.trigger("onBeforePrevSlide.lg",[b.index,a]),b.slide(b.index,a,!1,"prev")):c?(b.index=b.$items.length-1,b.$el.trigger("onBeforePrevSlide.lg",[b.index,a]),b.slide(b.index,a,!1,"prev")):b.s.slideEndAnimatoin&&!a&&(b.$outer.addClass("lg-left-end"),setTimeout(function(){b.$outer.removeClass("lg-left-end")},400)))},b.prototype.keyPress=function(){var b=this;this.$items.length>1&&a(window).on("keyup.lg",function(a){b.$items.length>1&&(37===a.keyCode&&(a.preventDefault(),b.goToPrevSlide()),39===a.keyCode&&(a.preventDefault(),b.goToNextSlide()))}),a(window).on("keydown.lg",function(a){!0===b.s.escKey&&27===a.keyCode&&(a.preventDefault(),b.$outer.hasClass("lg-thumb-open")?b.$outer.removeClass("lg-thumb-open"):b.destroy())})},b.prototype.arrow=function(){var a=this;this.$outer.find(".lg-prev").on("click.lg",function(){a.goToPrevSlide()}),this.$outer.find(".lg-next").on("click.lg",function(){a.goToNextSlide()})},b.prototype.arrowDisable=function(a){!this.s.loop&&this.s.hideControlOnEnd&&(a+1<this.$slide.length?this.$outer.find(".lg-next").removeAttr("disabled").removeClass("disabled"):this.$outer.find(".lg-next").attr("disabled","disabled").addClass("disabled"),a>0?this.$outer.find(".lg-prev").removeAttr("disabled").removeClass("disabled"):this.$outer.find(".lg-prev").attr("disabled","disabled").addClass("disabled"))},b.prototype.setTranslate=function(a,b,c){this.s.useLeft?a.css("left",b):a.css({transform:"translate3d("+b+"px, "+c+"px, 0px)"})},b.prototype.touchMove=function(b,c){var d=c-b;Math.abs(d)>15&&(this.$outer.addClass("lg-dragging"),this.setTranslate(this.$slide.eq(this.index),d,0),this.setTranslate(a(".lg-prev-slide"),-this.$slide.eq(this.index).width()+d,0),this.setTranslate(a(".lg-next-slide"),this.$slide.eq(this.index).width()+d,0))},b.prototype.touchEnd=function(a){var b=this;"lg-slide"!==b.s.mode&&b.$outer.addClass("lg-slide"),this.$slide.not(".lg-current, .lg-prev-slide, .lg-next-slide").css("opacity","0"),setTimeout(function(){b.$outer.removeClass("lg-dragging"),a<0&&Math.abs(a)>b.s.swipeThreshold?b.goToNextSlide(!0):a>0&&Math.abs(a)>b.s.swipeThreshold?b.goToPrevSlide(!0):Math.abs(a)<5&&b.$el.trigger("onSlideClick.lg"),b.$slide.removeAttr("style")}),setTimeout(function(){b.$outer.hasClass("lg-dragging")||"lg-slide"===b.s.mode||b.$outer.removeClass("lg-slide")},b.s.speed+100)},b.prototype.enableSwipe=function(){var a=this,b=0,c=0,d=!1;a.s.enableSwipe&&a.doCss()&&(a.$slide.on("touchstart.lg",function(c){a.$outer.hasClass("lg-zoomed")||a.lgBusy||(c.preventDefault(),a.manageSwipeClass(),b=c.originalEvent.targetTouches[0].pageX)}),a.$slide.on("touchmove.lg",function(e){a.$outer.hasClass("lg-zoomed")||(e.preventDefault(),c=e.originalEvent.targetTouches[0].pageX,a.touchMove(b,c),d=!0)}),a.$slide.on("touchend.lg",function(){a.$outer.hasClass("lg-zoomed")||(d?(d=!1,a.touchEnd(c-b)):a.$el.trigger("onSlideClick.lg"))}))},b.prototype.enableDrag=function(){var b=this,c=0,d=0,e=!1,f=!1;b.s.enableDrag&&b.doCss()&&(b.$slide.on("mousedown.lg",function(d){b.$outer.hasClass("lg-zoomed")||b.lgBusy||a(d.target).text().trim()||(d.preventDefault(),b.manageSwipeClass(),c=d.pageX,e=!0,b.$outer.scrollLeft+=1,b.$outer.scrollLeft-=1,b.$outer.removeClass("lg-grab").addClass("lg-grabbing"),b.$el.trigger("onDragstart.lg"))}),a(window).on("mousemove.lg",function(a){e&&(f=!0,d=a.pageX,b.touchMove(c,d),b.$el.trigger("onDragmove.lg"))}),a(window).on("mouseup.lg",function(g){f?(f=!1,b.touchEnd(d-c),b.$el.trigger("onDragend.lg")):(a(g.target).hasClass("lg-object")||a(g.target).hasClass("lg-video-play"))&&b.$el.trigger("onSlideClick.lg"),e&&(e=!1,b.$outer.removeClass("lg-grabbing").addClass("lg-grab"))}))},b.prototype.manageSwipeClass=function(){var a=this.index+1,b=this.index-1;this.s.loop&&this.$slide.length>2&&(0===this.index?b=this.$slide.length-1:this.index===this.$slide.length-1&&(a=0)),this.$slide.removeClass("lg-next-slide lg-prev-slide"),b>-1&&this.$slide.eq(b).addClass("lg-prev-slide"),this.$slide.eq(a).addClass("lg-next-slide")},b.prototype.mousewheel=function(){var a=this;a.$outer.on("mousewheel.lg",function(b){b.deltaY&&(b.deltaY>0?a.goToPrevSlide():a.goToNextSlide(),b.preventDefault())})},b.prototype.closeGallery=function(){var b=this,c=!1;this.$outer.find(".lg-close").on("click.lg",function(){b.destroy()}),b.s.closable&&(b.$outer.on("mousedown.lg",function(b){c=!!(a(b.target).is(".lg-outer")||a(b.target).is(".lg-item ")||a(b.target).is(".lg-img-wrap"))}),b.$outer.on("mousemove.lg",function(){c=!1}),b.$outer.on("mouseup.lg",function(d){(a(d.target).is(".lg-outer")||a(d.target).is(".lg-item ")||a(d.target).is(".lg-img-wrap")&&c)&&(b.$outer.hasClass("lg-dragging")||b.destroy())}))},b.prototype.destroy=function(b){var c=this;b||(c.$el.trigger("onBeforeClose.lg"),a(window).scrollTop(c.prevScrollTop)),b&&(c.s.dynamic||this.$items.off("click.lg click.lgcustom"),a.removeData(c.el,"lightGallery")),this.$el.off(".lg.tm"),a.each(a.fn.lightGallery.modules,function(a){c.modules[a]&&c.modules[a].destroy()}),this.lGalleryOn=!1,clearTimeout(c.hideBartimeout),this.hideBartimeout=!1,a(window).off(".lg"),a("body").removeClass("lg-on lg-from-hash"),c.$outer&&c.$outer.removeClass("lg-visible"),a(".lg-backdrop").removeClass("in"),setTimeout(function(){c.$outer&&c.$outer.remove(),a(".lg-backdrop").remove(),b||c.$el.trigger("onCloseAfter.lg")},c.s.backdropDuration+50)},a.fn.lightGallery=function(c){return this.each(function(){if(a.data(this,"lightGallery"))try{a(this).data("lightGallery").init()}catch(a){console.error("lightGallery has not initiated properly")}else a.data(this,"lightGallery",new b(this,c))})},a.fn.lightGallery.modules={}}()});
\ No newline at end of file
diff --git a/resources/lightgallery/lightgallery.es5.js b/resources/lightgallery/lightgallery.es5.js
new file mode 100644
index 0000000..7be0f79
--- /dev/null
+++ b/resources/lightgallery/lightgallery.es5.js
@@ -0,0 +1,2730 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+function __spreadArrays() {
+    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+    for (var r = Array(s), k = 0, i = 0; i < il; i++)
+        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+            r[k] = a[j];
+    return r;
+}
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var lightGalleryCoreSettings = {
+    mode: 'lg-slide',
+    easing: 'ease',
+    speed: 400,
+    licenseKey: '0000-0000-000-0000',
+    height: '100%',
+    width: '100%',
+    addClass: '',
+    startClass: 'lg-start-zoom',
+    backdropDuration: 300,
+    container: '',
+    startAnimationDuration: 400,
+    zoomFromOrigin: true,
+    hideBarsDelay: 0,
+    showBarsAfter: 10000,
+    slideDelay: 0,
+    supportLegacyBrowser: true,
+    allowMediaOverlap: false,
+    videoMaxSize: '1280-720',
+    loadYouTubePoster: true,
+    defaultCaptionHeight: 0,
+    ariaLabelledby: '',
+    ariaDescribedby: '',
+    resetScrollPosition: true,
+    hideScrollbar: false,
+    closable: true,
+    swipeToClose: true,
+    closeOnTap: true,
+    showCloseIcon: true,
+    showMaximizeIcon: false,
+    loop: true,
+    escKey: true,
+    keyPress: true,
+    trapFocus: true,
+    controls: true,
+    slideEndAnimation: true,
+    hideControlOnEnd: false,
+    mousewheel: false,
+    getCaptionFromTitleOrAlt: true,
+    appendSubHtmlTo: '.lg-sub-html',
+    subHtmlSelectorRelative: false,
+    preload: 2,
+    numberOfSlideItemsInDom: 10,
+    selector: '',
+    selectWithin: '',
+    nextHtml: '',
+    prevHtml: '',
+    index: 0,
+    iframeWidth: '100%',
+    iframeHeight: '100%',
+    iframeMaxWidth: '100%',
+    iframeMaxHeight: '100%',
+    download: true,
+    counter: true,
+    appendCounterTo: '.lg-toolbar',
+    swipeThreshold: 50,
+    enableSwipe: true,
+    enableDrag: true,
+    dynamic: false,
+    dynamicEl: [],
+    extraProps: [],
+    exThumbImage: '',
+    isMobile: undefined,
+    mobileSettings: {
+        controls: false,
+        showCloseIcon: false,
+        download: false,
+    },
+    plugins: [],
+    strings: {
+        closeGallery: 'Close gallery',
+        toggleMaximize: 'Toggle maximize',
+        previousSlide: 'Previous slide',
+        nextSlide: 'Next slide',
+        download: 'Download',
+        playVideo: 'Play video',
+    },
+};
+
+function initLgPolyfills() {
+    (function () {
+        if (typeof window.CustomEvent === 'function')
+            return false;
+        function CustomEvent(event, params) {
+            params = params || {
+                bubbles: false,
+                cancelable: false,
+                detail: null,
+            };
+            var evt = document.createEvent('CustomEvent');
+            evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
+            return evt;
+        }
+        window.CustomEvent = CustomEvent;
+    })();
+    (function () {
+        if (!Element.prototype.matches) {
+            Element.prototype.matches =
+                Element.prototype.msMatchesSelector ||
+                    Element.prototype.webkitMatchesSelector;
+        }
+    })();
+}
+var lgQuery = /** @class */ (function () {
+    function lgQuery(selector) {
+        this.cssVenderPrefixes = [
+            'TransitionDuration',
+            'TransitionTimingFunction',
+            'Transform',
+            'Transition',
+        ];
+        this.selector = this._getSelector(selector);
+        this.firstElement = this._getFirstEl();
+        return this;
+    }
+    lgQuery.generateUUID = function () {
+        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+            var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
+            return v.toString(16);
+        });
+    };
+    lgQuery.prototype._getSelector = function (selector, context) {
+        if (context === void 0) { context = document; }
+        if (typeof selector !== 'string') {
+            return selector;
+        }
+        context = context || document;
+        var fl = selector.substring(0, 1);
+        if (fl === '#') {
+            return context.querySelector(selector);
+        }
+        else {
+            return context.querySelectorAll(selector);
+        }
+    };
+    lgQuery.prototype._each = function (func) {
+        if (!this.selector) {
+            return this;
+        }
+        if (this.selector.length !== undefined) {
+            [].forEach.call(this.selector, func);
+        }
+        else {
+            func(this.selector, 0);
+        }
+        return this;
+    };
+    lgQuery.prototype._setCssVendorPrefix = function (el, cssProperty, value) {
+        // prettier-ignore
+        var property = cssProperty.replace(/-([a-z])/gi, function (s, group1) {
+            return group1.toUpperCase();
+        });
+        if (this.cssVenderPrefixes.indexOf(property) !== -1) {
+            el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;
+            el.style['webkit' + property] = value;
+            el.style['moz' + property] = value;
+            el.style['ms' + property] = value;
+            el.style['o' + property] = value;
+        }
+        else {
+            el.style[property] = value;
+        }
+    };
+    lgQuery.prototype._getFirstEl = function () {
+        if (this.selector && this.selector.length !== undefined) {
+            return this.selector[0];
+        }
+        else {
+            return this.selector;
+        }
+    };
+    lgQuery.prototype.isEventMatched = function (event, eventName) {
+        var eventNamespace = eventName.split('.');
+        return event
+            .split('.')
+            .filter(function (e) { return e; })
+            .every(function (e) {
+            return eventNamespace.indexOf(e) !== -1;
+        });
+    };
+    lgQuery.prototype.attr = function (attr, value) {
+        if (value === undefined) {
+            if (!this.firstElement) {
+                return '';
+            }
+            return this.firstElement.getAttribute(attr);
+        }
+        this._each(function (el) {
+            el.setAttribute(attr, value);
+        });
+        return this;
+    };
+    lgQuery.prototype.find = function (selector) {
+        return $LG(this._getSelector(selector, this.selector));
+    };
+    lgQuery.prototype.first = function () {
+        if (this.selector && this.selector.length !== undefined) {
+            return $LG(this.selector[0]);
+        }
+        else {
+            return $LG(this.selector);
+        }
+    };
+    lgQuery.prototype.eq = function (index) {
+        return $LG(this.selector[index]);
+    };
+    lgQuery.prototype.parent = function () {
+        return $LG(this.selector.parentElement);
+    };
+    lgQuery.prototype.get = function () {
+        return this._getFirstEl();
+    };
+    lgQuery.prototype.removeAttr = function (attributes) {
+        var attrs = attributes.split(' ');
+        this._each(function (el) {
+            attrs.forEach(function (attr) { return el.removeAttribute(attr); });
+        });
+        return this;
+    };
+    lgQuery.prototype.wrap = function (className) {
+        if (!this.firstElement) {
+            return this;
+        }
+        var wrapper = document.createElement('div');
+        wrapper.className = className;
+        this.firstElement.parentNode.insertBefore(wrapper, this.firstElement);
+        this.firstElement.parentNode.removeChild(this.firstElement);
+        wrapper.appendChild(this.firstElement);
+        return this;
+    };
+    lgQuery.prototype.addClass = function (classNames) {
+        if (classNames === void 0) { classNames = ''; }
+        this._each(function (el) {
+            // IE doesn't support multiple arguments
+            classNames.split(' ').forEach(function (className) {
+                if (className) {
+                    el.classList.add(className);
+                }
+            });
+        });
+        return this;
+    };
+    lgQuery.prototype.removeClass = function (classNames) {
+        this._each(function (el) {
+            // IE doesn't support multiple arguments
+            classNames.split(' ').forEach(function (className) {
+                if (className) {
+                    el.classList.remove(className);
+                }
+            });
+        });
+        return this;
+    };
+    lgQuery.prototype.hasClass = function (className) {
+        if (!this.firstElement) {
+            return false;
+        }
+        return this.firstElement.classList.contains(className);
+    };
+    lgQuery.prototype.hasAttribute = function (attribute) {
+        if (!this.firstElement) {
+            return false;
+        }
+        return this.firstElement.hasAttribute(attribute);
+    };
+    lgQuery.prototype.toggleClass = function (className) {
+        if (!this.firstElement) {
+            return this;
+        }
+        if (this.hasClass(className)) {
+            this.removeClass(className);
+        }
+        else {
+            this.addClass(className);
+        }
+        return this;
+    };
+    lgQuery.prototype.css = function (property, value) {
+        var _this = this;
+        this._each(function (el) {
+            _this._setCssVendorPrefix(el, property, value);
+        });
+        return this;
+    };
+    // Need to pass separate namespaces for separate elements
+    lgQuery.prototype.on = function (events, listener) {
+        var _this = this;
+        if (!this.selector) {
+            return this;
+        }
+        events.split(' ').forEach(function (event) {
+            if (!Array.isArray(lgQuery.eventListeners[event])) {
+                lgQuery.eventListeners[event] = [];
+            }
+            lgQuery.eventListeners[event].push(listener);
+            _this.selector.addEventListener(event.split('.')[0], listener);
+        });
+        return this;
+    };
+    // @todo - test this
+    lgQuery.prototype.once = function (event, listener) {
+        var _this = this;
+        this.on(event, function () {
+            _this.off(event);
+            listener(event);
+        });
+        return this;
+    };
+    lgQuery.prototype.off = function (event) {
+        var _this = this;
+        if (!this.selector) {
+            return this;
+        }
+        Object.keys(lgQuery.eventListeners).forEach(function (eventName) {
+            if (_this.isEventMatched(event, eventName)) {
+                lgQuery.eventListeners[eventName].forEach(function (listener) {
+                    _this.selector.removeEventListener(eventName.split('.')[0], listener);
+                });
+                lgQuery.eventListeners[eventName] = [];
+            }
+        });
+        return this;
+    };
+    lgQuery.prototype.trigger = function (event, detail) {
+        if (!this.firstElement) {
+            return this;
+        }
+        var customEvent = new CustomEvent(event.split('.')[0], {
+            detail: detail || null,
+        });
+        this.firstElement.dispatchEvent(customEvent);
+        return this;
+    };
+    // Does not support IE
+    lgQuery.prototype.load = function (url) {
+        var _this = this;
+        fetch(url)
+            .then(function (res) { return res.text(); })
+            .then(function (html) {
+            _this.selector.innerHTML = html;
+        });
+        return this;
+    };
+    lgQuery.prototype.html = function (html) {
+        if (html === undefined) {
+            if (!this.firstElement) {
+                return '';
+            }
+            return this.firstElement.innerHTML;
+        }
+        this._each(function (el) {
+            el.innerHTML = html;
+        });
+        return this;
+    };
+    lgQuery.prototype.append = function (html) {
+        this._each(function (el) {
+            if (typeof html === 'string') {
+                el.insertAdjacentHTML('beforeend', html);
+            }
+            else {
+                el.appendChild(html);
+            }
+        });
+        return this;
+    };
+    lgQuery.prototype.prepend = function (html) {
+        this._each(function (el) {
+            el.insertAdjacentHTML('afterbegin', html);
+        });
+        return this;
+    };
+    lgQuery.prototype.remove = function () {
+        this._each(function (el) {
+            el.parentNode.removeChild(el);
+        });
+        return this;
+    };
+    lgQuery.prototype.empty = function () {
+        this._each(function (el) {
+            el.innerHTML = '';
+        });
+        return this;
+    };
+    lgQuery.prototype.scrollTop = function (scrollTop) {
+        if (scrollTop !== undefined) {
+            document.body.scrollTop = scrollTop;
+            document.documentElement.scrollTop = scrollTop;
+            return this;
+        }
+        else {
+            return (window.pageYOffset ||
+                document.documentElement.scrollTop ||
+                document.body.scrollTop ||
+                0);
+        }
+    };
+    lgQuery.prototype.scrollLeft = function (scrollLeft) {
+        if (scrollLeft !== undefined) {
+            document.body.scrollLeft = scrollLeft;
+            document.documentElement.scrollLeft = scrollLeft;
+            return this;
+        }
+        else {
+            return (window.pageXOffset ||
+                document.documentElement.scrollLeft ||
+                document.body.scrollLeft ||
+                0);
+        }
+    };
+    lgQuery.prototype.offset = function () {
+        if (!this.firstElement) {
+            return {
+                left: 0,
+                top: 0,
+            };
+        }
+        var rect = this.firstElement.getBoundingClientRect();
+        var bodyMarginLeft = $LG('body').style().marginLeft;
+        // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value
+        return {
+            left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(),
+            top: rect.top + this.scrollTop(),
+        };
+    };
+    lgQuery.prototype.style = function () {
+        if (!this.firstElement) {
+            return {};
+        }
+        return (this.firstElement.currentStyle ||
+            window.getComputedStyle(this.firstElement));
+    };
+    // Width without padding and border even if box-sizing is used.
+    lgQuery.prototype.width = function () {
+        var style = this.style();
+        return (this.firstElement.clientWidth -
+            parseFloat(style.paddingLeft) -
+            parseFloat(style.paddingRight));
+    };
+    // Height without padding and border even if box-sizing is used.
+    lgQuery.prototype.height = function () {
+        var style = this.style();
+        return (this.firstElement.clientHeight -
+            parseFloat(style.paddingTop) -
+            parseFloat(style.paddingBottom));
+    };
+    lgQuery.eventListeners = {};
+    return lgQuery;
+}());
+function $LG(selector) {
+    initLgPolyfills();
+    return new lgQuery(selector);
+}
+
+var defaultDynamicOptions = [
+    'src',
+    'sources',
+    'subHtml',
+    'subHtmlUrl',
+    'html',
+    'video',
+    'poster',
+    'slideName',
+    'responsive',
+    'srcset',
+    'sizes',
+    'iframe',
+    'downloadUrl',
+    'download',
+    'width',
+    'facebookShareUrl',
+    'tweetText',
+    'iframeTitle',
+    'twitterShareUrl',
+    'pinterestShareUrl',
+    'pinterestText',
+    'fbHtml',
+    'disqusIdentifier',
+    'disqusUrl',
+];
+// Convert html data-attribute to camalcase
+function convertToData(attr) {
+    // FInd a way for lgsize
+    if (attr === 'href') {
+        return 'src';
+    }
+    attr = attr.replace('data-', '');
+    attr = attr.charAt(0).toLowerCase() + attr.slice(1);
+    attr = attr.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });
+    return attr;
+}
+var utils = {
+    /**
+     * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option
+     */
+    getSize: function (el, container, spacing, defaultLgSize) {
+        if (spacing === void 0) { spacing = 0; }
+        var LGel = $LG(el);
+        var lgSize = LGel.attr('data-lg-size') || defaultLgSize;
+        if (!lgSize) {
+            return;
+        }
+        var isResponsiveSizes = lgSize.split(',');
+        // if at-least two viewport sizes are available
+        if (isResponsiveSizes[1]) {
+            var wWidth = window.innerWidth;
+            for (var i = 0; i < isResponsiveSizes.length; i++) {
+                var size_1 = isResponsiveSizes[i];
+                var responsiveWidth = parseInt(size_1.split('-')[2], 10);
+                if (responsiveWidth > wWidth) {
+                    lgSize = size_1;
+                    break;
+                }
+                // take last item as last option
+                if (i === isResponsiveSizes.length - 1) {
+                    lgSize = size_1;
+                }
+            }
+        }
+        var size = lgSize.split('-');
+        var width = parseInt(size[0], 10);
+        var height = parseInt(size[1], 10);
+        var cWidth = container.width();
+        var cHeight = container.height() - spacing;
+        var maxWidth = Math.min(cWidth, width);
+        var maxHeight = Math.min(cHeight, height);
+        var ratio = Math.min(maxWidth / width, maxHeight / height);
+        return { width: width * ratio, height: height * ratio };
+    },
+    /**
+     * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option
+     * @param {jQuery Element}
+     * @returns {String} Transform CSS string
+     */
+    getTransform: function (el, container, top, bottom, imageSize) {
+        if (!imageSize) {
+            return;
+        }
+        var LGel = $LG(el).find('img').first();
+        if (!LGel.get()) {
+            return;
+        }
+        var containerRect = container.get().getBoundingClientRect();
+        var wWidth = containerRect.width;
+        // using innerWidth to include mobile safari bottom bar
+        var wHeight = container.height() - (top + bottom);
+        var elWidth = LGel.width();
+        var elHeight = LGel.height();
+        var elStyle = LGel.style();
+        var x = (wWidth - elWidth) / 2 -
+            LGel.offset().left +
+            (parseFloat(elStyle.paddingLeft) || 0) +
+            (parseFloat(elStyle.borderLeft) || 0) +
+            $LG(window).scrollLeft() +
+            containerRect.left;
+        var y = (wHeight - elHeight) / 2 -
+            LGel.offset().top +
+            (parseFloat(elStyle.paddingTop) || 0) +
+            (parseFloat(elStyle.borderTop) || 0) +
+            $LG(window).scrollTop() +
+            top;
+        var scX = elWidth / imageSize.width;
+        var scY = elHeight / imageSize.height;
+        var transform = 'translate3d(' +
+            (x *= -1) +
+            'px, ' +
+            (y *= -1) +
+            'px, 0) scale3d(' +
+            scX +
+            ', ' +
+            scY +
+            ', 1)';
+        return transform;
+    },
+    getIframeMarkup: function (iframeWidth, iframeHeight, iframeMaxWidth, iframeMaxHeight, src, iframeTitle) {
+        var title = iframeTitle ? 'title="' + iframeTitle + '"' : '';
+        return "<div class=\"lg-video-cont lg-has-iframe\" style=\"width:" + iframeWidth + "; max-width:" + iframeMaxWidth + "; height: " + iframeHeight + "; max-height:" + iframeMaxHeight + "\">\n                    <iframe class=\"lg-object\" frameborder=\"0\" " + title + " src=\"" + src + "\"  allowfullscreen=\"true\"></iframe>\n                </div>";
+    },
+    getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) {
+        var srcsetAttr = srcset ? "srcset=\"" + srcset + "\"" : '';
+        var sizesAttr = sizes ? "sizes=\"" + sizes + "\"" : '';
+        var imgMarkup = "<img " + altAttr + " " + srcsetAttr + "  " + sizesAttr + " class=\"lg-object lg-image\" data-index=\"" + index + "\" src=\"" + src + "\" />";
+        var sourceTag = '';
+        if (sources) {
+            var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources;
+            sourceTag = sourceObj.map(function (source) {
+                var attrs = '';
+                Object.keys(source).forEach(function (key) {
+                    // Do not remove the first space as it is required to separate the attributes
+                    attrs += " " + key + "=\"" + source[key] + "\"";
+                });
+                return "<source " + attrs + "></source>";
+            });
+        }
+        return "" + sourceTag + imgMarkup;
+    },
+    // Get src from responsive src
+    getResponsiveSrc: function (srcItms) {
+        var rsWidth = [];
+        var rsSrc = [];
+        var src = '';
+        for (var i = 0; i < srcItms.length; i++) {
+            var _src = srcItms[i].split(' ');
+            // Manage empty space
+            if (_src[0] === '') {
+                _src.splice(0, 1);
+            }
+            rsSrc.push(_src[0]);
+            rsWidth.push(_src[1]);
+        }
+        var wWidth = window.innerWidth;
+        for (var j = 0; j < rsWidth.length; j++) {
+            if (parseInt(rsWidth[j], 10) > wWidth) {
+                src = rsSrc[j];
+                break;
+            }
+        }
+        return src;
+    },
+    isImageLoaded: function (img) {
+        if (!img)
+            return false;
+        // During the onload event, IE correctly identifies any images that
+        // weren’t downloaded as not complete. Others should too. Gecko-based
+        // browsers act like NS4 in that they report this incorrectly.
+        if (!img.complete) {
+            return false;
+        }
+        // However, they do have two very useful properties: naturalWidth and
+        // naturalHeight. These give the true size of the image. If it failed
+        // to load, either of these should be zero.
+        if (img.naturalWidth === 0) {
+            return false;
+        }
+        // No other way of checking: assume it’s ok.
+        return true;
+    },
+    getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, playVideoString, _isVideo) {
+        var videoClass = '';
+        if (_isVideo && _isVideo.youtube) {
+            videoClass = 'lg-has-youtube';
+        }
+        else if (_isVideo && _isVideo.vimeo) {
+            videoClass = 'lg-has-vimeo';
+        }
+        else {
+            videoClass = 'lg-has-html5';
+        }
+        return "<div class=\"lg-video-cont " + videoClass + "\" style=\"" + videoContStyle + "\">\n                <div class=\"lg-video-play-button\">\n                <svg\n                    viewBox=\"0 0 20 20\"\n                    preserveAspectRatio=\"xMidYMid\"\n                    focusable=\"false\"\n                    aria-labelledby=\"" + playVideoString + "\"\n                    role=\"img\"\n                    class=\"lg-video-play-icon\"\n                >\n                    <title>" + playVideoString + "</title>\n                    <polygon class=\"lg-video-play-icon-inner\" points=\"1,0 20,10 1,20\"></polygon>\n                </svg>\n                <svg class=\"lg-video-play-icon-bg\" viewBox=\"0 0 50 50\" focusable=\"false\">\n                    <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle></svg>\n                <svg class=\"lg-video-play-icon-circle\" viewBox=\"0 0 50 50\" focusable=\"false\">\n                    <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle>\n                </svg>\n            </div>\n            " + (dummyImg || '') + "\n            <img class=\"lg-object lg-video-poster\" src=\"" + _poster + "\" />\n        </div>";
+    },
+    getFocusableElements: function (container) {
+        var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])');
+        var visibleElements = [].filter.call(elements, function (element) {
+            var style = window.getComputedStyle(element);
+            return style.display !== 'none' && style.visibility !== 'hidden';
+        });
+        return visibleElements;
+    },
+    /**
+     * @desc Create dynamic elements array from gallery items when dynamic option is false
+     * It helps to avoid frequent DOM interaction
+     * and avoid multiple checks for dynamic elments
+     *
+     * @returns {Array} dynamicEl
+     */
+    getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) {
+        var dynamicElements = [];
+        var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps);
+        [].forEach.call(items, function (item) {
+            var dynamicEl = {};
+            for (var i = 0; i < item.attributes.length; i++) {
+                var attr = item.attributes[i];
+                if (attr.specified) {
+                    var dynamicAttr = convertToData(attr.name);
+                    var label = '';
+                    if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {
+                        label = dynamicAttr;
+                    }
+                    if (label) {
+                        dynamicEl[label] = attr.value;
+                    }
+                }
+            }
+            var currentItem = $LG(item);
+            var alt = currentItem.find('img').first().attr('alt');
+            var title = currentItem.attr('title');
+            var thumb = exThumbImage
+                ? currentItem.attr(exThumbImage)
+                : currentItem.find('img').first().attr('src');
+            dynamicEl.thumb = thumb;
+            if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {
+                dynamicEl.subHtml = title || alt || '';
+            }
+            dynamicEl.alt = alt || title || '';
+            dynamicElements.push(dynamicEl);
+        });
+        return dynamicElements;
+    },
+    isMobile: function () {
+        return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
+    },
+    /**
+     * @desc Check the given src is video
+     * @param {String} src
+     * @return {Object} video type
+     * Ex:{ youtube  :  ["//www.youtube.com/watch?v=c0asJgSyxcY", "c0asJgSyxcY"] }
+     *
+     * @todo - this information can be moved to dynamicEl to avoid frequent calls
+     */
+    isVideo: function (src, isHTML5VIdeo, index) {
+        if (!src) {
+            if (isHTML5VIdeo) {
+                return {
+                    html5: true,
+                };
+            }
+            else {
+                console.error('lightGallery :- data-src is not provided on slide item ' +
+                    (index + 1) +
+                    '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/');
+                return;
+            }
+        }
+        var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)([\&|?][\S]*)*/i);
+        var vimeo = src.match(/\/\/(?:www\.)?(?:player\.)?vimeo.com\/(?:video\/)?([0-9a-z\-_]+)(.*)?/i);
+        var wistia = src.match(/https?:\/\/(.+)?(wistia\.com|wi\.st)\/(medias|embed)\/([0-9a-z\-_]+)(.*)/);
+        if (youtube) {
+            return {
+                youtube: youtube,
+            };
+        }
+        else if (vimeo) {
+            return {
+                vimeo: vimeo,
+            };
+        }
+        else if (wistia) {
+            return {
+                wistia: wistia,
+            };
+        }
+    },
+};
+
+// @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio
+// @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html
+// Unique id for each gallery
+var lgId = 0;
+var LightGallery = /** @class */ (function () {
+    function LightGallery(element, options) {
+        this.lgOpened = false;
+        this.index = 0;
+        // lightGallery modules
+        this.plugins = [];
+        // false when lightGallery load first slide content;
+        this.lGalleryOn = false;
+        // True when a slide animation is in progress
+        this.lgBusy = false;
+        this.currentItemsInDom = [];
+        // Scroll top value before lightGallery is opened
+        this.prevScrollTop = 0;
+        this.bodyPaddingRight = 0;
+        this.isDummyImageRemoved = false;
+        this.dragOrSwipeEnabled = false;
+        this.mediaContainerPosition = {
+            top: 0,
+            bottom: 0,
+        };
+        if (!element) {
+            return this;
+        }
+        lgId++;
+        this.lgId = lgId;
+        this.el = element;
+        this.LGel = $LG(element);
+        this.generateSettings(options);
+        this.buildModules();
+        // When using dynamic mode, ensure dynamicEl is an array
+        if (this.settings.dynamic &&
+            this.settings.dynamicEl !== undefined &&
+            !Array.isArray(this.settings.dynamicEl)) {
+            throw 'When using dynamic mode, you must also define dynamicEl as an Array.';
+        }
+        this.galleryItems = this.getItems();
+        this.normalizeSettings();
+        // Gallery items
+        this.init();
+        this.validateLicense();
+        return this;
+    }
+    LightGallery.prototype.generateSettings = function (options) {
+        // lightGallery settings
+        this.settings = __assign(__assign({}, lightGalleryCoreSettings), options);
+        if (this.settings.isMobile &&
+            typeof this.settings.isMobile === 'function'
+            ? this.settings.isMobile()
+            : utils.isMobile()) {
+            var mobileSettings = __assign(__assign({}, this.settings.mobileSettings), this.settings.mobileSettings);
+            this.settings = __assign(__assign({}, this.settings), mobileSettings);
+        }
+    };
+    LightGallery.prototype.normalizeSettings = function () {
+        if (this.settings.slideEndAnimation) {
+            this.settings.hideControlOnEnd = false;
+        }
+        if (!this.settings.closable) {
+            this.settings.swipeToClose = false;
+        }
+        // And reset it on close to get the correct value next time
+        this.zoomFromOrigin = this.settings.zoomFromOrigin;
+        // At the moment, Zoom from image doesn't support dynamic options
+        // @todo add zoomFromOrigin support for dynamic images
+        if (this.settings.dynamic) {
+            this.zoomFromOrigin = false;
+        }
+        if (!this.settings.container) {
+            this.settings.container = document.body;
+        }
+        // settings.preload should not be grater than $item.length
+        this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length);
+    };
+    LightGallery.prototype.init = function () {
+        var _this = this;
+        this.addSlideVideoInfo(this.galleryItems);
+        this.buildStructure();
+        this.LGel.trigger(lGEvents.init, {
+            instance: this,
+        });
+        if (this.settings.keyPress) {
+            this.keyPress();
+        }
+        setTimeout(function () {
+            _this.enableDrag();
+            _this.enableSwipe();
+            _this.triggerPosterClick();
+        }, 50);
+        this.arrow();
+        if (this.settings.mousewheel) {
+            this.mousewheel();
+        }
+        if (!this.settings.dynamic) {
+            this.openGalleryOnItemClick();
+        }
+    };
+    LightGallery.prototype.openGalleryOnItemClick = function () {
+        var _this = this;
+        var _loop_1 = function (index) {
+            var element = this_1.items[index];
+            var $element = $LG(element);
+            // Using different namespace for click because click event should not unbind if selector is same object('this')
+            // @todo manage all event listners - should have namespace that represent element
+            var uuid = lgQuery.generateUUID();
+            $element
+                .attr('data-lg-id', uuid)
+                .on("click.lgcustom-item-" + uuid, function (e) {
+                e.preventDefault();
+                var currentItemIndex = _this.settings.index || index;
+                _this.openGallery(currentItemIndex, element);
+            });
+        };
+        var this_1 = this;
+        // Using for loop instead of using bubbling as the items can be any html element.
+        for (var index = 0; index < this.items.length; index++) {
+            _loop_1(index);
+        }
+    };
+    /**
+     * Module constructor
+     * Modules are build incrementally.
+     * Gallery should be opened only once all the modules are initialized.
+     * use moduleBuildTimeout to make sure this
+     */
+    LightGallery.prototype.buildModules = function () {
+        var _this = this;
+        this.settings.plugins.forEach(function (plugin) {
+            _this.plugins.push(new plugin(_this, $LG));
+        });
+    };
+    LightGallery.prototype.validateLicense = function () {
+        if (!this.settings.licenseKey) {
+            console.error('Please provide a valid license key');
+        }
+        else if (this.settings.licenseKey === '0000-0000-000-0000') {
+            console.warn("lightGallery: " + this.settings.licenseKey + " license key is not valid for production use");
+        }
+    };
+    LightGallery.prototype.getSlideItem = function (index) {
+        return $LG(this.getSlideItemId(index));
+    };
+    LightGallery.prototype.getSlideItemId = function (index) {
+        return "#lg-item-" + this.lgId + "-" + index;
+    };
+    LightGallery.prototype.getIdName = function (id) {
+        return id + "-" + this.lgId;
+    };
+    LightGallery.prototype.getElementById = function (id) {
+        return $LG("#" + this.getIdName(id));
+    };
+    LightGallery.prototype.manageSingleSlideClassName = function () {
+        if (this.galleryItems.length < 2) {
+            this.outer.addClass('lg-single-item');
+        }
+        else {
+            this.outer.removeClass('lg-single-item');
+        }
+    };
+    LightGallery.prototype.buildStructure = function () {
+        var _this = this;
+        var container = this.$container && this.$container.get();
+        if (container) {
+            return;
+        }
+        var controls = '';
+        var subHtmlCont = '';
+        // Create controls
+        if (this.settings.controls) {
+            controls = "<button type=\"button\" id=\"" + this.getIdName('lg-prev') + "\" aria-label=\"" + this.settings.strings['previousSlide'] + "\" class=\"lg-prev lg-icon\"> " + this.settings.prevHtml + " </button>\n                <button type=\"button\" id=\"" + this.getIdName('lg-next') + "\" aria-label=\"" + this.settings.strings['nextSlide'] + "\" class=\"lg-next lg-icon\"> " + this.settings.nextHtml + " </button>";
+        }
+        if (this.settings.appendSubHtmlTo !== '.lg-item') {
+            subHtmlCont =
+                '<div class="lg-sub-html" role="status" aria-live="polite"></div>';
+        }
+        var addClasses = '';
+        if (this.settings.allowMediaOverlap) {
+            // Do not remove space before last single quote
+            addClasses += 'lg-media-overlap ';
+        }
+        var ariaLabelledby = this.settings.ariaLabelledby
+            ? 'aria-labelledby="' + this.settings.ariaLabelledby + '"'
+            : '';
+        var ariaDescribedby = this.settings.ariaDescribedby
+            ? 'aria-describedby="' + this.settings.ariaDescribedby + '"'
+            : '';
+        var containerClassName = "lg-container " + this.settings.addClass + " " + (document.body !== this.settings.container ? 'lg-inline' : '');
+        var closeIcon = this.settings.closable && this.settings.showCloseIcon
+            ? "<button type=\"button\" aria-label=\"" + this.settings.strings['closeGallery'] + "\" id=\"" + this.getIdName('lg-close') + "\" class=\"lg-close lg-icon\"></button>"
+            : '';
+        var maximizeIcon = this.settings.showMaximizeIcon
+            ? "<button type=\"button\" aria-label=\"" + this.settings.strings['toggleMaximize'] + "\" id=\"" + this.getIdName('lg-maximize') + "\" class=\"lg-maximize lg-icon\"></button>"
+            : '';
+        var template = "\n        <div class=\"" + containerClassName + "\" id=\"" + this.getIdName('lg-container') + "\" tabindex=\"-1\" aria-modal=\"true\" " + ariaLabelledby + " " + ariaDescribedby + " role=\"dialog\"\n        >\n            <div id=\"" + this.getIdName('lg-backdrop') + "\" class=\"lg-backdrop\"></div>\n\n            <div id=\"" + this.getIdName('lg-outer') + "\" class=\"lg-outer lg-use-css3 lg-css3 lg-hide-items " + addClasses + " \">\n\n              <div id=\"" + this.getIdName('lg-content') + "\" class=\"lg-content\">\n                <div id=\"" + this.getIdName('lg-inner') + "\" class=\"lg-inner\">\n                </div>\n                " + controls + "\n              </div>\n                <div id=\"" + this.getIdName('lg-toolbar') + "\" class=\"lg-toolbar lg-group\">\n                    " + maximizeIcon + "\n                    " + closeIcon + "\n                    </div>\n                    " + (this.settings.appendSubHtmlTo === '.lg-outer'
+            ? subHtmlCont
+            : '') + "\n                <div id=\"" + this.getIdName('lg-components') + "\" class=\"lg-components\">\n                    " + (this.settings.appendSubHtmlTo === '.lg-sub-html'
+            ? subHtmlCont
+            : '') + "\n                </div>\n            </div>\n        </div>\n        ";
+        $LG(this.settings.container).append(template);
+        if (document.body !== this.settings.container) {
+            $LG(this.settings.container).css('position', 'relative');
+        }
+        this.outer = this.getElementById('lg-outer');
+        this.$lgComponents = this.getElementById('lg-components');
+        this.$backdrop = this.getElementById('lg-backdrop');
+        this.$container = this.getElementById('lg-container');
+        this.$inner = this.getElementById('lg-inner');
+        this.$content = this.getElementById('lg-content');
+        this.$toolbar = this.getElementById('lg-toolbar');
+        this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms');
+        var outerClassNames = this.settings.mode + " ";
+        this.manageSingleSlideClassName();
+        if (this.settings.enableDrag) {
+            outerClassNames += 'lg-grab ';
+        }
+        this.outer.addClass(outerClassNames);
+        this.$inner.css('transition-timing-function', this.settings.easing);
+        this.$inner.css('transition-duration', this.settings.speed + 'ms');
+        if (this.settings.download) {
+            this.$toolbar.append("<a id=\"" + this.getIdName('lg-download') + "\" target=\"_blank\" rel=\"noopener\" aria-label=\"" + this.settings.strings['download'] + "\" download class=\"lg-download lg-icon\"></a>");
+        }
+        this.counter();
+        $LG(window).on("resize.lg.global" + this.lgId + " orientationchange.lg.global" + this.lgId, function () {
+            _this.refreshOnResize();
+        });
+        this.hideBars();
+        this.manageCloseGallery();
+        this.toggleMaximize();
+        this.initModules();
+    };
+    LightGallery.prototype.refreshOnResize = function () {
+        if (this.lgOpened) {
+            var currentGalleryItem = this.galleryItems[this.index];
+            var __slideVideoInfo = currentGalleryItem.__slideVideoInfo;
+            this.mediaContainerPosition = this.getMediaContainerPosition();
+            var _a = this.mediaContainerPosition, top_1 = _a.top, bottom = _a.bottom;
+            this.currentImageSize = utils.getSize(this.items[this.index], this.outer, top_1 + bottom, __slideVideoInfo && this.settings.videoMaxSize);
+            if (__slideVideoInfo) {
+                this.resizeVideoSlide(this.index, this.currentImageSize);
+            }
+            if (this.zoomFromOrigin && !this.isDummyImageRemoved) {
+                var imgStyle = this.getDummyImgStyles(this.currentImageSize);
+                this.outer
+                    .find('.lg-current .lg-dummy-img')
+                    .first()
+                    .attr('style', imgStyle);
+            }
+            this.LGel.trigger(lGEvents.containerResize);
+        }
+    };
+    LightGallery.prototype.resizeVideoSlide = function (index, imageSize) {
+        var lgVideoStyle = this.getVideoContStyle(imageSize);
+        var currentSlide = this.getSlideItem(index);
+        currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle);
+    };
+    /**
+     * Update slides dynamically.
+     * Add, edit or delete slides dynamically when lightGallery is opened.
+     * Modify the current gallery items and pass it via updateSlides method
+     * @note
+     * - Do not mutate existing lightGallery items directly.
+     * - Always pass new list of gallery items
+     * - You need to take care of thumbnails outside the gallery if any
+     * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method.
+     * @param items Gallery items
+     * @param index After the update operation, which slide gallery should navigate to
+     * @category lGPublicMethods
+     * @example
+     * const plugin = lightGallery();
+     *
+     * // Adding slides dynamically
+     * let galleryItems = [
+     * // Access existing lightGallery items
+     * // galleryItems are automatically generated internally from the gallery HTML markup
+     * // or directly from galleryItems when dynamic gallery is used
+     *   ...plugin.galleryItems,
+     *     ...[
+     *       {
+     *         src: 'img/img-1.png',
+     *           thumb: 'img/thumb1.png',
+     *         },
+     *     ],
+     *   ];
+     *   plugin.updateSlides(
+     *     galleryItems,
+     *     plugin.index,
+     *   );
+     *
+     *
+     * // Remove slides dynamically
+     * galleryItems = JSON.parse(
+     *   JSON.stringify(updateSlideInstance.galleryItems),
+     * );
+     * galleryItems.shift();
+     * updateSlideInstance.updateSlides(galleryItems, 1);
+     * @see <a href="/demos/update-slides/">Demo</a>
+     */
+    LightGallery.prototype.updateSlides = function (items, index) {
+        if (this.index > items.length - 1) {
+            this.index = items.length - 1;
+        }
+        if (items.length === 1) {
+            this.index = 0;
+        }
+        if (!items.length) {
+            this.closeGallery();
+            return;
+        }
+        var currentSrc = this.galleryItems[index].src;
+        this.galleryItems = items;
+        this.updateControls();
+        this.$inner.empty();
+        this.currentItemsInDom = [];
+        var _index = 0;
+        // Find the current index based on source value of the slide
+        this.galleryItems.some(function (galleryItem, itemIndex) {
+            if (galleryItem.src === currentSrc) {
+                _index = itemIndex;
+                return true;
+            }
+            return false;
+        });
+        this.currentItemsInDom = this.organizeSlideItems(_index, -1);
+        this.loadContent(_index, true);
+        this.getSlideItem(_index).addClass('lg-current');
+        this.index = _index;
+        this.updateCurrentCounter(_index);
+        this.LGel.trigger(lGEvents.updateSlides);
+    };
+    // Get gallery items based on multiple conditions
+    LightGallery.prototype.getItems = function () {
+        // Gallery items
+        this.items = [];
+        if (!this.settings.dynamic) {
+            if (this.settings.selector === 'this') {
+                this.items.push(this.el);
+            }
+            else if (this.settings.selector) {
+                if (typeof this.settings.selector === 'string') {
+                    if (this.settings.selectWithin) {
+                        var selectWithin = $LG(this.settings.selectWithin);
+                        this.items = selectWithin
+                            .find(this.settings.selector)
+                            .get();
+                    }
+                    else {
+                        this.items = this.el.querySelectorAll(this.settings.selector);
+                    }
+                }
+                else {
+                    this.items = this.settings.selector;
+                }
+            }
+            else {
+                this.items = this.el.children;
+            }
+            return utils.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage);
+        }
+        else {
+            return this.settings.dynamicEl || [];
+        }
+    };
+    LightGallery.prototype.shouldHideScrollbar = function () {
+        return (this.settings.hideScrollbar &&
+            document.body === this.settings.container);
+    };
+    LightGallery.prototype.hideScrollbar = function () {
+        if (!this.shouldHideScrollbar()) {
+            return;
+        }
+        this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight);
+        var bodyRect = document.documentElement.getBoundingClientRect();
+        var scrollbarWidth = window.innerWidth - bodyRect.width;
+        $LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px');
+        $LG(document.body).addClass('lg-overlay-open');
+    };
+    LightGallery.prototype.resetScrollBar = function () {
+        if (!this.shouldHideScrollbar()) {
+            return;
+        }
+        $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');
+        $LG(document.body).removeClass('lg-overlay-open');
+    };
+    /**
+     * Open lightGallery.
+     * Open gallery with specific slide by passing index of the slide as parameter.
+     * @category lGPublicMethods
+     * @param {Number} index  - index of the slide
+     * @param {HTMLElement} element - Which image lightGallery should zoom from
+     *
+     * @example
+     * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');
+     * const dynamicGallery = lightGallery($dynamicGallery, {
+     *     dynamic: true,
+     *     dynamicEl: [
+     *         {
+     *              src: 'img/1.jpg',
+     *              thumb: 'img/thumb-1.jpg',
+     *              subHtml: '<h4>Image 1 title</h4><p>Image 1 descriptions.</p>',
+     *         },
+     *         ...
+     *     ],
+     * });
+     * $dynamicGallery.addEventListener('click', function () {
+     *     // Starts with third item.(Optional).
+     *     // This is useful if you want use dynamic mode with
+     *     // custom thumbnails (thumbnails outside gallery),
+     *     dynamicGallery.openGallery(2);
+     * });
+     *
+     */
+    LightGallery.prototype.openGallery = function (index, element) {
+        var _this = this;
+        if (index === void 0) { index = this.settings.index; }
+        // prevent accidental double execution
+        if (this.lgOpened)
+            return;
+        this.lgOpened = true;
+        this.outer.removeClass('lg-hide-items');
+        this.hideScrollbar();
+        // Add display block, but still has opacity 0
+        this.$container.addClass('lg-show');
+        var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index);
+        this.currentItemsInDom = itemsToBeInsertedToDom;
+        var items = '';
+        itemsToBeInsertedToDom.forEach(function (item) {
+            items = items + ("<div id=\"" + item + "\" class=\"lg-item\"></div>");
+        });
+        this.$inner.append(items);
+        this.addHtml(index);
+        var transform = '';
+        this.mediaContainerPosition = this.getMediaContainerPosition();
+        var _a = this.mediaContainerPosition, top = _a.top, bottom = _a.bottom;
+        if (!this.settings.allowMediaOverlap) {
+            this.setMediaContainerPosition(top, bottom);
+        }
+        var __slideVideoInfo = this.galleryItems[index].__slideVideoInfo;
+        if (this.zoomFromOrigin && element) {
+            this.currentImageSize = utils.getSize(element, this.outer, top + bottom, __slideVideoInfo && this.settings.videoMaxSize);
+            transform = utils.getTransform(element, this.outer, top, bottom, this.currentImageSize);
+        }
+        if (!this.zoomFromOrigin || !transform) {
+            this.outer.addClass(this.settings.startClass);
+            this.getSlideItem(index).removeClass('lg-complete');
+        }
+        var timeout = this.settings.zoomFromOrigin
+            ? 100
+            : this.settings.backdropDuration;
+        setTimeout(function () {
+            _this.outer.addClass('lg-components-open');
+        }, timeout);
+        this.index = index;
+        this.LGel.trigger(lGEvents.beforeOpen);
+        // add class lg-current to remove initial transition
+        this.getSlideItem(index).addClass('lg-current');
+        this.lGalleryOn = false;
+        // Store the current scroll top value to scroll back after closing the gallery..
+        this.prevScrollTop = $LG(window).scrollTop();
+        setTimeout(function () {
+            // Need to check both zoomFromOrigin and transform values as we need to set set the
+            // default opening animation if user missed to add the lg-size attribute
+            if (_this.zoomFromOrigin && transform) {
+                var currentSlide_1 = _this.getSlideItem(index);
+                currentSlide_1.css('transform', transform);
+                setTimeout(function () {
+                    currentSlide_1
+                        .addClass('lg-start-progress lg-start-end-progress')
+                        .css('transition-duration', _this.settings.startAnimationDuration + 'ms');
+                    _this.outer.addClass('lg-zoom-from-image');
+                });
+                setTimeout(function () {
+                    currentSlide_1.css('transform', 'translate3d(0, 0, 0)');
+                }, 100);
+            }
+            setTimeout(function () {
+                _this.$backdrop.addClass('in');
+                _this.$container.addClass('lg-show-in');
+            }, 10);
+            setTimeout(function () {
+                if (_this.settings.trapFocus &&
+                    document.body === _this.settings.container) {
+                    _this.trapFocus();
+                }
+            }, _this.settings.backdropDuration + 50);
+            // lg-visible class resets gallery opacity to 1
+            if (!_this.zoomFromOrigin || !transform) {
+                setTimeout(function () {
+                    _this.outer.addClass('lg-visible');
+                }, _this.settings.backdropDuration);
+            }
+            // initiate slide function
+            _this.slide(index, false, false, false);
+            _this.LGel.trigger(lGEvents.afterOpen);
+        });
+        if (document.body === this.settings.container) {
+            $LG('html').addClass('lg-on');
+        }
+    };
+    /**
+     * Note - Changing the position of the media on every slide transition creates a flickering effect.
+     * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.
+     * if you have dynamic captions for each media,
+     * you can provide an appropriate height for the captions via allowMediaOverlap option
+     */
+    LightGallery.prototype.getMediaContainerPosition = function () {
+        if (this.settings.allowMediaOverlap) {
+            return {
+                top: 0,
+                bottom: 0,
+            };
+        }
+        var top = this.$toolbar.get().clientHeight || 0;
+        var subHtml = this.outer.find('.lg-components .lg-sub-html').get();
+        var captionHeight = this.settings.defaultCaptionHeight ||
+            (subHtml && subHtml.clientHeight) ||
+            0;
+        var thumbContainer = this.outer.find('.lg-thumb-outer').get();
+        var thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0;
+        var bottom = thumbHeight + captionHeight;
+        return {
+            top: top,
+            bottom: bottom,
+        };
+    };
+    LightGallery.prototype.setMediaContainerPosition = function (top, bottom) {
+        if (top === void 0) { top = 0; }
+        if (bottom === void 0) { bottom = 0; }
+        this.$content.css('top', top + 'px').css('bottom', bottom + 'px');
+    };
+    LightGallery.prototype.hideBars = function () {
+        var _this = this;
+        // Hide controllers if mouse doesn't move for some period
+        setTimeout(function () {
+            _this.outer.removeClass('lg-hide-items');
+            if (_this.settings.hideBarsDelay > 0) {
+                _this.outer.on('mousemove.lg click.lg touchstart.lg', function () {
+                    _this.outer.removeClass('lg-hide-items');
+                    clearTimeout(_this.hideBarTimeout);
+                    // Timeout will be cleared on each slide movement also
+                    _this.hideBarTimeout = setTimeout(function () {
+                        _this.outer.addClass('lg-hide-items');
+                    }, _this.settings.hideBarsDelay);
+                });
+                _this.outer.trigger('mousemove.lg');
+            }
+        }, this.settings.showBarsAfter);
+    };
+    LightGallery.prototype.initPictureFill = function ($img) {
+        if (this.settings.supportLegacyBrowser) {
+            try {
+                picturefill({
+                    elements: [$img.get()],
+                });
+            }
+            catch (e) {
+                console.warn('lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.');
+            }
+        }
+    };
+    /**
+     *  @desc Create image counter
+     *  Ex: 1/10
+     */
+    LightGallery.prototype.counter = function () {
+        if (this.settings.counter) {
+            var counterHtml = "<div class=\"lg-counter\" role=\"status\" aria-live=\"polite\">\n                <span id=\"" + this.getIdName('lg-counter-current') + "\" class=\"lg-counter-current\">" + (this.index + 1) + " </span> /\n                <span id=\"" + this.getIdName('lg-counter-all') + "\" class=\"lg-counter-all\">" + this.galleryItems.length + " </span></div>";
+            this.outer.find(this.settings.appendCounterTo).append(counterHtml);
+        }
+    };
+    /**
+     *  @desc add sub-html into the slide
+     *  @param {Number} index - index of the slide
+     */
+    LightGallery.prototype.addHtml = function (index) {
+        var subHtml;
+        var subHtmlUrl;
+        if (this.galleryItems[index].subHtmlUrl) {
+            subHtmlUrl = this.galleryItems[index].subHtmlUrl;
+        }
+        else {
+            subHtml = this.galleryItems[index].subHtml;
+        }
+        if (!subHtmlUrl) {
+            if (subHtml) {
+                // get first letter of sub-html
+                // if first letter starts with . or # get the html form the jQuery object
+                var fL = subHtml.substring(0, 1);
+                if (fL === '.' || fL === '#') {
+                    if (this.settings.subHtmlSelectorRelative &&
+                        !this.settings.dynamic) {
+                        subHtml = $LG(this.items)
+                            .eq(index)
+                            .find(subHtml)
+                            .first()
+                            .html();
+                    }
+                    else {
+                        subHtml = $LG(subHtml).first().html();
+                    }
+                }
+            }
+            else {
+                subHtml = '';
+            }
+        }
+        if (this.settings.appendSubHtmlTo !== '.lg-item') {
+            if (subHtmlUrl) {
+                this.outer.find('.lg-sub-html').load(subHtmlUrl);
+            }
+            else {
+                this.outer.find('.lg-sub-html').html(subHtml);
+            }
+        }
+        else {
+            var currentSlide = $LG(this.getSlideItemId(index));
+            if (subHtmlUrl) {
+                currentSlide.load(subHtmlUrl);
+            }
+            else {
+                currentSlide.append("<div class=\"lg-sub-html\">" + subHtml + "</div>");
+            }
+        }
+        // Add lg-empty-html class if title doesn't exist
+        if (typeof subHtml !== 'undefined' && subHtml !== null) {
+            if (subHtml === '') {
+                this.outer
+                    .find(this.settings.appendSubHtmlTo)
+                    .addClass('lg-empty-html');
+            }
+            else {
+                this.outer
+                    .find(this.settings.appendSubHtmlTo)
+                    .removeClass('lg-empty-html');
+            }
+        }
+        this.LGel.trigger(lGEvents.afterAppendSubHtml, {
+            index: index,
+        });
+    };
+    /**
+     *  @desc Preload slides
+     *  @param {Number} index - index of the slide
+     * @todo preload not working for the first slide, Also, should work for the first and last slide as well
+     */
+    LightGallery.prototype.preload = function (index) {
+        for (var i = 1; i <= this.settings.preload; i++) {
+            if (i >= this.galleryItems.length - index) {
+                break;
+            }
+            this.loadContent(index + i, false);
+        }
+        for (var j = 1; j <= this.settings.preload; j++) {
+            if (index - j < 0) {
+                break;
+            }
+            this.loadContent(index - j, false);
+        }
+    };
+    LightGallery.prototype.getDummyImgStyles = function (imageSize) {
+        if (!imageSize)
+            return '';
+        return "width:" + imageSize.width + "px;\n                margin-left: -" + imageSize.width / 2 + "px;\n                margin-top: -" + imageSize.height / 2 + "px;\n                height:" + imageSize.height + "px";
+    };
+    LightGallery.prototype.getVideoContStyle = function (imageSize) {
+        if (!imageSize)
+            return '';
+        return "width:" + imageSize.width + "px;\n                height:" + imageSize.height + "px";
+    };
+    LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) {
+        var $currentItem;
+        if (!this.settings.dynamic) {
+            $currentItem = $LG(this.items).eq(index);
+        }
+        if ($currentItem) {
+            var _dummyImgSrc = void 0;
+            if (!this.settings.exThumbImage) {
+                _dummyImgSrc = $currentItem.find('img').first().attr('src');
+            }
+            else {
+                _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);
+            }
+            if (!_dummyImgSrc)
+                return '';
+            var imgStyle = this.getDummyImgStyles(this.currentImageSize);
+            var dummyImgContent = "<img " + alt + " style=\"" + imgStyle + "\" class=\"lg-dummy-img\" src=\"" + _dummyImgSrc + "\" />";
+            $currentSlide.addClass('lg-first-slide');
+            this.outer.addClass('lg-first-slide-loading');
+            return dummyImgContent;
+        }
+        return '';
+    };
+    LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) {
+        var currentGalleryItem = this.galleryItems[index];
+        var alt = currentGalleryItem.alt, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;
+        // Use the thumbnail as dummy image which will be resized to actual image size and
+        // displayed on top of actual image
+        var imgContent = '';
+        var altAttr = alt ? 'alt="' + alt + '"' : '';
+        if (this.isFirstSlideWithZoomAnimation()) {
+            imgContent = this.getDummyImageContent($currentSlide, index, altAttr);
+        }
+        else {
+            imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources);
+        }
+        var imgMarkup = "<picture class=\"lg-img-wrap\"> " + imgContent + "</picture>";
+        $currentSlide.prepend(imgMarkup);
+    };
+    LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) {
+        var mediaObject = $slide.find('.lg-object').first();
+        if (utils.isImageLoaded(mediaObject.get()) ||
+            isHTML5VideoWithoutPoster) {
+            onLoad();
+        }
+        else {
+            mediaObject.on('load.lg error.lg', function () {
+                onLoad && onLoad();
+            });
+            mediaObject.on('error.lg', function () {
+                onError && onError();
+            });
+        }
+    };
+    /**
+     *
+     * @param $el Current slide item
+     * @param index
+     * @param delay Delay is 0 except first time
+     * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin
+     * @param isFirstSlide
+     */
+    LightGallery.prototype.onLgObjectLoad = function (currentSlide, index, delay, speed, isFirstSlide, isHTML5VideoWithoutPoster) {
+        var _this = this;
+        this.onSlideObjectLoad(currentSlide, isHTML5VideoWithoutPoster, function () {
+            _this.triggerSlideItemLoad(currentSlide, index, delay, speed, isFirstSlide);
+        }, function () {
+            currentSlide.addClass('lg-complete lg-complete_');
+            currentSlide.html('<span class="lg-error-msg">Oops... Failed to load content...</span>');
+        });
+    };
+    LightGallery.prototype.triggerSlideItemLoad = function ($currentSlide, index, delay, speed, isFirstSlide) {
+        var _this = this;
+        var currentGalleryItem = this.galleryItems[index];
+        // Adding delay for video slides without poster for better performance and user experience
+        // Videos should start playing once once the gallery is completely loaded
+        var _speed = isFirstSlide &&
+            this.getSlideType(currentGalleryItem) === 'video' &&
+            !currentGalleryItem.poster
+            ? speed
+            : 0;
+        setTimeout(function () {
+            $currentSlide.addClass('lg-complete lg-complete_');
+            _this.LGel.trigger(lGEvents.slideItemLoad, {
+                index: index,
+                delay: delay || 0,
+                isFirstSlide: isFirstSlide,
+            });
+        }, _speed);
+    };
+    LightGallery.prototype.isFirstSlideWithZoomAnimation = function () {
+        return !!(!this.lGalleryOn &&
+            this.zoomFromOrigin &&
+            this.currentImageSize);
+    };
+    // Add video slideInfo
+    LightGallery.prototype.addSlideVideoInfo = function (items) {
+        var _this = this;
+        items.forEach(function (element, index) {
+            element.__slideVideoInfo = utils.isVideo(element.src, !!element.video, index);
+            if (element.__slideVideoInfo &&
+                _this.settings.loadYouTubePoster &&
+                !element.poster &&
+                element.__slideVideoInfo.youtube) {
+                element.poster = "//img.youtube.com/vi/" + element.__slideVideoInfo.youtube[1] + "/maxresdefault.jpg";
+            }
+        });
+    };
+    /**
+     *  Load slide content into slide.
+     *  This is used to load content into slides that is not visible too
+     *  @param {Number} index - index of the slide.
+     *  @param {Boolean} rec - if true call loadcontent() function again.
+     */
+    LightGallery.prototype.loadContent = function (index, rec) {
+        var _this = this;
+        var currentGalleryItem = this.galleryItems[index];
+        var $currentSlide = $LG(this.getSlideItemId(index));
+        var poster = currentGalleryItem.poster, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;
+        var src = currentGalleryItem.src;
+        var video = currentGalleryItem.video;
+        var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video;
+        if (currentGalleryItem.responsive) {
+            var srcDyItms = currentGalleryItem.responsive.split(',');
+            src = utils.getResponsiveSrc(srcDyItms) || src;
+        }
+        var videoInfo = currentGalleryItem.__slideVideoInfo;
+        var lgVideoStyle = '';
+        var iframe = !!currentGalleryItem.iframe;
+        var isFirstSlide = !this.lGalleryOn;
+        // delay for adding complete class. it is 0 except first time.
+        var delay = 0;
+        if (isFirstSlide) {
+            if (this.zoomFromOrigin && this.currentImageSize) {
+                delay = this.settings.startAnimationDuration + 10;
+            }
+            else {
+                delay = this.settings.backdropDuration + 10;
+            }
+        }
+        if (!$currentSlide.hasClass('lg-loaded')) {
+            if (videoInfo) {
+                var _a = this.mediaContainerPosition, top_2 = _a.top, bottom = _a.bottom;
+                var videoSize = utils.getSize(this.items[index], this.outer, top_2 + bottom, videoInfo && this.settings.videoMaxSize);
+                lgVideoStyle = this.getVideoContStyle(videoSize);
+            }
+            if (iframe) {
+                var markup = utils.getIframeMarkup(this.settings.iframeWidth, this.settings.iframeHeight, this.settings.iframeMaxWidth, this.settings.iframeMaxHeight, src, currentGalleryItem.iframeTitle);
+                $currentSlide.prepend(markup);
+            }
+            else if (poster) {
+                var dummyImg = '';
+                var hasStartAnimation = isFirstSlide &&
+                    this.zoomFromOrigin &&
+                    this.currentImageSize;
+                if (hasStartAnimation) {
+                    dummyImg = this.getDummyImageContent($currentSlide, index, '');
+                }
+                var markup = utils.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, this.settings.strings['playVideo'], videoInfo);
+                $currentSlide.prepend(markup);
+            }
+            else if (videoInfo) {
+                var markup = "<div class=\"lg-video-cont \" style=\"" + lgVideoStyle + "\"></div>";
+                $currentSlide.prepend(markup);
+            }
+            else {
+                this.setImgMarkup(src, $currentSlide, index);
+                if (srcset || sources) {
+                    var $img = $currentSlide.find('.lg-object');
+                    this.initPictureFill($img);
+                }
+            }
+            if (poster || videoInfo) {
+                this.LGel.trigger(lGEvents.hasVideo, {
+                    index: index,
+                    src: src,
+                    html5Video: _html5Video,
+                    hasPoster: !!poster,
+                });
+            }
+            this.LGel.trigger(lGEvents.afterAppendSlide, { index: index });
+            if (this.lGalleryOn &&
+                this.settings.appendSubHtmlTo === '.lg-item') {
+                this.addHtml(index);
+            }
+        }
+        // For first time add some delay for displaying the start animation.
+        var _speed = 0;
+        // Do not change the delay value because it is required for zoom plugin.
+        // If gallery opened from direct url (hash) speed value should be 0
+        if (delay && !$LG(document.body).hasClass('lg-from-hash')) {
+            _speed = delay;
+        }
+        // Only for first slide and zoomFromOrigin is enabled
+        if (this.isFirstSlideWithZoomAnimation()) {
+            setTimeout(function () {
+                $currentSlide
+                    .removeClass('lg-start-end-progress lg-start-progress')
+                    .removeAttr('style');
+            }, this.settings.startAnimationDuration + 100);
+            if (!$currentSlide.hasClass('lg-loaded')) {
+                setTimeout(function () {
+                    if (_this.getSlideType(currentGalleryItem) === 'image') {
+                        var alt = currentGalleryItem.alt;
+                        var altAttr = alt ? 'alt="' + alt + '"' : '';
+                        $currentSlide
+                            .find('.lg-img-wrap')
+                            .append(utils.getImgMarkup(index, src, altAttr, srcset, sizes, currentGalleryItem.sources));
+                        if (srcset || sources) {
+                            var $img = $currentSlide.find('.lg-object');
+                            _this.initPictureFill($img);
+                        }
+                    }
+                    if (_this.getSlideType(currentGalleryItem) === 'image' ||
+                        (_this.getSlideType(currentGalleryItem) === 'video' &&
+                            poster)) {
+                        _this.onLgObjectLoad($currentSlide, index, delay, _speed, true, false);
+                        // load remaining slides once the slide is completely loaded
+                        _this.onSlideObjectLoad($currentSlide, !!(videoInfo && videoInfo.html5 && !poster), function () {
+                            _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);
+                        }, function () {
+                            _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);
+                        });
+                    }
+                }, this.settings.startAnimationDuration + 100);
+            }
+        }
+        // SLide content has been added to dom
+        $currentSlide.addClass('lg-loaded');
+        if (!this.isFirstSlideWithZoomAnimation() ||
+            (this.getSlideType(currentGalleryItem) === 'video' && !poster)) {
+            this.onLgObjectLoad($currentSlide, index, delay, _speed, isFirstSlide, !!(videoInfo && videoInfo.html5 && !poster));
+        }
+        // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling
+        if ((!this.zoomFromOrigin || !this.currentImageSize) &&
+            $currentSlide.hasClass('lg-complete_') &&
+            !this.lGalleryOn) {
+            setTimeout(function () {
+                $currentSlide.addClass('lg-complete');
+            }, this.settings.backdropDuration);
+        }
+        // Content loaded
+        // Need to set lGalleryOn before calling preload function
+        this.lGalleryOn = true;
+        if (rec === true) {
+            if (!$currentSlide.hasClass('lg-complete_')) {
+                $currentSlide
+                    .find('.lg-object')
+                    .first()
+                    .on('load.lg error.lg', function () {
+                    _this.preload(index);
+                });
+            }
+            else {
+                this.preload(index);
+            }
+        }
+    };
+    /**
+     * @desc Remove dummy image content and load next slides
+     * Called only for the first time if zoomFromOrigin animation is enabled
+     * @param index
+     * @param $currentSlide
+     * @param speed
+     */
+    LightGallery.prototype.loadContentOnFirstSlideLoad = function (index, $currentSlide, speed) {
+        var _this = this;
+        setTimeout(function () {
+            $currentSlide.find('.lg-dummy-img').remove();
+            $currentSlide.removeClass('lg-first-slide');
+            _this.outer.removeClass('lg-first-slide-loading');
+            _this.isDummyImageRemoved = true;
+            _this.preload(index);
+        }, speed + 300);
+    };
+    LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) {
+        var _this = this;
+        if (numberOfItems === void 0) { numberOfItems = 0; }
+        var itemsToBeInsertedToDom = [];
+        // Minimum 2 items should be there
+        var possibleNumberOfItems = Math.max(numberOfItems, 3);
+        possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length);
+        var prevIndexItem = "lg-item-" + this.lgId + "-" + prevIndex;
+        if (this.galleryItems.length <= 3) {
+            this.galleryItems.forEach(function (_element, index) {
+                itemsToBeInsertedToDom.push("lg-item-" + _this.lgId + "-" + index);
+            });
+            return itemsToBeInsertedToDom;
+        }
+        if (index < (this.galleryItems.length - 1) / 2) {
+            for (var idx = index; idx > index - possibleNumberOfItems / 2 && idx >= 0; idx--) {
+                itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + idx);
+            }
+            var numberOfExistingItems = itemsToBeInsertedToDom.length;
+            for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {
+                itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (index + idx + 1));
+            }
+        }
+        else {
+            for (var idx = index; idx <= this.galleryItems.length - 1 &&
+                idx < index + possibleNumberOfItems / 2; idx++) {
+                itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + idx);
+            }
+            var numberOfExistingItems = itemsToBeInsertedToDom.length;
+            for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {
+                itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (index - idx - 1));
+            }
+        }
+        if (this.settings.loop) {
+            if (index === this.galleryItems.length - 1) {
+                itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + 0);
+            }
+            else if (index === 0) {
+                itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (this.galleryItems.length - 1));
+            }
+        }
+        if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {
+            itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + prevIndex);
+        }
+        return itemsToBeInsertedToDom;
+    };
+    LightGallery.prototype.organizeSlideItems = function (index, prevIndex) {
+        var _this = this;
+        var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, prevIndex, this.settings.numberOfSlideItemsInDom);
+        itemsToBeInsertedToDom.forEach(function (item) {
+            if (_this.currentItemsInDom.indexOf(item) === -1) {
+                _this.$inner.append("<div id=\"" + item + "\" class=\"lg-item\"></div>");
+            }
+        });
+        this.currentItemsInDom.forEach(function (item) {
+            if (itemsToBeInsertedToDom.indexOf(item) === -1) {
+                $LG("#" + item).remove();
+            }
+        });
+        return itemsToBeInsertedToDom;
+    };
+    /**
+     * Get previous index of the slide
+     */
+    LightGallery.prototype.getPreviousSlideIndex = function () {
+        var prevIndex = 0;
+        try {
+            var currentItemId = this.outer
+                .find('.lg-current')
+                .first()
+                .attr('id');
+            prevIndex = parseInt(currentItemId.split('-')[3]) || 0;
+        }
+        catch (error) {
+            prevIndex = 0;
+        }
+        return prevIndex;
+    };
+    LightGallery.prototype.setDownloadValue = function (index) {
+        if (this.settings.download) {
+            var currentGalleryItem = this.galleryItems[index];
+            var hideDownloadBtn = currentGalleryItem.downloadUrl === false ||
+                currentGalleryItem.downloadUrl === 'false';
+            if (hideDownloadBtn) {
+                this.outer.addClass('lg-hide-download');
+            }
+            else {
+                var $download = this.getElementById('lg-download');
+                this.outer.removeClass('lg-hide-download');
+                $download.attr('href', currentGalleryItem.downloadUrl ||
+                    currentGalleryItem.src);
+                if (currentGalleryItem.download) {
+                    $download.attr('download', currentGalleryItem.download);
+                }
+            }
+        }
+    };
+    LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) {
+        var _this = this;
+        if (this.lGalleryOn) {
+            previousSlideItem.addClass('lg-slide-progress');
+        }
+        setTimeout(function () {
+            // remove all transitions
+            _this.outer.addClass('lg-no-trans');
+            _this.outer
+                .find('.lg-item')
+                .removeClass('lg-prev-slide lg-next-slide');
+            if (direction === 'prev') {
+                //prevslide
+                currentSlideItem.addClass('lg-prev-slide');
+                previousSlideItem.addClass('lg-next-slide');
+            }
+            else {
+                // next slide
+                currentSlideItem.addClass('lg-next-slide');
+                previousSlideItem.addClass('lg-prev-slide');
+            }
+            // give 50 ms for browser to add/remove class
+            setTimeout(function () {
+                _this.outer.find('.lg-item').removeClass('lg-current');
+                currentSlideItem.addClass('lg-current');
+                // reset all transitions
+                _this.outer.removeClass('lg-no-trans');
+            }, 50);
+        }, this.lGalleryOn ? this.settings.slideDelay : 0);
+    };
+    /**
+     * Goto a specific slide.
+     * @param {Number} index - index of the slide
+     * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag
+     * @param {Boolean} fromThumb - true if slide function called via thumbnail click
+     * @param {String} direction - Direction of the slide(next/prev)
+     * @category lGPublicMethods
+     * @example
+     *  const plugin = lightGallery();
+     *  // to go to 3rd slide
+     *  plugin.slide(2);
+     *
+     */
+    LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) {
+        var _this = this;
+        var prevIndex = this.getPreviousSlideIndex();
+        this.currentItemsInDom = this.organizeSlideItems(index, prevIndex);
+        // Prevent multiple call, Required for hsh plugin
+        if (this.lGalleryOn && prevIndex === index) {
+            return;
+        }
+        var numberOfGalleryItems = this.galleryItems.length;
+        if (!this.lgBusy) {
+            if (this.settings.counter) {
+                this.updateCurrentCounter(index);
+            }
+            var currentSlideItem = this.getSlideItem(index);
+            var previousSlideItem_1 = this.getSlideItem(prevIndex);
+            var currentGalleryItem = this.galleryItems[index];
+            var videoInfo = currentGalleryItem.__slideVideoInfo;
+            this.outer.attr('data-lg-slide-type', this.getSlideType(currentGalleryItem));
+            this.setDownloadValue(index);
+            if (videoInfo) {
+                var _a = this.mediaContainerPosition, top_3 = _a.top, bottom = _a.bottom;
+                var videoSize = utils.getSize(this.items[index], this.outer, top_3 + bottom, videoInfo && this.settings.videoMaxSize);
+                this.resizeVideoSlide(index, videoSize);
+            }
+            this.LGel.trigger(lGEvents.beforeSlide, {
+                prevIndex: prevIndex,
+                index: index,
+                fromTouch: !!fromTouch,
+                fromThumb: !!fromThumb,
+            });
+            this.lgBusy = true;
+            clearTimeout(this.hideBarTimeout);
+            this.arrowDisable(index);
+            if (!direction) {
+                if (index < prevIndex) {
+                    direction = 'prev';
+                }
+                else if (index > prevIndex) {
+                    direction = 'next';
+                }
+            }
+            if (!fromTouch) {
+                this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1);
+            }
+            else {
+                this.outer
+                    .find('.lg-item')
+                    .removeClass('lg-prev-slide lg-current lg-next-slide');
+                var touchPrev = void 0;
+                var touchNext = void 0;
+                if (numberOfGalleryItems > 2) {
+                    touchPrev = index - 1;
+                    touchNext = index + 1;
+                    if (index === 0 && prevIndex === numberOfGalleryItems - 1) {
+                        // next slide
+                        touchNext = 0;
+                        touchPrev = numberOfGalleryItems - 1;
+                    }
+                    else if (index === numberOfGalleryItems - 1 &&
+                        prevIndex === 0) {
+                        // prev slide
+                        touchNext = 0;
+                        touchPrev = numberOfGalleryItems - 1;
+                    }
+                }
+                else {
+                    touchPrev = 0;
+                    touchNext = 1;
+                }
+                if (direction === 'prev') {
+                    this.getSlideItem(touchNext).addClass('lg-next-slide');
+                }
+                else {
+                    this.getSlideItem(touchPrev).addClass('lg-prev-slide');
+                }
+                currentSlideItem.addClass('lg-current');
+            }
+            // Do not put load content in set timeout as it needs to load immediately when the gallery is opened
+            if (!this.lGalleryOn) {
+                this.loadContent(index, true);
+            }
+            else {
+                setTimeout(function () {
+                    _this.loadContent(index, true);
+                    // Add title if this.settings.appendSubHtmlTo === lg-sub-html
+                    if (_this.settings.appendSubHtmlTo !== '.lg-item') {
+                        _this.addHtml(index);
+                    }
+                }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay));
+            }
+            setTimeout(function () {
+                _this.lgBusy = false;
+                previousSlideItem_1.removeClass('lg-slide-progress');
+                _this.LGel.trigger(lGEvents.afterSlide, {
+                    prevIndex: prevIndex,
+                    index: index,
+                    fromTouch: fromTouch,
+                    fromThumb: fromThumb,
+                });
+            }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay));
+        }
+        this.index = index;
+    };
+    LightGallery.prototype.updateCurrentCounter = function (index) {
+        this.getElementById('lg-counter-current').html(index + 1 + '');
+    };
+    LightGallery.prototype.updateCounterTotal = function () {
+        this.getElementById('lg-counter-all').html(this.galleryItems.length + '');
+    };
+    LightGallery.prototype.getSlideType = function (item) {
+        if (item.__slideVideoInfo) {
+            return 'video';
+        }
+        else if (item.iframe) {
+            return 'iframe';
+        }
+        else {
+            return 'image';
+        }
+    };
+    LightGallery.prototype.touchMove = function (startCoords, endCoords, e) {
+        var distanceX = endCoords.pageX - startCoords.pageX;
+        var distanceY = endCoords.pageY - startCoords.pageY;
+        var allowSwipe = false;
+        if (this.swipeDirection) {
+            allowSwipe = true;
+        }
+        else {
+            if (Math.abs(distanceX) > 15) {
+                this.swipeDirection = 'horizontal';
+                allowSwipe = true;
+            }
+            else if (Math.abs(distanceY) > 15) {
+                this.swipeDirection = 'vertical';
+                allowSwipe = true;
+            }
+        }
+        if (!allowSwipe) {
+            return;
+        }
+        var $currentSlide = this.getSlideItem(this.index);
+        if (this.swipeDirection === 'horizontal') {
+            e === null || e === void 0 ? void 0 : e.preventDefault();
+            // reset opacity and transition duration
+            this.outer.addClass('lg-dragging');
+            // move current slide
+            this.setTranslate($currentSlide, distanceX, 0);
+            // move next and prev slide with current slide
+            var width = $currentSlide.get().offsetWidth;
+            var slideWidthAmount = (width * 15) / 100;
+            var gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100);
+            this.setTranslate(this.outer.find('.lg-prev-slide').first(), -width + distanceX - gutter, 0);
+            this.setTranslate(this.outer.find('.lg-next-slide').first(), width + distanceX + gutter, 0);
+        }
+        else if (this.swipeDirection === 'vertical') {
+            if (this.settings.swipeToClose) {
+                e === null || e === void 0 ? void 0 : e.preventDefault();
+                this.$container.addClass('lg-dragging-vertical');
+                var opacity = 1 - Math.abs(distanceY) / window.innerHeight;
+                this.$backdrop.css('opacity', opacity);
+                var scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2);
+                this.setTranslate($currentSlide, 0, distanceY, scale, scale);
+                if (Math.abs(distanceY) > 100) {
+                    this.outer
+                        .addClass('lg-hide-items')
+                        .removeClass('lg-components-open');
+                }
+            }
+        }
+    };
+    LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) {
+        var _this = this;
+        var distance;
+        // keep slide animation for any mode while dragg/swipe
+        if (this.settings.mode !== 'lg-slide') {
+            this.outer.addClass('lg-slide');
+        }
+        // set transition duration
+        setTimeout(function () {
+            _this.$container.removeClass('lg-dragging-vertical');
+            _this.outer
+                .removeClass('lg-dragging lg-hide-items')
+                .addClass('lg-components-open');
+            var triggerClick = true;
+            if (_this.swipeDirection === 'horizontal') {
+                distance = endCoords.pageX - startCoords.pageX;
+                var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX);
+                if (distance < 0 &&
+                    distanceAbs > _this.settings.swipeThreshold) {
+                    _this.goToNextSlide(true);
+                    triggerClick = false;
+                }
+                else if (distance > 0 &&
+                    distanceAbs > _this.settings.swipeThreshold) {
+                    _this.goToPrevSlide(true);
+                    triggerClick = false;
+                }
+            }
+            else if (_this.swipeDirection === 'vertical') {
+                distance = Math.abs(endCoords.pageY - startCoords.pageY);
+                if (_this.settings.closable &&
+                    _this.settings.swipeToClose &&
+                    distance > 100) {
+                    _this.closeGallery();
+                    return;
+                }
+                else {
+                    _this.$backdrop.css('opacity', 1);
+                }
+            }
+            _this.outer.find('.lg-item').removeAttr('style');
+            if (triggerClick &&
+                Math.abs(endCoords.pageX - startCoords.pageX) < 5) {
+                // Trigger click if distance is less than 5 pix
+                var target = $LG(event.target);
+                if (_this.isPosterElement(target)) {
+                    _this.LGel.trigger(lGEvents.posterClick);
+                }
+            }
+            _this.swipeDirection = undefined;
+        });
+        // remove slide class once drag/swipe is completed if mode is not slide
+        setTimeout(function () {
+            if (!_this.outer.hasClass('lg-dragging') &&
+                _this.settings.mode !== 'lg-slide') {
+                _this.outer.removeClass('lg-slide');
+            }
+        }, this.settings.speed + 100);
+    };
+    LightGallery.prototype.enableSwipe = function () {
+        var _this = this;
+        var startCoords = {};
+        var endCoords = {};
+        var isMoved = false;
+        var isSwiping = false;
+        if (this.settings.enableSwipe) {
+            this.$inner.on('touchstart.lg', function (e) {
+                _this.dragOrSwipeEnabled = true;
+                var $item = _this.getSlideItem(_this.index);
+                if (($LG(e.target).hasClass('lg-item') ||
+                    $item.get().contains(e.target)) &&
+                    !_this.outer.hasClass('lg-zoomed') &&
+                    !_this.lgBusy &&
+                    e.touches.length === 1) {
+                    isSwiping = true;
+                    _this.touchAction = 'swipe';
+                    _this.manageSwipeClass();
+                    startCoords = {
+                        pageX: e.touches[0].pageX,
+                        pageY: e.touches[0].pageY,
+                    };
+                }
+            });
+            this.$inner.on('touchmove.lg', function (e) {
+                if (isSwiping &&
+                    _this.touchAction === 'swipe' &&
+                    e.touches.length === 1) {
+                    endCoords = {
+                        pageX: e.touches[0].pageX,
+                        pageY: e.touches[0].pageY,
+                    };
+                    _this.touchMove(startCoords, endCoords, e);
+                    isMoved = true;
+                }
+            });
+            this.$inner.on('touchend.lg', function (event) {
+                if (_this.touchAction === 'swipe') {
+                    if (isMoved) {
+                        isMoved = false;
+                        _this.touchEnd(endCoords, startCoords, event);
+                    }
+                    else if (isSwiping) {
+                        var target = $LG(event.target);
+                        if (_this.isPosterElement(target)) {
+                            _this.LGel.trigger(lGEvents.posterClick);
+                        }
+                    }
+                    _this.touchAction = undefined;
+                    isSwiping = false;
+                }
+            });
+        }
+    };
+    LightGallery.prototype.enableDrag = function () {
+        var _this = this;
+        var startCoords = {};
+        var endCoords = {};
+        var isDraging = false;
+        var isMoved = false;
+        if (this.settings.enableDrag) {
+            this.outer.on('mousedown.lg', function (e) {
+                _this.dragOrSwipeEnabled = true;
+                var $item = _this.getSlideItem(_this.index);
+                if ($LG(e.target).hasClass('lg-item') ||
+                    $item.get().contains(e.target)) {
+                    if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) {
+                        e.preventDefault();
+                        if (!_this.lgBusy) {
+                            _this.manageSwipeClass();
+                            startCoords = {
+                                pageX: e.pageX,
+                                pageY: e.pageY,
+                            };
+                            isDraging = true;
+                            // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
+                            _this.outer.get().scrollLeft += 1;
+                            _this.outer.get().scrollLeft -= 1;
+                            // *
+                            _this.outer
+                                .removeClass('lg-grab')
+                                .addClass('lg-grabbing');
+                            _this.LGel.trigger(lGEvents.dragStart);
+                        }
+                    }
+                }
+            });
+            $LG(window).on("mousemove.lg.global" + this.lgId, function (e) {
+                if (isDraging && _this.lgOpened) {
+                    isMoved = true;
+                    endCoords = {
+                        pageX: e.pageX,
+                        pageY: e.pageY,
+                    };
+                    _this.touchMove(startCoords, endCoords);
+                    _this.LGel.trigger(lGEvents.dragMove);
+                }
+            });
+            $LG(window).on("mouseup.lg.global" + this.lgId, function (event) {
+                if (!_this.lgOpened) {
+                    return;
+                }
+                var target = $LG(event.target);
+                if (isMoved) {
+                    isMoved = false;
+                    _this.touchEnd(endCoords, startCoords, event);
+                    _this.LGel.trigger(lGEvents.dragEnd);
+                }
+                else if (_this.isPosterElement(target)) {
+                    _this.LGel.trigger(lGEvents.posterClick);
+                }
+                // Prevent execution on click
+                if (isDraging) {
+                    isDraging = false;
+                    _this.outer.removeClass('lg-grabbing').addClass('lg-grab');
+                }
+            });
+        }
+    };
+    LightGallery.prototype.triggerPosterClick = function () {
+        var _this = this;
+        this.$inner.on('click.lg', function (event) {
+            if (!_this.dragOrSwipeEnabled &&
+                _this.isPosterElement($LG(event.target))) {
+                _this.LGel.trigger(lGEvents.posterClick);
+            }
+        });
+    };
+    LightGallery.prototype.manageSwipeClass = function () {
+        var _touchNext = this.index + 1;
+        var _touchPrev = this.index - 1;
+        if (this.settings.loop && this.galleryItems.length > 2) {
+            if (this.index === 0) {
+                _touchPrev = this.galleryItems.length - 1;
+            }
+            else if (this.index === this.galleryItems.length - 1) {
+                _touchNext = 0;
+            }
+        }
+        this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');
+        if (_touchPrev > -1) {
+            this.getSlideItem(_touchPrev).addClass('lg-prev-slide');
+        }
+        this.getSlideItem(_touchNext).addClass('lg-next-slide');
+    };
+    /**
+     * Go to next slide
+     * @param {Boolean} fromTouch - true if slide function called via touch event
+     * @category lGPublicMethods
+     * @example
+     *  const plugin = lightGallery();
+     *  plugin.goToNextSlide();
+     * @see <a href="/demos/methods/">Demo</a>
+     */
+    LightGallery.prototype.goToNextSlide = function (fromTouch) {
+        var _this = this;
+        var _loop = this.settings.loop;
+        if (fromTouch && this.galleryItems.length < 3) {
+            _loop = false;
+        }
+        if (!this.lgBusy) {
+            if (this.index + 1 < this.galleryItems.length) {
+                this.index++;
+                this.LGel.trigger(lGEvents.beforeNextSlide, {
+                    index: this.index,
+                });
+                this.slide(this.index, !!fromTouch, false, 'next');
+            }
+            else {
+                if (_loop) {
+                    this.index = 0;
+                    this.LGel.trigger(lGEvents.beforeNextSlide, {
+                        index: this.index,
+                    });
+                    this.slide(this.index, !!fromTouch, false, 'next');
+                }
+                else if (this.settings.slideEndAnimation && !fromTouch) {
+                    this.outer.addClass('lg-right-end');
+                    setTimeout(function () {
+                        _this.outer.removeClass('lg-right-end');
+                    }, 400);
+                }
+            }
+        }
+    };
+    /**
+     * Go to previous slides
+     * @param {Boolean} fromTouch - true if slide function called via touch event
+     * @category lGPublicMethods
+     * @example
+     *  const plugin = lightGallery({});
+     *  plugin.goToPrevSlide();
+     * @see <a href="/demos/methods/">Demo</a>
+     *
+     */
+    LightGallery.prototype.goToPrevSlide = function (fromTouch) {
+        var _this = this;
+        var _loop = this.settings.loop;
+        if (fromTouch && this.galleryItems.length < 3) {
+            _loop = false;
+        }
+        if (!this.lgBusy) {
+            if (this.index > 0) {
+                this.index--;
+                this.LGel.trigger(lGEvents.beforePrevSlide, {
+                    index: this.index,
+                    fromTouch: fromTouch,
+                });
+                this.slide(this.index, !!fromTouch, false, 'prev');
+            }
+            else {
+                if (_loop) {
+                    this.index = this.galleryItems.length - 1;
+                    this.LGel.trigger(lGEvents.beforePrevSlide, {
+                        index: this.index,
+                        fromTouch: fromTouch,
+                    });
+                    this.slide(this.index, !!fromTouch, false, 'prev');
+                }
+                else if (this.settings.slideEndAnimation && !fromTouch) {
+                    this.outer.addClass('lg-left-end');
+                    setTimeout(function () {
+                        _this.outer.removeClass('lg-left-end');
+                    }, 400);
+                }
+            }
+        }
+    };
+    LightGallery.prototype.keyPress = function () {
+        var _this = this;
+        $LG(window).on("keydown.lg.global" + this.lgId, function (e) {
+            if (_this.lgOpened &&
+                _this.settings.escKey === true &&
+                e.keyCode === 27) {
+                e.preventDefault();
+                if (_this.settings.allowMediaOverlap &&
+                    _this.outer.hasClass('lg-can-toggle') &&
+                    _this.outer.hasClass('lg-components-open')) {
+                    _this.outer.removeClass('lg-components-open');
+                }
+                else {
+                    _this.closeGallery();
+                }
+            }
+            if (_this.lgOpened && _this.galleryItems.length > 1) {
+                if (e.keyCode === 37) {
+                    e.preventDefault();
+                    _this.goToPrevSlide();
+                }
+                if (e.keyCode === 39) {
+                    e.preventDefault();
+                    _this.goToNextSlide();
+                }
+            }
+        });
+    };
+    LightGallery.prototype.arrow = function () {
+        var _this = this;
+        this.getElementById('lg-prev').on('click.lg', function () {
+            _this.goToPrevSlide();
+        });
+        this.getElementById('lg-next').on('click.lg', function () {
+            _this.goToNextSlide();
+        });
+    };
+    LightGallery.prototype.arrowDisable = function (index) {
+        // Disable arrows if settings.hideControlOnEnd is true
+        if (!this.settings.loop && this.settings.hideControlOnEnd) {
+            var $prev = this.getElementById('lg-prev');
+            var $next = this.getElementById('lg-next');
+            if (index + 1 === this.galleryItems.length) {
+                $next.attr('disabled', 'disabled').addClass('disabled');
+            }
+            else {
+                $next.removeAttr('disabled').removeClass('disabled');
+            }
+            if (index === 0) {
+                $prev.attr('disabled', 'disabled').addClass('disabled');
+            }
+            else {
+                $prev.removeAttr('disabled').removeClass('disabled');
+            }
+        }
+    };
+    LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) {
+        if (scaleX === void 0) { scaleX = 1; }
+        if (scaleY === void 0) { scaleY = 1; }
+        $el.css('transform', 'translate3d(' +
+            xValue +
+            'px, ' +
+            yValue +
+            'px, 0px) scale3d(' +
+            scaleX +
+            ', ' +
+            scaleY +
+            ', 1)');
+    };
+    LightGallery.prototype.mousewheel = function () {
+        var _this = this;
+        var lastCall = 0;
+        this.outer.on('wheel.lg', function (e) {
+            if (!e.deltaY || _this.galleryItems.length < 2) {
+                return;
+            }
+            e.preventDefault();
+            var now = new Date().getTime();
+            if (now - lastCall < 1000) {
+                return;
+            }
+            lastCall = now;
+            if (e.deltaY > 0) {
+                _this.goToNextSlide();
+            }
+            else if (e.deltaY < 0) {
+                _this.goToPrevSlide();
+            }
+        });
+    };
+    LightGallery.prototype.isSlideElement = function (target) {
+        return (target.hasClass('lg-outer') ||
+            target.hasClass('lg-item') ||
+            target.hasClass('lg-img-wrap'));
+    };
+    LightGallery.prototype.isPosterElement = function (target) {
+        var playButton = this.getSlideItem(this.index)
+            .find('.lg-video-play-button')
+            .get();
+        return (target.hasClass('lg-video-poster') ||
+            target.hasClass('lg-video-play-button') ||
+            (playButton && playButton.contains(target.get())));
+    };
+    /**
+     * Maximize minimize inline gallery.
+     * @category lGPublicMethods
+     */
+    LightGallery.prototype.toggleMaximize = function () {
+        var _this = this;
+        this.getElementById('lg-maximize').on('click.lg', function () {
+            _this.$container.toggleClass('lg-inline');
+            _this.refreshOnResize();
+        });
+    };
+    LightGallery.prototype.invalidateItems = function () {
+        for (var index = 0; index < this.items.length; index++) {
+            var element = this.items[index];
+            var $element = $LG(element);
+            $element.off("click.lgcustom-item-" + $element.attr('data-lg-id'));
+        }
+    };
+    LightGallery.prototype.trapFocus = function () {
+        var _this = this;
+        this.$container.get().focus({
+            preventScroll: true,
+        });
+        $LG(window).on("keydown.lg.global" + this.lgId, function (e) {
+            if (!_this.lgOpened) {
+                return;
+            }
+            var isTabPressed = e.key === 'Tab' || e.keyCode === 9;
+            if (!isTabPressed) {
+                return;
+            }
+            var focusableEls = utils.getFocusableElements(_this.$container.get());
+            var firstFocusableEl = focusableEls[0];
+            var lastFocusableEl = focusableEls[focusableEls.length - 1];
+            if (e.shiftKey) {
+                if (document.activeElement === firstFocusableEl) {
+                    lastFocusableEl.focus();
+                    e.preventDefault();
+                }
+            }
+            else {
+                if (document.activeElement === lastFocusableEl) {
+                    firstFocusableEl.focus();
+                    e.preventDefault();
+                }
+            }
+        });
+    };
+    LightGallery.prototype.manageCloseGallery = function () {
+        var _this = this;
+        if (!this.settings.closable)
+            return;
+        var mousedown = false;
+        this.getElementById('lg-close').on('click.lg', function () {
+            _this.closeGallery();
+        });
+        if (this.settings.closeOnTap) {
+            // If you drag the slide and release outside gallery gets close on chrome
+            // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer
+            this.outer.on('mousedown.lg', function (e) {
+                var target = $LG(e.target);
+                if (_this.isSlideElement(target)) {
+                    mousedown = true;
+                }
+                else {
+                    mousedown = false;
+                }
+            });
+            this.outer.on('mousemove.lg', function () {
+                mousedown = false;
+            });
+            this.outer.on('mouseup.lg', function (e) {
+                var target = $LG(e.target);
+                if (_this.isSlideElement(target) && mousedown) {
+                    if (!_this.outer.hasClass('lg-dragging')) {
+                        _this.closeGallery();
+                    }
+                }
+            });
+        }
+    };
+    /**
+     * Close lightGallery if it is opened.
+     *
+     * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery
+     * @return returns the estimated time to close gallery completely including the close animation duration
+     * @category lGPublicMethods
+     * @example
+     *  const plugin = lightGallery();
+     *  plugin.closeGallery();
+     *
+     */
+    LightGallery.prototype.closeGallery = function (force) {
+        var _this = this;
+        if (!this.lgOpened || (!this.settings.closable && !force)) {
+            return 0;
+        }
+        this.LGel.trigger(lGEvents.beforeClose);
+        if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {
+            $LG(window).scrollTop(this.prevScrollTop);
+        }
+        var currentItem = this.items[this.index];
+        var transform;
+        if (this.zoomFromOrigin && currentItem) {
+            var _a = this.mediaContainerPosition, top_4 = _a.top, bottom = _a.bottom;
+            var _b = this.galleryItems[this.index], __slideVideoInfo = _b.__slideVideoInfo, poster = _b.poster;
+            var imageSize = utils.getSize(currentItem, this.outer, top_4 + bottom, __slideVideoInfo && poster && this.settings.videoMaxSize);
+            transform = utils.getTransform(currentItem, this.outer, top_4, bottom, imageSize);
+        }
+        if (this.zoomFromOrigin && transform) {
+            this.outer.addClass('lg-closing lg-zoom-from-image');
+            this.getSlideItem(this.index)
+                .addClass('lg-start-end-progress')
+                .css('transition-duration', this.settings.startAnimationDuration + 'ms')
+                .css('transform', transform);
+        }
+        else {
+            this.outer.addClass('lg-hide-items');
+            // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true
+            // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts
+            this.outer.removeClass('lg-zoom-from-image');
+        }
+        // Unbind all events added by lightGallery
+        // @todo
+        //this.$el.off('.lg.tm');
+        this.destroyModules();
+        this.lGalleryOn = false;
+        this.isDummyImageRemoved = false;
+        this.zoomFromOrigin = this.settings.zoomFromOrigin;
+        clearTimeout(this.hideBarTimeout);
+        this.hideBarTimeout = false;
+        $LG('html').removeClass('lg-on');
+        this.outer.removeClass('lg-visible lg-components-open');
+        // Resetting opacity to 0 isd required as  vertical swipe to close function adds inline opacity.
+        this.$backdrop.removeClass('in').css('opacity', 0);
+        var removeTimeout = this.zoomFromOrigin && transform
+            ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration)
+            : this.settings.backdropDuration;
+        this.$container.removeClass('lg-show-in');
+        // Once the closign animation is completed and gallery is invisible
+        setTimeout(function () {
+            if (_this.zoomFromOrigin && transform) {
+                _this.outer.removeClass('lg-zoom-from-image');
+            }
+            _this.$container.removeClass('lg-show');
+            // Reset scrollbar
+            _this.resetScrollBar();
+            // Need to remove inline opacity as it is used in the stylesheet as well
+            _this.$backdrop
+                .removeAttr('style')
+                .css('transition-duration', _this.settings.backdropDuration + 'ms');
+            _this.outer.removeClass("lg-closing " + _this.settings.startClass);
+            _this.getSlideItem(_this.index).removeClass('lg-start-end-progress');
+            _this.$inner.empty();
+            if (_this.lgOpened) {
+                _this.LGel.trigger(lGEvents.afterClose, {
+                    instance: _this,
+                });
+            }
+            if (_this.$container.get()) {
+                _this.$container.get().blur();
+            }
+            _this.lgOpened = false;
+        }, removeTimeout + 100);
+        return removeTimeout + 100;
+    };
+    LightGallery.prototype.initModules = function () {
+        this.plugins.forEach(function (module) {
+            try {
+                module.init();
+            }
+            catch (err) {
+                console.warn("lightGallery:- make sure lightGallery module is properly initiated");
+            }
+        });
+    };
+    LightGallery.prototype.destroyModules = function (destroy) {
+        this.plugins.forEach(function (module) {
+            try {
+                if (destroy) {
+                    module.destroy();
+                }
+                else {
+                    module.closeGallery && module.closeGallery();
+                }
+            }
+            catch (err) {
+                console.warn("lightGallery:- make sure lightGallery module is properly destroyed");
+            }
+        });
+    };
+    /**
+     * Refresh lightGallery with new set of children.
+     *
+     * @description This is useful to update the gallery when the child elements are changed without calling destroy method.
+     *
+     * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery
+     * @see <a href="/demos/dynamic-mode/">Demo</a>
+     * @category lGPublicMethods
+     * @example
+     *  const plugin = lightGallery();
+     *  // Delete or add children, then call
+     *  plugin.refresh();
+     *
+     */
+    LightGallery.prototype.refresh = function (galleryItems) {
+        if (!this.settings.dynamic) {
+            this.invalidateItems();
+        }
+        if (galleryItems) {
+            this.galleryItems = galleryItems;
+        }
+        else {
+            this.galleryItems = this.getItems();
+        }
+        this.updateControls();
+        this.openGalleryOnItemClick();
+        this.LGel.trigger(lGEvents.updateSlides);
+    };
+    LightGallery.prototype.updateControls = function () {
+        this.addSlideVideoInfo(this.galleryItems);
+        this.updateCounterTotal();
+        this.manageSingleSlideClassName();
+    };
+    LightGallery.prototype.destroyGallery = function () {
+        this.destroyModules(true);
+        if (!this.settings.dynamic) {
+            this.invalidateItems();
+        }
+        $LG(window).off(".lg.global" + this.lgId);
+        this.LGel.off('.lg');
+        this.$container.remove();
+    };
+    /**
+     * Destroy lightGallery.
+     * Destroy lightGallery and its plugin instances completely
+     *
+     * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance.
+     * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed.
+     * You can use refresh method most of the times.
+     * @category lGPublicMethods
+     * @example
+     *  const plugin = lightGallery();
+     *  plugin.destroy();
+     *
+     */
+    LightGallery.prototype.destroy = function () {
+        var closeTimeout = this.closeGallery(true);
+        if (closeTimeout) {
+            setTimeout(this.destroyGallery.bind(this), closeTimeout);
+        }
+        else {
+            this.destroyGallery();
+        }
+        return closeTimeout;
+    };
+    return LightGallery;
+}());
+
+function lightGallery(el, options) {
+    return new LightGallery(el, options);
+}
+
+export default lightGallery;
+//# sourceMappingURL=lightgallery.es5.js.map
diff --git a/resources/lightgallery/lightgallery.min.js b/resources/lightgallery/lightgallery.min.js
new file mode 100644
index 0000000..3f2b7d5
--- /dev/null
+++ b/resources/lightgallery/lightgallery.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lightGallery=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,i=1,s=arguments.length;i<s;i++)for(var n in e=arguments[i])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}).apply(this,arguments)};var e="lgAfterAppendSlide",i="lgInit",s="lgHasVideo",n="lgContainerResize",o="lgUpdateSlides",r="lgAfterAppendSubHtml",l="lgBeforeOpen",a="lgAfterOpen",d="lgSlideItemLoad",g="lgBeforeSlide",h="lgAfterSlide",c="lgPosterClick",u="lgDragStart",m="lgDragMove",p="lgDragEnd",f="lgBeforeNextSlide",y="lgBeforePrevSlide",v="lgBeforeClose",b="lgAfterClose",I={mode:"lg-slide",easing:"ease",speed:400,licenseKey:"0000-0000-000-0000",height:"100%",width:"100%",addClass:"",startClass:"lg-start-zoom",backdropDuration:300,container:"",startAnimationDuration:400,zoomFromOrigin:!0,hideBarsDelay:0,showBarsAfter:1e4,slideDelay:0,supportLegacyBrowser:!0,allowMediaOverlap:!1,videoMaxSize:"1280-720",loadYouTubePoster:!0,defaultCaptionHeight:0,ariaLabelledby:"",ariaDescribedby:"",resetScrollPosition:!0,hideScrollbar:!1,closable:!0,swipeToClose:!0,closeOnTap:!0,showCloseIcon:!0,showMaximizeIcon:!1,loop:!0,escKey:!0,keyPress:!0,trapFocus:!0,controls:!0,slideEndAnimation:!0,hideControlOnEnd:!1,mousewheel:!1,getCaptionFromTitleOrAlt:!0,appendSubHtmlTo:".lg-sub-html",subHtmlSelectorRelative:!1,preload:2,numberOfSlideItemsInDom:10,selector:"",selectWithin:"",nextHtml:"",prevHtml:"",index:0,iframeWidth:"100%",iframeHeight:"100%",iframeMaxWidth:"100%",iframeMaxHeight:"100%",download:!0,counter:!0,appendCounterTo:".lg-toolbar",swipeThreshold:50,enableSwipe:!0,enableDrag:!0,dynamic:!1,dynamicEl:[],extraProps:[],exThumbImage:"",isMobile:void 0,mobileSettings:{controls:!1,showCloseIcon:!1,download:!1},plugins:[],strings:{closeGallery:"Close gallery",toggleMaximize:"Toggle maximize",previousSlide:"Previous slide",nextSlide:"Next slide",download:"Download",playVideo:"Play video"}};var C=function(){function t(t){return this.cssVenderPrefixes=["TransitionDuration","TransitionTimingFunction","Transform","Transition"],this.selector=this._getSelector(t),this.firstElement=this._getFirstEl(),this}return t.generateUUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(t){var e=16*Math.random()|0;return("x"==t?e:3&e|8).toString(16)}))},t.prototype._getSelector=function(t,e){return void 0===e&&(e=document),"string"!=typeof t?t:(e=e||document,"#"===t.substring(0,1)?e.querySelector(t):e.querySelectorAll(t))},t.prototype._each=function(t){return this.selector?(void 0!==this.selector.length?[].forEach.call(this.selector,t):t(this.selector,0),this):this},t.prototype._setCssVendorPrefix=function(t,e,i){var s=e.replace(/-([a-z])/gi,(function(t,e){return e.toUpperCase()}));-1!==this.cssVenderPrefixes.indexOf(s)?(t.style[s.charAt(0).toLowerCase()+s.slice(1)]=i,t.style["webkit"+s]=i,t.style["moz"+s]=i,t.style["ms"+s]=i,t.style["o"+s]=i):t.style[s]=i},t.prototype._getFirstEl=function(){return this.selector&&void 0!==this.selector.length?this.selector[0]:this.selector},t.prototype.isEventMatched=function(t,e){var i=e.split(".");return t.split(".").filter((function(t){return t})).every((function(t){return-1!==i.indexOf(t)}))},t.prototype.attr=function(t,e){return void 0===e?this.firstElement?this.firstElement.getAttribute(t):"":(this._each((function(i){i.setAttribute(t,e)})),this)},t.prototype.find=function(t){return x(this._getSelector(t,this.selector))},t.prototype.first=function(){return this.selector&&void 0!==this.selector.length?x(this.selector[0]):x(this.selector)},t.prototype.eq=function(t){return x(this.selector[t])},t.prototype.parent=function(){return x(this.selector.parentElement)},t.prototype.get=function(){return this._getFirstEl()},t.prototype.removeAttr=function(t){var e=t.split(" ");return this._each((function(t){e.forEach((function(e){return t.removeAttribute(e)}))})),this},t.prototype.wrap=function(t){if(!this.firstElement)return this;var e=document.createElement("div");return e.className=t,this.firstElement.parentNode.insertBefore(e,this.firstElement),this.firstElement.parentNode.removeChild(this.firstElement),e.appendChild(this.firstElement),this},t.prototype.addClass=function(t){return void 0===t&&(t=""),this._each((function(e){t.split(" ").forEach((function(t){t&&e.classList.add(t)}))})),this},t.prototype.removeClass=function(t){return this._each((function(e){t.split(" ").forEach((function(t){t&&e.classList.remove(t)}))})),this},t.prototype.hasClass=function(t){return!!this.firstElement&&this.firstElement.classList.contains(t)},t.prototype.hasAttribute=function(t){return!!this.firstElement&&this.firstElement.hasAttribute(t)},t.prototype.toggleClass=function(t){return this.firstElement?(this.hasClass(t)?this.removeClass(t):this.addClass(t),this):this},t.prototype.css=function(t,e){var i=this;return this._each((function(s){i._setCssVendorPrefix(s,t,e)})),this},t.prototype.on=function(e,i){var s=this;return this.selector?(e.split(" ").forEach((function(e){Array.isArray(t.eventListeners[e])||(t.eventListeners[e]=[]),t.eventListeners[e].push(i),s.selector.addEventListener(e.split(".")[0],i)})),this):this},t.prototype.once=function(t,e){var i=this;return this.on(t,(function(){i.off(t),e(t)})),this},t.prototype.off=function(e){var i=this;return this.selector?(Object.keys(t.eventListeners).forEach((function(s){i.isEventMatched(e,s)&&(t.eventListeners[s].forEach((function(t){i.selector.removeEventListener(s.split(".")[0],t)})),t.eventListeners[s]=[])})),this):this},t.prototype.trigger=function(t,e){if(!this.firstElement)return this;var i=new CustomEvent(t.split(".")[0],{detail:e||null});return this.firstElement.dispatchEvent(i),this},t.prototype.load=function(t){var e=this;return fetch(t).then((function(t){return t.text()})).then((function(t){e.selector.innerHTML=t})),this},t.prototype.html=function(t){return void 0===t?this.firstElement?this.firstElement.innerHTML:"":(this._each((function(e){e.innerHTML=t})),this)},t.prototype.append=function(t){return this._each((function(e){"string"==typeof t?e.insertAdjacentHTML("beforeend",t):e.appendChild(t)})),this},t.prototype.prepend=function(t){return this._each((function(e){e.insertAdjacentHTML("afterbegin",t)})),this},t.prototype.remove=function(){return this._each((function(t){t.parentNode.removeChild(t)})),this},t.prototype.empty=function(){return this._each((function(t){t.innerHTML=""})),this},t.prototype.scrollTop=function(t){return void 0!==t?(document.body.scrollTop=t,document.documentElement.scrollTop=t,this):window.pageYOffset||document.documentElement.scrollTop||document.body.scrollTop||0},t.prototype.scrollLeft=function(t){return void 0!==t?(document.body.scrollLeft=t,document.documentElement.scrollLeft=t,this):window.pageXOffset||document.documentElement.scrollLeft||document.body.scrollLeft||0},t.prototype.offset=function(){if(!this.firstElement)return{left:0,top:0};var t=this.firstElement.getBoundingClientRect(),e=x("body").style().marginLeft;return{left:t.left-parseFloat(e)+this.scrollLeft(),top:t.top+this.scrollTop()}},t.prototype.style=function(){return this.firstElement?this.firstElement.currentStyle||window.getComputedStyle(this.firstElement):{}},t.prototype.width=function(){var t=this.style();return this.firstElement.clientWidth-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight)},t.prototype.height=function(){var t=this.style();return this.firstElement.clientHeight-parseFloat(t.paddingTop)-parseFloat(t.paddingBottom)},t.eventListeners={},t}();function x(t){return function(){if("function"==typeof window.CustomEvent)return!1;window.CustomEvent=function(t,e){e=e||{bubbles:!1,cancelable:!1,detail:null};var i=document.createEvent("CustomEvent");return i.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),i}}(),Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector),new C(t)}var w=["src","sources","subHtml","subHtmlUrl","html","video","poster","slideName","responsive","srcset","sizes","iframe","downloadUrl","download","width","facebookShareUrl","tweetText","iframeTitle","twitterShareUrl","pinterestShareUrl","pinterestText","fbHtml","disqusIdentifier","disqusUrl"];function S(t){return"href"===t?"src":t=(t=(t=t.replace("data-","")).charAt(0).toLowerCase()+t.slice(1)).replace(/-([a-z])/g,(function(t){return t[1].toUpperCase()}))}var T=function(t,e,i,s){void 0===i&&(i=0);var n=x(t).attr("data-lg-size")||s;if(n){var o=n.split(",");if(o[1])for(var r=window.innerWidth,l=0;l<o.length;l++){var a=o[l];if(parseInt(a.split("-")[2],10)>r){n=a;break}l===o.length-1&&(n=a)}var d=n.split("-"),g=parseInt(d[0],10),h=parseInt(d[1],10),c=e.width(),u=e.height()-i,m=Math.min(c,g),p=Math.min(u,h),f=Math.min(m/g,p/h);return{width:g*f,height:h*f}}},E=function(t,e,i,s,n){if(n){var o=x(t).find("img").first();if(o.get()){var r=e.get().getBoundingClientRect(),l=r.width,a=e.height()-(i+s),d=o.width(),g=o.height(),h=o.style(),c=(l-d)/2-o.offset().left+(parseFloat(h.paddingLeft)||0)+(parseFloat(h.borderLeft)||0)+x(window).scrollLeft()+r.left,u=(a-g)/2-o.offset().top+(parseFloat(h.paddingTop)||0)+(parseFloat(h.borderTop)||0)+x(window).scrollTop()+i;return"translate3d("+(c*=-1)+"px, "+(u*=-1)+"px, 0) scale3d("+d/n.width+", "+g/n.height+", 1)"}}},O=function(t,e,i,s,n,o){return'<div class="lg-video-cont lg-has-iframe" style="width:'+t+"; max-width:"+i+"; height: "+e+"; max-height:"+s+'">\n                    <iframe class="lg-object" frameborder="0" '+(o?'title="'+o+'"':"")+' src="'+n+'"  allowfullscreen="true"></iframe>\n                </div>'},D=function(t,e,i,s,n,o){var r="<img "+i+" "+(s?'srcset="'+s+'"':"")+"  "+(n?'sizes="'+n+'"':"")+' class="lg-object lg-image" data-index="'+t+'" src="'+e+'" />',l="";o&&(l=("string"==typeof o?JSON.parse(o):o).map((function(t){var e="";return Object.keys(t).forEach((function(i){e+=" "+i+'="'+t[i]+'"'})),"<source "+e+"></source>"})));return""+l+r},L=function(t){for(var e=[],i=[],s="",n=0;n<t.length;n++){var o=t[n].split(" ");""===o[0]&&o.splice(0,1),i.push(o[0]),e.push(o[1])}for(var r=window.innerWidth,l=0;l<e.length;l++)if(parseInt(e[l],10)>r){s=i[l];break}return s},z=function(t){return!!t&&(!!t.complete&&0!==t.naturalWidth)},M=function(t,e,i,s,n){return'<div class="lg-video-cont '+(n&&n.youtube?"lg-has-youtube":n&&n.vimeo?"lg-has-vimeo":"lg-has-html5")+'" style="'+i+'">\n                <div class="lg-video-play-button">\n                <svg\n                    viewBox="0 0 20 20"\n                    preserveAspectRatio="xMidYMid"\n                    focusable="false"\n                    aria-labelledby="'+s+'"\n                    role="img"\n                    class="lg-video-play-icon"\n                >\n                    <title>'+s+'</title>\n                    <polygon class="lg-video-play-icon-inner" points="1,0 20,10 1,20"></polygon>\n                </svg>\n                <svg class="lg-video-play-icon-bg" viewBox="0 0 50 50" focusable="false">\n                    <circle cx="50%" cy="50%" r="20"></circle></svg>\n                <svg class="lg-video-play-icon-circle" viewBox="0 0 50 50" focusable="false">\n                    <circle cx="50%" cy="50%" r="20"></circle>\n                </svg>\n            </div>\n            '+(e||"")+'\n            <img class="lg-object lg-video-poster" src="'+t+'" />\n        </div>'},G=function(t){var e=t.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])');return[].filter.call(e,(function(t){var e=window.getComputedStyle(t);return"none"!==e.display&&"hidden"!==e.visibility}))},k=function(t,e,i,s){var n=[],o=function(){for(var t=0,e=0,i=arguments.length;e<i;e++)t+=arguments[e].length;var s=Array(t),n=0;for(e=0;e<i;e++)for(var o=arguments[e],r=0,l=o.length;r<l;r++,n++)s[n]=o[r];return s}(w,e);return[].forEach.call(t,(function(t){for(var e={},r=0;r<t.attributes.length;r++){var l=t.attributes[r];if(l.specified){var a=S(l.name),d="";o.indexOf(a)>-1&&(d=a),d&&(e[d]=l.value)}}var g=x(t),h=g.find("img").first().attr("alt"),c=g.attr("title"),u=s?g.attr(s):g.find("img").first().attr("src");e.thumb=u,i&&!e.subHtml&&(e.subHtml=c||h||""),e.alt=h||c||"",n.push(e)})),n},A=function(){return/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)},P=function(t,e,i){if(!t)return e?{html5:!0}:void console.error("lightGallery :- data-src is not provided on slide item "+(i+1)+". Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/");var s=t.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)([\&|?][\S]*)*/i),n=t.match(/\/\/(?:www\.)?(?:player\.)?vimeo.com\/(?:video\/)?([0-9a-z\-_]+)(.*)?/i),o=t.match(/https?:\/\/(.+)?(wistia\.com|wi\.st)\/(medias|embed)\/([0-9a-z\-_]+)(.*)/);return s?{youtube:s}:n?{vimeo:n}:o?{wistia:o}:void 0},B=0,F=function(){function w(t,e){if(this.lgOpened=!1,this.index=0,this.plugins=[],this.lGalleryOn=!1,this.lgBusy=!1,this.currentItemsInDom=[],this.prevScrollTop=0,this.bodyPaddingRight=0,this.isDummyImageRemoved=!1,this.dragOrSwipeEnabled=!1,this.mediaContainerPosition={top:0,bottom:0},!t)return this;if(B++,this.lgId=B,this.el=t,this.LGel=x(t),this.generateSettings(e),this.buildModules(),this.settings.dynamic&&void 0!==this.settings.dynamicEl&&!Array.isArray(this.settings.dynamicEl))throw"When using dynamic mode, you must also define dynamicEl as an Array.";return this.galleryItems=this.getItems(),this.normalizeSettings(),this.init(),this.validateLicense(),this}return w.prototype.generateSettings=function(e){if(this.settings=t(t({},I),e),this.settings.isMobile&&"function"==typeof this.settings.isMobile?this.settings.isMobile():A()){var i=t(t({},this.settings.mobileSettings),this.settings.mobileSettings);this.settings=t(t({},this.settings),i)}},w.prototype.normalizeSettings=function(){this.settings.slideEndAnimation&&(this.settings.hideControlOnEnd=!1),this.settings.closable||(this.settings.swipeToClose=!1),this.zoomFromOrigin=this.settings.zoomFromOrigin,this.settings.dynamic&&(this.zoomFromOrigin=!1),this.settings.container||(this.settings.container=document.body),this.settings.preload=Math.min(this.settings.preload,this.galleryItems.length)},w.prototype.init=function(){var t=this;this.addSlideVideoInfo(this.galleryItems),this.buildStructure(),this.LGel.trigger(i,{instance:this}),this.settings.keyPress&&this.keyPress(),setTimeout((function(){t.enableDrag(),t.enableSwipe(),t.triggerPosterClick()}),50),this.arrow(),this.settings.mousewheel&&this.mousewheel(),this.settings.dynamic||this.openGalleryOnItemClick()},w.prototype.openGalleryOnItemClick=function(){for(var t=this,e=function(e){var s=i.items[e],n=x(s),o=C.generateUUID();n.attr("data-lg-id",o).on("click.lgcustom-item-"+o,(function(i){i.preventDefault();var n=t.settings.index||e;t.openGallery(n,s)}))},i=this,s=0;s<this.items.length;s++)e(s)},w.prototype.buildModules=function(){var t=this;this.settings.plugins.forEach((function(e){t.plugins.push(new e(t,x))}))},w.prototype.validateLicense=function(){this.settings.licenseKey?"0000-0000-000-0000"===this.settings.licenseKey&&console.warn("lightGallery: "+this.settings.licenseKey+" license key is not valid for production use"):console.error("Please provide a valid license key")},w.prototype.getSlideItem=function(t){return x(this.getSlideItemId(t))},w.prototype.getSlideItemId=function(t){return"#lg-item-"+this.lgId+"-"+t},w.prototype.getIdName=function(t){return t+"-"+this.lgId},w.prototype.getElementById=function(t){return x("#"+this.getIdName(t))},w.prototype.manageSingleSlideClassName=function(){this.galleryItems.length<2?this.outer.addClass("lg-single-item"):this.outer.removeClass("lg-single-item")},w.prototype.buildStructure=function(){var t=this;if(!(this.$container&&this.$container.get())){var e="",i="";this.settings.controls&&(e='<button type="button" id="'+this.getIdName("lg-prev")+'" aria-label="'+this.settings.strings.previousSlide+'" class="lg-prev lg-icon"> '+this.settings.prevHtml+' </button>\n                <button type="button" id="'+this.getIdName("lg-next")+'" aria-label="'+this.settings.strings.nextSlide+'" class="lg-next lg-icon"> '+this.settings.nextHtml+" </button>"),".lg-item"!==this.settings.appendSubHtmlTo&&(i='<div class="lg-sub-html" role="status" aria-live="polite"></div>');var s="";this.settings.allowMediaOverlap&&(s+="lg-media-overlap ");var n=this.settings.ariaLabelledby?'aria-labelledby="'+this.settings.ariaLabelledby+'"':"",o=this.settings.ariaDescribedby?'aria-describedby="'+this.settings.ariaDescribedby+'"':"",r="lg-container "+this.settings.addClass+" "+(document.body!==this.settings.container?"lg-inline":""),l=this.settings.closable&&this.settings.showCloseIcon?'<button type="button" aria-label="'+this.settings.strings.closeGallery+'" id="'+this.getIdName("lg-close")+'" class="lg-close lg-icon"></button>':"",a=this.settings.showMaximizeIcon?'<button type="button" aria-label="'+this.settings.strings.toggleMaximize+'" id="'+this.getIdName("lg-maximize")+'" class="lg-maximize lg-icon"></button>':"",d='\n        <div class="'+r+'" id="'+this.getIdName("lg-container")+'" tabindex="-1" aria-modal="true" '+n+" "+o+' role="dialog"\n        >\n            <div id="'+this.getIdName("lg-backdrop")+'" class="lg-backdrop"></div>\n\n            <div id="'+this.getIdName("lg-outer")+'" class="lg-outer lg-use-css3 lg-css3 lg-hide-items '+s+' ">\n\n              <div id="'+this.getIdName("lg-content")+'" class="lg-content">\n                <div id="'+this.getIdName("lg-inner")+'" class="lg-inner">\n                </div>\n                '+e+'\n              </div>\n                <div id="'+this.getIdName("lg-toolbar")+'" class="lg-toolbar lg-group">\n                    '+a+"\n                    "+l+"\n                    </div>\n                    "+(".lg-outer"===this.settings.appendSubHtmlTo?i:"")+'\n                <div id="'+this.getIdName("lg-components")+'" class="lg-components">\n                    '+(".lg-sub-html"===this.settings.appendSubHtmlTo?i:"")+"\n                </div>\n            </div>\n        </div>\n        ";x(this.settings.container).append(d),document.body!==this.settings.container&&x(this.settings.container).css("position","relative"),this.outer=this.getElementById("lg-outer"),this.$lgComponents=this.getElementById("lg-components"),this.$backdrop=this.getElementById("lg-backdrop"),this.$container=this.getElementById("lg-container"),this.$inner=this.getElementById("lg-inner"),this.$content=this.getElementById("lg-content"),this.$toolbar=this.getElementById("lg-toolbar"),this.$backdrop.css("transition-duration",this.settings.backdropDuration+"ms");var g=this.settings.mode+" ";this.manageSingleSlideClassName(),this.settings.enableDrag&&(g+="lg-grab "),this.outer.addClass(g),this.$inner.css("transition-timing-function",this.settings.easing),this.$inner.css("transition-duration",this.settings.speed+"ms"),this.settings.download&&this.$toolbar.append('<a id="'+this.getIdName("lg-download")+'" target="_blank" rel="noopener" aria-label="'+this.settings.strings.download+'" download class="lg-download lg-icon"></a>'),this.counter(),x(window).on("resize.lg.global"+this.lgId+" orientationchange.lg.global"+this.lgId,(function(){t.refreshOnResize()})),this.hideBars(),this.manageCloseGallery(),this.toggleMaximize(),this.initModules()}},w.prototype.refreshOnResize=function(){if(this.lgOpened){var t=this.galleryItems[this.index].__slideVideoInfo;this.mediaContainerPosition=this.getMediaContainerPosition();var e=this.mediaContainerPosition,i=e.top,s=e.bottom;if(this.currentImageSize=T(this.items[this.index],this.outer,i+s,t&&this.settings.videoMaxSize),t&&this.resizeVideoSlide(this.index,this.currentImageSize),this.zoomFromOrigin&&!this.isDummyImageRemoved){var o=this.getDummyImgStyles(this.currentImageSize);this.outer.find(".lg-current .lg-dummy-img").first().attr("style",o)}this.LGel.trigger(n)}},w.prototype.resizeVideoSlide=function(t,e){var i=this.getVideoContStyle(e);this.getSlideItem(t).find(".lg-video-cont").attr("style",i)},w.prototype.updateSlides=function(t,e){if(this.index>t.length-1&&(this.index=t.length-1),1===t.length&&(this.index=0),t.length){var i=this.galleryItems[e].src;this.galleryItems=t,this.updateControls(),this.$inner.empty(),this.currentItemsInDom=[];var s=0;this.galleryItems.some((function(t,e){return t.src===i&&(s=e,!0)})),this.currentItemsInDom=this.organizeSlideItems(s,-1),this.loadContent(s,!0),this.getSlideItem(s).addClass("lg-current"),this.index=s,this.updateCurrentCounter(s),this.LGel.trigger(o)}else this.closeGallery()},w.prototype.getItems=function(){if(this.items=[],this.settings.dynamic)return this.settings.dynamicEl||[];if("this"===this.settings.selector)this.items.push(this.el);else if(this.settings.selector)if("string"==typeof this.settings.selector)if(this.settings.selectWithin){var t=x(this.settings.selectWithin);this.items=t.find(this.settings.selector).get()}else this.items=this.el.querySelectorAll(this.settings.selector);else this.items=this.settings.selector;else this.items=this.el.children;return k(this.items,this.settings.extraProps,this.settings.getCaptionFromTitleOrAlt,this.settings.exThumbImage)},w.prototype.shouldHideScrollbar=function(){return this.settings.hideScrollbar&&document.body===this.settings.container},w.prototype.hideScrollbar=function(){if(this.shouldHideScrollbar()){this.bodyPaddingRight=parseFloat(x("body").style().paddingRight);var t=document.documentElement.getBoundingClientRect(),e=window.innerWidth-t.width;x(document.body).css("padding-right",e+this.bodyPaddingRight+"px"),x(document.body).addClass("lg-overlay-open")}},w.prototype.resetScrollBar=function(){this.shouldHideScrollbar()&&(x(document.body).css("padding-right",this.bodyPaddingRight+"px"),x(document.body).removeClass("lg-overlay-open"))},w.prototype.openGallery=function(t,e){var i=this;if(void 0===t&&(t=this.settings.index),!this.lgOpened){this.lgOpened=!0,this.outer.removeClass("lg-hide-items"),this.hideScrollbar(),this.$container.addClass("lg-show");var s=this.getItemsToBeInsertedToDom(t,t);this.currentItemsInDom=s;var n="";s.forEach((function(t){n=n+'<div id="'+t+'" class="lg-item"></div>'})),this.$inner.append(n),this.addHtml(t);var o="";this.mediaContainerPosition=this.getMediaContainerPosition();var r=this.mediaContainerPosition,d=r.top,g=r.bottom;this.settings.allowMediaOverlap||this.setMediaContainerPosition(d,g);var h=this.galleryItems[t].__slideVideoInfo;this.zoomFromOrigin&&e&&(this.currentImageSize=T(e,this.outer,d+g,h&&this.settings.videoMaxSize),o=E(e,this.outer,d,g,this.currentImageSize)),this.zoomFromOrigin&&o||(this.outer.addClass(this.settings.startClass),this.getSlideItem(t).removeClass("lg-complete"));var c=this.settings.zoomFromOrigin?100:this.settings.backdropDuration;setTimeout((function(){i.outer.addClass("lg-components-open")}),c),this.index=t,this.LGel.trigger(l),this.getSlideItem(t).addClass("lg-current"),this.lGalleryOn=!1,this.prevScrollTop=x(window).scrollTop(),setTimeout((function(){if(i.zoomFromOrigin&&o){var e=i.getSlideItem(t);e.css("transform",o),setTimeout((function(){e.addClass("lg-start-progress lg-start-end-progress").css("transition-duration",i.settings.startAnimationDuration+"ms"),i.outer.addClass("lg-zoom-from-image")})),setTimeout((function(){e.css("transform","translate3d(0, 0, 0)")}),100)}setTimeout((function(){i.$backdrop.addClass("in"),i.$container.addClass("lg-show-in")}),10),setTimeout((function(){i.settings.trapFocus&&document.body===i.settings.container&&i.trapFocus()}),i.settings.backdropDuration+50),i.zoomFromOrigin&&o||setTimeout((function(){i.outer.addClass("lg-visible")}),i.settings.backdropDuration),i.slide(t,!1,!1,!1),i.LGel.trigger(a)})),document.body===this.settings.container&&x("html").addClass("lg-on")}},w.prototype.getMediaContainerPosition=function(){if(this.settings.allowMediaOverlap)return{top:0,bottom:0};var t=this.$toolbar.get().clientHeight||0,e=this.outer.find(".lg-components .lg-sub-html").get(),i=this.settings.defaultCaptionHeight||e&&e.clientHeight||0,s=this.outer.find(".lg-thumb-outer").get();return{top:t,bottom:(s?s.clientHeight:0)+i}},w.prototype.setMediaContainerPosition=function(t,e){void 0===t&&(t=0),void 0===e&&(e=0),this.$content.css("top",t+"px").css("bottom",e+"px")},w.prototype.hideBars=function(){var t=this;setTimeout((function(){t.outer.removeClass("lg-hide-items"),t.settings.hideBarsDelay>0&&(t.outer.on("mousemove.lg click.lg touchstart.lg",(function(){t.outer.removeClass("lg-hide-items"),clearTimeout(t.hideBarTimeout),t.hideBarTimeout=setTimeout((function(){t.outer.addClass("lg-hide-items")}),t.settings.hideBarsDelay)})),t.outer.trigger("mousemove.lg"))}),this.settings.showBarsAfter)},w.prototype.initPictureFill=function(t){if(this.settings.supportLegacyBrowser)try{picturefill({elements:[t.get()]})}catch(t){console.warn("lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.")}},w.prototype.counter=function(){if(this.settings.counter){var t='<div class="lg-counter" role="status" aria-live="polite">\n                <span id="'+this.getIdName("lg-counter-current")+'" class="lg-counter-current">'+(this.index+1)+' </span> /\n                <span id="'+this.getIdName("lg-counter-all")+'" class="lg-counter-all">'+this.galleryItems.length+" </span></div>";this.outer.find(this.settings.appendCounterTo).append(t)}},w.prototype.addHtml=function(t){var e,i;if(this.galleryItems[t].subHtmlUrl?i=this.galleryItems[t].subHtmlUrl:e=this.galleryItems[t].subHtml,!i)if(e){var s=e.substring(0,1);"."!==s&&"#"!==s||(e=this.settings.subHtmlSelectorRelative&&!this.settings.dynamic?x(this.items).eq(t).find(e).first().html():x(e).first().html())}else e="";if(".lg-item"!==this.settings.appendSubHtmlTo)i?this.outer.find(".lg-sub-html").load(i):this.outer.find(".lg-sub-html").html(e);else{var n=x(this.getSlideItemId(t));i?n.load(i):n.append('<div class="lg-sub-html">'+e+"</div>")}null!=e&&(""===e?this.outer.find(this.settings.appendSubHtmlTo).addClass("lg-empty-html"):this.outer.find(this.settings.appendSubHtmlTo).removeClass("lg-empty-html")),this.LGel.trigger(r,{index:t})},w.prototype.preload=function(t){for(var e=1;e<=this.settings.preload&&!(e>=this.galleryItems.length-t);e++)this.loadContent(t+e,!1);for(var i=1;i<=this.settings.preload&&!(t-i<0);i++)this.loadContent(t-i,!1)},w.prototype.getDummyImgStyles=function(t){return t?"width:"+t.width+"px;\n                margin-left: -"+t.width/2+"px;\n                margin-top: -"+t.height/2+"px;\n                height:"+t.height+"px":""},w.prototype.getVideoContStyle=function(t){return t?"width:"+t.width+"px;\n                height:"+t.height+"px":""},w.prototype.getDummyImageContent=function(t,e,i){var s;if(this.settings.dynamic||(s=x(this.items).eq(e)),s){var n=void 0;if(!(n=this.settings.exThumbImage?s.attr(this.settings.exThumbImage):s.find("img").first().attr("src")))return"";var o="<img "+i+' style="'+this.getDummyImgStyles(this.currentImageSize)+'" class="lg-dummy-img" src="'+n+'" />';return t.addClass("lg-first-slide"),this.outer.addClass("lg-first-slide-loading"),o}return""},w.prototype.setImgMarkup=function(t,e,i){var s=this.galleryItems[i],n=s.alt,o=s.srcset,r=s.sizes,l=s.sources,a=n?'alt="'+n+'"':"",d='<picture class="lg-img-wrap"> '+(this.isFirstSlideWithZoomAnimation()?this.getDummyImageContent(e,i,a):D(i,t,a,o,r,l))+"</picture>";e.prepend(d)},w.prototype.onSlideObjectLoad=function(t,e,i,s){var n=t.find(".lg-object").first();z(n.get())||e?i():(n.on("load.lg error.lg",(function(){i&&i()})),n.on("error.lg",(function(){s&&s()})))},w.prototype.onLgObjectLoad=function(t,e,i,s,n,o){var r=this;this.onSlideObjectLoad(t,o,(function(){r.triggerSlideItemLoad(t,e,i,s,n)}),(function(){t.addClass("lg-complete lg-complete_"),t.html('<span class="lg-error-msg">Oops... Failed to load content...</span>')}))},w.prototype.triggerSlideItemLoad=function(t,e,i,s,n){var o=this,r=this.galleryItems[e],l=n&&"video"===this.getSlideType(r)&&!r.poster?s:0;setTimeout((function(){t.addClass("lg-complete lg-complete_"),o.LGel.trigger(d,{index:e,delay:i||0,isFirstSlide:n})}),l)},w.prototype.isFirstSlideWithZoomAnimation=function(){return!(this.lGalleryOn||!this.zoomFromOrigin||!this.currentImageSize)},w.prototype.addSlideVideoInfo=function(t){var e=this;t.forEach((function(t,i){t.__slideVideoInfo=P(t.src,!!t.video,i),t.__slideVideoInfo&&e.settings.loadYouTubePoster&&!t.poster&&t.__slideVideoInfo.youtube&&(t.poster="//img.youtube.com/vi/"+t.__slideVideoInfo.youtube[1]+"/maxresdefault.jpg")}))},w.prototype.loadContent=function(t,i){var n=this,o=this.galleryItems[t],r=x(this.getSlideItemId(t)),l=o.poster,a=o.srcset,d=o.sizes,g=o.sources,h=o.src,c=o.video,u=c&&"string"==typeof c?JSON.parse(c):c;if(o.responsive){var m=o.responsive.split(",");h=L(m)||h}var p=o.__slideVideoInfo,f="",y=!!o.iframe,v=!this.lGalleryOn,b=0;if(v&&(b=this.zoomFromOrigin&&this.currentImageSize?this.settings.startAnimationDuration+10:this.settings.backdropDuration+10),!r.hasClass("lg-loaded")){if(p){var I=this.mediaContainerPosition,C=I.top,w=I.bottom,S=T(this.items[t],this.outer,C+w,p&&this.settings.videoMaxSize);f=this.getVideoContStyle(S)}if(y){var E=O(this.settings.iframeWidth,this.settings.iframeHeight,this.settings.iframeMaxWidth,this.settings.iframeMaxHeight,h,o.iframeTitle);r.prepend(E)}else if(l){var z="";v&&this.zoomFromOrigin&&this.currentImageSize&&(z=this.getDummyImageContent(r,t,""));E=M(l,z||"",f,this.settings.strings.playVideo,p);r.prepend(E)}else if(p){E='<div class="lg-video-cont " style="'+f+'"></div>';r.prepend(E)}else if(this.setImgMarkup(h,r,t),a||g){var G=r.find(".lg-object");this.initPictureFill(G)}(l||p)&&this.LGel.trigger(s,{index:t,src:h,html5Video:u,hasPoster:!!l}),this.LGel.trigger(e,{index:t}),this.lGalleryOn&&".lg-item"===this.settings.appendSubHtmlTo&&this.addHtml(t)}var k=0;b&&!x(document.body).hasClass("lg-from-hash")&&(k=b),this.isFirstSlideWithZoomAnimation()&&(setTimeout((function(){r.removeClass("lg-start-end-progress lg-start-progress").removeAttr("style")}),this.settings.startAnimationDuration+100),r.hasClass("lg-loaded")||setTimeout((function(){if("image"===n.getSlideType(o)){var e=o.alt,i=e?'alt="'+e+'"':"";if(r.find(".lg-img-wrap").append(D(t,h,i,a,d,o.sources)),a||g){var s=r.find(".lg-object");n.initPictureFill(s)}}("image"===n.getSlideType(o)||"video"===n.getSlideType(o)&&l)&&(n.onLgObjectLoad(r,t,b,k,!0,!1),n.onSlideObjectLoad(r,!(!p||!p.html5||l),(function(){n.loadContentOnFirstSlideLoad(t,r,k)}),(function(){n.loadContentOnFirstSlideLoad(t,r,k)})))}),this.settings.startAnimationDuration+100)),r.addClass("lg-loaded"),this.isFirstSlideWithZoomAnimation()&&("video"!==this.getSlideType(o)||l)||this.onLgObjectLoad(r,t,b,k,v,!(!p||!p.html5||l)),this.zoomFromOrigin&&this.currentImageSize||!r.hasClass("lg-complete_")||this.lGalleryOn||setTimeout((function(){r.addClass("lg-complete")}),this.settings.backdropDuration),this.lGalleryOn=!0,!0===i&&(r.hasClass("lg-complete_")?this.preload(t):r.find(".lg-object").first().on("load.lg error.lg",(function(){n.preload(t)})))},w.prototype.loadContentOnFirstSlideLoad=function(t,e,i){var s=this;setTimeout((function(){e.find(".lg-dummy-img").remove(),e.removeClass("lg-first-slide"),s.outer.removeClass("lg-first-slide-loading"),s.isDummyImageRemoved=!0,s.preload(t)}),i+300)},w.prototype.getItemsToBeInsertedToDom=function(t,e,i){var s=this;void 0===i&&(i=0);var n=[],o=Math.max(i,3);o=Math.min(o,this.galleryItems.length);var r="lg-item-"+this.lgId+"-"+e;if(this.galleryItems.length<=3)return this.galleryItems.forEach((function(t,e){n.push("lg-item-"+s.lgId+"-"+e)})),n;if(t<(this.galleryItems.length-1)/2){for(var l=t;l>t-o/2&&l>=0;l--)n.push("lg-item-"+this.lgId+"-"+l);var a=n.length;for(l=0;l<o-a;l++)n.push("lg-item-"+this.lgId+"-"+(t+l+1))}else{for(l=t;l<=this.galleryItems.length-1&&l<t+o/2;l++)n.push("lg-item-"+this.lgId+"-"+l);for(a=n.length,l=0;l<o-a;l++)n.push("lg-item-"+this.lgId+"-"+(t-l-1))}return this.settings.loop&&(t===this.galleryItems.length-1?n.push("lg-item-"+this.lgId+"-0"):0===t&&n.push("lg-item-"+this.lgId+"-"+(this.galleryItems.length-1))),-1===n.indexOf(r)&&n.push("lg-item-"+this.lgId+"-"+e),n},w.prototype.organizeSlideItems=function(t,e){var i=this,s=this.getItemsToBeInsertedToDom(t,e,this.settings.numberOfSlideItemsInDom);return s.forEach((function(t){-1===i.currentItemsInDom.indexOf(t)&&i.$inner.append('<div id="'+t+'" class="lg-item"></div>')})),this.currentItemsInDom.forEach((function(t){-1===s.indexOf(t)&&x("#"+t).remove()})),s},w.prototype.getPreviousSlideIndex=function(){var t=0;try{var e=this.outer.find(".lg-current").first().attr("id");t=parseInt(e.split("-")[3])||0}catch(e){t=0}return t},w.prototype.setDownloadValue=function(t){if(this.settings.download){var e=this.galleryItems[t];if(!1===e.downloadUrl||"false"===e.downloadUrl)this.outer.addClass("lg-hide-download");else{var i=this.getElementById("lg-download");this.outer.removeClass("lg-hide-download"),i.attr("href",e.downloadUrl||e.src),e.download&&i.attr("download",e.download)}}},w.prototype.makeSlideAnimation=function(t,e,i){var s=this;this.lGalleryOn&&i.addClass("lg-slide-progress"),setTimeout((function(){s.outer.addClass("lg-no-trans"),s.outer.find(".lg-item").removeClass("lg-prev-slide lg-next-slide"),"prev"===t?(e.addClass("lg-prev-slide"),i.addClass("lg-next-slide")):(e.addClass("lg-next-slide"),i.addClass("lg-prev-slide")),setTimeout((function(){s.outer.find(".lg-item").removeClass("lg-current"),e.addClass("lg-current"),s.outer.removeClass("lg-no-trans")}),50)}),this.lGalleryOn?this.settings.slideDelay:0)},w.prototype.slide=function(t,e,i,s){var n=this,o=this.getPreviousSlideIndex();if(this.currentItemsInDom=this.organizeSlideItems(t,o),!this.lGalleryOn||o!==t){var r=this.galleryItems.length;if(!this.lgBusy){this.settings.counter&&this.updateCurrentCounter(t);var l=this.getSlideItem(t),a=this.getSlideItem(o),d=this.galleryItems[t],c=d.__slideVideoInfo;if(this.outer.attr("data-lg-slide-type",this.getSlideType(d)),this.setDownloadValue(t),c){var u=this.mediaContainerPosition,m=u.top,p=u.bottom,f=T(this.items[t],this.outer,m+p,c&&this.settings.videoMaxSize);this.resizeVideoSlide(t,f)}if(this.LGel.trigger(g,{prevIndex:o,index:t,fromTouch:!!e,fromThumb:!!i}),this.lgBusy=!0,clearTimeout(this.hideBarTimeout),this.arrowDisable(t),s||(t<o?s="prev":t>o&&(s="next")),e){this.outer.find(".lg-item").removeClass("lg-prev-slide lg-current lg-next-slide");var y=void 0,v=void 0;r>2?(y=t-1,v=t+1,(0===t&&o===r-1||t===r-1&&0===o)&&(v=0,y=r-1)):(y=0,v=1),"prev"===s?this.getSlideItem(v).addClass("lg-next-slide"):this.getSlideItem(y).addClass("lg-prev-slide"),l.addClass("lg-current")}else this.makeSlideAnimation(s,l,a);this.lGalleryOn?setTimeout((function(){n.loadContent(t,!0),".lg-item"!==n.settings.appendSubHtmlTo&&n.addHtml(t)}),this.settings.speed+50+(e?0:this.settings.slideDelay)):this.loadContent(t,!0),setTimeout((function(){n.lgBusy=!1,a.removeClass("lg-slide-progress"),n.LGel.trigger(h,{prevIndex:o,index:t,fromTouch:e,fromThumb:i})}),(this.lGalleryOn?this.settings.speed+100:100)+(e?0:this.settings.slideDelay))}this.index=t}},w.prototype.updateCurrentCounter=function(t){this.getElementById("lg-counter-current").html(t+1+"")},w.prototype.updateCounterTotal=function(){this.getElementById("lg-counter-all").html(this.galleryItems.length+"")},w.prototype.getSlideType=function(t){return t.__slideVideoInfo?"video":t.iframe?"iframe":"image"},w.prototype.touchMove=function(t,e,i){var s=e.pageX-t.pageX,n=e.pageY-t.pageY,o=!1;if(this.swipeDirection?o=!0:Math.abs(s)>15?(this.swipeDirection="horizontal",o=!0):Math.abs(n)>15&&(this.swipeDirection="vertical",o=!0),o){var r=this.getSlideItem(this.index);if("horizontal"===this.swipeDirection){null==i||i.preventDefault(),this.outer.addClass("lg-dragging"),this.setTranslate(r,s,0);var l=r.get().offsetWidth,a=15*l/100-Math.abs(10*s/100);this.setTranslate(this.outer.find(".lg-prev-slide").first(),-l+s-a,0),this.setTranslate(this.outer.find(".lg-next-slide").first(),l+s+a,0)}else if("vertical"===this.swipeDirection&&this.settings.swipeToClose){null==i||i.preventDefault(),this.$container.addClass("lg-dragging-vertical");var d=1-Math.abs(n)/window.innerHeight;this.$backdrop.css("opacity",d);var g=1-Math.abs(n)/(2*window.innerWidth);this.setTranslate(r,0,n,g,g),Math.abs(n)>100&&this.outer.addClass("lg-hide-items").removeClass("lg-components-open")}}},w.prototype.touchEnd=function(t,e,i){var s,n=this;"lg-slide"!==this.settings.mode&&this.outer.addClass("lg-slide"),setTimeout((function(){n.$container.removeClass("lg-dragging-vertical"),n.outer.removeClass("lg-dragging lg-hide-items").addClass("lg-components-open");var o=!0;if("horizontal"===n.swipeDirection){s=t.pageX-e.pageX;var r=Math.abs(t.pageX-e.pageX);s<0&&r>n.settings.swipeThreshold?(n.goToNextSlide(!0),o=!1):s>0&&r>n.settings.swipeThreshold&&(n.goToPrevSlide(!0),o=!1)}else if("vertical"===n.swipeDirection){if(s=Math.abs(t.pageY-e.pageY),n.settings.closable&&n.settings.swipeToClose&&s>100)return void n.closeGallery();n.$backdrop.css("opacity",1)}if(n.outer.find(".lg-item").removeAttr("style"),o&&Math.abs(t.pageX-e.pageX)<5){var l=x(i.target);n.isPosterElement(l)&&n.LGel.trigger(c)}n.swipeDirection=void 0})),setTimeout((function(){n.outer.hasClass("lg-dragging")||"lg-slide"===n.settings.mode||n.outer.removeClass("lg-slide")}),this.settings.speed+100)},w.prototype.enableSwipe=function(){var t=this,e={},i={},s=!1,n=!1;this.settings.enableSwipe&&(this.$inner.on("touchstart.lg",(function(i){t.dragOrSwipeEnabled=!0;var s=t.getSlideItem(t.index);!x(i.target).hasClass("lg-item")&&!s.get().contains(i.target)||t.outer.hasClass("lg-zoomed")||t.lgBusy||1!==i.touches.length||(n=!0,t.touchAction="swipe",t.manageSwipeClass(),e={pageX:i.touches[0].pageX,pageY:i.touches[0].pageY})})),this.$inner.on("touchmove.lg",(function(o){n&&"swipe"===t.touchAction&&1===o.touches.length&&(i={pageX:o.touches[0].pageX,pageY:o.touches[0].pageY},t.touchMove(e,i,o),s=!0)})),this.$inner.on("touchend.lg",(function(o){if("swipe"===t.touchAction){if(s)s=!1,t.touchEnd(i,e,o);else if(n){var r=x(o.target);t.isPosterElement(r)&&t.LGel.trigger(c)}t.touchAction=void 0,n=!1}})))},w.prototype.enableDrag=function(){var t=this,e={},i={},s=!1,n=!1;this.settings.enableDrag&&(this.outer.on("mousedown.lg",(function(i){t.dragOrSwipeEnabled=!0;var n=t.getSlideItem(t.index);(x(i.target).hasClass("lg-item")||n.get().contains(i.target))&&(t.outer.hasClass("lg-zoomed")||t.lgBusy||(i.preventDefault(),t.lgBusy||(t.manageSwipeClass(),e={pageX:i.pageX,pageY:i.pageY},s=!0,t.outer.get().scrollLeft+=1,t.outer.get().scrollLeft-=1,t.outer.removeClass("lg-grab").addClass("lg-grabbing"),t.LGel.trigger(u))))})),x(window).on("mousemove.lg.global"+this.lgId,(function(o){s&&t.lgOpened&&(n=!0,i={pageX:o.pageX,pageY:o.pageY},t.touchMove(e,i),t.LGel.trigger(m))})),x(window).on("mouseup.lg.global"+this.lgId,(function(o){if(t.lgOpened){var r=x(o.target);n?(n=!1,t.touchEnd(i,e,o),t.LGel.trigger(p)):t.isPosterElement(r)&&t.LGel.trigger(c),s&&(s=!1,t.outer.removeClass("lg-grabbing").addClass("lg-grab"))}})))},w.prototype.triggerPosterClick=function(){var t=this;this.$inner.on("click.lg",(function(e){!t.dragOrSwipeEnabled&&t.isPosterElement(x(e.target))&&t.LGel.trigger(c)}))},w.prototype.manageSwipeClass=function(){var t=this.index+1,e=this.index-1;this.settings.loop&&this.galleryItems.length>2&&(0===this.index?e=this.galleryItems.length-1:this.index===this.galleryItems.length-1&&(t=0)),this.outer.find(".lg-item").removeClass("lg-next-slide lg-prev-slide"),e>-1&&this.getSlideItem(e).addClass("lg-prev-slide"),this.getSlideItem(t).addClass("lg-next-slide")},w.prototype.goToNextSlide=function(t){var e=this,i=this.settings.loop;t&&this.galleryItems.length<3&&(i=!1),this.lgBusy||(this.index+1<this.galleryItems.length?(this.index++,this.LGel.trigger(f,{index:this.index}),this.slide(this.index,!!t,!1,"next")):i?(this.index=0,this.LGel.trigger(f,{index:this.index}),this.slide(this.index,!!t,!1,"next")):this.settings.slideEndAnimation&&!t&&(this.outer.addClass("lg-right-end"),setTimeout((function(){e.outer.removeClass("lg-right-end")}),400)))},w.prototype.goToPrevSlide=function(t){var e=this,i=this.settings.loop;t&&this.galleryItems.length<3&&(i=!1),this.lgBusy||(this.index>0?(this.index--,this.LGel.trigger(y,{index:this.index,fromTouch:t}),this.slide(this.index,!!t,!1,"prev")):i?(this.index=this.galleryItems.length-1,this.LGel.trigger(y,{index:this.index,fromTouch:t}),this.slide(this.index,!!t,!1,"prev")):this.settings.slideEndAnimation&&!t&&(this.outer.addClass("lg-left-end"),setTimeout((function(){e.outer.removeClass("lg-left-end")}),400)))},w.prototype.keyPress=function(){var t=this;x(window).on("keydown.lg.global"+this.lgId,(function(e){t.lgOpened&&!0===t.settings.escKey&&27===e.keyCode&&(e.preventDefault(),t.settings.allowMediaOverlap&&t.outer.hasClass("lg-can-toggle")&&t.outer.hasClass("lg-components-open")?t.outer.removeClass("lg-components-open"):t.closeGallery()),t.lgOpened&&t.galleryItems.length>1&&(37===e.keyCode&&(e.preventDefault(),t.goToPrevSlide()),39===e.keyCode&&(e.preventDefault(),t.goToNextSlide()))}))},w.prototype.arrow=function(){var t=this;this.getElementById("lg-prev").on("click.lg",(function(){t.goToPrevSlide()})),this.getElementById("lg-next").on("click.lg",(function(){t.goToNextSlide()}))},w.prototype.arrowDisable=function(t){if(!this.settings.loop&&this.settings.hideControlOnEnd){var e=this.getElementById("lg-prev"),i=this.getElementById("lg-next");t+1===this.galleryItems.length?i.attr("disabled","disabled").addClass("disabled"):i.removeAttr("disabled").removeClass("disabled"),0===t?e.attr("disabled","disabled").addClass("disabled"):e.removeAttr("disabled").removeClass("disabled")}},w.prototype.setTranslate=function(t,e,i,s,n){void 0===s&&(s=1),void 0===n&&(n=1),t.css("transform","translate3d("+e+"px, "+i+"px, 0px) scale3d("+s+", "+n+", 1)")},w.prototype.mousewheel=function(){var t=this,e=0;this.outer.on("wheel.lg",(function(i){if(i.deltaY&&!(t.galleryItems.length<2)){i.preventDefault();var s=(new Date).getTime();s-e<1e3||(e=s,i.deltaY>0?t.goToNextSlide():i.deltaY<0&&t.goToPrevSlide())}}))},w.prototype.isSlideElement=function(t){return t.hasClass("lg-outer")||t.hasClass("lg-item")||t.hasClass("lg-img-wrap")},w.prototype.isPosterElement=function(t){var e=this.getSlideItem(this.index).find(".lg-video-play-button").get();return t.hasClass("lg-video-poster")||t.hasClass("lg-video-play-button")||e&&e.contains(t.get())},w.prototype.toggleMaximize=function(){var t=this;this.getElementById("lg-maximize").on("click.lg",(function(){t.$container.toggleClass("lg-inline"),t.refreshOnResize()}))},w.prototype.invalidateItems=function(){for(var t=0;t<this.items.length;t++){var e=x(this.items[t]);e.off("click.lgcustom-item-"+e.attr("data-lg-id"))}},w.prototype.trapFocus=function(){var t=this;this.$container.get().focus({preventScroll:!0}),x(window).on("keydown.lg.global"+this.lgId,(function(e){if(t.lgOpened&&("Tab"===e.key||9===e.keyCode)){var i=G(t.$container.get()),s=i[0],n=i[i.length-1];e.shiftKey?document.activeElement===s&&(n.focus(),e.preventDefault()):document.activeElement===n&&(s.focus(),e.preventDefault())}}))},w.prototype.manageCloseGallery=function(){var t=this;if(this.settings.closable){var e=!1;this.getElementById("lg-close").on("click.lg",(function(){t.closeGallery()})),this.settings.closeOnTap&&(this.outer.on("mousedown.lg",(function(i){var s=x(i.target);e=!!t.isSlideElement(s)})),this.outer.on("mousemove.lg",(function(){e=!1})),this.outer.on("mouseup.lg",(function(i){var s=x(i.target);t.isSlideElement(s)&&e&&(t.outer.hasClass("lg-dragging")||t.closeGallery())})))}},w.prototype.closeGallery=function(t){var e=this;if(!this.lgOpened||!this.settings.closable&&!t)return 0;this.LGel.trigger(v),this.settings.resetScrollPosition&&!this.settings.hideScrollbar&&x(window).scrollTop(this.prevScrollTop);var i,s=this.items[this.index];if(this.zoomFromOrigin&&s){var n=this.mediaContainerPosition,o=n.top,r=n.bottom,l=this.galleryItems[this.index],a=l.__slideVideoInfo,d=l.poster,g=T(s,this.outer,o+r,a&&d&&this.settings.videoMaxSize);i=E(s,this.outer,o,r,g)}this.zoomFromOrigin&&i?(this.outer.addClass("lg-closing lg-zoom-from-image"),this.getSlideItem(this.index).addClass("lg-start-end-progress").css("transition-duration",this.settings.startAnimationDuration+"ms").css("transform",i)):(this.outer.addClass("lg-hide-items"),this.outer.removeClass("lg-zoom-from-image")),this.destroyModules(),this.lGalleryOn=!1,this.isDummyImageRemoved=!1,this.zoomFromOrigin=this.settings.zoomFromOrigin,clearTimeout(this.hideBarTimeout),this.hideBarTimeout=!1,x("html").removeClass("lg-on"),this.outer.removeClass("lg-visible lg-components-open"),this.$backdrop.removeClass("in").css("opacity",0);var h=this.zoomFromOrigin&&i?Math.max(this.settings.startAnimationDuration,this.settings.backdropDuration):this.settings.backdropDuration;return this.$container.removeClass("lg-show-in"),setTimeout((function(){e.zoomFromOrigin&&i&&e.outer.removeClass("lg-zoom-from-image"),e.$container.removeClass("lg-show"),e.resetScrollBar(),e.$backdrop.removeAttr("style").css("transition-duration",e.settings.backdropDuration+"ms"),e.outer.removeClass("lg-closing "+e.settings.startClass),e.getSlideItem(e.index).removeClass("lg-start-end-progress"),e.$inner.empty(),e.lgOpened&&e.LGel.trigger(b,{instance:e}),e.$container.get()&&e.$container.get().blur(),e.lgOpened=!1}),h+100),h+100},w.prototype.initModules=function(){this.plugins.forEach((function(t){try{t.init()}catch(t){console.warn("lightGallery:- make sure lightGallery module is properly initiated")}}))},w.prototype.destroyModules=function(t){this.plugins.forEach((function(e){try{t?e.destroy():e.closeGallery&&e.closeGallery()}catch(t){console.warn("lightGallery:- make sure lightGallery module is properly destroyed")}}))},w.prototype.refresh=function(t){this.settings.dynamic||this.invalidateItems(),this.galleryItems=t||this.getItems(),this.updateControls(),this.openGalleryOnItemClick(),this.LGel.trigger(o)},w.prototype.updateControls=function(){this.addSlideVideoInfo(this.galleryItems),this.updateCounterTotal(),this.manageSingleSlideClassName()},w.prototype.destroyGallery=function(){this.destroyModules(!0),this.settings.dynamic||this.invalidateItems(),x(window).off(".lg.global"+this.lgId),this.LGel.off(".lg"),this.$container.remove()},w.prototype.destroy=function(){var t=this.closeGallery(!0);return t?setTimeout(this.destroyGallery.bind(this),t):this.destroyGallery(),t},w}();return function(t,e){return new F(t,e)}}));
diff --git a/resources/lightgallery/lightgallery.umd.js b/resources/lightgallery/lightgallery.umd.js
new file mode 100644
index 0000000..3533312
--- /dev/null
+++ b/resources/lightgallery/lightgallery.umd.js
@@ -0,0 +1,2738 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lightGallery = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    function __spreadArrays() {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    }
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var lightGalleryCoreSettings = {
+        mode: 'lg-slide',
+        easing: 'ease',
+        speed: 400,
+        licenseKey: '0000-0000-000-0000',
+        height: '100%',
+        width: '100%',
+        addClass: '',
+        startClass: 'lg-start-zoom',
+        backdropDuration: 300,
+        container: '',
+        startAnimationDuration: 400,
+        zoomFromOrigin: true,
+        hideBarsDelay: 0,
+        showBarsAfter: 10000,
+        slideDelay: 0,
+        supportLegacyBrowser: true,
+        allowMediaOverlap: false,
+        videoMaxSize: '1280-720',
+        loadYouTubePoster: true,
+        defaultCaptionHeight: 0,
+        ariaLabelledby: '',
+        ariaDescribedby: '',
+        resetScrollPosition: true,
+        hideScrollbar: false,
+        closable: true,
+        swipeToClose: true,
+        closeOnTap: true,
+        showCloseIcon: true,
+        showMaximizeIcon: false,
+        loop: true,
+        escKey: true,
+        keyPress: true,
+        trapFocus: true,
+        controls: true,
+        slideEndAnimation: true,
+        hideControlOnEnd: false,
+        mousewheel: false,
+        getCaptionFromTitleOrAlt: true,
+        appendSubHtmlTo: '.lg-sub-html',
+        subHtmlSelectorRelative: false,
+        preload: 2,
+        numberOfSlideItemsInDom: 10,
+        selector: '',
+        selectWithin: '',
+        nextHtml: '',
+        prevHtml: '',
+        index: 0,
+        iframeWidth: '100%',
+        iframeHeight: '100%',
+        iframeMaxWidth: '100%',
+        iframeMaxHeight: '100%',
+        download: true,
+        counter: true,
+        appendCounterTo: '.lg-toolbar',
+        swipeThreshold: 50,
+        enableSwipe: true,
+        enableDrag: true,
+        dynamic: false,
+        dynamicEl: [],
+        extraProps: [],
+        exThumbImage: '',
+        isMobile: undefined,
+        mobileSettings: {
+            controls: false,
+            showCloseIcon: false,
+            download: false,
+        },
+        plugins: [],
+        strings: {
+            closeGallery: 'Close gallery',
+            toggleMaximize: 'Toggle maximize',
+            previousSlide: 'Previous slide',
+            nextSlide: 'Next slide',
+            download: 'Download',
+            playVideo: 'Play video',
+        },
+    };
+
+    function initLgPolyfills() {
+        (function () {
+            if (typeof window.CustomEvent === 'function')
+                return false;
+            function CustomEvent(event, params) {
+                params = params || {
+                    bubbles: false,
+                    cancelable: false,
+                    detail: null,
+                };
+                var evt = document.createEvent('CustomEvent');
+                evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
+                return evt;
+            }
+            window.CustomEvent = CustomEvent;
+        })();
+        (function () {
+            if (!Element.prototype.matches) {
+                Element.prototype.matches =
+                    Element.prototype.msMatchesSelector ||
+                        Element.prototype.webkitMatchesSelector;
+            }
+        })();
+    }
+    var lgQuery = /** @class */ (function () {
+        function lgQuery(selector) {
+            this.cssVenderPrefixes = [
+                'TransitionDuration',
+                'TransitionTimingFunction',
+                'Transform',
+                'Transition',
+            ];
+            this.selector = this._getSelector(selector);
+            this.firstElement = this._getFirstEl();
+            return this;
+        }
+        lgQuery.generateUUID = function () {
+            return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
+                var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
+                return v.toString(16);
+            });
+        };
+        lgQuery.prototype._getSelector = function (selector, context) {
+            if (context === void 0) { context = document; }
+            if (typeof selector !== 'string') {
+                return selector;
+            }
+            context = context || document;
+            var fl = selector.substring(0, 1);
+            if (fl === '#') {
+                return context.querySelector(selector);
+            }
+            else {
+                return context.querySelectorAll(selector);
+            }
+        };
+        lgQuery.prototype._each = function (func) {
+            if (!this.selector) {
+                return this;
+            }
+            if (this.selector.length !== undefined) {
+                [].forEach.call(this.selector, func);
+            }
+            else {
+                func(this.selector, 0);
+            }
+            return this;
+        };
+        lgQuery.prototype._setCssVendorPrefix = function (el, cssProperty, value) {
+            // prettier-ignore
+            var property = cssProperty.replace(/-([a-z])/gi, function (s, group1) {
+                return group1.toUpperCase();
+            });
+            if (this.cssVenderPrefixes.indexOf(property) !== -1) {
+                el.style[property.charAt(0).toLowerCase() + property.slice(1)] = value;
+                el.style['webkit' + property] = value;
+                el.style['moz' + property] = value;
+                el.style['ms' + property] = value;
+                el.style['o' + property] = value;
+            }
+            else {
+                el.style[property] = value;
+            }
+        };
+        lgQuery.prototype._getFirstEl = function () {
+            if (this.selector && this.selector.length !== undefined) {
+                return this.selector[0];
+            }
+            else {
+                return this.selector;
+            }
+        };
+        lgQuery.prototype.isEventMatched = function (event, eventName) {
+            var eventNamespace = eventName.split('.');
+            return event
+                .split('.')
+                .filter(function (e) { return e; })
+                .every(function (e) {
+                return eventNamespace.indexOf(e) !== -1;
+            });
+        };
+        lgQuery.prototype.attr = function (attr, value) {
+            if (value === undefined) {
+                if (!this.firstElement) {
+                    return '';
+                }
+                return this.firstElement.getAttribute(attr);
+            }
+            this._each(function (el) {
+                el.setAttribute(attr, value);
+            });
+            return this;
+        };
+        lgQuery.prototype.find = function (selector) {
+            return $LG(this._getSelector(selector, this.selector));
+        };
+        lgQuery.prototype.first = function () {
+            if (this.selector && this.selector.length !== undefined) {
+                return $LG(this.selector[0]);
+            }
+            else {
+                return $LG(this.selector);
+            }
+        };
+        lgQuery.prototype.eq = function (index) {
+            return $LG(this.selector[index]);
+        };
+        lgQuery.prototype.parent = function () {
+            return $LG(this.selector.parentElement);
+        };
+        lgQuery.prototype.get = function () {
+            return this._getFirstEl();
+        };
+        lgQuery.prototype.removeAttr = function (attributes) {
+            var attrs = attributes.split(' ');
+            this._each(function (el) {
+                attrs.forEach(function (attr) { return el.removeAttribute(attr); });
+            });
+            return this;
+        };
+        lgQuery.prototype.wrap = function (className) {
+            if (!this.firstElement) {
+                return this;
+            }
+            var wrapper = document.createElement('div');
+            wrapper.className = className;
+            this.firstElement.parentNode.insertBefore(wrapper, this.firstElement);
+            this.firstElement.parentNode.removeChild(this.firstElement);
+            wrapper.appendChild(this.firstElement);
+            return this;
+        };
+        lgQuery.prototype.addClass = function (classNames) {
+            if (classNames === void 0) { classNames = ''; }
+            this._each(function (el) {
+                // IE doesn't support multiple arguments
+                classNames.split(' ').forEach(function (className) {
+                    if (className) {
+                        el.classList.add(className);
+                    }
+                });
+            });
+            return this;
+        };
+        lgQuery.prototype.removeClass = function (classNames) {
+            this._each(function (el) {
+                // IE doesn't support multiple arguments
+                classNames.split(' ').forEach(function (className) {
+                    if (className) {
+                        el.classList.remove(className);
+                    }
+                });
+            });
+            return this;
+        };
+        lgQuery.prototype.hasClass = function (className) {
+            if (!this.firstElement) {
+                return false;
+            }
+            return this.firstElement.classList.contains(className);
+        };
+        lgQuery.prototype.hasAttribute = function (attribute) {
+            if (!this.firstElement) {
+                return false;
+            }
+            return this.firstElement.hasAttribute(attribute);
+        };
+        lgQuery.prototype.toggleClass = function (className) {
+            if (!this.firstElement) {
+                return this;
+            }
+            if (this.hasClass(className)) {
+                this.removeClass(className);
+            }
+            else {
+                this.addClass(className);
+            }
+            return this;
+        };
+        lgQuery.prototype.css = function (property, value) {
+            var _this = this;
+            this._each(function (el) {
+                _this._setCssVendorPrefix(el, property, value);
+            });
+            return this;
+        };
+        // Need to pass separate namespaces for separate elements
+        lgQuery.prototype.on = function (events, listener) {
+            var _this = this;
+            if (!this.selector) {
+                return this;
+            }
+            events.split(' ').forEach(function (event) {
+                if (!Array.isArray(lgQuery.eventListeners[event])) {
+                    lgQuery.eventListeners[event] = [];
+                }
+                lgQuery.eventListeners[event].push(listener);
+                _this.selector.addEventListener(event.split('.')[0], listener);
+            });
+            return this;
+        };
+        // @todo - test this
+        lgQuery.prototype.once = function (event, listener) {
+            var _this = this;
+            this.on(event, function () {
+                _this.off(event);
+                listener(event);
+            });
+            return this;
+        };
+        lgQuery.prototype.off = function (event) {
+            var _this = this;
+            if (!this.selector) {
+                return this;
+            }
+            Object.keys(lgQuery.eventListeners).forEach(function (eventName) {
+                if (_this.isEventMatched(event, eventName)) {
+                    lgQuery.eventListeners[eventName].forEach(function (listener) {
+                        _this.selector.removeEventListener(eventName.split('.')[0], listener);
+                    });
+                    lgQuery.eventListeners[eventName] = [];
+                }
+            });
+            return this;
+        };
+        lgQuery.prototype.trigger = function (event, detail) {
+            if (!this.firstElement) {
+                return this;
+            }
+            var customEvent = new CustomEvent(event.split('.')[0], {
+                detail: detail || null,
+            });
+            this.firstElement.dispatchEvent(customEvent);
+            return this;
+        };
+        // Does not support IE
+        lgQuery.prototype.load = function (url) {
+            var _this = this;
+            fetch(url)
+                .then(function (res) { return res.text(); })
+                .then(function (html) {
+                _this.selector.innerHTML = html;
+            });
+            return this;
+        };
+        lgQuery.prototype.html = function (html) {
+            if (html === undefined) {
+                if (!this.firstElement) {
+                    return '';
+                }
+                return this.firstElement.innerHTML;
+            }
+            this._each(function (el) {
+                el.innerHTML = html;
+            });
+            return this;
+        };
+        lgQuery.prototype.append = function (html) {
+            this._each(function (el) {
+                if (typeof html === 'string') {
+                    el.insertAdjacentHTML('beforeend', html);
+                }
+                else {
+                    el.appendChild(html);
+                }
+            });
+            return this;
+        };
+        lgQuery.prototype.prepend = function (html) {
+            this._each(function (el) {
+                el.insertAdjacentHTML('afterbegin', html);
+            });
+            return this;
+        };
+        lgQuery.prototype.remove = function () {
+            this._each(function (el) {
+                el.parentNode.removeChild(el);
+            });
+            return this;
+        };
+        lgQuery.prototype.empty = function () {
+            this._each(function (el) {
+                el.innerHTML = '';
+            });
+            return this;
+        };
+        lgQuery.prototype.scrollTop = function (scrollTop) {
+            if (scrollTop !== undefined) {
+                document.body.scrollTop = scrollTop;
+                document.documentElement.scrollTop = scrollTop;
+                return this;
+            }
+            else {
+                return (window.pageYOffset ||
+                    document.documentElement.scrollTop ||
+                    document.body.scrollTop ||
+                    0);
+            }
+        };
+        lgQuery.prototype.scrollLeft = function (scrollLeft) {
+            if (scrollLeft !== undefined) {
+                document.body.scrollLeft = scrollLeft;
+                document.documentElement.scrollLeft = scrollLeft;
+                return this;
+            }
+            else {
+                return (window.pageXOffset ||
+                    document.documentElement.scrollLeft ||
+                    document.body.scrollLeft ||
+                    0);
+            }
+        };
+        lgQuery.prototype.offset = function () {
+            if (!this.firstElement) {
+                return {
+                    left: 0,
+                    top: 0,
+                };
+            }
+            var rect = this.firstElement.getBoundingClientRect();
+            var bodyMarginLeft = $LG('body').style().marginLeft;
+            // Minus body margin - https://stackoverflow.com/questions/30711548/is-getboundingclientrect-left-returning-a-wrong-value
+            return {
+                left: rect.left - parseFloat(bodyMarginLeft) + this.scrollLeft(),
+                top: rect.top + this.scrollTop(),
+            };
+        };
+        lgQuery.prototype.style = function () {
+            if (!this.firstElement) {
+                return {};
+            }
+            return (this.firstElement.currentStyle ||
+                window.getComputedStyle(this.firstElement));
+        };
+        // Width without padding and border even if box-sizing is used.
+        lgQuery.prototype.width = function () {
+            var style = this.style();
+            return (this.firstElement.clientWidth -
+                parseFloat(style.paddingLeft) -
+                parseFloat(style.paddingRight));
+        };
+        // Height without padding and border even if box-sizing is used.
+        lgQuery.prototype.height = function () {
+            var style = this.style();
+            return (this.firstElement.clientHeight -
+                parseFloat(style.paddingTop) -
+                parseFloat(style.paddingBottom));
+        };
+        lgQuery.eventListeners = {};
+        return lgQuery;
+    }());
+    function $LG(selector) {
+        initLgPolyfills();
+        return new lgQuery(selector);
+    }
+
+    var defaultDynamicOptions = [
+        'src',
+        'sources',
+        'subHtml',
+        'subHtmlUrl',
+        'html',
+        'video',
+        'poster',
+        'slideName',
+        'responsive',
+        'srcset',
+        'sizes',
+        'iframe',
+        'downloadUrl',
+        'download',
+        'width',
+        'facebookShareUrl',
+        'tweetText',
+        'iframeTitle',
+        'twitterShareUrl',
+        'pinterestShareUrl',
+        'pinterestText',
+        'fbHtml',
+        'disqusIdentifier',
+        'disqusUrl',
+    ];
+    // Convert html data-attribute to camalcase
+    function convertToData(attr) {
+        // FInd a way for lgsize
+        if (attr === 'href') {
+            return 'src';
+        }
+        attr = attr.replace('data-', '');
+        attr = attr.charAt(0).toLowerCase() + attr.slice(1);
+        attr = attr.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); });
+        return attr;
+    }
+    var utils = {
+        /**
+         * get possible width and height from the lgSize attribute. Used for ZoomFromOrigin option
+         */
+        getSize: function (el, container, spacing, defaultLgSize) {
+            if (spacing === void 0) { spacing = 0; }
+            var LGel = $LG(el);
+            var lgSize = LGel.attr('data-lg-size') || defaultLgSize;
+            if (!lgSize) {
+                return;
+            }
+            var isResponsiveSizes = lgSize.split(',');
+            // if at-least two viewport sizes are available
+            if (isResponsiveSizes[1]) {
+                var wWidth = window.innerWidth;
+                for (var i = 0; i < isResponsiveSizes.length; i++) {
+                    var size_1 = isResponsiveSizes[i];
+                    var responsiveWidth = parseInt(size_1.split('-')[2], 10);
+                    if (responsiveWidth > wWidth) {
+                        lgSize = size_1;
+                        break;
+                    }
+                    // take last item as last option
+                    if (i === isResponsiveSizes.length - 1) {
+                        lgSize = size_1;
+                    }
+                }
+            }
+            var size = lgSize.split('-');
+            var width = parseInt(size[0], 10);
+            var height = parseInt(size[1], 10);
+            var cWidth = container.width();
+            var cHeight = container.height() - spacing;
+            var maxWidth = Math.min(cWidth, width);
+            var maxHeight = Math.min(cHeight, height);
+            var ratio = Math.min(maxWidth / width, maxHeight / height);
+            return { width: width * ratio, height: height * ratio };
+        },
+        /**
+         * @desc Get transform value based on the imageSize. Used for ZoomFromOrigin option
+         * @param {jQuery Element}
+         * @returns {String} Transform CSS string
+         */
+        getTransform: function (el, container, top, bottom, imageSize) {
+            if (!imageSize) {
+                return;
+            }
+            var LGel = $LG(el).find('img').first();
+            if (!LGel.get()) {
+                return;
+            }
+            var containerRect = container.get().getBoundingClientRect();
+            var wWidth = containerRect.width;
+            // using innerWidth to include mobile safari bottom bar
+            var wHeight = container.height() - (top + bottom);
+            var elWidth = LGel.width();
+            var elHeight = LGel.height();
+            var elStyle = LGel.style();
+            var x = (wWidth - elWidth) / 2 -
+                LGel.offset().left +
+                (parseFloat(elStyle.paddingLeft) || 0) +
+                (parseFloat(elStyle.borderLeft) || 0) +
+                $LG(window).scrollLeft() +
+                containerRect.left;
+            var y = (wHeight - elHeight) / 2 -
+                LGel.offset().top +
+                (parseFloat(elStyle.paddingTop) || 0) +
+                (parseFloat(elStyle.borderTop) || 0) +
+                $LG(window).scrollTop() +
+                top;
+            var scX = elWidth / imageSize.width;
+            var scY = elHeight / imageSize.height;
+            var transform = 'translate3d(' +
+                (x *= -1) +
+                'px, ' +
+                (y *= -1) +
+                'px, 0) scale3d(' +
+                scX +
+                ', ' +
+                scY +
+                ', 1)';
+            return transform;
+        },
+        getIframeMarkup: function (iframeWidth, iframeHeight, iframeMaxWidth, iframeMaxHeight, src, iframeTitle) {
+            var title = iframeTitle ? 'title="' + iframeTitle + '"' : '';
+            return "<div class=\"lg-video-cont lg-has-iframe\" style=\"width:" + iframeWidth + "; max-width:" + iframeMaxWidth + "; height: " + iframeHeight + "; max-height:" + iframeMaxHeight + "\">\n                    <iframe class=\"lg-object\" frameborder=\"0\" " + title + " src=\"" + src + "\"  allowfullscreen=\"true\"></iframe>\n                </div>";
+        },
+        getImgMarkup: function (index, src, altAttr, srcset, sizes, sources) {
+            var srcsetAttr = srcset ? "srcset=\"" + srcset + "\"" : '';
+            var sizesAttr = sizes ? "sizes=\"" + sizes + "\"" : '';
+            var imgMarkup = "<img " + altAttr + " " + srcsetAttr + "  " + sizesAttr + " class=\"lg-object lg-image\" data-index=\"" + index + "\" src=\"" + src + "\" />";
+            var sourceTag = '';
+            if (sources) {
+                var sourceObj = typeof sources === 'string' ? JSON.parse(sources) : sources;
+                sourceTag = sourceObj.map(function (source) {
+                    var attrs = '';
+                    Object.keys(source).forEach(function (key) {
+                        // Do not remove the first space as it is required to separate the attributes
+                        attrs += " " + key + "=\"" + source[key] + "\"";
+                    });
+                    return "<source " + attrs + "></source>";
+                });
+            }
+            return "" + sourceTag + imgMarkup;
+        },
+        // Get src from responsive src
+        getResponsiveSrc: function (srcItms) {
+            var rsWidth = [];
+            var rsSrc = [];
+            var src = '';
+            for (var i = 0; i < srcItms.length; i++) {
+                var _src = srcItms[i].split(' ');
+                // Manage empty space
+                if (_src[0] === '') {
+                    _src.splice(0, 1);
+                }
+                rsSrc.push(_src[0]);
+                rsWidth.push(_src[1]);
+            }
+            var wWidth = window.innerWidth;
+            for (var j = 0; j < rsWidth.length; j++) {
+                if (parseInt(rsWidth[j], 10) > wWidth) {
+                    src = rsSrc[j];
+                    break;
+                }
+            }
+            return src;
+        },
+        isImageLoaded: function (img) {
+            if (!img)
+                return false;
+            // During the onload event, IE correctly identifies any images that
+            // weren’t downloaded as not complete. Others should too. Gecko-based
+            // browsers act like NS4 in that they report this incorrectly.
+            if (!img.complete) {
+                return false;
+            }
+            // However, they do have two very useful properties: naturalWidth and
+            // naturalHeight. These give the true size of the image. If it failed
+            // to load, either of these should be zero.
+            if (img.naturalWidth === 0) {
+                return false;
+            }
+            // No other way of checking: assume it’s ok.
+            return true;
+        },
+        getVideoPosterMarkup: function (_poster, dummyImg, videoContStyle, playVideoString, _isVideo) {
+            var videoClass = '';
+            if (_isVideo && _isVideo.youtube) {
+                videoClass = 'lg-has-youtube';
+            }
+            else if (_isVideo && _isVideo.vimeo) {
+                videoClass = 'lg-has-vimeo';
+            }
+            else {
+                videoClass = 'lg-has-html5';
+            }
+            return "<div class=\"lg-video-cont " + videoClass + "\" style=\"" + videoContStyle + "\">\n                <div class=\"lg-video-play-button\">\n                <svg\n                    viewBox=\"0 0 20 20\"\n                    preserveAspectRatio=\"xMidYMid\"\n                    focusable=\"false\"\n                    aria-labelledby=\"" + playVideoString + "\"\n                    role=\"img\"\n                    class=\"lg-video-play-icon\"\n                >\n                    <title>" + playVideoString + "</title>\n                    <polygon class=\"lg-video-play-icon-inner\" points=\"1,0 20,10 1,20\"></polygon>\n                </svg>\n                <svg class=\"lg-video-play-icon-bg\" viewBox=\"0 0 50 50\" focusable=\"false\">\n                    <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle></svg>\n                <svg class=\"lg-video-play-icon-circle\" viewBox=\"0 0 50 50\" focusable=\"false\">\n                    <circle cx=\"50%\" cy=\"50%\" r=\"20\"></circle>\n                </svg>\n            </div>\n            " + (dummyImg || '') + "\n            <img class=\"lg-object lg-video-poster\" src=\"" + _poster + "\" />\n        </div>";
+        },
+        getFocusableElements: function (container) {
+            var elements = container.querySelectorAll('a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])');
+            var visibleElements = [].filter.call(elements, function (element) {
+                var style = window.getComputedStyle(element);
+                return style.display !== 'none' && style.visibility !== 'hidden';
+            });
+            return visibleElements;
+        },
+        /**
+         * @desc Create dynamic elements array from gallery items when dynamic option is false
+         * It helps to avoid frequent DOM interaction
+         * and avoid multiple checks for dynamic elments
+         *
+         * @returns {Array} dynamicEl
+         */
+        getDynamicOptions: function (items, extraProps, getCaptionFromTitleOrAlt, exThumbImage) {
+            var dynamicElements = [];
+            var availableDynamicOptions = __spreadArrays(defaultDynamicOptions, extraProps);
+            [].forEach.call(items, function (item) {
+                var dynamicEl = {};
+                for (var i = 0; i < item.attributes.length; i++) {
+                    var attr = item.attributes[i];
+                    if (attr.specified) {
+                        var dynamicAttr = convertToData(attr.name);
+                        var label = '';
+                        if (availableDynamicOptions.indexOf(dynamicAttr) > -1) {
+                            label = dynamicAttr;
+                        }
+                        if (label) {
+                            dynamicEl[label] = attr.value;
+                        }
+                    }
+                }
+                var currentItem = $LG(item);
+                var alt = currentItem.find('img').first().attr('alt');
+                var title = currentItem.attr('title');
+                var thumb = exThumbImage
+                    ? currentItem.attr(exThumbImage)
+                    : currentItem.find('img').first().attr('src');
+                dynamicEl.thumb = thumb;
+                if (getCaptionFromTitleOrAlt && !dynamicEl.subHtml) {
+                    dynamicEl.subHtml = title || alt || '';
+                }
+                dynamicEl.alt = alt || title || '';
+                dynamicElements.push(dynamicEl);
+            });
+            return dynamicElements;
+        },
+        isMobile: function () {
+            return /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);
+        },
+        /**
+         * @desc Check the given src is video
+         * @param {String} src
+         * @return {Object} video type
+         * Ex:{ youtube  :  ["//www.youtube.com/watch?v=c0asJgSyxcY", "c0asJgSyxcY"] }
+         *
+         * @todo - this information can be moved to dynamicEl to avoid frequent calls
+         */
+        isVideo: function (src, isHTML5VIdeo, index) {
+            if (!src) {
+                if (isHTML5VIdeo) {
+                    return {
+                        html5: true,
+                    };
+                }
+                else {
+                    console.error('lightGallery :- data-src is not provided on slide item ' +
+                        (index + 1) +
+                        '. Please make sure the selector property is properly configured. More info - https://www.lightgalleryjs.com/demos/html-markup/');
+                    return;
+                }
+            }
+            var youtube = src.match(/\/\/(?:www\.)?youtu(?:\.be|be\.com|be-nocookie\.com)\/(?:watch\?v=|embed\/)?([a-z0-9\-\_\%]+)([\&|?][\S]*)*/i);
+            var vimeo = src.match(/\/\/(?:www\.)?(?:player\.)?vimeo.com\/(?:video\/)?([0-9a-z\-_]+)(.*)?/i);
+            var wistia = src.match(/https?:\/\/(.+)?(wistia\.com|wi\.st)\/(medias|embed)\/([0-9a-z\-_]+)(.*)/);
+            if (youtube) {
+                return {
+                    youtube: youtube,
+                };
+            }
+            else if (vimeo) {
+                return {
+                    vimeo: vimeo,
+                };
+            }
+            else if (wistia) {
+                return {
+                    wistia: wistia,
+                };
+            }
+        },
+    };
+
+    // @ref - https://stackoverflow.com/questions/3971841/how-to-resize-images-proportionally-keeping-the-aspect-ratio
+    // @ref - https://2ality.com/2017/04/setting-up-multi-platform-packages.html
+    // Unique id for each gallery
+    var lgId = 0;
+    var LightGallery = /** @class */ (function () {
+        function LightGallery(element, options) {
+            this.lgOpened = false;
+            this.index = 0;
+            // lightGallery modules
+            this.plugins = [];
+            // false when lightGallery load first slide content;
+            this.lGalleryOn = false;
+            // True when a slide animation is in progress
+            this.lgBusy = false;
+            this.currentItemsInDom = [];
+            // Scroll top value before lightGallery is opened
+            this.prevScrollTop = 0;
+            this.bodyPaddingRight = 0;
+            this.isDummyImageRemoved = false;
+            this.dragOrSwipeEnabled = false;
+            this.mediaContainerPosition = {
+                top: 0,
+                bottom: 0,
+            };
+            if (!element) {
+                return this;
+            }
+            lgId++;
+            this.lgId = lgId;
+            this.el = element;
+            this.LGel = $LG(element);
+            this.generateSettings(options);
+            this.buildModules();
+            // When using dynamic mode, ensure dynamicEl is an array
+            if (this.settings.dynamic &&
+                this.settings.dynamicEl !== undefined &&
+                !Array.isArray(this.settings.dynamicEl)) {
+                throw 'When using dynamic mode, you must also define dynamicEl as an Array.';
+            }
+            this.galleryItems = this.getItems();
+            this.normalizeSettings();
+            // Gallery items
+            this.init();
+            this.validateLicense();
+            return this;
+        }
+        LightGallery.prototype.generateSettings = function (options) {
+            // lightGallery settings
+            this.settings = __assign(__assign({}, lightGalleryCoreSettings), options);
+            if (this.settings.isMobile &&
+                typeof this.settings.isMobile === 'function'
+                ? this.settings.isMobile()
+                : utils.isMobile()) {
+                var mobileSettings = __assign(__assign({}, this.settings.mobileSettings), this.settings.mobileSettings);
+                this.settings = __assign(__assign({}, this.settings), mobileSettings);
+            }
+        };
+        LightGallery.prototype.normalizeSettings = function () {
+            if (this.settings.slideEndAnimation) {
+                this.settings.hideControlOnEnd = false;
+            }
+            if (!this.settings.closable) {
+                this.settings.swipeToClose = false;
+            }
+            // And reset it on close to get the correct value next time
+            this.zoomFromOrigin = this.settings.zoomFromOrigin;
+            // At the moment, Zoom from image doesn't support dynamic options
+            // @todo add zoomFromOrigin support for dynamic images
+            if (this.settings.dynamic) {
+                this.zoomFromOrigin = false;
+            }
+            if (!this.settings.container) {
+                this.settings.container = document.body;
+            }
+            // settings.preload should not be grater than $item.length
+            this.settings.preload = Math.min(this.settings.preload, this.galleryItems.length);
+        };
+        LightGallery.prototype.init = function () {
+            var _this = this;
+            this.addSlideVideoInfo(this.galleryItems);
+            this.buildStructure();
+            this.LGel.trigger(lGEvents.init, {
+                instance: this,
+            });
+            if (this.settings.keyPress) {
+                this.keyPress();
+            }
+            setTimeout(function () {
+                _this.enableDrag();
+                _this.enableSwipe();
+                _this.triggerPosterClick();
+            }, 50);
+            this.arrow();
+            if (this.settings.mousewheel) {
+                this.mousewheel();
+            }
+            if (!this.settings.dynamic) {
+                this.openGalleryOnItemClick();
+            }
+        };
+        LightGallery.prototype.openGalleryOnItemClick = function () {
+            var _this = this;
+            var _loop_1 = function (index) {
+                var element = this_1.items[index];
+                var $element = $LG(element);
+                // Using different namespace for click because click event should not unbind if selector is same object('this')
+                // @todo manage all event listners - should have namespace that represent element
+                var uuid = lgQuery.generateUUID();
+                $element
+                    .attr('data-lg-id', uuid)
+                    .on("click.lgcustom-item-" + uuid, function (e) {
+                    e.preventDefault();
+                    var currentItemIndex = _this.settings.index || index;
+                    _this.openGallery(currentItemIndex, element);
+                });
+            };
+            var this_1 = this;
+            // Using for loop instead of using bubbling as the items can be any html element.
+            for (var index = 0; index < this.items.length; index++) {
+                _loop_1(index);
+            }
+        };
+        /**
+         * Module constructor
+         * Modules are build incrementally.
+         * Gallery should be opened only once all the modules are initialized.
+         * use moduleBuildTimeout to make sure this
+         */
+        LightGallery.prototype.buildModules = function () {
+            var _this = this;
+            this.settings.plugins.forEach(function (plugin) {
+                _this.plugins.push(new plugin(_this, $LG));
+            });
+        };
+        LightGallery.prototype.validateLicense = function () {
+            if (!this.settings.licenseKey) {
+                console.error('Please provide a valid license key');
+            }
+            else if (this.settings.licenseKey === '0000-0000-000-0000') {
+                console.warn("lightGallery: " + this.settings.licenseKey + " license key is not valid for production use");
+            }
+        };
+        LightGallery.prototype.getSlideItem = function (index) {
+            return $LG(this.getSlideItemId(index));
+        };
+        LightGallery.prototype.getSlideItemId = function (index) {
+            return "#lg-item-" + this.lgId + "-" + index;
+        };
+        LightGallery.prototype.getIdName = function (id) {
+            return id + "-" + this.lgId;
+        };
+        LightGallery.prototype.getElementById = function (id) {
+            return $LG("#" + this.getIdName(id));
+        };
+        LightGallery.prototype.manageSingleSlideClassName = function () {
+            if (this.galleryItems.length < 2) {
+                this.outer.addClass('lg-single-item');
+            }
+            else {
+                this.outer.removeClass('lg-single-item');
+            }
+        };
+        LightGallery.prototype.buildStructure = function () {
+            var _this = this;
+            var container = this.$container && this.$container.get();
+            if (container) {
+                return;
+            }
+            var controls = '';
+            var subHtmlCont = '';
+            // Create controls
+            if (this.settings.controls) {
+                controls = "<button type=\"button\" id=\"" + this.getIdName('lg-prev') + "\" aria-label=\"" + this.settings.strings['previousSlide'] + "\" class=\"lg-prev lg-icon\"> " + this.settings.prevHtml + " </button>\n                <button type=\"button\" id=\"" + this.getIdName('lg-next') + "\" aria-label=\"" + this.settings.strings['nextSlide'] + "\" class=\"lg-next lg-icon\"> " + this.settings.nextHtml + " </button>";
+            }
+            if (this.settings.appendSubHtmlTo !== '.lg-item') {
+                subHtmlCont =
+                    '<div class="lg-sub-html" role="status" aria-live="polite"></div>';
+            }
+            var addClasses = '';
+            if (this.settings.allowMediaOverlap) {
+                // Do not remove space before last single quote
+                addClasses += 'lg-media-overlap ';
+            }
+            var ariaLabelledby = this.settings.ariaLabelledby
+                ? 'aria-labelledby="' + this.settings.ariaLabelledby + '"'
+                : '';
+            var ariaDescribedby = this.settings.ariaDescribedby
+                ? 'aria-describedby="' + this.settings.ariaDescribedby + '"'
+                : '';
+            var containerClassName = "lg-container " + this.settings.addClass + " " + (document.body !== this.settings.container ? 'lg-inline' : '');
+            var closeIcon = this.settings.closable && this.settings.showCloseIcon
+                ? "<button type=\"button\" aria-label=\"" + this.settings.strings['closeGallery'] + "\" id=\"" + this.getIdName('lg-close') + "\" class=\"lg-close lg-icon\"></button>"
+                : '';
+            var maximizeIcon = this.settings.showMaximizeIcon
+                ? "<button type=\"button\" aria-label=\"" + this.settings.strings['toggleMaximize'] + "\" id=\"" + this.getIdName('lg-maximize') + "\" class=\"lg-maximize lg-icon\"></button>"
+                : '';
+            var template = "\n        <div class=\"" + containerClassName + "\" id=\"" + this.getIdName('lg-container') + "\" tabindex=\"-1\" aria-modal=\"true\" " + ariaLabelledby + " " + ariaDescribedby + " role=\"dialog\"\n        >\n            <div id=\"" + this.getIdName('lg-backdrop') + "\" class=\"lg-backdrop\"></div>\n\n            <div id=\"" + this.getIdName('lg-outer') + "\" class=\"lg-outer lg-use-css3 lg-css3 lg-hide-items " + addClasses + " \">\n\n              <div id=\"" + this.getIdName('lg-content') + "\" class=\"lg-content\">\n                <div id=\"" + this.getIdName('lg-inner') + "\" class=\"lg-inner\">\n                </div>\n                " + controls + "\n              </div>\n                <div id=\"" + this.getIdName('lg-toolbar') + "\" class=\"lg-toolbar lg-group\">\n                    " + maximizeIcon + "\n                    " + closeIcon + "\n                    </div>\n                    " + (this.settings.appendSubHtmlTo === '.lg-outer'
+                ? subHtmlCont
+                : '') + "\n                <div id=\"" + this.getIdName('lg-components') + "\" class=\"lg-components\">\n                    " + (this.settings.appendSubHtmlTo === '.lg-sub-html'
+                ? subHtmlCont
+                : '') + "\n                </div>\n            </div>\n        </div>\n        ";
+            $LG(this.settings.container).append(template);
+            if (document.body !== this.settings.container) {
+                $LG(this.settings.container).css('position', 'relative');
+            }
+            this.outer = this.getElementById('lg-outer');
+            this.$lgComponents = this.getElementById('lg-components');
+            this.$backdrop = this.getElementById('lg-backdrop');
+            this.$container = this.getElementById('lg-container');
+            this.$inner = this.getElementById('lg-inner');
+            this.$content = this.getElementById('lg-content');
+            this.$toolbar = this.getElementById('lg-toolbar');
+            this.$backdrop.css('transition-duration', this.settings.backdropDuration + 'ms');
+            var outerClassNames = this.settings.mode + " ";
+            this.manageSingleSlideClassName();
+            if (this.settings.enableDrag) {
+                outerClassNames += 'lg-grab ';
+            }
+            this.outer.addClass(outerClassNames);
+            this.$inner.css('transition-timing-function', this.settings.easing);
+            this.$inner.css('transition-duration', this.settings.speed + 'ms');
+            if (this.settings.download) {
+                this.$toolbar.append("<a id=\"" + this.getIdName('lg-download') + "\" target=\"_blank\" rel=\"noopener\" aria-label=\"" + this.settings.strings['download'] + "\" download class=\"lg-download lg-icon\"></a>");
+            }
+            this.counter();
+            $LG(window).on("resize.lg.global" + this.lgId + " orientationchange.lg.global" + this.lgId, function () {
+                _this.refreshOnResize();
+            });
+            this.hideBars();
+            this.manageCloseGallery();
+            this.toggleMaximize();
+            this.initModules();
+        };
+        LightGallery.prototype.refreshOnResize = function () {
+            if (this.lgOpened) {
+                var currentGalleryItem = this.galleryItems[this.index];
+                var __slideVideoInfo = currentGalleryItem.__slideVideoInfo;
+                this.mediaContainerPosition = this.getMediaContainerPosition();
+                var _a = this.mediaContainerPosition, top_1 = _a.top, bottom = _a.bottom;
+                this.currentImageSize = utils.getSize(this.items[this.index], this.outer, top_1 + bottom, __slideVideoInfo && this.settings.videoMaxSize);
+                if (__slideVideoInfo) {
+                    this.resizeVideoSlide(this.index, this.currentImageSize);
+                }
+                if (this.zoomFromOrigin && !this.isDummyImageRemoved) {
+                    var imgStyle = this.getDummyImgStyles(this.currentImageSize);
+                    this.outer
+                        .find('.lg-current .lg-dummy-img')
+                        .first()
+                        .attr('style', imgStyle);
+                }
+                this.LGel.trigger(lGEvents.containerResize);
+            }
+        };
+        LightGallery.prototype.resizeVideoSlide = function (index, imageSize) {
+            var lgVideoStyle = this.getVideoContStyle(imageSize);
+            var currentSlide = this.getSlideItem(index);
+            currentSlide.find('.lg-video-cont').attr('style', lgVideoStyle);
+        };
+        /**
+         * Update slides dynamically.
+         * Add, edit or delete slides dynamically when lightGallery is opened.
+         * Modify the current gallery items and pass it via updateSlides method
+         * @note
+         * - Do not mutate existing lightGallery items directly.
+         * - Always pass new list of gallery items
+         * - You need to take care of thumbnails outside the gallery if any
+         * - user this method only if you want to update slides when the gallery is opened. Otherwise, use `refresh()` method.
+         * @param items Gallery items
+         * @param index After the update operation, which slide gallery should navigate to
+         * @category lGPublicMethods
+         * @example
+         * const plugin = lightGallery();
+         *
+         * // Adding slides dynamically
+         * let galleryItems = [
+         * // Access existing lightGallery items
+         * // galleryItems are automatically generated internally from the gallery HTML markup
+         * // or directly from galleryItems when dynamic gallery is used
+         *   ...plugin.galleryItems,
+         *     ...[
+         *       {
+         *         src: 'img/img-1.png',
+         *           thumb: 'img/thumb1.png',
+         *         },
+         *     ],
+         *   ];
+         *   plugin.updateSlides(
+         *     galleryItems,
+         *     plugin.index,
+         *   );
+         *
+         *
+         * // Remove slides dynamically
+         * galleryItems = JSON.parse(
+         *   JSON.stringify(updateSlideInstance.galleryItems),
+         * );
+         * galleryItems.shift();
+         * updateSlideInstance.updateSlides(galleryItems, 1);
+         * @see <a href="/demos/update-slides/">Demo</a>
+         */
+        LightGallery.prototype.updateSlides = function (items, index) {
+            if (this.index > items.length - 1) {
+                this.index = items.length - 1;
+            }
+            if (items.length === 1) {
+                this.index = 0;
+            }
+            if (!items.length) {
+                this.closeGallery();
+                return;
+            }
+            var currentSrc = this.galleryItems[index].src;
+            this.galleryItems = items;
+            this.updateControls();
+            this.$inner.empty();
+            this.currentItemsInDom = [];
+            var _index = 0;
+            // Find the current index based on source value of the slide
+            this.galleryItems.some(function (galleryItem, itemIndex) {
+                if (galleryItem.src === currentSrc) {
+                    _index = itemIndex;
+                    return true;
+                }
+                return false;
+            });
+            this.currentItemsInDom = this.organizeSlideItems(_index, -1);
+            this.loadContent(_index, true);
+            this.getSlideItem(_index).addClass('lg-current');
+            this.index = _index;
+            this.updateCurrentCounter(_index);
+            this.LGel.trigger(lGEvents.updateSlides);
+        };
+        // Get gallery items based on multiple conditions
+        LightGallery.prototype.getItems = function () {
+            // Gallery items
+            this.items = [];
+            if (!this.settings.dynamic) {
+                if (this.settings.selector === 'this') {
+                    this.items.push(this.el);
+                }
+                else if (this.settings.selector) {
+                    if (typeof this.settings.selector === 'string') {
+                        if (this.settings.selectWithin) {
+                            var selectWithin = $LG(this.settings.selectWithin);
+                            this.items = selectWithin
+                                .find(this.settings.selector)
+                                .get();
+                        }
+                        else {
+                            this.items = this.el.querySelectorAll(this.settings.selector);
+                        }
+                    }
+                    else {
+                        this.items = this.settings.selector;
+                    }
+                }
+                else {
+                    this.items = this.el.children;
+                }
+                return utils.getDynamicOptions(this.items, this.settings.extraProps, this.settings.getCaptionFromTitleOrAlt, this.settings.exThumbImage);
+            }
+            else {
+                return this.settings.dynamicEl || [];
+            }
+        };
+        LightGallery.prototype.shouldHideScrollbar = function () {
+            return (this.settings.hideScrollbar &&
+                document.body === this.settings.container);
+        };
+        LightGallery.prototype.hideScrollbar = function () {
+            if (!this.shouldHideScrollbar()) {
+                return;
+            }
+            this.bodyPaddingRight = parseFloat($LG('body').style().paddingRight);
+            var bodyRect = document.documentElement.getBoundingClientRect();
+            var scrollbarWidth = window.innerWidth - bodyRect.width;
+            $LG(document.body).css('padding-right', scrollbarWidth + this.bodyPaddingRight + 'px');
+            $LG(document.body).addClass('lg-overlay-open');
+        };
+        LightGallery.prototype.resetScrollBar = function () {
+            if (!this.shouldHideScrollbar()) {
+                return;
+            }
+            $LG(document.body).css('padding-right', this.bodyPaddingRight + 'px');
+            $LG(document.body).removeClass('lg-overlay-open');
+        };
+        /**
+         * Open lightGallery.
+         * Open gallery with specific slide by passing index of the slide as parameter.
+         * @category lGPublicMethods
+         * @param {Number} index  - index of the slide
+         * @param {HTMLElement} element - Which image lightGallery should zoom from
+         *
+         * @example
+         * const $dynamicGallery = document.getElementById('dynamic-gallery-demo');
+         * const dynamicGallery = lightGallery($dynamicGallery, {
+         *     dynamic: true,
+         *     dynamicEl: [
+         *         {
+         *              src: 'img/1.jpg',
+         *              thumb: 'img/thumb-1.jpg',
+         *              subHtml: '<h4>Image 1 title</h4><p>Image 1 descriptions.</p>',
+         *         },
+         *         ...
+         *     ],
+         * });
+         * $dynamicGallery.addEventListener('click', function () {
+         *     // Starts with third item.(Optional).
+         *     // This is useful if you want use dynamic mode with
+         *     // custom thumbnails (thumbnails outside gallery),
+         *     dynamicGallery.openGallery(2);
+         * });
+         *
+         */
+        LightGallery.prototype.openGallery = function (index, element) {
+            var _this = this;
+            if (index === void 0) { index = this.settings.index; }
+            // prevent accidental double execution
+            if (this.lgOpened)
+                return;
+            this.lgOpened = true;
+            this.outer.removeClass('lg-hide-items');
+            this.hideScrollbar();
+            // Add display block, but still has opacity 0
+            this.$container.addClass('lg-show');
+            var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, index);
+            this.currentItemsInDom = itemsToBeInsertedToDom;
+            var items = '';
+            itemsToBeInsertedToDom.forEach(function (item) {
+                items = items + ("<div id=\"" + item + "\" class=\"lg-item\"></div>");
+            });
+            this.$inner.append(items);
+            this.addHtml(index);
+            var transform = '';
+            this.mediaContainerPosition = this.getMediaContainerPosition();
+            var _a = this.mediaContainerPosition, top = _a.top, bottom = _a.bottom;
+            if (!this.settings.allowMediaOverlap) {
+                this.setMediaContainerPosition(top, bottom);
+            }
+            var __slideVideoInfo = this.galleryItems[index].__slideVideoInfo;
+            if (this.zoomFromOrigin && element) {
+                this.currentImageSize = utils.getSize(element, this.outer, top + bottom, __slideVideoInfo && this.settings.videoMaxSize);
+                transform = utils.getTransform(element, this.outer, top, bottom, this.currentImageSize);
+            }
+            if (!this.zoomFromOrigin || !transform) {
+                this.outer.addClass(this.settings.startClass);
+                this.getSlideItem(index).removeClass('lg-complete');
+            }
+            var timeout = this.settings.zoomFromOrigin
+                ? 100
+                : this.settings.backdropDuration;
+            setTimeout(function () {
+                _this.outer.addClass('lg-components-open');
+            }, timeout);
+            this.index = index;
+            this.LGel.trigger(lGEvents.beforeOpen);
+            // add class lg-current to remove initial transition
+            this.getSlideItem(index).addClass('lg-current');
+            this.lGalleryOn = false;
+            // Store the current scroll top value to scroll back after closing the gallery..
+            this.prevScrollTop = $LG(window).scrollTop();
+            setTimeout(function () {
+                // Need to check both zoomFromOrigin and transform values as we need to set set the
+                // default opening animation if user missed to add the lg-size attribute
+                if (_this.zoomFromOrigin && transform) {
+                    var currentSlide_1 = _this.getSlideItem(index);
+                    currentSlide_1.css('transform', transform);
+                    setTimeout(function () {
+                        currentSlide_1
+                            .addClass('lg-start-progress lg-start-end-progress')
+                            .css('transition-duration', _this.settings.startAnimationDuration + 'ms');
+                        _this.outer.addClass('lg-zoom-from-image');
+                    });
+                    setTimeout(function () {
+                        currentSlide_1.css('transform', 'translate3d(0, 0, 0)');
+                    }, 100);
+                }
+                setTimeout(function () {
+                    _this.$backdrop.addClass('in');
+                    _this.$container.addClass('lg-show-in');
+                }, 10);
+                setTimeout(function () {
+                    if (_this.settings.trapFocus &&
+                        document.body === _this.settings.container) {
+                        _this.trapFocus();
+                    }
+                }, _this.settings.backdropDuration + 50);
+                // lg-visible class resets gallery opacity to 1
+                if (!_this.zoomFromOrigin || !transform) {
+                    setTimeout(function () {
+                        _this.outer.addClass('lg-visible');
+                    }, _this.settings.backdropDuration);
+                }
+                // initiate slide function
+                _this.slide(index, false, false, false);
+                _this.LGel.trigger(lGEvents.afterOpen);
+            });
+            if (document.body === this.settings.container) {
+                $LG('html').addClass('lg-on');
+            }
+        };
+        /**
+         * Note - Changing the position of the media on every slide transition creates a flickering effect.
+         * Therefore, The height of the caption is calculated dynamically, only once based on the first slide caption.
+         * if you have dynamic captions for each media,
+         * you can provide an appropriate height for the captions via allowMediaOverlap option
+         */
+        LightGallery.prototype.getMediaContainerPosition = function () {
+            if (this.settings.allowMediaOverlap) {
+                return {
+                    top: 0,
+                    bottom: 0,
+                };
+            }
+            var top = this.$toolbar.get().clientHeight || 0;
+            var subHtml = this.outer.find('.lg-components .lg-sub-html').get();
+            var captionHeight = this.settings.defaultCaptionHeight ||
+                (subHtml && subHtml.clientHeight) ||
+                0;
+            var thumbContainer = this.outer.find('.lg-thumb-outer').get();
+            var thumbHeight = thumbContainer ? thumbContainer.clientHeight : 0;
+            var bottom = thumbHeight + captionHeight;
+            return {
+                top: top,
+                bottom: bottom,
+            };
+        };
+        LightGallery.prototype.setMediaContainerPosition = function (top, bottom) {
+            if (top === void 0) { top = 0; }
+            if (bottom === void 0) { bottom = 0; }
+            this.$content.css('top', top + 'px').css('bottom', bottom + 'px');
+        };
+        LightGallery.prototype.hideBars = function () {
+            var _this = this;
+            // Hide controllers if mouse doesn't move for some period
+            setTimeout(function () {
+                _this.outer.removeClass('lg-hide-items');
+                if (_this.settings.hideBarsDelay > 0) {
+                    _this.outer.on('mousemove.lg click.lg touchstart.lg', function () {
+                        _this.outer.removeClass('lg-hide-items');
+                        clearTimeout(_this.hideBarTimeout);
+                        // Timeout will be cleared on each slide movement also
+                        _this.hideBarTimeout = setTimeout(function () {
+                            _this.outer.addClass('lg-hide-items');
+                        }, _this.settings.hideBarsDelay);
+                    });
+                    _this.outer.trigger('mousemove.lg');
+                }
+            }, this.settings.showBarsAfter);
+        };
+        LightGallery.prototype.initPictureFill = function ($img) {
+            if (this.settings.supportLegacyBrowser) {
+                try {
+                    picturefill({
+                        elements: [$img.get()],
+                    });
+                }
+                catch (e) {
+                    console.warn('lightGallery :- If you want srcset or picture tag to be supported for older browser please include picturefil javascript library in your document.');
+                }
+            }
+        };
+        /**
+         *  @desc Create image counter
+         *  Ex: 1/10
+         */
+        LightGallery.prototype.counter = function () {
+            if (this.settings.counter) {
+                var counterHtml = "<div class=\"lg-counter\" role=\"status\" aria-live=\"polite\">\n                <span id=\"" + this.getIdName('lg-counter-current') + "\" class=\"lg-counter-current\">" + (this.index + 1) + " </span> /\n                <span id=\"" + this.getIdName('lg-counter-all') + "\" class=\"lg-counter-all\">" + this.galleryItems.length + " </span></div>";
+                this.outer.find(this.settings.appendCounterTo).append(counterHtml);
+            }
+        };
+        /**
+         *  @desc add sub-html into the slide
+         *  @param {Number} index - index of the slide
+         */
+        LightGallery.prototype.addHtml = function (index) {
+            var subHtml;
+            var subHtmlUrl;
+            if (this.galleryItems[index].subHtmlUrl) {
+                subHtmlUrl = this.galleryItems[index].subHtmlUrl;
+            }
+            else {
+                subHtml = this.galleryItems[index].subHtml;
+            }
+            if (!subHtmlUrl) {
+                if (subHtml) {
+                    // get first letter of sub-html
+                    // if first letter starts with . or # get the html form the jQuery object
+                    var fL = subHtml.substring(0, 1);
+                    if (fL === '.' || fL === '#') {
+                        if (this.settings.subHtmlSelectorRelative &&
+                            !this.settings.dynamic) {
+                            subHtml = $LG(this.items)
+                                .eq(index)
+                                .find(subHtml)
+                                .first()
+                                .html();
+                        }
+                        else {
+                            subHtml = $LG(subHtml).first().html();
+                        }
+                    }
+                }
+                else {
+                    subHtml = '';
+                }
+            }
+            if (this.settings.appendSubHtmlTo !== '.lg-item') {
+                if (subHtmlUrl) {
+                    this.outer.find('.lg-sub-html').load(subHtmlUrl);
+                }
+                else {
+                    this.outer.find('.lg-sub-html').html(subHtml);
+                }
+            }
+            else {
+                var currentSlide = $LG(this.getSlideItemId(index));
+                if (subHtmlUrl) {
+                    currentSlide.load(subHtmlUrl);
+                }
+                else {
+                    currentSlide.append("<div class=\"lg-sub-html\">" + subHtml + "</div>");
+                }
+            }
+            // Add lg-empty-html class if title doesn't exist
+            if (typeof subHtml !== 'undefined' && subHtml !== null) {
+                if (subHtml === '') {
+                    this.outer
+                        .find(this.settings.appendSubHtmlTo)
+                        .addClass('lg-empty-html');
+                }
+                else {
+                    this.outer
+                        .find(this.settings.appendSubHtmlTo)
+                        .removeClass('lg-empty-html');
+                }
+            }
+            this.LGel.trigger(lGEvents.afterAppendSubHtml, {
+                index: index,
+            });
+        };
+        /**
+         *  @desc Preload slides
+         *  @param {Number} index - index of the slide
+         * @todo preload not working for the first slide, Also, should work for the first and last slide as well
+         */
+        LightGallery.prototype.preload = function (index) {
+            for (var i = 1; i <= this.settings.preload; i++) {
+                if (i >= this.galleryItems.length - index) {
+                    break;
+                }
+                this.loadContent(index + i, false);
+            }
+            for (var j = 1; j <= this.settings.preload; j++) {
+                if (index - j < 0) {
+                    break;
+                }
+                this.loadContent(index - j, false);
+            }
+        };
+        LightGallery.prototype.getDummyImgStyles = function (imageSize) {
+            if (!imageSize)
+                return '';
+            return "width:" + imageSize.width + "px;\n                margin-left: -" + imageSize.width / 2 + "px;\n                margin-top: -" + imageSize.height / 2 + "px;\n                height:" + imageSize.height + "px";
+        };
+        LightGallery.prototype.getVideoContStyle = function (imageSize) {
+            if (!imageSize)
+                return '';
+            return "width:" + imageSize.width + "px;\n                height:" + imageSize.height + "px";
+        };
+        LightGallery.prototype.getDummyImageContent = function ($currentSlide, index, alt) {
+            var $currentItem;
+            if (!this.settings.dynamic) {
+                $currentItem = $LG(this.items).eq(index);
+            }
+            if ($currentItem) {
+                var _dummyImgSrc = void 0;
+                if (!this.settings.exThumbImage) {
+                    _dummyImgSrc = $currentItem.find('img').first().attr('src');
+                }
+                else {
+                    _dummyImgSrc = $currentItem.attr(this.settings.exThumbImage);
+                }
+                if (!_dummyImgSrc)
+                    return '';
+                var imgStyle = this.getDummyImgStyles(this.currentImageSize);
+                var dummyImgContent = "<img " + alt + " style=\"" + imgStyle + "\" class=\"lg-dummy-img\" src=\"" + _dummyImgSrc + "\" />";
+                $currentSlide.addClass('lg-first-slide');
+                this.outer.addClass('lg-first-slide-loading');
+                return dummyImgContent;
+            }
+            return '';
+        };
+        LightGallery.prototype.setImgMarkup = function (src, $currentSlide, index) {
+            var currentGalleryItem = this.galleryItems[index];
+            var alt = currentGalleryItem.alt, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;
+            // Use the thumbnail as dummy image which will be resized to actual image size and
+            // displayed on top of actual image
+            var imgContent = '';
+            var altAttr = alt ? 'alt="' + alt + '"' : '';
+            if (this.isFirstSlideWithZoomAnimation()) {
+                imgContent = this.getDummyImageContent($currentSlide, index, altAttr);
+            }
+            else {
+                imgContent = utils.getImgMarkup(index, src, altAttr, srcset, sizes, sources);
+            }
+            var imgMarkup = "<picture class=\"lg-img-wrap\"> " + imgContent + "</picture>";
+            $currentSlide.prepend(imgMarkup);
+        };
+        LightGallery.prototype.onSlideObjectLoad = function ($slide, isHTML5VideoWithoutPoster, onLoad, onError) {
+            var mediaObject = $slide.find('.lg-object').first();
+            if (utils.isImageLoaded(mediaObject.get()) ||
+                isHTML5VideoWithoutPoster) {
+                onLoad();
+            }
+            else {
+                mediaObject.on('load.lg error.lg', function () {
+                    onLoad && onLoad();
+                });
+                mediaObject.on('error.lg', function () {
+                    onError && onError();
+                });
+            }
+        };
+        /**
+         *
+         * @param $el Current slide item
+         * @param index
+         * @param delay Delay is 0 except first time
+         * @param speed Speed is same as delay, except it is 0 if gallery is opened via hash plugin
+         * @param isFirstSlide
+         */
+        LightGallery.prototype.onLgObjectLoad = function (currentSlide, index, delay, speed, isFirstSlide, isHTML5VideoWithoutPoster) {
+            var _this = this;
+            this.onSlideObjectLoad(currentSlide, isHTML5VideoWithoutPoster, function () {
+                _this.triggerSlideItemLoad(currentSlide, index, delay, speed, isFirstSlide);
+            }, function () {
+                currentSlide.addClass('lg-complete lg-complete_');
+                currentSlide.html('<span class="lg-error-msg">Oops... Failed to load content...</span>');
+            });
+        };
+        LightGallery.prototype.triggerSlideItemLoad = function ($currentSlide, index, delay, speed, isFirstSlide) {
+            var _this = this;
+            var currentGalleryItem = this.galleryItems[index];
+            // Adding delay for video slides without poster for better performance and user experience
+            // Videos should start playing once once the gallery is completely loaded
+            var _speed = isFirstSlide &&
+                this.getSlideType(currentGalleryItem) === 'video' &&
+                !currentGalleryItem.poster
+                ? speed
+                : 0;
+            setTimeout(function () {
+                $currentSlide.addClass('lg-complete lg-complete_');
+                _this.LGel.trigger(lGEvents.slideItemLoad, {
+                    index: index,
+                    delay: delay || 0,
+                    isFirstSlide: isFirstSlide,
+                });
+            }, _speed);
+        };
+        LightGallery.prototype.isFirstSlideWithZoomAnimation = function () {
+            return !!(!this.lGalleryOn &&
+                this.zoomFromOrigin &&
+                this.currentImageSize);
+        };
+        // Add video slideInfo
+        LightGallery.prototype.addSlideVideoInfo = function (items) {
+            var _this = this;
+            items.forEach(function (element, index) {
+                element.__slideVideoInfo = utils.isVideo(element.src, !!element.video, index);
+                if (element.__slideVideoInfo &&
+                    _this.settings.loadYouTubePoster &&
+                    !element.poster &&
+                    element.__slideVideoInfo.youtube) {
+                    element.poster = "//img.youtube.com/vi/" + element.__slideVideoInfo.youtube[1] + "/maxresdefault.jpg";
+                }
+            });
+        };
+        /**
+         *  Load slide content into slide.
+         *  This is used to load content into slides that is not visible too
+         *  @param {Number} index - index of the slide.
+         *  @param {Boolean} rec - if true call loadcontent() function again.
+         */
+        LightGallery.prototype.loadContent = function (index, rec) {
+            var _this = this;
+            var currentGalleryItem = this.galleryItems[index];
+            var $currentSlide = $LG(this.getSlideItemId(index));
+            var poster = currentGalleryItem.poster, srcset = currentGalleryItem.srcset, sizes = currentGalleryItem.sizes, sources = currentGalleryItem.sources;
+            var src = currentGalleryItem.src;
+            var video = currentGalleryItem.video;
+            var _html5Video = video && typeof video === 'string' ? JSON.parse(video) : video;
+            if (currentGalleryItem.responsive) {
+                var srcDyItms = currentGalleryItem.responsive.split(',');
+                src = utils.getResponsiveSrc(srcDyItms) || src;
+            }
+            var videoInfo = currentGalleryItem.__slideVideoInfo;
+            var lgVideoStyle = '';
+            var iframe = !!currentGalleryItem.iframe;
+            var isFirstSlide = !this.lGalleryOn;
+            // delay for adding complete class. it is 0 except first time.
+            var delay = 0;
+            if (isFirstSlide) {
+                if (this.zoomFromOrigin && this.currentImageSize) {
+                    delay = this.settings.startAnimationDuration + 10;
+                }
+                else {
+                    delay = this.settings.backdropDuration + 10;
+                }
+            }
+            if (!$currentSlide.hasClass('lg-loaded')) {
+                if (videoInfo) {
+                    var _a = this.mediaContainerPosition, top_2 = _a.top, bottom = _a.bottom;
+                    var videoSize = utils.getSize(this.items[index], this.outer, top_2 + bottom, videoInfo && this.settings.videoMaxSize);
+                    lgVideoStyle = this.getVideoContStyle(videoSize);
+                }
+                if (iframe) {
+                    var markup = utils.getIframeMarkup(this.settings.iframeWidth, this.settings.iframeHeight, this.settings.iframeMaxWidth, this.settings.iframeMaxHeight, src, currentGalleryItem.iframeTitle);
+                    $currentSlide.prepend(markup);
+                }
+                else if (poster) {
+                    var dummyImg = '';
+                    var hasStartAnimation = isFirstSlide &&
+                        this.zoomFromOrigin &&
+                        this.currentImageSize;
+                    if (hasStartAnimation) {
+                        dummyImg = this.getDummyImageContent($currentSlide, index, '');
+                    }
+                    var markup = utils.getVideoPosterMarkup(poster, dummyImg || '', lgVideoStyle, this.settings.strings['playVideo'], videoInfo);
+                    $currentSlide.prepend(markup);
+                }
+                else if (videoInfo) {
+                    var markup = "<div class=\"lg-video-cont \" style=\"" + lgVideoStyle + "\"></div>";
+                    $currentSlide.prepend(markup);
+                }
+                else {
+                    this.setImgMarkup(src, $currentSlide, index);
+                    if (srcset || sources) {
+                        var $img = $currentSlide.find('.lg-object');
+                        this.initPictureFill($img);
+                    }
+                }
+                if (poster || videoInfo) {
+                    this.LGel.trigger(lGEvents.hasVideo, {
+                        index: index,
+                        src: src,
+                        html5Video: _html5Video,
+                        hasPoster: !!poster,
+                    });
+                }
+                this.LGel.trigger(lGEvents.afterAppendSlide, { index: index });
+                if (this.lGalleryOn &&
+                    this.settings.appendSubHtmlTo === '.lg-item') {
+                    this.addHtml(index);
+                }
+            }
+            // For first time add some delay for displaying the start animation.
+            var _speed = 0;
+            // Do not change the delay value because it is required for zoom plugin.
+            // If gallery opened from direct url (hash) speed value should be 0
+            if (delay && !$LG(document.body).hasClass('lg-from-hash')) {
+                _speed = delay;
+            }
+            // Only for first slide and zoomFromOrigin is enabled
+            if (this.isFirstSlideWithZoomAnimation()) {
+                setTimeout(function () {
+                    $currentSlide
+                        .removeClass('lg-start-end-progress lg-start-progress')
+                        .removeAttr('style');
+                }, this.settings.startAnimationDuration + 100);
+                if (!$currentSlide.hasClass('lg-loaded')) {
+                    setTimeout(function () {
+                        if (_this.getSlideType(currentGalleryItem) === 'image') {
+                            var alt = currentGalleryItem.alt;
+                            var altAttr = alt ? 'alt="' + alt + '"' : '';
+                            $currentSlide
+                                .find('.lg-img-wrap')
+                                .append(utils.getImgMarkup(index, src, altAttr, srcset, sizes, currentGalleryItem.sources));
+                            if (srcset || sources) {
+                                var $img = $currentSlide.find('.lg-object');
+                                _this.initPictureFill($img);
+                            }
+                        }
+                        if (_this.getSlideType(currentGalleryItem) === 'image' ||
+                            (_this.getSlideType(currentGalleryItem) === 'video' &&
+                                poster)) {
+                            _this.onLgObjectLoad($currentSlide, index, delay, _speed, true, false);
+                            // load remaining slides once the slide is completely loaded
+                            _this.onSlideObjectLoad($currentSlide, !!(videoInfo && videoInfo.html5 && !poster), function () {
+                                _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);
+                            }, function () {
+                                _this.loadContentOnFirstSlideLoad(index, $currentSlide, _speed);
+                            });
+                        }
+                    }, this.settings.startAnimationDuration + 100);
+                }
+            }
+            // SLide content has been added to dom
+            $currentSlide.addClass('lg-loaded');
+            if (!this.isFirstSlideWithZoomAnimation() ||
+                (this.getSlideType(currentGalleryItem) === 'video' && !poster)) {
+                this.onLgObjectLoad($currentSlide, index, delay, _speed, isFirstSlide, !!(videoInfo && videoInfo.html5 && !poster));
+            }
+            // When gallery is opened once content is loaded (second time) need to add lg-complete class for css styling
+            if ((!this.zoomFromOrigin || !this.currentImageSize) &&
+                $currentSlide.hasClass('lg-complete_') &&
+                !this.lGalleryOn) {
+                setTimeout(function () {
+                    $currentSlide.addClass('lg-complete');
+                }, this.settings.backdropDuration);
+            }
+            // Content loaded
+            // Need to set lGalleryOn before calling preload function
+            this.lGalleryOn = true;
+            if (rec === true) {
+                if (!$currentSlide.hasClass('lg-complete_')) {
+                    $currentSlide
+                        .find('.lg-object')
+                        .first()
+                        .on('load.lg error.lg', function () {
+                        _this.preload(index);
+                    });
+                }
+                else {
+                    this.preload(index);
+                }
+            }
+        };
+        /**
+         * @desc Remove dummy image content and load next slides
+         * Called only for the first time if zoomFromOrigin animation is enabled
+         * @param index
+         * @param $currentSlide
+         * @param speed
+         */
+        LightGallery.prototype.loadContentOnFirstSlideLoad = function (index, $currentSlide, speed) {
+            var _this = this;
+            setTimeout(function () {
+                $currentSlide.find('.lg-dummy-img').remove();
+                $currentSlide.removeClass('lg-first-slide');
+                _this.outer.removeClass('lg-first-slide-loading');
+                _this.isDummyImageRemoved = true;
+                _this.preload(index);
+            }, speed + 300);
+        };
+        LightGallery.prototype.getItemsToBeInsertedToDom = function (index, prevIndex, numberOfItems) {
+            var _this = this;
+            if (numberOfItems === void 0) { numberOfItems = 0; }
+            var itemsToBeInsertedToDom = [];
+            // Minimum 2 items should be there
+            var possibleNumberOfItems = Math.max(numberOfItems, 3);
+            possibleNumberOfItems = Math.min(possibleNumberOfItems, this.galleryItems.length);
+            var prevIndexItem = "lg-item-" + this.lgId + "-" + prevIndex;
+            if (this.galleryItems.length <= 3) {
+                this.galleryItems.forEach(function (_element, index) {
+                    itemsToBeInsertedToDom.push("lg-item-" + _this.lgId + "-" + index);
+                });
+                return itemsToBeInsertedToDom;
+            }
+            if (index < (this.galleryItems.length - 1) / 2) {
+                for (var idx = index; idx > index - possibleNumberOfItems / 2 && idx >= 0; idx--) {
+                    itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + idx);
+                }
+                var numberOfExistingItems = itemsToBeInsertedToDom.length;
+                for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {
+                    itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (index + idx + 1));
+                }
+            }
+            else {
+                for (var idx = index; idx <= this.galleryItems.length - 1 &&
+                    idx < index + possibleNumberOfItems / 2; idx++) {
+                    itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + idx);
+                }
+                var numberOfExistingItems = itemsToBeInsertedToDom.length;
+                for (var idx = 0; idx < possibleNumberOfItems - numberOfExistingItems; idx++) {
+                    itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (index - idx - 1));
+                }
+            }
+            if (this.settings.loop) {
+                if (index === this.galleryItems.length - 1) {
+                    itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + 0);
+                }
+                else if (index === 0) {
+                    itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + (this.galleryItems.length - 1));
+                }
+            }
+            if (itemsToBeInsertedToDom.indexOf(prevIndexItem) === -1) {
+                itemsToBeInsertedToDom.push("lg-item-" + this.lgId + "-" + prevIndex);
+            }
+            return itemsToBeInsertedToDom;
+        };
+        LightGallery.prototype.organizeSlideItems = function (index, prevIndex) {
+            var _this = this;
+            var itemsToBeInsertedToDom = this.getItemsToBeInsertedToDom(index, prevIndex, this.settings.numberOfSlideItemsInDom);
+            itemsToBeInsertedToDom.forEach(function (item) {
+                if (_this.currentItemsInDom.indexOf(item) === -1) {
+                    _this.$inner.append("<div id=\"" + item + "\" class=\"lg-item\"></div>");
+                }
+            });
+            this.currentItemsInDom.forEach(function (item) {
+                if (itemsToBeInsertedToDom.indexOf(item) === -1) {
+                    $LG("#" + item).remove();
+                }
+            });
+            return itemsToBeInsertedToDom;
+        };
+        /**
+         * Get previous index of the slide
+         */
+        LightGallery.prototype.getPreviousSlideIndex = function () {
+            var prevIndex = 0;
+            try {
+                var currentItemId = this.outer
+                    .find('.lg-current')
+                    .first()
+                    .attr('id');
+                prevIndex = parseInt(currentItemId.split('-')[3]) || 0;
+            }
+            catch (error) {
+                prevIndex = 0;
+            }
+            return prevIndex;
+        };
+        LightGallery.prototype.setDownloadValue = function (index) {
+            if (this.settings.download) {
+                var currentGalleryItem = this.galleryItems[index];
+                var hideDownloadBtn = currentGalleryItem.downloadUrl === false ||
+                    currentGalleryItem.downloadUrl === 'false';
+                if (hideDownloadBtn) {
+                    this.outer.addClass('lg-hide-download');
+                }
+                else {
+                    var $download = this.getElementById('lg-download');
+                    this.outer.removeClass('lg-hide-download');
+                    $download.attr('href', currentGalleryItem.downloadUrl ||
+                        currentGalleryItem.src);
+                    if (currentGalleryItem.download) {
+                        $download.attr('download', currentGalleryItem.download);
+                    }
+                }
+            }
+        };
+        LightGallery.prototype.makeSlideAnimation = function (direction, currentSlideItem, previousSlideItem) {
+            var _this = this;
+            if (this.lGalleryOn) {
+                previousSlideItem.addClass('lg-slide-progress');
+            }
+            setTimeout(function () {
+                // remove all transitions
+                _this.outer.addClass('lg-no-trans');
+                _this.outer
+                    .find('.lg-item')
+                    .removeClass('lg-prev-slide lg-next-slide');
+                if (direction === 'prev') {
+                    //prevslide
+                    currentSlideItem.addClass('lg-prev-slide');
+                    previousSlideItem.addClass('lg-next-slide');
+                }
+                else {
+                    // next slide
+                    currentSlideItem.addClass('lg-next-slide');
+                    previousSlideItem.addClass('lg-prev-slide');
+                }
+                // give 50 ms for browser to add/remove class
+                setTimeout(function () {
+                    _this.outer.find('.lg-item').removeClass('lg-current');
+                    currentSlideItem.addClass('lg-current');
+                    // reset all transitions
+                    _this.outer.removeClass('lg-no-trans');
+                }, 50);
+            }, this.lGalleryOn ? this.settings.slideDelay : 0);
+        };
+        /**
+         * Goto a specific slide.
+         * @param {Number} index - index of the slide
+         * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag
+         * @param {Boolean} fromThumb - true if slide function called via thumbnail click
+         * @param {String} direction - Direction of the slide(next/prev)
+         * @category lGPublicMethods
+         * @example
+         *  const plugin = lightGallery();
+         *  // to go to 3rd slide
+         *  plugin.slide(2);
+         *
+         */
+        LightGallery.prototype.slide = function (index, fromTouch, fromThumb, direction) {
+            var _this = this;
+            var prevIndex = this.getPreviousSlideIndex();
+            this.currentItemsInDom = this.organizeSlideItems(index, prevIndex);
+            // Prevent multiple call, Required for hsh plugin
+            if (this.lGalleryOn && prevIndex === index) {
+                return;
+            }
+            var numberOfGalleryItems = this.galleryItems.length;
+            if (!this.lgBusy) {
+                if (this.settings.counter) {
+                    this.updateCurrentCounter(index);
+                }
+                var currentSlideItem = this.getSlideItem(index);
+                var previousSlideItem_1 = this.getSlideItem(prevIndex);
+                var currentGalleryItem = this.galleryItems[index];
+                var videoInfo = currentGalleryItem.__slideVideoInfo;
+                this.outer.attr('data-lg-slide-type', this.getSlideType(currentGalleryItem));
+                this.setDownloadValue(index);
+                if (videoInfo) {
+                    var _a = this.mediaContainerPosition, top_3 = _a.top, bottom = _a.bottom;
+                    var videoSize = utils.getSize(this.items[index], this.outer, top_3 + bottom, videoInfo && this.settings.videoMaxSize);
+                    this.resizeVideoSlide(index, videoSize);
+                }
+                this.LGel.trigger(lGEvents.beforeSlide, {
+                    prevIndex: prevIndex,
+                    index: index,
+                    fromTouch: !!fromTouch,
+                    fromThumb: !!fromThumb,
+                });
+                this.lgBusy = true;
+                clearTimeout(this.hideBarTimeout);
+                this.arrowDisable(index);
+                if (!direction) {
+                    if (index < prevIndex) {
+                        direction = 'prev';
+                    }
+                    else if (index > prevIndex) {
+                        direction = 'next';
+                    }
+                }
+                if (!fromTouch) {
+                    this.makeSlideAnimation(direction, currentSlideItem, previousSlideItem_1);
+                }
+                else {
+                    this.outer
+                        .find('.lg-item')
+                        .removeClass('lg-prev-slide lg-current lg-next-slide');
+                    var touchPrev = void 0;
+                    var touchNext = void 0;
+                    if (numberOfGalleryItems > 2) {
+                        touchPrev = index - 1;
+                        touchNext = index + 1;
+                        if (index === 0 && prevIndex === numberOfGalleryItems - 1) {
+                            // next slide
+                            touchNext = 0;
+                            touchPrev = numberOfGalleryItems - 1;
+                        }
+                        else if (index === numberOfGalleryItems - 1 &&
+                            prevIndex === 0) {
+                            // prev slide
+                            touchNext = 0;
+                            touchPrev = numberOfGalleryItems - 1;
+                        }
+                    }
+                    else {
+                        touchPrev = 0;
+                        touchNext = 1;
+                    }
+                    if (direction === 'prev') {
+                        this.getSlideItem(touchNext).addClass('lg-next-slide');
+                    }
+                    else {
+                        this.getSlideItem(touchPrev).addClass('lg-prev-slide');
+                    }
+                    currentSlideItem.addClass('lg-current');
+                }
+                // Do not put load content in set timeout as it needs to load immediately when the gallery is opened
+                if (!this.lGalleryOn) {
+                    this.loadContent(index, true);
+                }
+                else {
+                    setTimeout(function () {
+                        _this.loadContent(index, true);
+                        // Add title if this.settings.appendSubHtmlTo === lg-sub-html
+                        if (_this.settings.appendSubHtmlTo !== '.lg-item') {
+                            _this.addHtml(index);
+                        }
+                    }, this.settings.speed + 50 + (fromTouch ? 0 : this.settings.slideDelay));
+                }
+                setTimeout(function () {
+                    _this.lgBusy = false;
+                    previousSlideItem_1.removeClass('lg-slide-progress');
+                    _this.LGel.trigger(lGEvents.afterSlide, {
+                        prevIndex: prevIndex,
+                        index: index,
+                        fromTouch: fromTouch,
+                        fromThumb: fromThumb,
+                    });
+                }, (this.lGalleryOn ? this.settings.speed + 100 : 100) + (fromTouch ? 0 : this.settings.slideDelay));
+            }
+            this.index = index;
+        };
+        LightGallery.prototype.updateCurrentCounter = function (index) {
+            this.getElementById('lg-counter-current').html(index + 1 + '');
+        };
+        LightGallery.prototype.updateCounterTotal = function () {
+            this.getElementById('lg-counter-all').html(this.galleryItems.length + '');
+        };
+        LightGallery.prototype.getSlideType = function (item) {
+            if (item.__slideVideoInfo) {
+                return 'video';
+            }
+            else if (item.iframe) {
+                return 'iframe';
+            }
+            else {
+                return 'image';
+            }
+        };
+        LightGallery.prototype.touchMove = function (startCoords, endCoords, e) {
+            var distanceX = endCoords.pageX - startCoords.pageX;
+            var distanceY = endCoords.pageY - startCoords.pageY;
+            var allowSwipe = false;
+            if (this.swipeDirection) {
+                allowSwipe = true;
+            }
+            else {
+                if (Math.abs(distanceX) > 15) {
+                    this.swipeDirection = 'horizontal';
+                    allowSwipe = true;
+                }
+                else if (Math.abs(distanceY) > 15) {
+                    this.swipeDirection = 'vertical';
+                    allowSwipe = true;
+                }
+            }
+            if (!allowSwipe) {
+                return;
+            }
+            var $currentSlide = this.getSlideItem(this.index);
+            if (this.swipeDirection === 'horizontal') {
+                e === null || e === void 0 ? void 0 : e.preventDefault();
+                // reset opacity and transition duration
+                this.outer.addClass('lg-dragging');
+                // move current slide
+                this.setTranslate($currentSlide, distanceX, 0);
+                // move next and prev slide with current slide
+                var width = $currentSlide.get().offsetWidth;
+                var slideWidthAmount = (width * 15) / 100;
+                var gutter = slideWidthAmount - Math.abs((distanceX * 10) / 100);
+                this.setTranslate(this.outer.find('.lg-prev-slide').first(), -width + distanceX - gutter, 0);
+                this.setTranslate(this.outer.find('.lg-next-slide').first(), width + distanceX + gutter, 0);
+            }
+            else if (this.swipeDirection === 'vertical') {
+                if (this.settings.swipeToClose) {
+                    e === null || e === void 0 ? void 0 : e.preventDefault();
+                    this.$container.addClass('lg-dragging-vertical');
+                    var opacity = 1 - Math.abs(distanceY) / window.innerHeight;
+                    this.$backdrop.css('opacity', opacity);
+                    var scale = 1 - Math.abs(distanceY) / (window.innerWidth * 2);
+                    this.setTranslate($currentSlide, 0, distanceY, scale, scale);
+                    if (Math.abs(distanceY) > 100) {
+                        this.outer
+                            .addClass('lg-hide-items')
+                            .removeClass('lg-components-open');
+                    }
+                }
+            }
+        };
+        LightGallery.prototype.touchEnd = function (endCoords, startCoords, event) {
+            var _this = this;
+            var distance;
+            // keep slide animation for any mode while dragg/swipe
+            if (this.settings.mode !== 'lg-slide') {
+                this.outer.addClass('lg-slide');
+            }
+            // set transition duration
+            setTimeout(function () {
+                _this.$container.removeClass('lg-dragging-vertical');
+                _this.outer
+                    .removeClass('lg-dragging lg-hide-items')
+                    .addClass('lg-components-open');
+                var triggerClick = true;
+                if (_this.swipeDirection === 'horizontal') {
+                    distance = endCoords.pageX - startCoords.pageX;
+                    var distanceAbs = Math.abs(endCoords.pageX - startCoords.pageX);
+                    if (distance < 0 &&
+                        distanceAbs > _this.settings.swipeThreshold) {
+                        _this.goToNextSlide(true);
+                        triggerClick = false;
+                    }
+                    else if (distance > 0 &&
+                        distanceAbs > _this.settings.swipeThreshold) {
+                        _this.goToPrevSlide(true);
+                        triggerClick = false;
+                    }
+                }
+                else if (_this.swipeDirection === 'vertical') {
+                    distance = Math.abs(endCoords.pageY - startCoords.pageY);
+                    if (_this.settings.closable &&
+                        _this.settings.swipeToClose &&
+                        distance > 100) {
+                        _this.closeGallery();
+                        return;
+                    }
+                    else {
+                        _this.$backdrop.css('opacity', 1);
+                    }
+                }
+                _this.outer.find('.lg-item').removeAttr('style');
+                if (triggerClick &&
+                    Math.abs(endCoords.pageX - startCoords.pageX) < 5) {
+                    // Trigger click if distance is less than 5 pix
+                    var target = $LG(event.target);
+                    if (_this.isPosterElement(target)) {
+                        _this.LGel.trigger(lGEvents.posterClick);
+                    }
+                }
+                _this.swipeDirection = undefined;
+            });
+            // remove slide class once drag/swipe is completed if mode is not slide
+            setTimeout(function () {
+                if (!_this.outer.hasClass('lg-dragging') &&
+                    _this.settings.mode !== 'lg-slide') {
+                    _this.outer.removeClass('lg-slide');
+                }
+            }, this.settings.speed + 100);
+        };
+        LightGallery.prototype.enableSwipe = function () {
+            var _this = this;
+            var startCoords = {};
+            var endCoords = {};
+            var isMoved = false;
+            var isSwiping = false;
+            if (this.settings.enableSwipe) {
+                this.$inner.on('touchstart.lg', function (e) {
+                    _this.dragOrSwipeEnabled = true;
+                    var $item = _this.getSlideItem(_this.index);
+                    if (($LG(e.target).hasClass('lg-item') ||
+                        $item.get().contains(e.target)) &&
+                        !_this.outer.hasClass('lg-zoomed') &&
+                        !_this.lgBusy &&
+                        e.touches.length === 1) {
+                        isSwiping = true;
+                        _this.touchAction = 'swipe';
+                        _this.manageSwipeClass();
+                        startCoords = {
+                            pageX: e.touches[0].pageX,
+                            pageY: e.touches[0].pageY,
+                        };
+                    }
+                });
+                this.$inner.on('touchmove.lg', function (e) {
+                    if (isSwiping &&
+                        _this.touchAction === 'swipe' &&
+                        e.touches.length === 1) {
+                        endCoords = {
+                            pageX: e.touches[0].pageX,
+                            pageY: e.touches[0].pageY,
+                        };
+                        _this.touchMove(startCoords, endCoords, e);
+                        isMoved = true;
+                    }
+                });
+                this.$inner.on('touchend.lg', function (event) {
+                    if (_this.touchAction === 'swipe') {
+                        if (isMoved) {
+                            isMoved = false;
+                            _this.touchEnd(endCoords, startCoords, event);
+                        }
+                        else if (isSwiping) {
+                            var target = $LG(event.target);
+                            if (_this.isPosterElement(target)) {
+                                _this.LGel.trigger(lGEvents.posterClick);
+                            }
+                        }
+                        _this.touchAction = undefined;
+                        isSwiping = false;
+                    }
+                });
+            }
+        };
+        LightGallery.prototype.enableDrag = function () {
+            var _this = this;
+            var startCoords = {};
+            var endCoords = {};
+            var isDraging = false;
+            var isMoved = false;
+            if (this.settings.enableDrag) {
+                this.outer.on('mousedown.lg', function (e) {
+                    _this.dragOrSwipeEnabled = true;
+                    var $item = _this.getSlideItem(_this.index);
+                    if ($LG(e.target).hasClass('lg-item') ||
+                        $item.get().contains(e.target)) {
+                        if (!_this.outer.hasClass('lg-zoomed') && !_this.lgBusy) {
+                            e.preventDefault();
+                            if (!_this.lgBusy) {
+                                _this.manageSwipeClass();
+                                startCoords = {
+                                    pageX: e.pageX,
+                                    pageY: e.pageY,
+                                };
+                                isDraging = true;
+                                // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
+                                _this.outer.get().scrollLeft += 1;
+                                _this.outer.get().scrollLeft -= 1;
+                                // *
+                                _this.outer
+                                    .removeClass('lg-grab')
+                                    .addClass('lg-grabbing');
+                                _this.LGel.trigger(lGEvents.dragStart);
+                            }
+                        }
+                    }
+                });
+                $LG(window).on("mousemove.lg.global" + this.lgId, function (e) {
+                    if (isDraging && _this.lgOpened) {
+                        isMoved = true;
+                        endCoords = {
+                            pageX: e.pageX,
+                            pageY: e.pageY,
+                        };
+                        _this.touchMove(startCoords, endCoords);
+                        _this.LGel.trigger(lGEvents.dragMove);
+                    }
+                });
+                $LG(window).on("mouseup.lg.global" + this.lgId, function (event) {
+                    if (!_this.lgOpened) {
+                        return;
+                    }
+                    var target = $LG(event.target);
+                    if (isMoved) {
+                        isMoved = false;
+                        _this.touchEnd(endCoords, startCoords, event);
+                        _this.LGel.trigger(lGEvents.dragEnd);
+                    }
+                    else if (_this.isPosterElement(target)) {
+                        _this.LGel.trigger(lGEvents.posterClick);
+                    }
+                    // Prevent execution on click
+                    if (isDraging) {
+                        isDraging = false;
+                        _this.outer.removeClass('lg-grabbing').addClass('lg-grab');
+                    }
+                });
+            }
+        };
+        LightGallery.prototype.triggerPosterClick = function () {
+            var _this = this;
+            this.$inner.on('click.lg', function (event) {
+                if (!_this.dragOrSwipeEnabled &&
+                    _this.isPosterElement($LG(event.target))) {
+                    _this.LGel.trigger(lGEvents.posterClick);
+                }
+            });
+        };
+        LightGallery.prototype.manageSwipeClass = function () {
+            var _touchNext = this.index + 1;
+            var _touchPrev = this.index - 1;
+            if (this.settings.loop && this.galleryItems.length > 2) {
+                if (this.index === 0) {
+                    _touchPrev = this.galleryItems.length - 1;
+                }
+                else if (this.index === this.galleryItems.length - 1) {
+                    _touchNext = 0;
+                }
+            }
+            this.outer.find('.lg-item').removeClass('lg-next-slide lg-prev-slide');
+            if (_touchPrev > -1) {
+                this.getSlideItem(_touchPrev).addClass('lg-prev-slide');
+            }
+            this.getSlideItem(_touchNext).addClass('lg-next-slide');
+        };
+        /**
+         * Go to next slide
+         * @param {Boolean} fromTouch - true if slide function called via touch event
+         * @category lGPublicMethods
+         * @example
+         *  const plugin = lightGallery();
+         *  plugin.goToNextSlide();
+         * @see <a href="/demos/methods/">Demo</a>
+         */
+        LightGallery.prototype.goToNextSlide = function (fromTouch) {
+            var _this = this;
+            var _loop = this.settings.loop;
+            if (fromTouch && this.galleryItems.length < 3) {
+                _loop = false;
+            }
+            if (!this.lgBusy) {
+                if (this.index + 1 < this.galleryItems.length) {
+                    this.index++;
+                    this.LGel.trigger(lGEvents.beforeNextSlide, {
+                        index: this.index,
+                    });
+                    this.slide(this.index, !!fromTouch, false, 'next');
+                }
+                else {
+                    if (_loop) {
+                        this.index = 0;
+                        this.LGel.trigger(lGEvents.beforeNextSlide, {
+                            index: this.index,
+                        });
+                        this.slide(this.index, !!fromTouch, false, 'next');
+                    }
+                    else if (this.settings.slideEndAnimation && !fromTouch) {
+                        this.outer.addClass('lg-right-end');
+                        setTimeout(function () {
+                            _this.outer.removeClass('lg-right-end');
+                        }, 400);
+                    }
+                }
+            }
+        };
+        /**
+         * Go to previous slides
+         * @param {Boolean} fromTouch - true if slide function called via touch event
+         * @category lGPublicMethods
+         * @example
+         *  const plugin = lightGallery({});
+         *  plugin.goToPrevSlide();
+         * @see <a href="/demos/methods/">Demo</a>
+         *
+         */
+        LightGallery.prototype.goToPrevSlide = function (fromTouch) {
+            var _this = this;
+            var _loop = this.settings.loop;
+            if (fromTouch && this.galleryItems.length < 3) {
+                _loop = false;
+            }
+            if (!this.lgBusy) {
+                if (this.index > 0) {
+                    this.index--;
+                    this.LGel.trigger(lGEvents.beforePrevSlide, {
+                        index: this.index,
+                        fromTouch: fromTouch,
+                    });
+                    this.slide(this.index, !!fromTouch, false, 'prev');
+                }
+                else {
+                    if (_loop) {
+                        this.index = this.galleryItems.length - 1;
+                        this.LGel.trigger(lGEvents.beforePrevSlide, {
+                            index: this.index,
+                            fromTouch: fromTouch,
+                        });
+                        this.slide(this.index, !!fromTouch, false, 'prev');
+                    }
+                    else if (this.settings.slideEndAnimation && !fromTouch) {
+                        this.outer.addClass('lg-left-end');
+                        setTimeout(function () {
+                            _this.outer.removeClass('lg-left-end');
+                        }, 400);
+                    }
+                }
+            }
+        };
+        LightGallery.prototype.keyPress = function () {
+            var _this = this;
+            $LG(window).on("keydown.lg.global" + this.lgId, function (e) {
+                if (_this.lgOpened &&
+                    _this.settings.escKey === true &&
+                    e.keyCode === 27) {
+                    e.preventDefault();
+                    if (_this.settings.allowMediaOverlap &&
+                        _this.outer.hasClass('lg-can-toggle') &&
+                        _this.outer.hasClass('lg-components-open')) {
+                        _this.outer.removeClass('lg-components-open');
+                    }
+                    else {
+                        _this.closeGallery();
+                    }
+                }
+                if (_this.lgOpened && _this.galleryItems.length > 1) {
+                    if (e.keyCode === 37) {
+                        e.preventDefault();
+                        _this.goToPrevSlide();
+                    }
+                    if (e.keyCode === 39) {
+                        e.preventDefault();
+                        _this.goToNextSlide();
+                    }
+                }
+            });
+        };
+        LightGallery.prototype.arrow = function () {
+            var _this = this;
+            this.getElementById('lg-prev').on('click.lg', function () {
+                _this.goToPrevSlide();
+            });
+            this.getElementById('lg-next').on('click.lg', function () {
+                _this.goToNextSlide();
+            });
+        };
+        LightGallery.prototype.arrowDisable = function (index) {
+            // Disable arrows if settings.hideControlOnEnd is true
+            if (!this.settings.loop && this.settings.hideControlOnEnd) {
+                var $prev = this.getElementById('lg-prev');
+                var $next = this.getElementById('lg-next');
+                if (index + 1 === this.galleryItems.length) {
+                    $next.attr('disabled', 'disabled').addClass('disabled');
+                }
+                else {
+                    $next.removeAttr('disabled').removeClass('disabled');
+                }
+                if (index === 0) {
+                    $prev.attr('disabled', 'disabled').addClass('disabled');
+                }
+                else {
+                    $prev.removeAttr('disabled').removeClass('disabled');
+                }
+            }
+        };
+        LightGallery.prototype.setTranslate = function ($el, xValue, yValue, scaleX, scaleY) {
+            if (scaleX === void 0) { scaleX = 1; }
+            if (scaleY === void 0) { scaleY = 1; }
+            $el.css('transform', 'translate3d(' +
+                xValue +
+                'px, ' +
+                yValue +
+                'px, 0px) scale3d(' +
+                scaleX +
+                ', ' +
+                scaleY +
+                ', 1)');
+        };
+        LightGallery.prototype.mousewheel = function () {
+            var _this = this;
+            var lastCall = 0;
+            this.outer.on('wheel.lg', function (e) {
+                if (!e.deltaY || _this.galleryItems.length < 2) {
+                    return;
+                }
+                e.preventDefault();
+                var now = new Date().getTime();
+                if (now - lastCall < 1000) {
+                    return;
+                }
+                lastCall = now;
+                if (e.deltaY > 0) {
+                    _this.goToNextSlide();
+                }
+                else if (e.deltaY < 0) {
+                    _this.goToPrevSlide();
+                }
+            });
+        };
+        LightGallery.prototype.isSlideElement = function (target) {
+            return (target.hasClass('lg-outer') ||
+                target.hasClass('lg-item') ||
+                target.hasClass('lg-img-wrap'));
+        };
+        LightGallery.prototype.isPosterElement = function (target) {
+            var playButton = this.getSlideItem(this.index)
+                .find('.lg-video-play-button')
+                .get();
+            return (target.hasClass('lg-video-poster') ||
+                target.hasClass('lg-video-play-button') ||
+                (playButton && playButton.contains(target.get())));
+        };
+        /**
+         * Maximize minimize inline gallery.
+         * @category lGPublicMethods
+         */
+        LightGallery.prototype.toggleMaximize = function () {
+            var _this = this;
+            this.getElementById('lg-maximize').on('click.lg', function () {
+                _this.$container.toggleClass('lg-inline');
+                _this.refreshOnResize();
+            });
+        };
+        LightGallery.prototype.invalidateItems = function () {
+            for (var index = 0; index < this.items.length; index++) {
+                var element = this.items[index];
+                var $element = $LG(element);
+                $element.off("click.lgcustom-item-" + $element.attr('data-lg-id'));
+            }
+        };
+        LightGallery.prototype.trapFocus = function () {
+            var _this = this;
+            this.$container.get().focus({
+                preventScroll: true,
+            });
+            $LG(window).on("keydown.lg.global" + this.lgId, function (e) {
+                if (!_this.lgOpened) {
+                    return;
+                }
+                var isTabPressed = e.key === 'Tab' || e.keyCode === 9;
+                if (!isTabPressed) {
+                    return;
+                }
+                var focusableEls = utils.getFocusableElements(_this.$container.get());
+                var firstFocusableEl = focusableEls[0];
+                var lastFocusableEl = focusableEls[focusableEls.length - 1];
+                if (e.shiftKey) {
+                    if (document.activeElement === firstFocusableEl) {
+                        lastFocusableEl.focus();
+                        e.preventDefault();
+                    }
+                }
+                else {
+                    if (document.activeElement === lastFocusableEl) {
+                        firstFocusableEl.focus();
+                        e.preventDefault();
+                    }
+                }
+            });
+        };
+        LightGallery.prototype.manageCloseGallery = function () {
+            var _this = this;
+            if (!this.settings.closable)
+                return;
+            var mousedown = false;
+            this.getElementById('lg-close').on('click.lg', function () {
+                _this.closeGallery();
+            });
+            if (this.settings.closeOnTap) {
+                // If you drag the slide and release outside gallery gets close on chrome
+                // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer
+                this.outer.on('mousedown.lg', function (e) {
+                    var target = $LG(e.target);
+                    if (_this.isSlideElement(target)) {
+                        mousedown = true;
+                    }
+                    else {
+                        mousedown = false;
+                    }
+                });
+                this.outer.on('mousemove.lg', function () {
+                    mousedown = false;
+                });
+                this.outer.on('mouseup.lg', function (e) {
+                    var target = $LG(e.target);
+                    if (_this.isSlideElement(target) && mousedown) {
+                        if (!_this.outer.hasClass('lg-dragging')) {
+                            _this.closeGallery();
+                        }
+                    }
+                });
+            }
+        };
+        /**
+         * Close lightGallery if it is opened.
+         *
+         * @description If closable is false in the settings, you need to pass true via closeGallery method to force close gallery
+         * @return returns the estimated time to close gallery completely including the close animation duration
+         * @category lGPublicMethods
+         * @example
+         *  const plugin = lightGallery();
+         *  plugin.closeGallery();
+         *
+         */
+        LightGallery.prototype.closeGallery = function (force) {
+            var _this = this;
+            if (!this.lgOpened || (!this.settings.closable && !force)) {
+                return 0;
+            }
+            this.LGel.trigger(lGEvents.beforeClose);
+            if (this.settings.resetScrollPosition && !this.settings.hideScrollbar) {
+                $LG(window).scrollTop(this.prevScrollTop);
+            }
+            var currentItem = this.items[this.index];
+            var transform;
+            if (this.zoomFromOrigin && currentItem) {
+                var _a = this.mediaContainerPosition, top_4 = _a.top, bottom = _a.bottom;
+                var _b = this.galleryItems[this.index], __slideVideoInfo = _b.__slideVideoInfo, poster = _b.poster;
+                var imageSize = utils.getSize(currentItem, this.outer, top_4 + bottom, __slideVideoInfo && poster && this.settings.videoMaxSize);
+                transform = utils.getTransform(currentItem, this.outer, top_4, bottom, imageSize);
+            }
+            if (this.zoomFromOrigin && transform) {
+                this.outer.addClass('lg-closing lg-zoom-from-image');
+                this.getSlideItem(this.index)
+                    .addClass('lg-start-end-progress')
+                    .css('transition-duration', this.settings.startAnimationDuration + 'ms')
+                    .css('transform', transform);
+            }
+            else {
+                this.outer.addClass('lg-hide-items');
+                // lg-zoom-from-image is used for setting the opacity to 1 if zoomFromOrigin is true
+                // If the closing item doesn't have the lg-size attribute, remove this class to avoid the closing css conflicts
+                this.outer.removeClass('lg-zoom-from-image');
+            }
+            // Unbind all events added by lightGallery
+            // @todo
+            //this.$el.off('.lg.tm');
+            this.destroyModules();
+            this.lGalleryOn = false;
+            this.isDummyImageRemoved = false;
+            this.zoomFromOrigin = this.settings.zoomFromOrigin;
+            clearTimeout(this.hideBarTimeout);
+            this.hideBarTimeout = false;
+            $LG('html').removeClass('lg-on');
+            this.outer.removeClass('lg-visible lg-components-open');
+            // Resetting opacity to 0 isd required as  vertical swipe to close function adds inline opacity.
+            this.$backdrop.removeClass('in').css('opacity', 0);
+            var removeTimeout = this.zoomFromOrigin && transform
+                ? Math.max(this.settings.startAnimationDuration, this.settings.backdropDuration)
+                : this.settings.backdropDuration;
+            this.$container.removeClass('lg-show-in');
+            // Once the closign animation is completed and gallery is invisible
+            setTimeout(function () {
+                if (_this.zoomFromOrigin && transform) {
+                    _this.outer.removeClass('lg-zoom-from-image');
+                }
+                _this.$container.removeClass('lg-show');
+                // Reset scrollbar
+                _this.resetScrollBar();
+                // Need to remove inline opacity as it is used in the stylesheet as well
+                _this.$backdrop
+                    .removeAttr('style')
+                    .css('transition-duration', _this.settings.backdropDuration + 'ms');
+                _this.outer.removeClass("lg-closing " + _this.settings.startClass);
+                _this.getSlideItem(_this.index).removeClass('lg-start-end-progress');
+                _this.$inner.empty();
+                if (_this.lgOpened) {
+                    _this.LGel.trigger(lGEvents.afterClose, {
+                        instance: _this,
+                    });
+                }
+                if (_this.$container.get()) {
+                    _this.$container.get().blur();
+                }
+                _this.lgOpened = false;
+            }, removeTimeout + 100);
+            return removeTimeout + 100;
+        };
+        LightGallery.prototype.initModules = function () {
+            this.plugins.forEach(function (module) {
+                try {
+                    module.init();
+                }
+                catch (err) {
+                    console.warn("lightGallery:- make sure lightGallery module is properly initiated");
+                }
+            });
+        };
+        LightGallery.prototype.destroyModules = function (destroy) {
+            this.plugins.forEach(function (module) {
+                try {
+                    if (destroy) {
+                        module.destroy();
+                    }
+                    else {
+                        module.closeGallery && module.closeGallery();
+                    }
+                }
+                catch (err) {
+                    console.warn("lightGallery:- make sure lightGallery module is properly destroyed");
+                }
+            });
+        };
+        /**
+         * Refresh lightGallery with new set of children.
+         *
+         * @description This is useful to update the gallery when the child elements are changed without calling destroy method.
+         *
+         * If you are using dynamic mode, you can pass the modified array of dynamicEl as the first parameter to refresh the dynamic gallery
+         * @see <a href="/demos/dynamic-mode/">Demo</a>
+         * @category lGPublicMethods
+         * @example
+         *  const plugin = lightGallery();
+         *  // Delete or add children, then call
+         *  plugin.refresh();
+         *
+         */
+        LightGallery.prototype.refresh = function (galleryItems) {
+            if (!this.settings.dynamic) {
+                this.invalidateItems();
+            }
+            if (galleryItems) {
+                this.galleryItems = galleryItems;
+            }
+            else {
+                this.galleryItems = this.getItems();
+            }
+            this.updateControls();
+            this.openGalleryOnItemClick();
+            this.LGel.trigger(lGEvents.updateSlides);
+        };
+        LightGallery.prototype.updateControls = function () {
+            this.addSlideVideoInfo(this.galleryItems);
+            this.updateCounterTotal();
+            this.manageSingleSlideClassName();
+        };
+        LightGallery.prototype.destroyGallery = function () {
+            this.destroyModules(true);
+            if (!this.settings.dynamic) {
+                this.invalidateItems();
+            }
+            $LG(window).off(".lg.global" + this.lgId);
+            this.LGel.off('.lg');
+            this.$container.remove();
+        };
+        /**
+         * Destroy lightGallery.
+         * Destroy lightGallery and its plugin instances completely
+         *
+         * @description This method also calls CloseGallery function internally. Returns the time takes to completely close and destroy the instance.
+         * In case if you want to re-initialize lightGallery right after destroying it, initialize it only once the destroy process is completed.
+         * You can use refresh method most of the times.
+         * @category lGPublicMethods
+         * @example
+         *  const plugin = lightGallery();
+         *  plugin.destroy();
+         *
+         */
+        LightGallery.prototype.destroy = function () {
+            var closeTimeout = this.closeGallery(true);
+            if (closeTimeout) {
+                setTimeout(this.destroyGallery.bind(this), closeTimeout);
+            }
+            else {
+                this.destroyGallery();
+            }
+            return closeTimeout;
+        };
+        return LightGallery;
+    }());
+
+    function lightGallery(el, options) {
+        return new LightGallery(el, options);
+    }
+
+    return lightGallery;
+
+})));
+//# sourceMappingURL=lightgallery.umd.js.map
diff --git a/resources/lightgallery/modules/lg-autoplay.js b/resources/lightgallery/modules/lg-autoplay.js
deleted file mode 100644
index d1e4683..0000000
--- a/resources/lightgallery/modules/lg-autoplay.js
+++ /dev/null
@@ -1,206 +0,0 @@
-/*! lg-autoplay - v1.0.4 - 2017-03-28
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        autoplay: false,
-        pause: 5000,
-        progressBar: true,
-        fourceAutoplay: false,
-        autoplayControls: true,
-        appendAutoplayControlsTo: '.lg-toolbar'
-    };
-
-    /**
-     * Creates the autoplay plugin.
-     * @param {object} element - lightGallery element
-     */
-    var Autoplay = function(element) {
-
-        this.core = $(element).data('lightGallery');
-
-        this.$el = $(element);
-
-        // Execute only if items are above 1
-        if (this.core.$items.length < 2) {
-            return false;
-        }
-
-        this.core.s = $.extend({}, defaults, this.core.s);
-        this.interval = false;
-
-        // Identify if slide happened from autoplay
-        this.fromAuto = true;
-
-        // Identify if autoplay canceled from touch/drag
-        this.canceledOnTouch = false;
-
-        // save fourceautoplay value
-        this.fourceAutoplayTemp = this.core.s.fourceAutoplay;
-
-        // do not allow progress bar if browser does not support css3 transitions
-        if (!this.core.doCss()) {
-            this.core.s.progressBar = false;
-        }
-
-        this.init();
-
-        return this;
-    };
-
-    Autoplay.prototype.init = function() {
-        var _this = this;
-
-        // append autoplay controls
-        if (_this.core.s.autoplayControls) {
-            _this.controls();
-        }
-
-        // Create progress bar
-        if (_this.core.s.progressBar) {
-            _this.core.$outer.find('.lg').append('<div class="lg-progress-bar"><div class="lg-progress"></div></div>');
-        }
-
-        // set progress
-        _this.progress();
-
-        // Start autoplay
-        if (_this.core.s.autoplay) {
-            _this.$el.one('onSlideItemLoad.lg.tm', function() {
-                _this.startlAuto();
-            });
-        }
-
-        // cancel interval on touchstart and dragstart
-        _this.$el.on('onDragstart.lg.tm touchstart.lg.tm', function() {
-            if (_this.interval) {
-                _this.cancelAuto();
-                _this.canceledOnTouch = true;
-            }
-        });
-
-        // restore autoplay if autoplay canceled from touchstart / dragstart
-        _this.$el.on('onDragend.lg.tm touchend.lg.tm onSlideClick.lg.tm', function() {
-            if (!_this.interval && _this.canceledOnTouch) {
-                _this.startlAuto();
-                _this.canceledOnTouch = false;
-            }
-        });
-
-    };
-
-    Autoplay.prototype.progress = function() {
-
-        var _this = this;
-        var _$progressBar;
-        var _$progress;
-
-        _this.$el.on('onBeforeSlide.lg.tm', function() {
-
-            // start progress bar animation
-            if (_this.core.s.progressBar && _this.fromAuto) {
-                _$progressBar = _this.core.$outer.find('.lg-progress-bar');
-                _$progress = _this.core.$outer.find('.lg-progress');
-                if (_this.interval) {
-                    _$progress.removeAttr('style');
-                    _$progressBar.removeClass('lg-start');
-                    setTimeout(function() {
-                        _$progress.css('transition', 'width ' + (_this.core.s.speed + _this.core.s.pause) + 'ms ease 0s');
-                        _$progressBar.addClass('lg-start');
-                    }, 20);
-                }
-            }
-
-            // Remove setinterval if slide is triggered manually and fourceautoplay is false
-            if (!_this.fromAuto && !_this.core.s.fourceAutoplay) {
-                _this.cancelAuto();
-            }
-
-            _this.fromAuto = false;
-
-        });
-    };
-
-    // Manage autoplay via play/stop buttons
-    Autoplay.prototype.controls = function() {
-        var _this = this;
-        var _html = '<span class="lg-autoplay-button lg-icon"></span>';
-
-        // Append autoplay controls
-        $(this.core.s.appendAutoplayControlsTo).append(_html);
-
-        _this.core.$outer.find('.lg-autoplay-button').on('click.lg', function() {
-            if ($(_this.core.$outer).hasClass('lg-show-autoplay')) {
-                _this.cancelAuto();
-                _this.core.s.fourceAutoplay = false;
-            } else {
-                if (!_this.interval) {
-                    _this.startlAuto();
-                    _this.core.s.fourceAutoplay = _this.fourceAutoplayTemp;
-                }
-            }
-        });
-    };
-
-    // Autostart gallery
-    Autoplay.prototype.startlAuto = function() {
-        var _this = this;
-
-        _this.core.$outer.find('.lg-progress').css('transition', 'width ' + (_this.core.s.speed + _this.core.s.pause) + 'ms ease 0s');
-        _this.core.$outer.addClass('lg-show-autoplay');
-        _this.core.$outer.find('.lg-progress-bar').addClass('lg-start');
-
-        _this.interval = setInterval(function() {
-            if (_this.core.index + 1 < _this.core.$items.length) {
-                _this.core.index++;
-            } else {
-                _this.core.index = 0;
-            }
-
-            _this.fromAuto = true;
-            _this.core.slide(_this.core.index, false, false, 'next');
-        }, _this.core.s.speed + _this.core.s.pause);
-    };
-
-    // cancel Autostart
-    Autoplay.prototype.cancelAuto = function() {
-        clearInterval(this.interval);
-        this.interval = false;
-        this.core.$outer.find('.lg-progress').removeAttr('style');
-        this.core.$outer.removeClass('lg-show-autoplay');
-        this.core.$outer.find('.lg-progress-bar').removeClass('lg-start');
-    };
-
-    Autoplay.prototype.destroy = function() {
-
-        this.cancelAuto();
-        this.core.$outer.find('.lg-progress-bar').remove();
-    };
-
-    $.fn.lightGallery.modules.autoplay = Autoplay;
-
-})();
-
-
-}));
diff --git a/resources/lightgallery/modules/lg-autoplay.min.js b/resources/lightgallery/modules/lg-autoplay.min.js
deleted file mode 100644
index d8637d1..0000000
--- a/resources/lightgallery/modules/lg-autoplay.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! lg-autoplay - v1.0.4 - 2017-03-28
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(){"use strict";var b={autoplay:!1,pause:5e3,progressBar:!0,fourceAutoplay:!1,autoplayControls:!0,appendAutoplayControlsTo:".lg-toolbar"},c=function(c){return this.core=a(c).data("lightGallery"),this.$el=a(c),!(this.core.$items.length<2)&&(this.core.s=a.extend({},b,this.core.s),this.interval=!1,this.fromAuto=!0,this.canceledOnTouch=!1,this.fourceAutoplayTemp=this.core.s.fourceAutoplay,this.core.doCss()||(this.core.s.progressBar=!1),this.init(),this)};c.prototype.init=function(){var a=this;a.core.s.autoplayControls&&a.controls(),a.core.s.progressBar&&a.core.$outer.find(".lg").append('<div class="lg-progress-bar"><div class="lg-progress"></div></div>'),a.progress(),a.core.s.autoplay&&a.$el.one("onSlideItemLoad.lg.tm",function(){a.startlAuto()}),a.$el.on("onDragstart.lg.tm touchstart.lg.tm",function(){a.interval&&(a.cancelAuto(),a.canceledOnTouch=!0)}),a.$el.on("onDragend.lg.tm touchend.lg.tm onSlideClick.lg.tm",function(){!a.interval&&a.canceledOnTouch&&(a.startlAuto(),a.canceledOnTouch=!1)})},c.prototype.progress=function(){var a,b,c=this;c.$el.on("onBeforeSlide.lg.tm",function(){c.core.s.progressBar&&c.fromAuto&&(a=c.core.$outer.find(".lg-progress-bar"),b=c.core.$outer.find(".lg-progress"),c.interval&&(b.removeAttr("style"),a.removeClass("lg-start"),setTimeout(function(){b.css("transition","width "+(c.core.s.speed+c.core.s.pause)+"ms ease 0s"),a.addClass("lg-start")},20))),c.fromAuto||c.core.s.fourceAutoplay||c.cancelAuto(),c.fromAuto=!1})},c.prototype.controls=function(){var b=this,c='<span class="lg-autoplay-button lg-icon"></span>';a(this.core.s.appendAutoplayControlsTo).append(c),b.core.$outer.find(".lg-autoplay-button").on("click.lg",function(){a(b.core.$outer).hasClass("lg-show-autoplay")?(b.cancelAuto(),b.core.s.fourceAutoplay=!1):b.interval||(b.startlAuto(),b.core.s.fourceAutoplay=b.fourceAutoplayTemp)})},c.prototype.startlAuto=function(){var a=this;a.core.$outer.find(".lg-progress").css("transition","width "+(a.core.s.speed+a.core.s.pause)+"ms ease 0s"),a.core.$outer.addClass("lg-show-autoplay"),a.core.$outer.find(".lg-progress-bar").addClass("lg-start"),a.interval=setInterval(function(){a.core.index+1<a.core.$items.length?a.core.index++:a.core.index=0,a.fromAuto=!0,a.core.slide(a.core.index,!1,!1,"next")},a.core.s.speed+a.core.s.pause)},c.prototype.cancelAuto=function(){clearInterval(this.interval),this.interval=!1,this.core.$outer.find(".lg-progress").removeAttr("style"),this.core.$outer.removeClass("lg-show-autoplay"),this.core.$outer.find(".lg-progress-bar").removeClass("lg-start")},c.prototype.destroy=function(){this.cancelAuto(),this.core.$outer.find(".lg-progress-bar").remove()},a.fn.lightGallery.modules.autoplay=c}()});
\ No newline at end of file
diff --git a/resources/lightgallery/modules/lg-cart.js b/resources/lightgallery/modules/lg-cart.js
deleted file mode 100644
index b8788e3..0000000
--- a/resources/lightgallery/modules/lg-cart.js
+++ /dev/null
@@ -1,174 +0,0 @@
-/*! lg-cart - v0.8 - 2018-03-31
-* Copyright (c) 2018 Martin Wandelt */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        cart: true
-    };
-
-    var Cart = function( element ){
-
-        // get lightGallery core plugin data
-        this.core = $(element).data('lightGallery');
-        this.$el = $(element);
-
-        // extend module default settings with lightGallery core settings
-        this.core.s = $.extend({}, defaults, this.core.s);
-
-        this.init();
-
-        return this;
-    };
-
-    Cart.prototype.init = function() {
-
-      if ( ! this.core.s.cart )
-      {
-          return;
-      }
-
-      var sheet = document.createElement('style')
-      sheet.innerHTML = 
-         '.lg-cart-box { padding:20px; z-index:9999; position:absolute; cursor:pointer; } ' +
-   		'.lg-cart-box i { color:white; opacity:0.9; text-shadow: 1px 1px 2px black, 0 0 1em grey, 0 0 0.2em grey; font-size: 1.75rem } ' +
-   		'.in-cart.lg-cart-box i { color:orange; } ' +
-   		'.lg-cart-box:hover i { opacity:1; text-shadow: 1px 1px 2px black, 0 0 1em black, 0 0 0.2em black; } ' +
-   		'.lg-cart-dialog { position:fixed; top:0; right:0; width:300px; height:100%; background:white; z-index:99999; }';
-      document.head.appendChild( sheet );
-
-      var _this = this;
-      var html = '<div class="lg-cart-box position-absolute p-4"><i class="fas fa-shopping-cart"></i></div>';
-      this.core.$outer.find('.lg').append( html );
-      this.cartbox = this.core.$outer.find('.lg-cart-box');
-      window.setTimeout( function(){ _this.adjustBoxPosition(); }, 1000 );
-      
-      $(window).on( 'resize', function(){
-         _this.adjustBoxPosition();
-      });
-
-      this.core.$el.on( 'onAfterSlide.lg', function( event, prevIndex, index ){
-         _this.core.currentIndex = index;
-         _this.updateBadge();
-      });
-
-      this.core.$el.on( 'onBeforeSlide.lg', function( event, prevIndex, index ){
-         _this.cartbox.hide().removeClass('in-cart');
-      });
-
-      this.core.$el.on( 'onSlideItemLoad.lg', function( event, prevIndex, index ){
-         _this.updateBadge();
-      });
-
-      this.core.$el.on( 'onSlideClick.lg', function( event, prevIndex, index ){
-         _this.updateBadge();
-      });
-
-      this.cartbox.on( 'click', function(){
-         var elm = $( '#' + _this.getAttribute('elementId') );
-         var url = elm.data('productlist');
-   		
-   		if ( url )
-   		{
-   			$('#add-to-cart').load( url, function(){
-               if ( $(this).find('form[name=anmeldung]').length ){
-                  window.location.reload();
-                  return;
-               }
-   				$('#add-to-cart').modal('show');
-   			});
-   		}
-      });
-   };
-   
-   Cart.prototype.updateBadge = function(){
-      var elm = $( '#' + this.getAttribute('elementId') );
-
-      if ( elm.hasClass('in-cart') ){
-         this.cartbox.addClass('in-cart');
-      }
-      
-      this.adjustBoxPosition();
-      this.cartbox.show()
-   }
-
-   Cart.prototype.adjustBoxPosition = function(){
-      var pos = this.core.$outer.find('.lg-current .lg-image').position();
-      var toolbarHeight = this.core.$outer.find('.lg-toolbar').height();
-      pos ? this.cartbox.css( 'top', Math.max( pos.top, toolbarHeight ) ).css( 'right', pos.left ) : null;
-   }
-
-   Cart.prototype.getAttribute = function( prop ){
-      var index = this.core.currentIndex;
-
-      if ( this.core.s.dynamic )
-      {
-          return this.core.s.dynamicEl[ index ][ prop ];
-      }
-
-      return this.core.$items.eq( index ).data( prop );
-   }
-
-	Cart.prototype.buy = function() {
-		
-		var url = this.getAttribute('productList');
-		
-		if ( url )
-		{
-			$('.modal-body').load( url, function(){
-				$('#add-to-cart').modal('show');
-			});
-		}
-
-		// this.showDialog();
-	};
-	
-	Cart.prototype.showDialog = function(){
-
-		this.core.$outer.css( 'width', '' + ( this.core.$outer.width() - 300 ) + 'px' )
-		.find('.lg-sub-html').css( 'right', '300px' );
-
-		var _this = this;
-		var html = '<div class="lg-cart-dialog"><button>close</button></div>';
-		$('body').first().append( html );
-		$('.lg-cart-dialog').height( this.core.$outer.height() );
-		$('.lg-cart-dialog button').on( 'click', function(){
-			_this.hideDialog();
-		});
-	}
-
-	Cart.prototype.hideDialog = function(){
-
-		this.core.$outer.css( 'width', '100%' )
-		.find('.lg-sub-html').css( 'right', '0' );
-		$('.lg-cart-dialog').remove();
-	}
-
-	Cart.prototype.destroy = function() {
-		this.hideDialog();
-		$('#add-to-cart').modal('hide');
-	};
-
-    $.fn.lightGallery.modules.cart = Cart;
-
-})();
-
-}));
diff --git a/resources/lightgallery/modules/lg-flagging.js b/resources/lightgallery/modules/lg-flagging.js
deleted file mode 100644
index 4b7cbec..0000000
--- a/resources/lightgallery/modules/lg-flagging.js
+++ /dev/null
@@ -1,146 +0,0 @@
-/*! lg-flagging - v0.8 - 2018-03-31
-* Copyright (c) 2018 Martin Wandelt */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        flagging: true,
-        hideUnflaggedElements: false,
-    };
-
-    var Flagging = function( element ){
-
-        // get lightGallery core plugin data
-        this.core = $(element).data('lightGallery');
-        this.$el = $(element);
-
-        // extend module default settings with lightGallery core settings
-        this.core.s = $.extend({}, defaults, this.core.s);
-
-        this.init();
-
-        return this;
-    };
-
-    Flagging.prototype.init = function() {
-
-      if ( ! this.core.s.flagging )
-      {
-          return;
-      }
-
-      var sheet = document.createElement('style')
-      sheet.innerHTML = 
-      '.lg-flagging-box { position:absolute; top:5px; left:9px; cursor:pointer; z-index:9999 } ' +
-		'.lg-flagging-box i { color:white; opacity:0.6; text-shadow: 0 0 1em #888, 0 0 0.2em #888; font-size: 1.75rem } ' +
-		'.lg-flagging-box.flagged i { font-weight:900; color:yellow; opacity:0.9; text-shadow: 1px 1px 2px black, 0 0 1em grey, 0 0 0.2em grey; } ' +
-		'.lg-flagging-box:hover i { opacity:1; text-shadow: 1px 1px 2px black, 0 0 1em grey, 0 0 0.2em grey; } ' +
-		'.lg-flagging-box.flagged:hover i { text-shadow: 1px 1px 2px black, 0 0 1em black, 0 0 0.2em black; }';
-      document.head.appendChild( sheet );
-
-      var _this = this;
-      var html = '<div class="lg-flagging-box position-absolute p-4"><i class="far fa-heart"></i></div>';
-      this.core.$outer.find('.lg').append( html );
-      this.flaggingbox = this.core.$outer.find('.lg-flagging-box');
-      window.setTimeout( function(){ _this.adjustBoxPosition(); }, 1000 );
-      
-      $(window).on( 'resize', function(){
-         _this.adjustBoxPosition();
-      });
-
-      this.core.$el.on( 'onAfterSlide.lg', function( event, prevIndex, index ){
-         _this.core.currentIndex = index;
-         _this.updateFlag();
-      });
-
-      this.core.$el.on( 'onBeforeSlide.lg', function( event, prevIndex, index ){
-         _this.flaggingbox.hide().removeClass('flagged');
-      });
-
-      this.core.$el.on( 'onSlideItemLoad.lg', function(){
-         _this.updateFlag();
-      });
-
-      this.core.$el.on( 'onSlideClick.lg', function(){
-         _this.updateFlag();
-      });
-
-      this.flaggingbox.on( 'click', function(){
-         var url = $(this).hasClass('flagged') ? urlLightboxRemove : urlLightboxAdd;
-         var elm = $( '#' + _this.getAttribute('elementId') );
-         var id = elm.data('id');
-         $.get( url + '&amp;vtid=' + id, function( data ){
-            if ( data.indexOf( '|' ) != -1 )
-            {
-               var html = $.parseHTML( data );
-               if ( $(html).find('form[name=anmeldung]').length ){
-                  window.location.reload();
-                  return;
-               }
-               var parts = data.split('|');
-               parts[3] > 0 ? $('.lbcount').text( parts[3] ).parents('li').show() : $('.lbcount').parents('li').hide();
-               $('.lg-flagging-box').toggleClass('flagged');
-               elm.toggleClass('flagged');
-               if ( _this.core.s.hideUnflaggedElements ){
-                  elm.hasClass('flagged') ? elm.show() : elm.hide();
-               }
-            }
-         });
-      });
-   };
-   
-   Flagging.prototype.updateFlag = function(){
-      var elm = $( '#' + this.getAttribute('elementId') );
-
-      if ( elm.hasClass('flagged') ){
-         this.flaggingbox.addClass('flagged');
-      }
-      
-      this.adjustBoxPosition();
-      this.flaggingbox.show()
-   }
-
-   Flagging.prototype.adjustBoxPosition = function(){
-      var pos = this.core.$outer.find('.lg-current .lg-image').position();
-      var toolbarHeight = this.core.$outer.find('.lg-toolbar').height();
-      pos ? this.flaggingbox.css( 'top', Math.max( pos.top, toolbarHeight ) ).css( 'left', pos.left ) : null;
-   }
-
-   Flagging.prototype.getAttribute = function( prop ){
-      var index = this.core.currentIndex;
-
-      if ( this.core.s.dynamic )
-      {
-          return this.core.s.dynamicEl[ index ][ prop ];
-      }
-
-      return this.core.$items.eq( index ).data( prop );
-   }
-
-    Flagging.prototype.destroy = function() {
-
-    };
-
-    $.fn.lightGallery.modules.flagging = Flagging;
-
-})();
-
-}));
diff --git a/resources/lightgallery/modules/lg-fullscreen.js b/resources/lightgallery/modules/lg-fullscreen.js
deleted file mode 100644
index 712b943..0000000
--- a/resources/lightgallery/modules/lg-fullscreen.js
+++ /dev/null
@@ -1,126 +0,0 @@
-/*! lg-fullscreen - v1.1.0 - 2019-02-19
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2019 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof module === 'object' && module.exports) {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(root["jQuery"]);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        fullScreen: true
-    };
-
-    function isFullScreen() {
-        return (
-            document.fullscreenElement ||
-            document.mozFullScreenElement ||
-            document.webkitFullscreenElement ||
-            document.msFullscreenElement
-        );
-    }
-
-    var Fullscreen = function(element) {
-
-        // get lightGallery core plugin data
-        this.core = $(element).data('lightGallery');
-
-        this.$el = $(element);
-
-        // extend module defalut settings with lightGallery core settings
-        this.core.s = $.extend({}, defaults, this.core.s);
-
-        this.init();
-
-        return this;
-    };
-
-    Fullscreen.prototype.init = function() {
-        var fullScreen = '';
-        if (this.core.s.fullScreen) {
-
-            // check for fullscreen browser support
-            if (!document.fullscreenEnabled && !document.webkitFullscreenEnabled &&
-                !document.mozFullScreenEnabled && !document.msFullscreenEnabled) {
-                return;
-            } else {
-                fullScreen = '<span class="lg-fullscreen lg-icon"></span>';
-                this.core.$outer.find('.lg-toolbar').append(fullScreen);
-                this.fullScreen();
-            }
-        }
-    };
-
-    Fullscreen.prototype.requestFullscreen = function() {
-        var el = document.documentElement;
-        if (el.requestFullscreen) {
-            el.requestFullscreen();
-        } else if (el.msRequestFullscreen) {
-            el.msRequestFullscreen();
-        } else if (el.mozRequestFullScreen) {
-            el.mozRequestFullScreen();
-        } else if (el.webkitRequestFullscreen) {
-            el.webkitRequestFullscreen();
-        }
-    };
-
-    Fullscreen.prototype.exitFullscreen = function() {
-        if (document.exitFullscreen) {
-            document.exitFullscreen();
-        } else if (document.msExitFullscreen) {
-            document.msExitFullscreen();
-        } else if (document.mozCancelFullScreen) {
-            document.mozCancelFullScreen();
-        } else if (document.webkitExitFullscreen) {
-            document.webkitExitFullscreen();
-        }
-    };
-
-    // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode
-    Fullscreen.prototype.fullScreen = function() {
-        var _this = this;
-
-        $(document).on('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg', function() {
-            _this.core.$outer.toggleClass('lg-fullscreen-on');
-        });
-
-        this.core.$outer.find('.lg-fullscreen').on('click.lg', function() {
-            if (isFullScreen()) {
-                _this.exitFullscreen();
-            } else {
-                _this.requestFullscreen();
-            }
-        });
-
-    };
-
-    Fullscreen.prototype.destroy = function() {
-
-        // exit from fullscreen if activated
-        if(isFullScreen()) {
-            this.exitFullscreen();
-        }
-
-        $(document).off('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg');
-    };
-
-    $.fn.lightGallery.modules.fullscreen = Fullscreen;
-
-})();
-
-}));
diff --git a/resources/lightgallery/modules/lg-fullscreen.min.js b/resources/lightgallery/modules/lg-fullscreen.min.js
deleted file mode 100644
index 93155db..0000000
--- a/resources/lightgallery/modules/lg-fullscreen.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! lg-fullscreen - v1.1.0 - 2019-02-19
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2019 Sachin N; Licensed GPLv3 */
-!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){!function(){"use strict";function b(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement}var c={fullScreen:!0},d=function(b){return this.core=a(b).data("lightGallery"),this.$el=a(b),this.core.s=a.extend({},c,this.core.s),this.init(),this};d.prototype.init=function(){var a="";if(this.core.s.fullScreen){if(!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled))return;a='<span class="lg-fullscreen lg-icon"></span>',this.core.$outer.find(".lg-toolbar").append(a),this.fullScreen()}},d.prototype.requestFullscreen=function(){var a=document.documentElement;a.requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen&&a.webkitRequestFullscreen()},d.prototype.exitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},d.prototype.fullScreen=function(){var c=this;a(document).on("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg",function(){c.core.$outer.toggleClass("lg-fullscreen-on")}),this.core.$outer.find(".lg-fullscreen").on("click.lg",function(){b()?c.exitFullscreen():c.requestFullscreen()})},d.prototype.destroy=function(){b()&&this.exitFullscreen(),a(document).off("fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg")},a.fn.lightGallery.modules.fullscreen=d}()});
\ No newline at end of file
diff --git a/resources/lightgallery/modules/lg-hash.js b/resources/lightgallery/modules/lg-hash.js
deleted file mode 100644
index 13e9397..0000000
--- a/resources/lightgallery/modules/lg-hash.js
+++ /dev/null
@@ -1,101 +0,0 @@
-/*! lg-hash - v1.0.4 - 2017-12-20
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        hash: true
-    };
-
-    var Hash = function(element) {
-
-        this.core = $(element).data('lightGallery');
-
-        this.core.s = $.extend({}, defaults, this.core.s);
-
-        if (this.core.s.hash) {
-            this.oldHash = window.location.hash;
-            this.init();
-        }
-
-        return this;
-    };
-
-    Hash.prototype.init = function() {
-        var _this = this;
-        var _hash;
-
-        // Change hash value on after each slide transition
-        _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex, index) {
-            if (history.replaceState) {
-                history.replaceState(null, null, window.location.pathname + window.location.search + '#lg=' + _this.core.s.galleryId + '&slide=' + index);
-            } else {
-                window.location.hash = 'lg=' + _this.core.s.galleryId + '&slide=' + index;
-            }
-        });
-
-        // Listen hash change and change the slide according to slide value
-        $(window).on('hashchange.lg.hash', function() {
-            _hash = window.location.hash;
-            var _idx = parseInt(_hash.split('&slide=')[1], 10);
-
-            // it galleryId doesn't exist in the url close the gallery
-            if ((_hash.indexOf('lg=' + _this.core.s.galleryId) > -1)) {
-                _this.core.slide(_idx, false, false);
-            } else if (_this.core.lGalleryOn) {
-                _this.core.destroy();
-            }
-
-        });
-    };
-
-    Hash.prototype.destroy = function() {
-
-        if (!this.core.s.hash) {
-            return;
-        }
-
-        // Reset to old hash value
-        if (this.oldHash && this.oldHash.indexOf('lg=' + this.core.s.galleryId) < 0) {
-            if (history.replaceState) {
-                history.replaceState(null, null, this.oldHash);
-            } else {
-                window.location.hash = this.oldHash;
-            }
-        } else {
-            if (history.replaceState) {
-                history.replaceState(null, document.title, window.location.pathname + window.location.search);
-            } else {
-                window.location.hash = '';
-            }
-        }
-
-        this.core.$el.off('.lg.hash');
-
-    };
-
-    $.fn.lightGallery.modules.hash = Hash;
-
-})();
-
-
-}));
diff --git a/resources/lightgallery/modules/lg-hash.min.js b/resources/lightgallery/modules/lg-hash.min.js
deleted file mode 100644
index a4bdcbd..0000000
--- a/resources/lightgallery/modules/lg-hash.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! lg-hash - v1.0.4 - 2017-12-20
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(){"use strict";var b={hash:!0},c=function(c){return this.core=a(c).data("lightGallery"),this.core.s=a.extend({},b,this.core.s),this.core.s.hash&&(this.oldHash=window.location.hash,this.init()),this};c.prototype.init=function(){var b,c=this;c.core.$el.on("onAfterSlide.lg.tm",function(a,b,d){history.replaceState?history.replaceState(null,null,window.location.pathname+window.location.search+"#lg="+c.core.s.galleryId+"&slide="+d):window.location.hash="lg="+c.core.s.galleryId+"&slide="+d}),a(window).on("hashchange.lg.hash",function(){b=window.location.hash;var a=parseInt(b.split("&slide=")[1],10);b.indexOf("lg="+c.core.s.galleryId)>-1?c.core.slide(a,!1,!1):c.core.lGalleryOn&&c.core.destroy()})},c.prototype.destroy=function(){this.core.s.hash&&(this.oldHash&&this.oldHash.indexOf("lg="+this.core.s.galleryId)<0?history.replaceState?history.replaceState(null,null,this.oldHash):window.location.hash=this.oldHash:history.replaceState?history.replaceState(null,document.title,window.location.pathname+window.location.search):window.location.hash="",this.core.$el.off(".lg.hash"))},a.fn.lightGallery.modules.hash=c}()});
\ No newline at end of file
diff --git a/resources/lightgallery/modules/lg-pager.js b/resources/lightgallery/modules/lg-pager.js
deleted file mode 100644
index 8097e82..0000000
--- a/resources/lightgallery/modules/lg-pager.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/*! lg-pager - v1.0.2 - 2017-01-22
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        pager: false
-    };
-
-    var Pager = function(element) {
-
-        this.core = $(element).data('lightGallery');
-
-        this.$el = $(element);
-        this.core.s = $.extend({}, defaults, this.core.s);
-        if (this.core.s.pager && this.core.$items.length > 1) {
-            this.init();
-        }
-
-        return this;
-    };
-
-    Pager.prototype.init = function() {
-        var _this = this;
-        var pagerList = '';
-        var $pagerCont;
-        var $pagerOuter;
-        var timeout;
-
-        _this.core.$outer.find('.lg').append('<div class="lg-pager-outer"></div>');
-
-        if (_this.core.s.dynamic) {
-            for (var i = 0; i < _this.core.s.dynamicEl.length; i++) {
-                pagerList += '<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' + _this.core.s.dynamicEl[i].thumb + '" /></div></span>';
-            }
-        } else {
-            _this.core.$items.each(function() {
-
-                if (!_this.core.s.exThumbImage) {
-                    pagerList += '<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' + $(this).find('img').attr('src') + '" /></div></span>';
-                } else {
-                    pagerList += '<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="' + $(this).attr(_this.core.s.exThumbImage) + '" /></div></span>';
-                }
-
-            });
-        }
-
-        $pagerOuter = _this.core.$outer.find('.lg-pager-outer');
-
-        $pagerOuter.html(pagerList);
-
-        $pagerCont = _this.core.$outer.find('.lg-pager-cont');
-        $pagerCont.on('click.lg touchend.lg', function() {
-            var _$this = $(this);
-            _this.core.index = _$this.index();
-            _this.core.slide(_this.core.index, false, true, false);
-        });
-
-        $pagerOuter.on('mouseover.lg', function() {
-            clearTimeout(timeout);
-            $pagerOuter.addClass('lg-pager-hover');
-        });
-
-        $pagerOuter.on('mouseout.lg', function() {
-            timeout = setTimeout(function() {
-                $pagerOuter.removeClass('lg-pager-hover');
-            });
-        });
-
-        _this.core.$el.on('onBeforeSlide.lg.tm', function(e, prevIndex, index) {
-            $pagerCont.removeClass('lg-pager-active');
-            $pagerCont.eq(index).addClass('lg-pager-active');
-        });
-
-    };
-
-    Pager.prototype.destroy = function() {
-
-    };
-
-    $.fn.lightGallery.modules.pager = Pager;
-
-})();
-
-
-}));
diff --git a/resources/lightgallery/modules/lg-pager.min.js b/resources/lightgallery/modules/lg-pager.min.js
deleted file mode 100644
index 883e355..0000000
--- a/resources/lightgallery/modules/lg-pager.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! lg-pager - v1.0.2 - 2017-01-22
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(){"use strict";var b={pager:!1},c=function(c){return this.core=a(c).data("lightGallery"),this.$el=a(c),this.core.s=a.extend({},b,this.core.s),this.core.s.pager&&this.core.$items.length>1&&this.init(),this};c.prototype.init=function(){var b,c,d,e=this,f="";if(e.core.$outer.find(".lg").append('<div class="lg-pager-outer"></div>'),e.core.s.dynamic)for(var g=0;g<e.core.s.dynamicEl.length;g++)f+='<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="'+e.core.s.dynamicEl[g].thumb+'" /></div></span>';else e.core.$items.each(function(){f+=e.core.s.exThumbImage?'<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="'+a(this).attr(e.core.s.exThumbImage)+'" /></div></span>':'<span class="lg-pager-cont"> <span class="lg-pager"></span><div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="'+a(this).find("img").attr("src")+'" /></div></span>'});c=e.core.$outer.find(".lg-pager-outer"),c.html(f),b=e.core.$outer.find(".lg-pager-cont"),b.on("click.lg touchend.lg",function(){var b=a(this);e.core.index=b.index(),e.core.slide(e.core.index,!1,!0,!1)}),c.on("mouseover.lg",function(){clearTimeout(d),c.addClass("lg-pager-hover")}),c.on("mouseout.lg",function(){d=setTimeout(function(){c.removeClass("lg-pager-hover")})}),e.core.$el.on("onBeforeSlide.lg.tm",function(a,c,d){b.removeClass("lg-pager-active"),b.eq(d).addClass("lg-pager-active")})},c.prototype.destroy=function(){},a.fn.lightGallery.modules.pager=c}()});
\ No newline at end of file
diff --git a/resources/lightgallery/modules/lg-share.js b/resources/lightgallery/modules/lg-share.js
deleted file mode 100644
index f5c7fe4..0000000
--- a/resources/lightgallery/modules/lg-share.js
+++ /dev/null
@@ -1,107 +0,0 @@
-/*! lg-share - v1.1.0 - 2017-10-03
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        share: true,
-        facebook: true,
-        facebookDropdownText: 'Facebook',
-        twitter: true,
-        twitterDropdownText: 'Twitter',
-        googlePlus: true,
-        googlePlusDropdownText: 'GooglePlus',
-        pinterest: true,
-        pinterestDropdownText: 'Pinterest'
-    };
-
-    var Share = function(element) {
-
-        this.core = $(element).data('lightGallery');
-
-        this.core.s = $.extend({}, defaults, this.core.s);
-        if (this.core.s.share) {
-            this.init();
-        }
-
-        return this;
-    };
-
-    Share.prototype.init = function() {
-        var _this = this;
-        var shareHtml = '<span id="lg-share" class="lg-icon">' +
-            '<ul class="lg-dropdown" style="position: absolute;">';
-        shareHtml += _this.core.s.facebook ? '<li><a id="lg-share-facebook" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">' + this.core.s.facebookDropdownText + '</span></a></li>' : '';
-        shareHtml += _this.core.s.twitter ? '<li><a id="lg-share-twitter" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">' + this.core.s.twitterDropdownText + '</span></a></li>' : '';
-        shareHtml += _this.core.s.googlePlus ? '<li><a id="lg-share-googleplus" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">' + this.core.s.googlePlusDropdownText + '</span></a></li>' : '';
-        shareHtml += _this.core.s.pinterest ? '<li><a id="lg-share-pinterest" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">' + this.core.s.pinterestDropdownText + '</span></a></li>' : '';
-        shareHtml += '</ul></span>';
-
-        this.core.$outer.find('.lg-toolbar').append(shareHtml);
-        this.core.$outer.find('.lg').append('<div id="lg-dropdown-overlay"></div>');
-        $('#lg-share').on('click.lg', function(){
-            _this.core.$outer.toggleClass('lg-dropdown-active');
-        });
-
-        $('#lg-dropdown-overlay').on('click.lg', function(){
-            _this.core.$outer.removeClass('lg-dropdown-active');
-        });
-
-        _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex, index) {
-
-            setTimeout(function() {
-
-                $('#lg-share-facebook').attr('href', 'https://www.facebook.com/sharer/sharer.php?u=' + (encodeURIComponent(_this.getSahreProps(index, 'facebookShareUrl') || window.location.href)));
-
-                $('#lg-share-twitter').attr('href', 'https://twitter.com/intent/tweet?text=' + _this.getSahreProps(index, 'tweetText') + '&url=' + (encodeURIComponent(_this.getSahreProps(index, 'twitterShareUrl') || window.location.href)));
-
-                $('#lg-share-googleplus').attr('href', 'https://plus.google.com/share?url=' + (encodeURIComponent(_this.getSahreProps(index, 'googleplusShareUrl') || window.location.href)));
-
-                $('#lg-share-pinterest').attr('href', 'http://www.pinterest.com/pin/create/button/?url=' + (encodeURIComponent(_this.getSahreProps(index, 'pinterestShareUrl') || window.location.href)) + '&media=' + encodeURIComponent(_this.getSahreProps(index, 'src')) + '&description=' + _this.getSahreProps(index, 'pinterestText'));
-
-            }, 100);
-        });
-    };
-
-    Share.prototype.getSahreProps = function(index, prop){
-        var shareProp = '';
-        if(this.core.s.dynamic) {
-            shareProp = this.core.s.dynamicEl[index][prop];
-        } else {
-            var _href = this.core.$items.eq(index).attr('href');
-            var _prop = this.core.$items.eq(index).data(prop);
-            shareProp = prop === 'src' ? _href || _prop : _prop;
-        }
-        return shareProp;
-    };
-
-    Share.prototype.destroy = function() {
-
-    };
-
-    $.fn.lightGallery.modules.share = Share;
-
-})();
-
-
-
-}));
diff --git a/resources/lightgallery/modules/lg-share.min.js b/resources/lightgallery/modules/lg-share.min.js
deleted file mode 100644
index 86a1121..0000000
--- a/resources/lightgallery/modules/lg-share.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! lg-share - v1.1.0 - 2017-10-03
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(){"use strict";var b={share:!0,facebook:!0,facebookDropdownText:"Facebook",twitter:!0,twitterDropdownText:"Twitter",googlePlus:!0,googlePlusDropdownText:"GooglePlus",pinterest:!0,pinterestDropdownText:"Pinterest"},c=function(c){return this.core=a(c).data("lightGallery"),this.core.s=a.extend({},b,this.core.s),this.core.s.share&&this.init(),this};c.prototype.init=function(){var b=this,c='<span id="lg-share" class="lg-icon"><ul class="lg-dropdown" style="position: absolute;">';c+=b.core.s.facebook?'<li><a id="lg-share-facebook" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.facebookDropdownText+"</span></a></li>":"",c+=b.core.s.twitter?'<li><a id="lg-share-twitter" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.twitterDropdownText+"</span></a></li>":"",c+=b.core.s.googlePlus?'<li><a id="lg-share-googleplus" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.googlePlusDropdownText+"</span></a></li>":"",c+=b.core.s.pinterest?'<li><a id="lg-share-pinterest" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+this.core.s.pinterestDropdownText+"</span></a></li>":"",c+="</ul></span>",this.core.$outer.find(".lg-toolbar").append(c),this.core.$outer.find(".lg").append('<div id="lg-dropdown-overlay"></div>'),a("#lg-share").on("click.lg",function(){b.core.$outer.toggleClass("lg-dropdown-active")}),a("#lg-dropdown-overlay").on("click.lg",function(){b.core.$outer.removeClass("lg-dropdown-active")}),b.core.$el.on("onAfterSlide.lg.tm",function(c,d,e){setTimeout(function(){a("#lg-share-facebook").attr("href","https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(b.getSahreProps(e,"facebookShareUrl")||window.location.href)),a("#lg-share-twitter").attr("href","https://twitter.com/intent/tweet?text="+b.getSahreProps(e,"tweetText")+"&url="+encodeURIComponent(b.getSahreProps(e,"twitterShareUrl")||window.location.href)),a("#lg-share-googleplus").attr("href","https://plus.google.com/share?url="+encodeURIComponent(b.getSahreProps(e,"googleplusShareUrl")||window.location.href)),a("#lg-share-pinterest").attr("href","http://www.pinterest.com/pin/create/button/?url="+encodeURIComponent(b.getSahreProps(e,"pinterestShareUrl")||window.location.href)+"&media="+encodeURIComponent(b.getSahreProps(e,"src"))+"&description="+b.getSahreProps(e,"pinterestText"))},100)})},c.prototype.getSahreProps=function(a,b){var c="";if(this.core.s.dynamic)c=this.core.s.dynamicEl[a][b];else{var d=this.core.$items.eq(a).attr("href"),e=this.core.$items.eq(a).data(b);c="src"===b?d||e:e}return c},c.prototype.destroy=function(){},a.fn.lightGallery.modules.share=c}()});
\ No newline at end of file
diff --git a/resources/lightgallery/modules/lg-thumbnail.js b/resources/lightgallery/modules/lg-thumbnail.js
deleted file mode 100644
index 05be5ba..0000000
--- a/resources/lightgallery/modules/lg-thumbnail.js
+++ /dev/null
@@ -1,478 +0,0 @@
-/*! lg-thumbnail - v1.1.0 - 2017-08-08
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var defaults = {
-        thumbnail: true,
-
-        animateThumb: true,
-        currentPagerPosition: 'middle',
-
-        thumbWidth: 100,
-        thumbHeight: '80px',
-        thumbContHeight: 100,
-        thumbMargin: 5,
-
-        exThumbImage: false,
-        showThumbByDefault: true,
-        toogleThumb: true,
-        pullCaptionUp: true,
-
-        enableThumbDrag: true,
-        enableThumbSwipe: true,
-        swipeThreshold: 50,
-
-        loadYoutubeThumbnail: true,
-        youtubeThumbSize: 1,
-
-        loadVimeoThumbnail: true,
-        vimeoThumbSize: 'thumbnail_small',
-
-        loadDailymotionThumbnail: true
-    };
-
-    var Thumbnail = function(element) {
-
-        // get lightGallery core plugin data
-        this.core = $(element).data('lightGallery');
-
-        // extend module default settings with lightGallery core settings
-        this.core.s = $.extend({}, defaults, this.core.s);
-
-        this.$el = $(element);
-        this.$thumbOuter = null;
-        this.thumbOuterWidth = 0;
-        this.thumbTotalWidth = (this.core.$items.length * (this.core.s.thumbWidth + this.core.s.thumbMargin));
-        this.thumbIndex = this.core.index;
-
-        if (this.core.s.animateThumb) {
-            this.core.s.thumbHeight = '100%';
-        }
-
-        // Thumbnail animation value
-        this.left = 0;
-
-        this.init();
-
-        return this;
-    };
-
-    Thumbnail.prototype.init = function() {
-        var _this = this;
-        if (this.core.s.thumbnail && this.core.$items.length > 1) {
-            if (this.core.s.showThumbByDefault) {
-                setTimeout(function(){
-                    _this.core.$outer.addClass('lg-thumb-open');
-                }, 700);
-            }
-
-            if (this.core.s.pullCaptionUp) {
-                this.core.$outer.addClass('lg-pull-caption-up');
-            }
-
-            this.build();
-            if (this.core.s.animateThumb && this.core.doCss()) {
-                if (this.core.s.enableThumbDrag) {
-                    this.enableThumbDrag();
-                }
-
-                if (this.core.s.enableThumbSwipe) {
-                    this.enableThumbSwipe();
-                }
-
-                this.thumbClickable = false;
-            } else {
-                this.thumbClickable = true;
-            }
-
-            this.toogle();
-            this.thumbkeyPress();
-        }
-    };
-
-    Thumbnail.prototype.build = function() {
-        var _this = this;
-        var thumbList = '';
-        var vimeoErrorThumbSize = '';
-        var $thumb;
-        var html = '<div class="lg-thumb-outer">' +
-            '<div class="lg-thumb lg-group">' +
-            '</div>' +
-            '</div>';
-
-        switch (this.core.s.vimeoThumbSize) {
-            case 'thumbnail_large':
-                vimeoErrorThumbSize = '640';
-                break;
-            case 'thumbnail_medium':
-                vimeoErrorThumbSize = '200x150';
-                break;
-            case 'thumbnail_small':
-                vimeoErrorThumbSize = '100x75';
-        }
-
-        _this.core.$outer.addClass('lg-has-thumb');
-
-        _this.core.$outer.find('.lg').append(html);
-
-        _this.$thumbOuter = _this.core.$outer.find('.lg-thumb-outer');
-        _this.thumbOuterWidth = _this.$thumbOuter.width();
-
-        if (_this.core.s.animateThumb) {
-            _this.core.$outer.find('.lg-thumb').css({
-                width: _this.thumbTotalWidth + 'px',
-                position: 'relative'
-            });
-        }
-
-        if (this.core.s.animateThumb) {
-            _this.$thumbOuter.css('height', _this.core.s.thumbContHeight + 'px');
-        }
-
-        function getThumb(src, thumb, index) {
-            var isVideo = _this.core.isVideo(src, index) || {};
-            var thumbImg;
-            var vimeoId = '';
-
-            if (isVideo.youtube || isVideo.vimeo || isVideo.dailymotion) {
-                if (isVideo.youtube) {
-                    if (_this.core.s.loadYoutubeThumbnail) {
-                        thumbImg = '//img.youtube.com/vi/' + isVideo.youtube[1] + '/' + _this.core.s.youtubeThumbSize + '.jpg';
-                    } else {
-                        thumbImg = thumb;
-                    }
-                } else if (isVideo.vimeo) {
-                    if (_this.core.s.loadVimeoThumbnail) {
-                        thumbImg = '//i.vimeocdn.com/video/error_' + vimeoErrorThumbSize + '.jpg';
-                        vimeoId = isVideo.vimeo[1];
-                    } else {
-                        thumbImg = thumb;
-                    }
-                } else if (isVideo.dailymotion) {
-                    if (_this.core.s.loadDailymotionThumbnail) {
-                        thumbImg = '//www.dailymotion.com/thumbnail/video/' + isVideo.dailymotion[1];
-                    } else {
-                        thumbImg = thumb;
-                    }
-                }
-            } else {
-                thumbImg = thumb;
-            }
-
-            thumbList += '<div data-vimeo-id="' + vimeoId + '" class="lg-thumb-item" style="width:' + _this.core.s.thumbWidth + 'px; height: ' + _this.core.s.thumbHeight + '; margin-right: ' + _this.core.s.thumbMargin + 'px"><img src="' + thumbImg + '" /></div>';
-            vimeoId = '';
-        }
-
-        if (_this.core.s.dynamic) {
-            for (var i = 0; i < _this.core.s.dynamicEl.length; i++) {
-                getThumb(_this.core.s.dynamicEl[i].src, _this.core.s.dynamicEl[i].thumb, i);
-            }
-        } else {
-            _this.core.$items.each(function(i) {
-
-                if (!_this.core.s.exThumbImage) {
-                    getThumb($(this).attr('href') || $(this).attr('data-src'), $(this).find('img').attr('src'), i);
-                } else {
-                    getThumb($(this).attr('href') || $(this).attr('data-src'), $(this).attr(_this.core.s.exThumbImage), i);
-                }
-
-            });
-        }
-
-        _this.core.$outer.find('.lg-thumb').html(thumbList);
-
-        $thumb = _this.core.$outer.find('.lg-thumb-item');
-
-        // Load vimeo thumbnails
-        $thumb.each(function() {
-            var $this = $(this);
-            var vimeoVideoId = $this.attr('data-vimeo-id');
-
-            if (vimeoVideoId) {
-                $.getJSON('//www.vimeo.com/api/v2/video/' + vimeoVideoId + '.json?callback=?', {
-                    format: 'json'
-                }, function(data) {
-                    $this.find('img').attr('src', data[0][_this.core.s.vimeoThumbSize]);
-                });
-            }
-        });
-
-        // manage active class for thumbnail
-        $thumb.eq(_this.core.index).addClass('active');
-        _this.core.$el.on('onBeforeSlide.lg.tm', function() {
-            $thumb.removeClass('active');
-            $thumb.eq(_this.core.index).addClass('active');
-        });
-
-        $thumb.on('click.lg touchend.lg', function() {
-            var _$this = $(this);
-            setTimeout(function() {
-
-                // In IE9 and bellow touch does not support
-                // Go to slide if browser does not support css transitions
-                if ((_this.thumbClickable && !_this.core.lgBusy) || !_this.core.doCss()) {
-                    _this.core.index = _$this.index();
-                    _this.core.slide(_this.core.index, false, true, false);
-                }
-            }, 50);
-        });
-
-        _this.core.$el.on('onBeforeSlide.lg.tm', function() {
-            _this.animateThumb(_this.core.index);
-        });
-
-        $(window).on('resize.lg.thumb orientationchange.lg.thumb', function() {
-            setTimeout(function() {
-                _this.animateThumb(_this.core.index);
-                _this.thumbOuterWidth = _this.$thumbOuter.width();
-            }, 200);
-        });
-
-    };
-
-    Thumbnail.prototype.setTranslate = function(value) {
-        // jQuery supports Automatic CSS prefixing since jQuery 1.8.0
-        this.core.$outer.find('.lg-thumb').css({
-            transform: 'translate3d(-' + (value) + 'px, 0px, 0px)'
-        });
-    };
-
-    Thumbnail.prototype.animateThumb = function(index) {
-        var $thumb = this.core.$outer.find('.lg-thumb');
-        if (this.core.s.animateThumb) {
-            var position;
-            switch (this.core.s.currentPagerPosition) {
-                case 'left':
-                    position = 0;
-                    break;
-                case 'middle':
-                    position = (this.thumbOuterWidth / 2) - (this.core.s.thumbWidth / 2);
-                    break;
-                case 'right':
-                    position = this.thumbOuterWidth - this.core.s.thumbWidth;
-            }
-            this.left = ((this.core.s.thumbWidth + this.core.s.thumbMargin) * index - 1) - position;
-            if (this.left > (this.thumbTotalWidth - this.thumbOuterWidth)) {
-                this.left = this.thumbTotalWidth - this.thumbOuterWidth;
-            }
-
-            if (this.left < 0) {
-                this.left = 0;
-            }
-
-            if (this.core.lGalleryOn) {
-                if (!$thumb.hasClass('on')) {
-                    this.core.$outer.find('.lg-thumb').css('transition-duration', this.core.s.speed + 'ms');
-                }
-
-                if (!this.core.doCss()) {
-                    $thumb.animate({
-                        left: -this.left + 'px'
-                    }, this.core.s.speed);
-                }
-            } else {
-                if (!this.core.doCss()) {
-                    $thumb.css('left', -this.left + 'px');
-                }
-            }
-
-            this.setTranslate(this.left);
-
-        }
-    };
-
-    // Enable thumbnail dragging and swiping
-    Thumbnail.prototype.enableThumbDrag = function() {
-
-        var _this = this;
-        var startCoords = 0;
-        var endCoords = 0;
-        var isDraging = false;
-        var isMoved = false;
-        var tempLeft = 0;
-
-        _this.$thumbOuter.addClass('lg-grab');
-
-        _this.core.$outer.find('.lg-thumb').on('mousedown.lg.thumb', function(e) {
-            if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
-                // execute only on .lg-object
-                e.preventDefault();
-                startCoords = e.pageX;
-                isDraging = true;
-
-                // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
-                _this.core.$outer.scrollLeft += 1;
-                _this.core.$outer.scrollLeft -= 1;
-
-                // *
-                _this.thumbClickable = false;
-                _this.$thumbOuter.removeClass('lg-grab').addClass('lg-grabbing');
-            }
-        });
-
-        $(window).on('mousemove.lg.thumb', function(e) {
-            if (isDraging) {
-                tempLeft = _this.left;
-                isMoved = true;
-                endCoords = e.pageX;
-
-                _this.$thumbOuter.addClass('lg-dragging');
-
-                tempLeft = tempLeft - (endCoords - startCoords);
-
-                if (tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)) {
-                    tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;
-                }
-
-                if (tempLeft < 0) {
-                    tempLeft = 0;
-                }
-
-                // move current slide
-                _this.setTranslate(tempLeft);
-
-            }
-        });
-
-        $(window).on('mouseup.lg.thumb', function() {
-            if (isMoved) {
-                isMoved = false;
-                _this.$thumbOuter.removeClass('lg-dragging');
-
-                _this.left = tempLeft;
-
-                if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {
-                    _this.thumbClickable = true;
-                }
-
-            } else {
-                _this.thumbClickable = true;
-            }
-
-            if (isDraging) {
-                isDraging = false;
-                _this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab');
-            }
-        });
-
-    };
-
-    Thumbnail.prototype.enableThumbSwipe = function() {
-        var _this = this;
-        var startCoords = 0;
-        var endCoords = 0;
-        var isMoved = false;
-        var tempLeft = 0;
-
-        _this.core.$outer.find('.lg-thumb').on('touchstart.lg', function(e) {
-            if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
-                e.preventDefault();
-                startCoords = e.originalEvent.targetTouches[0].pageX;
-                _this.thumbClickable = false;
-            }
-        });
-
-        _this.core.$outer.find('.lg-thumb').on('touchmove.lg', function(e) {
-            if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
-                e.preventDefault();
-                endCoords = e.originalEvent.targetTouches[0].pageX;
-                isMoved = true;
-
-                _this.$thumbOuter.addClass('lg-dragging');
-
-                tempLeft = _this.left;
-
-                tempLeft = tempLeft - (endCoords - startCoords);
-
-                if (tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)) {
-                    tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;
-                }
-
-                if (tempLeft < 0) {
-                    tempLeft = 0;
-                }
-
-                // move current slide
-                _this.setTranslate(tempLeft);
-
-            }
-        });
-
-        _this.core.$outer.find('.lg-thumb').on('touchend.lg', function() {
-            if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
-
-                if (isMoved) {
-                    isMoved = false;
-                    _this.$thumbOuter.removeClass('lg-dragging');
-                    if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {
-                        _this.thumbClickable = true;
-                    }
-
-                    _this.left = tempLeft;
-                } else {
-                    _this.thumbClickable = true;
-                }
-            } else {
-                _this.thumbClickable = true;
-            }
-        });
-
-    };
-
-    Thumbnail.prototype.toogle = function() {
-        var _this = this;
-        if (_this.core.s.toogleThumb) {
-            _this.core.$outer.addClass('lg-can-toggle');
-            _this.$thumbOuter.append('<span class="lg-toogle-thumb lg-icon"></span>');
-            _this.core.$outer.find('.lg-toogle-thumb').on('click.lg', function() {
-                _this.core.$outer.toggleClass('lg-thumb-open');
-            });
-        }
-    };
-
-    Thumbnail.prototype.thumbkeyPress = function() {
-        var _this = this;
-        $(window).on('keydown.lg.thumb', function(e) {
-            if (e.keyCode === 38) {
-                e.preventDefault();
-                _this.core.$outer.addClass('lg-thumb-open');
-            } else if (e.keyCode === 40) {
-                e.preventDefault();
-                _this.core.$outer.removeClass('lg-thumb-open');
-            }
-        });
-    };
-
-    Thumbnail.prototype.destroy = function() {
-        if (this.core.s.thumbnail && this.core.$items.length > 1) {
-            $(window).off('resize.lg.thumb orientationchange.lg.thumb keydown.lg.thumb');
-            this.$thumbOuter.remove();
-            this.core.$outer.removeClass('lg-has-thumb');
-        }
-    };
-
-    $.fn.lightGallery.modules.Thumbnail = Thumbnail;
-
-})();
-
-}));
diff --git a/resources/lightgallery/modules/lg-thumbnail.min.js b/resources/lightgallery/modules/lg-thumbnail.min.js
deleted file mode 100644
index f2ea2fc..0000000
--- a/resources/lightgallery/modules/lg-thumbnail.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! lg-thumbnail - v1.1.0 - 2017-08-08
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(){"use strict";var b={thumbnail:!0,animateThumb:!0,currentPagerPosition:"middle",thumbWidth:100,thumbHeight:"80px",thumbContHeight:100,thumbMargin:5,exThumbImage:!1,showThumbByDefault:!0,toogleThumb:!0,pullCaptionUp:!0,enableThumbDrag:!0,enableThumbSwipe:!0,swipeThreshold:50,loadYoutubeThumbnail:!0,youtubeThumbSize:1,loadVimeoThumbnail:!0,vimeoThumbSize:"thumbnail_small",loadDailymotionThumbnail:!0},c=function(c){return this.core=a(c).data("lightGallery"),this.core.s=a.extend({},b,this.core.s),this.$el=a(c),this.$thumbOuter=null,this.thumbOuterWidth=0,this.thumbTotalWidth=this.core.$items.length*(this.core.s.thumbWidth+this.core.s.thumbMargin),this.thumbIndex=this.core.index,this.core.s.animateThumb&&(this.core.s.thumbHeight="100%"),this.left=0,this.init(),this};c.prototype.init=function(){var a=this;this.core.s.thumbnail&&this.core.$items.length>1&&(this.core.s.showThumbByDefault&&setTimeout(function(){a.core.$outer.addClass("lg-thumb-open")},700),this.core.s.pullCaptionUp&&this.core.$outer.addClass("lg-pull-caption-up"),this.build(),this.core.s.animateThumb&&this.core.doCss()?(this.core.s.enableThumbDrag&&this.enableThumbDrag(),this.core.s.enableThumbSwipe&&this.enableThumbSwipe(),this.thumbClickable=!1):this.thumbClickable=!0,this.toogle(),this.thumbkeyPress())},c.prototype.build=function(){function b(a,b,c){var g,h=d.core.isVideo(a,c)||{},i="";h.youtube||h.vimeo||h.dailymotion?h.youtube?g=d.core.s.loadYoutubeThumbnail?"//img.youtube.com/vi/"+h.youtube[1]+"/"+d.core.s.youtubeThumbSize+".jpg":b:h.vimeo?d.core.s.loadVimeoThumbnail?(g="//i.vimeocdn.com/video/error_"+f+".jpg",i=h.vimeo[1]):g=b:h.dailymotion&&(g=d.core.s.loadDailymotionThumbnail?"//www.dailymotion.com/thumbnail/video/"+h.dailymotion[1]:b):g=b,e+='<div data-vimeo-id="'+i+'" class="lg-thumb-item" style="width:'+d.core.s.thumbWidth+"px; height: "+d.core.s.thumbHeight+"; margin-right: "+d.core.s.thumbMargin+'px"><img src="'+g+'" /></div>',i=""}var c,d=this,e="",f="",g='<div class="lg-thumb-outer"><div class="lg-thumb lg-group"></div></div>';switch(this.core.s.vimeoThumbSize){case"thumbnail_large":f="640";break;case"thumbnail_medium":f="200x150";break;case"thumbnail_small":f="100x75"}if(d.core.$outer.addClass("lg-has-thumb"),d.core.$outer.find(".lg").append(g),d.$thumbOuter=d.core.$outer.find(".lg-thumb-outer"),d.thumbOuterWidth=d.$thumbOuter.width(),d.core.s.animateThumb&&d.core.$outer.find(".lg-thumb").css({width:d.thumbTotalWidth+"px",position:"relative"}),this.core.s.animateThumb&&d.$thumbOuter.css("height",d.core.s.thumbContHeight+"px"),d.core.s.dynamic)for(var h=0;h<d.core.s.dynamicEl.length;h++)b(d.core.s.dynamicEl[h].src,d.core.s.dynamicEl[h].thumb,h);else d.core.$items.each(function(c){d.core.s.exThumbImage?b(a(this).attr("href")||a(this).attr("data-src"),a(this).attr(d.core.s.exThumbImage),c):b(a(this).attr("href")||a(this).attr("data-src"),a(this).find("img").attr("src"),c)});d.core.$outer.find(".lg-thumb").html(e),c=d.core.$outer.find(".lg-thumb-item"),c.each(function(){var b=a(this),c=b.attr("data-vimeo-id");c&&a.getJSON("//www.vimeo.com/api/v2/video/"+c+".json?callback=?",{format:"json"},function(a){b.find("img").attr("src",a[0][d.core.s.vimeoThumbSize])})}),c.eq(d.core.index).addClass("active"),d.core.$el.on("onBeforeSlide.lg.tm",function(){c.removeClass("active"),c.eq(d.core.index).addClass("active")}),c.on("click.lg touchend.lg",function(){var b=a(this);setTimeout(function(){(d.thumbClickable&&!d.core.lgBusy||!d.core.doCss())&&(d.core.index=b.index(),d.core.slide(d.core.index,!1,!0,!1))},50)}),d.core.$el.on("onBeforeSlide.lg.tm",function(){d.animateThumb(d.core.index)}),a(window).on("resize.lg.thumb orientationchange.lg.thumb",function(){setTimeout(function(){d.animateThumb(d.core.index),d.thumbOuterWidth=d.$thumbOuter.width()},200)})},c.prototype.setTranslate=function(a){this.core.$outer.find(".lg-thumb").css({transform:"translate3d(-"+a+"px, 0px, 0px)"})},c.prototype.animateThumb=function(a){var b=this.core.$outer.find(".lg-thumb");if(this.core.s.animateThumb){var c;switch(this.core.s.currentPagerPosition){case"left":c=0;break;case"middle":c=this.thumbOuterWidth/2-this.core.s.thumbWidth/2;break;case"right":c=this.thumbOuterWidth-this.core.s.thumbWidth}this.left=(this.core.s.thumbWidth+this.core.s.thumbMargin)*a-1-c,this.left>this.thumbTotalWidth-this.thumbOuterWidth&&(this.left=this.thumbTotalWidth-this.thumbOuterWidth),this.left<0&&(this.left=0),this.core.lGalleryOn?(b.hasClass("on")||this.core.$outer.find(".lg-thumb").css("transition-duration",this.core.s.speed+"ms"),this.core.doCss()||b.animate({left:-this.left+"px"},this.core.s.speed)):this.core.doCss()||b.css("left",-this.left+"px"),this.setTranslate(this.left)}},c.prototype.enableThumbDrag=function(){var b=this,c=0,d=0,e=!1,f=!1,g=0;b.$thumbOuter.addClass("lg-grab"),b.core.$outer.find(".lg-thumb").on("mousedown.lg.thumb",function(a){b.thumbTotalWidth>b.thumbOuterWidth&&(a.preventDefault(),c=a.pageX,e=!0,b.core.$outer.scrollLeft+=1,b.core.$outer.scrollLeft-=1,b.thumbClickable=!1,b.$thumbOuter.removeClass("lg-grab").addClass("lg-grabbing"))}),a(window).on("mousemove.lg.thumb",function(a){e&&(g=b.left,f=!0,d=a.pageX,b.$thumbOuter.addClass("lg-dragging"),g-=d-c,g>b.thumbTotalWidth-b.thumbOuterWidth&&(g=b.thumbTotalWidth-b.thumbOuterWidth),g<0&&(g=0),b.setTranslate(g))}),a(window).on("mouseup.lg.thumb",function(){f?(f=!1,b.$thumbOuter.removeClass("lg-dragging"),b.left=g,Math.abs(d-c)<b.core.s.swipeThreshold&&(b.thumbClickable=!0)):b.thumbClickable=!0,e&&(e=!1,b.$thumbOuter.removeClass("lg-grabbing").addClass("lg-grab"))})},c.prototype.enableThumbSwipe=function(){var a=this,b=0,c=0,d=!1,e=0;a.core.$outer.find(".lg-thumb").on("touchstart.lg",function(c){a.thumbTotalWidth>a.thumbOuterWidth&&(c.preventDefault(),b=c.originalEvent.targetTouches[0].pageX,a.thumbClickable=!1)}),a.core.$outer.find(".lg-thumb").on("touchmove.lg",function(f){a.thumbTotalWidth>a.thumbOuterWidth&&(f.preventDefault(),c=f.originalEvent.targetTouches[0].pageX,d=!0,a.$thumbOuter.addClass("lg-dragging"),e=a.left,e-=c-b,e>a.thumbTotalWidth-a.thumbOuterWidth&&(e=a.thumbTotalWidth-a.thumbOuterWidth),e<0&&(e=0),a.setTranslate(e))}),a.core.$outer.find(".lg-thumb").on("touchend.lg",function(){a.thumbTotalWidth>a.thumbOuterWidth&&d?(d=!1,a.$thumbOuter.removeClass("lg-dragging"),Math.abs(c-b)<a.core.s.swipeThreshold&&(a.thumbClickable=!0),a.left=e):a.thumbClickable=!0})},c.prototype.toogle=function(){var a=this;a.core.s.toogleThumb&&(a.core.$outer.addClass("lg-can-toggle"),a.$thumbOuter.append('<span class="lg-toogle-thumb lg-icon"></span>'),a.core.$outer.find(".lg-toogle-thumb").on("click.lg",function(){a.core.$outer.toggleClass("lg-thumb-open")}))},c.prototype.thumbkeyPress=function(){var b=this;a(window).on("keydown.lg.thumb",function(a){38===a.keyCode?(a.preventDefault(),b.core.$outer.addClass("lg-thumb-open")):40===a.keyCode&&(a.preventDefault(),b.core.$outer.removeClass("lg-thumb-open"))})},c.prototype.destroy=function(){this.core.s.thumbnail&&this.core.$items.length>1&&(a(window).off("resize.lg.thumb orientationchange.lg.thumb keydown.lg.thumb"),this.$thumbOuter.remove(),this.core.$outer.removeClass("lg-has-thumb"))},a.fn.lightGallery.modules.Thumbnail=c}()});
\ No newline at end of file
diff --git a/resources/lightgallery/modules/lg-video.js b/resources/lightgallery/modules/lg-video.js
deleted file mode 100644
index 7750a2e..0000000
--- a/resources/lightgallery/modules/lg-video.js
+++ /dev/null
@@ -1,331 +0,0 @@
-/*! lg-video - v1.2.1 - 2018-03-08
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2018 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof module === 'object' && module.exports) {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(root["jQuery"]);
-  }
-}(this, function ($) {
-
-(function() {
-    
-        'use strict';
-    
-        var defaults = {
-            videoMaxWidth: '855px',
-
-            autoplayFirstVideo: true,
-
-            youtubePlayerParams: false,
-            vimeoPlayerParams: false,
-            dailymotionPlayerParams: false,
-            vkPlayerParams: false,
-
-            videojs: false,
-            videojsOptions: {}
-        };
-    
-        var Video = function(element) {
-    
-            this.core = $(element).data('lightGallery');
-    
-            this.$el = $(element);
-            this.core.s = $.extend({}, defaults, this.core.s);
-            this.videoLoaded = false;
-    
-            this.init();
-    
-            return this;
-        };
-    
-        Video.prototype.init = function() {
-            var _this = this;
-    
-            // Event triggered when video url found without poster
-            _this.core.$el.on('hasVideo.lg.tm', onHasVideo.bind(this));
-    
-            // Set max width for video
-            _this.core.$el.on('onAferAppendSlide.lg.tm', onAferAppendSlide.bind(this));
-    
-            if (_this.core.doCss() && (_this.core.$items.length > 1) && (_this.core.s.enableSwipe || _this.core.s.enableDrag)) {
-                _this.core.$el.on('onSlideClick.lg.tm', function() {
-                    var $el = _this.core.$slide.eq(_this.core.index);
-                    _this.loadVideoOnclick($el);
-                });
-            } else {
-    
-                // For IE 9 and bellow
-                _this.core.$slide.on('click.lg', function() {
-                    _this.loadVideoOnclick($(this));
-                });
-            }
-    
-            _this.core.$el.on('onBeforeSlide.lg.tm', onBeforeSlide.bind(this));
-    
-            _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex) {
-                _this.core.$slide.eq(prevIndex).removeClass('lg-video-playing');
-            });
-        };
-    
-        Video.prototype.loadVideo = function(src, addClass, noPoster, index, html) {
-            var video = '';
-            var autoplay = 1;
-            var a = '';
-            var isVideo = this.core.isVideo(src, index) || {};
-    
-            // Enable autoplay based on setting for first video if poster doesn't exist
-            if (noPoster) {
-                if (this.videoLoaded) {
-                    autoplay = 0;
-                } else {
-                    autoplay = this.core.s.autoplayFirstVideo ? 1 : 0;
-                }
-            }
-    
-            if (isVideo.youtube) {
-    
-                a = '?wmode=opaque&autoplay=' + autoplay + '&enablejsapi=1';
-                if (this.core.s.youtubePlayerParams) {
-                    a = a + '&' + $.param(this.core.s.youtubePlayerParams);
-                }
-    
-                video = '<iframe class="lg-video-object lg-youtube ' + addClass + '" width="560" height="315" src="//www.youtube.com/embed/' + isVideo.youtube[1] + a + '" frameborder="0" allowfullscreen></iframe>';
-    
-            } else if (isVideo.vimeo) {
-    
-                a = '?autoplay=' + autoplay + '&api=1';
-                if (this.core.s.vimeoPlayerParams) {
-                    a = a + '&' + $.param(this.core.s.vimeoPlayerParams);
-                }
-    
-                video = '<iframe class="lg-video-object lg-vimeo ' + addClass + '" width="560" height="315"  src="//player.vimeo.com/video/' + isVideo.vimeo[1] + a + '" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';
-    
-            } else if (isVideo.dailymotion) {
-    
-                a = '?wmode=opaque&autoplay=' + autoplay + '&api=postMessage';
-                if (this.core.s.dailymotionPlayerParams) {
-                    a = a + '&' + $.param(this.core.s.dailymotionPlayerParams);
-                }
-    
-                video = '<iframe class="lg-video-object lg-dailymotion ' + addClass + '" width="560" height="315" src="//www.dailymotion.com/embed/video/' + isVideo.dailymotion[1] + a + '" frameborder="0" allowfullscreen></iframe>';
-    
-            } else if (isVideo.html5) {
-                var fL = html.substring(0, 1);
-                if (fL === '.' || fL === '#') {
-                    html = $(html).html();
-                }
-    
-                video = html;
-    
-            } else if (isVideo.vk) {
-    
-                a = '&autoplay=' + autoplay;
-                if (this.core.s.vkPlayerParams) {
-                    a = a + '&' + $.param(this.core.s.vkPlayerParams);
-                }
-    
-                video = '<iframe class="lg-video-object lg-vk ' + addClass + '" width="560" height="315" src="//vk.com/video_ext.php?' + isVideo.vk[1] + a + '" frameborder="0" allowfullscreen></iframe>';
-    
-            }
-    
-            return video;
-        };
-
-        Video.prototype.loadVideoOnclick = function($el){
-
-            var _this = this;
-            // check slide has poster
-            if ($el.find('.lg-object').hasClass('lg-has-poster') && $el.find('.lg-object').is(':visible')) {
-
-                // check already video element present
-                if (!$el.hasClass('lg-has-video')) {
-
-                    $el.addClass('lg-video-playing lg-has-video');
-
-                    var _src;
-                    var _html;
-                    var _loadVideo = function(_src, _html) {
-
-                        $el.find('.lg-video').append(_this.loadVideo(_src, '', false, _this.core.index, _html));
-
-                        if (_html) {
-                            if (_this.core.s.videojs) {
-                                try {
-                                    videojs(_this.core.$slide.eq(_this.core.index).find('.lg-html5').get(0), _this.core.s.videojsOptions, function() {
-                                        this.play();
-                                    });
-                                } catch (e) {
-                                    console.error('Make sure you have included videojs');
-                                }
-                            } else {
-                                _this.core.$slide.eq(_this.core.index).find('.lg-html5').get(0).play();
-                            }
-                        }
-
-                    };
-
-                    if (_this.core.s.dynamic) {
-
-                        _src = _this.core.s.dynamicEl[_this.core.index].src;
-                        _html = _this.core.s.dynamicEl[_this.core.index].html;
-
-                        _loadVideo(_src, _html);
-
-                    } else {
-
-                        _src = _this.core.$items.eq(_this.core.index).attr('href') || _this.core.$items.eq(_this.core.index).attr('data-src');
-                        _html = _this.core.$items.eq(_this.core.index).attr('data-html');
-
-                        _loadVideo(_src, _html);
-
-                    }
-
-                    var $tempImg = $el.find('.lg-object');
-                    $el.find('.lg-video').append($tempImg);
-
-                    // @todo loading icon for html5 videos also
-                    // for showing the loading indicator while loading video
-                    if (!$el.find('.lg-video-object').hasClass('lg-html5')) {
-                        $el.removeClass('lg-complete');
-                        $el.find('.lg-video-object').on('load.lg error.lg', function() {
-                            $el.addClass('lg-complete');
-                        });
-                    }
-
-                } else {
-
-                    var youtubePlayer = $el.find('.lg-youtube').get(0);
-                    var vimeoPlayer = $el.find('.lg-vimeo').get(0);
-                    var dailymotionPlayer = $el.find('.lg-dailymotion').get(0);
-                    var html5Player = $el.find('.lg-html5').get(0);
-                    if (youtubePlayer) {
-                        youtubePlayer.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}', '*');
-                    } else if (vimeoPlayer) {
-                        try {
-                            $f(vimeoPlayer).api('play');
-                        } catch (e) {
-                            console.error('Make sure you have included froogaloop2 js');
-                        }
-                    } else if (dailymotionPlayer) {
-                        dailymotionPlayer.contentWindow.postMessage('play', '*');
-
-                    } else if (html5Player) {
-                        if (_this.core.s.videojs) {
-                            try {
-                                videojs(html5Player).play();
-                            } catch (e) {
-                                console.error('Make sure you have included videojs');
-                            }
-                        } else {
-                            html5Player.play();
-                        }
-                    }
-
-                    $el.addClass('lg-video-playing');
-
-                }
-            }
-        };
-    
-        Video.prototype.destroy = function() {
-            this.videoLoaded = false;
-        };
-
-        function onHasVideo(event, index, src, html) {
-            /*jshint validthis:true */
-            var _this = this;
-            _this.core.$slide.eq(index).find('.lg-video').append(_this.loadVideo(src, 'lg-object', true, index, html));
-            if (html) {
-                if (_this.core.s.videojs) {
-                    try {
-                        videojs(_this.core.$slide.eq(index).find('.lg-html5').get(0), _this.core.s.videojsOptions, function() {
-                            if (!_this.videoLoaded && _this.core.s.autoplayFirstVideo) {
-                                this.play();
-                            }
-                        });
-                    } catch (e) {
-                        console.error('Make sure you have included videojs');
-                    }
-                } else {
-                    if(!_this.videoLoaded && _this.core.s.autoplayFirstVideo) {
-                        _this.core.$slide.eq(index).find('.lg-html5').get(0).play();
-                    }
-                }
-            }
-        }
-
-        function onAferAppendSlide(event, index) {
-            /*jshint validthis:true */
-            var $videoCont = this.core.$slide.eq(index).find('.lg-video-cont');
-            if (!$videoCont.hasClass('lg-has-iframe')) {
-                $videoCont.css('max-width', this.core.s.videoMaxWidth);
-                this.videoLoaded = true;
-            }
-        }
-
-        function onBeforeSlide(event, prevIndex, index) {
-            /*jshint validthis:true */
-            var _this = this;
-
-            var $videoSlide = _this.core.$slide.eq(prevIndex);
-            var youtubePlayer = $videoSlide.find('.lg-youtube').get(0);
-            var vimeoPlayer = $videoSlide.find('.lg-vimeo').get(0);
-            var dailymotionPlayer = $videoSlide.find('.lg-dailymotion').get(0);
-            var vkPlayer = $videoSlide.find('.lg-vk').get(0);
-            var html5Player = $videoSlide.find('.lg-html5').get(0);
-            if (youtubePlayer) {
-                youtubePlayer.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}', '*');
-            } else if (vimeoPlayer) {
-                try {
-                    $f(vimeoPlayer).api('pause');
-                } catch (e) {
-                    console.error('Make sure you have included froogaloop2 js');
-                }
-            } else if (dailymotionPlayer) {
-                dailymotionPlayer.contentWindow.postMessage('pause', '*');
-
-            } else if (html5Player) {
-                if (_this.core.s.videojs) {
-                    try {
-                        videojs(html5Player).pause();
-                    } catch (e) {
-                        console.error('Make sure you have included videojs');
-                    }
-                } else {
-                    html5Player.pause();
-                }
-            } if (vkPlayer) {
-                $(vkPlayer).attr('src', $(vkPlayer).attr('src').replace('&autoplay', '&noplay'));
-            }
-
-            var _src;
-            if (_this.core.s.dynamic) {
-                _src = _this.core.s.dynamicEl[index].src;
-            } else {
-                _src = _this.core.$items.eq(index).attr('href') || _this.core.$items.eq(index).attr('data-src');
-
-            }
-
-            var _isVideo = _this.core.isVideo(_src, index) || {};
-            if (_isVideo.youtube || _isVideo.vimeo || _isVideo.dailymotion || _isVideo.vk) {
-                _this.core.$outer.addClass('lg-hide-download');
-            }
-
-        }
-    
-        $.fn.lightGallery.modules.video = Video;
-    
-    })();
-
-}));
diff --git a/resources/lightgallery/modules/lg-video.min.js b/resources/lightgallery/modules/lg-video.min.js
deleted file mode 100644
index 254d316..0000000
--- a/resources/lightgallery/modules/lg-video.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! lg-video - v1.2.1 - 2018-03-08
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2018 Sachin N; Licensed GPLv3 */
-!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){!function(){"use strict";function b(a,b,c,d){var e=this;if(e.core.$slide.eq(b).find(".lg-video").append(e.loadVideo(c,"lg-object",!0,b,d)),d)if(e.core.s.videojs)try{videojs(e.core.$slide.eq(b).find(".lg-html5").get(0),e.core.s.videojsOptions,function(){!e.videoLoaded&&e.core.s.autoplayFirstVideo&&this.play()})}catch(a){console.error("Make sure you have included videojs")}else!e.videoLoaded&&e.core.s.autoplayFirstVideo&&e.core.$slide.eq(b).find(".lg-html5").get(0).play()}function c(a,b){var c=this.core.$slide.eq(b).find(".lg-video-cont");c.hasClass("lg-has-iframe")||(c.css("max-width",this.core.s.videoMaxWidth),this.videoLoaded=!0)}function d(b,c,d){var e=this,f=e.core.$slide.eq(c),g=f.find(".lg-youtube").get(0),h=f.find(".lg-vimeo").get(0),i=f.find(".lg-dailymotion").get(0),j=f.find(".lg-vk").get(0),k=f.find(".lg-html5").get(0);if(g)g.contentWindow.postMessage('{"event":"command","func":"pauseVideo","args":""}',"*");else if(h)try{$f(h).api("pause")}catch(a){console.error("Make sure you have included froogaloop2 js")}else if(i)i.contentWindow.postMessage("pause","*");else if(k)if(e.core.s.videojs)try{videojs(k).pause()}catch(a){console.error("Make sure you have included videojs")}else k.pause();j&&a(j).attr("src",a(j).attr("src").replace("&autoplay","&noplay"));var l;l=e.core.s.dynamic?e.core.s.dynamicEl[d].src:e.core.$items.eq(d).attr("href")||e.core.$items.eq(d).attr("data-src");var m=e.core.isVideo(l,d)||{};(m.youtube||m.vimeo||m.dailymotion||m.vk)&&e.core.$outer.addClass("lg-hide-download")}var e={videoMaxWidth:"855px",autoplayFirstVideo:!0,youtubePlayerParams:!1,vimeoPlayerParams:!1,dailymotionPlayerParams:!1,vkPlayerParams:!1,videojs:!1,videojsOptions:{}},f=function(b){return this.core=a(b).data("lightGallery"),this.$el=a(b),this.core.s=a.extend({},e,this.core.s),this.videoLoaded=!1,this.init(),this};f.prototype.init=function(){var e=this;e.core.$el.on("hasVideo.lg.tm",b.bind(this)),e.core.$el.on("onAferAppendSlide.lg.tm",c.bind(this)),e.core.doCss()&&e.core.$items.length>1&&(e.core.s.enableSwipe||e.core.s.enableDrag)?e.core.$el.on("onSlideClick.lg.tm",function(){var a=e.core.$slide.eq(e.core.index);e.loadVideoOnclick(a)}):e.core.$slide.on("click.lg",function(){e.loadVideoOnclick(a(this))}),e.core.$el.on("onBeforeSlide.lg.tm",d.bind(this)),e.core.$el.on("onAfterSlide.lg.tm",function(a,b){e.core.$slide.eq(b).removeClass("lg-video-playing")})},f.prototype.loadVideo=function(b,c,d,e,f){var g="",h=1,i="",j=this.core.isVideo(b,e)||{};if(d&&(h=this.videoLoaded?0:this.core.s.autoplayFirstVideo?1:0),j.youtube)i="?wmode=opaque&autoplay="+h+"&enablejsapi=1",this.core.s.youtubePlayerParams&&(i=i+"&"+a.param(this.core.s.youtubePlayerParams)),g='<iframe class="lg-video-object lg-youtube '+c+'" width="560" height="315" src="//www.youtube.com/embed/'+j.youtube[1]+i+'" frameborder="0" allowfullscreen></iframe>';else if(j.vimeo)i="?autoplay="+h+"&api=1",this.core.s.vimeoPlayerParams&&(i=i+"&"+a.param(this.core.s.vimeoPlayerParams)),g='<iframe class="lg-video-object lg-vimeo '+c+'" width="560" height="315"  src="//player.vimeo.com/video/'+j.vimeo[1]+i+'" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>';else if(j.dailymotion)i="?wmode=opaque&autoplay="+h+"&api=postMessage",this.core.s.dailymotionPlayerParams&&(i=i+"&"+a.param(this.core.s.dailymotionPlayerParams)),g='<iframe class="lg-video-object lg-dailymotion '+c+'" width="560" height="315" src="//www.dailymotion.com/embed/video/'+j.dailymotion[1]+i+'" frameborder="0" allowfullscreen></iframe>';else if(j.html5){var k=f.substring(0,1);"."!==k&&"#"!==k||(f=a(f).html()),g=f}else j.vk&&(i="&autoplay="+h,this.core.s.vkPlayerParams&&(i=i+"&"+a.param(this.core.s.vkPlayerParams)),g='<iframe class="lg-video-object lg-vk '+c+'" width="560" height="315" src="//vk.com/video_ext.php?'+j.vk[1]+i+'" frameborder="0" allowfullscreen></iframe>');return g},f.prototype.loadVideoOnclick=function(a){var b=this;if(a.find(".lg-object").hasClass("lg-has-poster")&&a.find(".lg-object").is(":visible"))if(a.hasClass("lg-has-video")){var c=a.find(".lg-youtube").get(0),d=a.find(".lg-vimeo").get(0),e=a.find(".lg-dailymotion").get(0),f=a.find(".lg-html5").get(0);if(c)c.contentWindow.postMessage('{"event":"command","func":"playVideo","args":""}',"*");else if(d)try{$f(d).api("play")}catch(a){console.error("Make sure you have included froogaloop2 js")}else if(e)e.contentWindow.postMessage("play","*");else if(f)if(b.core.s.videojs)try{videojs(f).play()}catch(a){console.error("Make sure you have included videojs")}else f.play();a.addClass("lg-video-playing")}else{a.addClass("lg-video-playing lg-has-video");var g,h,i=function(c,d){if(a.find(".lg-video").append(b.loadVideo(c,"",!1,b.core.index,d)),d)if(b.core.s.videojs)try{videojs(b.core.$slide.eq(b.core.index).find(".lg-html5").get(0),b.core.s.videojsOptions,function(){this.play()})}catch(a){console.error("Make sure you have included videojs")}else b.core.$slide.eq(b.core.index).find(".lg-html5").get(0).play()};b.core.s.dynamic?(g=b.core.s.dynamicEl[b.core.index].src,h=b.core.s.dynamicEl[b.core.index].html,i(g,h)):(g=b.core.$items.eq(b.core.index).attr("href")||b.core.$items.eq(b.core.index).attr("data-src"),h=b.core.$items.eq(b.core.index).attr("data-html"),i(g,h));var j=a.find(".lg-object");a.find(".lg-video").append(j),a.find(".lg-video-object").hasClass("lg-html5")||(a.removeClass("lg-complete"),a.find(".lg-video-object").on("load.lg error.lg",function(){a.addClass("lg-complete")}))}},f.prototype.destroy=function(){this.videoLoaded=!1},a.fn.lightGallery.modules.video=f}()});
\ No newline at end of file
diff --git a/resources/lightgallery/modules/lg-zoom.js b/resources/lightgallery/modules/lg-zoom.js
deleted file mode 100644
index 238c163..0000000
--- a/resources/lightgallery/modules/lg-zoom.js
+++ /dev/null
@@ -1,527 +0,0 @@
-/*! lg-zoom - v1.1.0 - 2017-08-08
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-
-(function (root, factory) {
-  if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module unless amdModuleId is set
-    define(['jquery'], function (a0) {
-      return (factory(a0));
-    });
-  } else if (typeof exports === 'object') {
-    // Node. Does not work with strict CommonJS, but
-    // only CommonJS-like environments that support module.exports,
-    // like Node.
-    module.exports = factory(require('jquery'));
-  } else {
-    factory(jQuery);
-  }
-}(this, function ($) {
-
-(function() {
-
-    'use strict';
-
-    var getUseLeft = function() {
-        var useLeft = false;
-        var isChrome = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
-        if (isChrome && parseInt(isChrome[2], 10) < 54) {
-            useLeft = true;
-        }
-
-        return useLeft;
-    };
-
-    var defaults = {
-        scale: 1,
-        zoom: true,
-        actualSize: true,
-        enableZoomAfter: 300,
-        useLeftForZoom: getUseLeft()
-    };
-
-    var Zoom = function(element) {
-
-        this.core = $(element).data('lightGallery');
-
-        this.core.s = $.extend({}, defaults, this.core.s);
-
-        if (this.core.s.zoom && this.core.doCss()) {
-            this.init();
-
-            // Store the zoomable timeout value just to clear it while closing
-            this.zoomabletimeout = false;
-
-            // Set the initial value center
-            this.pageX = $(window).width() / 2;
-            this.pageY = ($(window).height() / 2) + $(window).scrollTop();
-        }
-
-        return this;
-    };
-
-    Zoom.prototype.init = function() {
-
-        var _this = this;
-        var zoomIcons = '<span id="lg-zoom-in" class="lg-icon"></span><span id="lg-zoom-out" class="lg-icon"></span>';
-
-        if (_this.core.s.actualSize) {
-            zoomIcons += '<span id="lg-actual-size" class="lg-icon"></span>';
-        }
-
-        if (_this.core.s.useLeftForZoom) {
-            _this.core.$outer.addClass('lg-use-left-for-zoom');
-        } else {
-            _this.core.$outer.addClass('lg-use-transition-for-zoom');
-        }
-
-        this.core.$outer.find('.lg-toolbar').append(zoomIcons);
-
-        // Add zoomable class
-        _this.core.$el.on('onSlideItemLoad.lg.tm.zoom', function(event, index, delay) {
-
-            // delay will be 0 except first time
-            var _speed = _this.core.s.enableZoomAfter + delay;
-
-            // set _speed value 0 if gallery opened from direct url and if it is first slide
-            if ($('body').hasClass('lg-from-hash') && delay) {
-
-                // will execute only once
-                _speed = 0;
-            } else {
-
-                // Remove lg-from-hash to enable starting animation.
-                $('body').removeClass('lg-from-hash');
-            }
-
-            _this.zoomabletimeout = setTimeout(function() {
-                _this.core.$slide.eq(index).addClass('lg-zoomable');
-            }, _speed + 30);
-        });
-
-        var scale = 1;
-        /**
-         * @desc Image zoom
-         * Translate the wrap and scale the image to get better user experience
-         *
-         * @param {String} scaleVal - Zoom decrement/increment value
-         */
-        var zoom = function(scaleVal) {
-
-            var $image = _this.core.$outer.find('.lg-current .lg-image');
-            var _x;
-            var _y;
-
-            // Find offset manually to avoid issue after zoom
-            var offsetX = ($(window).width() - $image.prop('offsetWidth')) / 2;
-            var offsetY = (($(window).height() - $image.prop('offsetHeight')) / 2) + $(window).scrollTop();
-
-            _x = _this.pageX - offsetX;
-            _y = _this.pageY - offsetY;
-
-            var x = (scaleVal - 1) * (_x);
-            var y = (scaleVal - 1) * (_y);
-
-            $image.css('transform', 'scale3d(' + scaleVal + ', ' + scaleVal + ', 1)').attr('data-scale', scaleVal);
-
-            if (_this.core.s.useLeftForZoom) {
-                $image.parent().css({
-                    left: -x + 'px',
-                    top: -y + 'px'
-                }).attr('data-x', x).attr('data-y', y);
-            } else {
-                $image.parent().css('transform', 'translate3d(-' + x + 'px, -' + y + 'px, 0)').attr('data-x', x).attr('data-y', y);
-            }
-        };
-
-        var callScale = function() {
-            if (scale > 1) {
-                _this.core.$outer.addClass('lg-zoomed');
-            } else {
-                _this.resetZoom();
-            }
-
-            if (scale < 1) {
-                scale = 1;
-            }
-
-            zoom(scale);
-        };
-
-        var actualSize = function(event, $image, index, fromIcon) {
-            var w = $image.prop('offsetWidth');
-            var nw;
-            if (_this.core.s.dynamic) {
-                nw = _this.core.s.dynamicEl[index].width || $image[0].naturalWidth || w;
-            } else {
-                nw = _this.core.$items.eq(index).attr('data-width') || $image[0].naturalWidth || w;
-            }
-
-            var _scale;
-
-            if (_this.core.$outer.hasClass('lg-zoomed')) {
-                scale = 1;
-            } else {
-                if (nw > w) {
-                    _scale = nw / w;
-                    scale = _scale || 2;
-                }
-            }
-
-            if (fromIcon) {
-                _this.pageX = $(window).width() / 2;
-                _this.pageY = ($(window).height() / 2) + $(window).scrollTop();
-            } else {
-                _this.pageX = event.pageX || event.originalEvent.targetTouches[0].pageX;
-                _this.pageY = event.pageY || event.originalEvent.targetTouches[0].pageY;
-            }
-
-            callScale();
-            setTimeout(function() {
-                _this.core.$outer.removeClass('lg-grabbing').addClass('lg-grab');
-            }, 10);
-        };
-
-        var tapped = false;
-
-        // event triggered after appending slide content
-        _this.core.$el.on('onAferAppendSlide.lg.tm.zoom', function(event, index) {
-
-            // Get the current element
-            var $image = _this.core.$slide.eq(index).find('.lg-image');
-
-            $image.on('dblclick', function(event) {
-                actualSize(event, $image, index);
-            });
-
-            $image.on('touchstart', function(event) {
-                if (!tapped) {
-                    tapped = setTimeout(function() {
-                        tapped = null;
-                    }, 300);
-                } else {
-                    clearTimeout(tapped);
-                    tapped = null;
-                    actualSize(event, $image, index);
-                }
-
-                event.preventDefault();
-            });
-
-        });
-
-        // Update zoom on resize and orientationchange
-        $(window).on('resize.lg.zoom scroll.lg.zoom orientationchange.lg.zoom', function() {
-            _this.pageX = $(window).width() / 2;
-            _this.pageY = ($(window).height() / 2) + $(window).scrollTop();
-            zoom(scale);
-        });
-
-        $('#lg-zoom-out').on('click.lg', function() {
-            if (_this.core.$outer.find('.lg-current .lg-image').length) {
-                scale -= _this.core.s.scale;
-                callScale();
-            }
-        });
-
-        $('#lg-zoom-in').on('click.lg', function() {
-            if (_this.core.$outer.find('.lg-current .lg-image').length) {
-                scale += _this.core.s.scale;
-                callScale();
-            }
-        });
-
-        $('#lg-actual-size').on('click.lg', function(event) {
-            actualSize(event, _this.core.$slide.eq(_this.core.index).find('.lg-image'), _this.core.index, true);
-        });
-
-        // Reset zoom on slide change
-        _this.core.$el.on('onBeforeSlide.lg.tm', function() {
-            scale = 1;
-            _this.resetZoom();
-        });
-
-        // Drag option after zoom
-        _this.zoomDrag();
-
-        _this.zoomSwipe();
-
-    };
-
-    // Reset zoom effect
-    Zoom.prototype.resetZoom = function() {
-        this.core.$outer.removeClass('lg-zoomed');
-        this.core.$slide.find('.lg-img-wrap').removeAttr('style data-x data-y');
-        this.core.$slide.find('.lg-image').removeAttr('style data-scale');
-
-        // Reset pagx pagy values to center
-        this.pageX = $(window).width() / 2;
-        this.pageY = ($(window).height() / 2) + $(window).scrollTop();
-    };
-
-    Zoom.prototype.zoomSwipe = function() {
-        var _this = this;
-        var startCoords = {};
-        var endCoords = {};
-        var isMoved = false;
-
-        // Allow x direction drag
-        var allowX = false;
-
-        // Allow Y direction drag
-        var allowY = false;
-
-        _this.core.$slide.on('touchstart.lg', function(e) {
-
-            if (_this.core.$outer.hasClass('lg-zoomed')) {
-                var $image = _this.core.$slide.eq(_this.core.index).find('.lg-object');
-
-                allowY = $image.prop('offsetHeight') * $image.attr('data-scale') > _this.core.$outer.find('.lg').height();
-                allowX = $image.prop('offsetWidth') * $image.attr('data-scale') > _this.core.$outer.find('.lg').width();
-                if ((allowX || allowY)) {
-                    e.preventDefault();
-                    startCoords = {
-                        x: e.originalEvent.targetTouches[0].pageX,
-                        y: e.originalEvent.targetTouches[0].pageY
-                    };
-                }
-            }
-
-        });
-
-        _this.core.$slide.on('touchmove.lg', function(e) {
-
-            if (_this.core.$outer.hasClass('lg-zoomed')) {
-
-                var _$el = _this.core.$slide.eq(_this.core.index).find('.lg-img-wrap');
-                var distanceX;
-                var distanceY;
-
-                e.preventDefault();
-                isMoved = true;
-
-                endCoords = {
-                    x: e.originalEvent.targetTouches[0].pageX,
-                    y: e.originalEvent.targetTouches[0].pageY
-                };
-
-                // reset opacity and transition duration
-                _this.core.$outer.addClass('lg-zoom-dragging');
-
-                if (allowY) {
-                    distanceY = (-Math.abs(_$el.attr('data-y'))) + (endCoords.y - startCoords.y);
-                } else {
-                    distanceY = -Math.abs(_$el.attr('data-y'));
-                }
-
-                if (allowX) {
-                    distanceX = (-Math.abs(_$el.attr('data-x'))) + (endCoords.x - startCoords.x);
-                } else {
-                    distanceX = -Math.abs(_$el.attr('data-x'));
-                }
-
-                if ((Math.abs(endCoords.x - startCoords.x) > 15) || (Math.abs(endCoords.y - startCoords.y) > 15)) {
-
-                    if (_this.core.s.useLeftForZoom) {
-                        _$el.css({
-                            left: distanceX + 'px',
-                            top: distanceY + 'px'
-                        });
-                    } else {
-                        _$el.css('transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');
-                    }
-                }
-
-            }
-
-        });
-
-        _this.core.$slide.on('touchend.lg', function() {
-            if (_this.core.$outer.hasClass('lg-zoomed')) {
-                if (isMoved) {
-                    isMoved = false;
-                    _this.core.$outer.removeClass('lg-zoom-dragging');
-                    _this.touchendZoom(startCoords, endCoords, allowX, allowY);
-
-                }
-            }
-        });
-
-    };
-
-    Zoom.prototype.zoomDrag = function() {
-
-        var _this = this;
-        var startCoords = {};
-        var endCoords = {};
-        var isDraging = false;
-        var isMoved = false;
-
-        // Allow x direction drag
-        var allowX = false;
-
-        // Allow Y direction drag
-        var allowY = false;
-
-        _this.core.$slide.on('mousedown.lg.zoom', function(e) {
-
-            // execute only on .lg-object
-            var $image = _this.core.$slide.eq(_this.core.index).find('.lg-object');
-
-            allowY = $image.prop('offsetHeight') * $image.attr('data-scale') > _this.core.$outer.find('.lg').height();
-            allowX = $image.prop('offsetWidth') * $image.attr('data-scale') > _this.core.$outer.find('.lg').width();
-
-            if (_this.core.$outer.hasClass('lg-zoomed')) {
-                if ($(e.target).hasClass('lg-object') && (allowX || allowY)) {
-                    e.preventDefault();
-                    startCoords = {
-                        x: e.pageX,
-                        y: e.pageY
-                    };
-
-                    isDraging = true;
-
-                    // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
-                    _this.core.$outer.scrollLeft += 1;
-                    _this.core.$outer.scrollLeft -= 1;
-
-                    _this.core.$outer.removeClass('lg-grab').addClass('lg-grabbing');
-                }
-            }
-        });
-
-        $(window).on('mousemove.lg.zoom', function(e) {
-            if (isDraging) {
-                var _$el = _this.core.$slide.eq(_this.core.index).find('.lg-img-wrap');
-                var distanceX;
-                var distanceY;
-
-                isMoved = true;
-                endCoords = {
-                    x: e.pageX,
-                    y: e.pageY
-                };
-
-                // reset opacity and transition duration
-                _this.core.$outer.addClass('lg-zoom-dragging');
-
-                if (allowY) {
-                    distanceY = (-Math.abs(_$el.attr('data-y'))) + (endCoords.y - startCoords.y);
-                } else {
-                    distanceY = -Math.abs(_$el.attr('data-y'));
-                }
-
-                if (allowX) {
-                    distanceX = (-Math.abs(_$el.attr('data-x'))) + (endCoords.x - startCoords.x);
-                } else {
-                    distanceX = -Math.abs(_$el.attr('data-x'));
-                }
-
-                if (_this.core.s.useLeftForZoom) {
-                    _$el.css({
-                        left: distanceX + 'px',
-                        top: distanceY + 'px'
-                    });
-                } else {
-                    _$el.css('transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');
-                }
-            }
-        });
-
-        $(window).on('mouseup.lg.zoom', function(e) {
-
-            if (isDraging) {
-                isDraging = false;
-                _this.core.$outer.removeClass('lg-zoom-dragging');
-
-                // Fix for chrome mouse move on click
-                if (isMoved && ((startCoords.x !== endCoords.x) || (startCoords.y !== endCoords.y))) {
-                    endCoords = {
-                        x: e.pageX,
-                        y: e.pageY
-                    };
-                    _this.touchendZoom(startCoords, endCoords, allowX, allowY);
-
-                }
-
-                isMoved = false;
-            }
-
-            _this.core.$outer.removeClass('lg-grabbing').addClass('lg-grab');
-
-        });
-    };
-
-    Zoom.prototype.touchendZoom = function(startCoords, endCoords, allowX, allowY) {
-
-        var _this = this;
-        var _$el = _this.core.$slide.eq(_this.core.index).find('.lg-img-wrap');
-        var $image = _this.core.$slide.eq(_this.core.index).find('.lg-object');
-        var distanceX = (-Math.abs(_$el.attr('data-x'))) + (endCoords.x - startCoords.x);
-        var distanceY = (-Math.abs(_$el.attr('data-y'))) + (endCoords.y - startCoords.y);
-        var minY = (_this.core.$outer.find('.lg').height() - $image.prop('offsetHeight')) / 2;
-        var maxY = Math.abs(($image.prop('offsetHeight') * Math.abs($image.attr('data-scale'))) - _this.core.$outer.find('.lg').height() + minY);
-        var minX = (_this.core.$outer.find('.lg').width() - $image.prop('offsetWidth')) / 2;
-        var maxX = Math.abs(($image.prop('offsetWidth') * Math.abs($image.attr('data-scale'))) - _this.core.$outer.find('.lg').width() + minX);
-
-        if ((Math.abs(endCoords.x - startCoords.x) > 15) || (Math.abs(endCoords.y - startCoords.y) > 15)) {
-            if (allowY) {
-                if (distanceY <= -maxY) {
-                    distanceY = -maxY;
-                } else if (distanceY >= -minY) {
-                    distanceY = -minY;
-                }
-            }
-
-            if (allowX) {
-                if (distanceX <= -maxX) {
-                    distanceX = -maxX;
-                } else if (distanceX >= -minX) {
-                    distanceX = -minX;
-                }
-            }
-
-            if (allowY) {
-                _$el.attr('data-y', Math.abs(distanceY));
-            } else {
-                distanceY = -Math.abs(_$el.attr('data-y'));
-            }
-
-            if (allowX) {
-                _$el.attr('data-x', Math.abs(distanceX));
-            } else {
-                distanceX = -Math.abs(_$el.attr('data-x'));
-            }
-
-            if (_this.core.s.useLeftForZoom) {
-                _$el.css({
-                    left: distanceX + 'px',
-                    top: distanceY + 'px'
-                });
-            } else {
-                _$el.css('transform', 'translate3d(' + distanceX + 'px, ' + distanceY + 'px, 0)');
-            }
-
-        }
-    };
-
-    Zoom.prototype.destroy = function() {
-
-        var _this = this;
-
-        // Unbind all events added by lightGallery zoom plugin
-        _this.core.$el.off('.lg.zoom');
-        $(window).off('.lg.zoom');
-        _this.core.$slide.off('.lg.zoom');
-        _this.core.$el.off('.lg.tm.zoom');
-        _this.resetZoom();
-        clearTimeout(_this.zoomabletimeout);
-        _this.zoomabletimeout = false;
-    };
-
-    $.fn.lightGallery.modules.zoom = Zoom;
-
-})();
-
-
-}));
diff --git a/resources/lightgallery/modules/lg-zoom.min.js b/resources/lightgallery/modules/lg-zoom.min.js
deleted file mode 100644
index bb603eb..0000000
--- a/resources/lightgallery/modules/lg-zoom.min.js
+++ /dev/null
@@ -1,4 +0,0 @@
-/*! lg-zoom - v1.1.0 - 2017-08-08
-* http://sachinchoolur.github.io/lightGallery
-* Copyright (c) 2017 Sachin N; Licensed GPLv3 */
-!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){!function(){"use strict";var b=function(){var a=!1,b=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);return b&&parseInt(b[2],10)<54&&(a=!0),a},c={scale:1,zoom:!0,actualSize:!0,enableZoomAfter:300,useLeftForZoom:b()},d=function(b){return this.core=a(b).data("lightGallery"),this.core.s=a.extend({},c,this.core.s),this.core.s.zoom&&this.core.doCss()&&(this.init(),this.zoomabletimeout=!1,this.pageX=a(window).width()/2,this.pageY=a(window).height()/2+a(window).scrollTop()),this};d.prototype.init=function(){var b=this,c='<span id="lg-zoom-in" class="lg-icon"></span><span id="lg-zoom-out" class="lg-icon"></span>';b.core.s.actualSize&&(c+='<span id="lg-actual-size" class="lg-icon"></span>'),b.core.s.useLeftForZoom?b.core.$outer.addClass("lg-use-left-for-zoom"):b.core.$outer.addClass("lg-use-transition-for-zoom"),this.core.$outer.find(".lg-toolbar").append(c),b.core.$el.on("onSlideItemLoad.lg.tm.zoom",function(c,d,e){var f=b.core.s.enableZoomAfter+e;a("body").hasClass("lg-from-hash")&&e?f=0:a("body").removeClass("lg-from-hash"),b.zoomabletimeout=setTimeout(function(){b.core.$slide.eq(d).addClass("lg-zoomable")},f+30)});var d=1,e=function(c){var d,e,f=b.core.$outer.find(".lg-current .lg-image"),g=(a(window).width()-f.prop("offsetWidth"))/2,h=(a(window).height()-f.prop("offsetHeight"))/2+a(window).scrollTop();d=b.pageX-g,e=b.pageY-h;var i=(c-1)*d,j=(c-1)*e;f.css("transform","scale3d("+c+", "+c+", 1)").attr("data-scale",c),b.core.s.useLeftForZoom?f.parent().css({left:-i+"px",top:-j+"px"}).attr("data-x",i).attr("data-y",j):f.parent().css("transform","translate3d(-"+i+"px, -"+j+"px, 0)").attr("data-x",i).attr("data-y",j)},f=function(){d>1?b.core.$outer.addClass("lg-zoomed"):b.resetZoom(),d<1&&(d=1),e(d)},g=function(c,e,g,h){var i,j=e.prop("offsetWidth");i=b.core.s.dynamic?b.core.s.dynamicEl[g].width||e[0].naturalWidth||j:b.core.$items.eq(g).attr("data-width")||e[0].naturalWidth||j;var k;b.core.$outer.hasClass("lg-zoomed")?d=1:i>j&&(k=i/j,d=k||2),h?(b.pageX=a(window).width()/2,b.pageY=a(window).height()/2+a(window).scrollTop()):(b.pageX=c.pageX||c.originalEvent.targetTouches[0].pageX,b.pageY=c.pageY||c.originalEvent.targetTouches[0].pageY),f(),setTimeout(function(){b.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")},10)},h=!1;b.core.$el.on("onAferAppendSlide.lg.tm.zoom",function(a,c){var d=b.core.$slide.eq(c).find(".lg-image");d.on("dblclick",function(a){g(a,d,c)}),d.on("touchstart",function(a){h?(clearTimeout(h),h=null,g(a,d,c)):h=setTimeout(function(){h=null},300),a.preventDefault()})}),a(window).on("resize.lg.zoom scroll.lg.zoom orientationchange.lg.zoom",function(){b.pageX=a(window).width()/2,b.pageY=a(window).height()/2+a(window).scrollTop(),e(d)}),a("#lg-zoom-out").on("click.lg",function(){b.core.$outer.find(".lg-current .lg-image").length&&(d-=b.core.s.scale,f())}),a("#lg-zoom-in").on("click.lg",function(){b.core.$outer.find(".lg-current .lg-image").length&&(d+=b.core.s.scale,f())}),a("#lg-actual-size").on("click.lg",function(a){g(a,b.core.$slide.eq(b.core.index).find(".lg-image"),b.core.index,!0)}),b.core.$el.on("onBeforeSlide.lg.tm",function(){d=1,b.resetZoom()}),b.zoomDrag(),b.zoomSwipe()},d.prototype.resetZoom=function(){this.core.$outer.removeClass("lg-zoomed"),this.core.$slide.find(".lg-img-wrap").removeAttr("style data-x data-y"),this.core.$slide.find(".lg-image").removeAttr("style data-scale"),this.pageX=a(window).width()/2,this.pageY=a(window).height()/2+a(window).scrollTop()},d.prototype.zoomSwipe=function(){var a=this,b={},c={},d=!1,e=!1,f=!1;a.core.$slide.on("touchstart.lg",function(c){if(a.core.$outer.hasClass("lg-zoomed")){var d=a.core.$slide.eq(a.core.index).find(".lg-object");f=d.prop("offsetHeight")*d.attr("data-scale")>a.core.$outer.find(".lg").height(),e=d.prop("offsetWidth")*d.attr("data-scale")>a.core.$outer.find(".lg").width(),(e||f)&&(c.preventDefault(),b={x:c.originalEvent.targetTouches[0].pageX,y:c.originalEvent.targetTouches[0].pageY})}}),a.core.$slide.on("touchmove.lg",function(g){if(a.core.$outer.hasClass("lg-zoomed")){var h,i,j=a.core.$slide.eq(a.core.index).find(".lg-img-wrap");g.preventDefault(),d=!0,c={x:g.originalEvent.targetTouches[0].pageX,y:g.originalEvent.targetTouches[0].pageY},a.core.$outer.addClass("lg-zoom-dragging"),i=f?-Math.abs(j.attr("data-y"))+(c.y-b.y):-Math.abs(j.attr("data-y")),h=e?-Math.abs(j.attr("data-x"))+(c.x-b.x):-Math.abs(j.attr("data-x")),(Math.abs(c.x-b.x)>15||Math.abs(c.y-b.y)>15)&&(a.core.s.useLeftForZoom?j.css({left:h+"px",top:i+"px"}):j.css("transform","translate3d("+h+"px, "+i+"px, 0)"))}}),a.core.$slide.on("touchend.lg",function(){a.core.$outer.hasClass("lg-zoomed")&&d&&(d=!1,a.core.$outer.removeClass("lg-zoom-dragging"),a.touchendZoom(b,c,e,f))})},d.prototype.zoomDrag=function(){var b=this,c={},d={},e=!1,f=!1,g=!1,h=!1;b.core.$slide.on("mousedown.lg.zoom",function(d){var f=b.core.$slide.eq(b.core.index).find(".lg-object");h=f.prop("offsetHeight")*f.attr("data-scale")>b.core.$outer.find(".lg").height(),g=f.prop("offsetWidth")*f.attr("data-scale")>b.core.$outer.find(".lg").width(),b.core.$outer.hasClass("lg-zoomed")&&a(d.target).hasClass("lg-object")&&(g||h)&&(d.preventDefault(),c={x:d.pageX,y:d.pageY},e=!0,b.core.$outer.scrollLeft+=1,b.core.$outer.scrollLeft-=1,b.core.$outer.removeClass("lg-grab").addClass("lg-grabbing"))}),a(window).on("mousemove.lg.zoom",function(a){if(e){var i,j,k=b.core.$slide.eq(b.core.index).find(".lg-img-wrap");f=!0,d={x:a.pageX,y:a.pageY},b.core.$outer.addClass("lg-zoom-dragging"),j=h?-Math.abs(k.attr("data-y"))+(d.y-c.y):-Math.abs(k.attr("data-y")),i=g?-Math.abs(k.attr("data-x"))+(d.x-c.x):-Math.abs(k.attr("data-x")),b.core.s.useLeftForZoom?k.css({left:i+"px",top:j+"px"}):k.css("transform","translate3d("+i+"px, "+j+"px, 0)")}}),a(window).on("mouseup.lg.zoom",function(a){e&&(e=!1,b.core.$outer.removeClass("lg-zoom-dragging"),!f||c.x===d.x&&c.y===d.y||(d={x:a.pageX,y:a.pageY},b.touchendZoom(c,d,g,h)),f=!1),b.core.$outer.removeClass("lg-grabbing").addClass("lg-grab")})},d.prototype.touchendZoom=function(a,b,c,d){var e=this,f=e.core.$slide.eq(e.core.index).find(".lg-img-wrap"),g=e.core.$slide.eq(e.core.index).find(".lg-object"),h=-Math.abs(f.attr("data-x"))+(b.x-a.x),i=-Math.abs(f.attr("data-y"))+(b.y-a.y),j=(e.core.$outer.find(".lg").height()-g.prop("offsetHeight"))/2,k=Math.abs(g.prop("offsetHeight")*Math.abs(g.attr("data-scale"))-e.core.$outer.find(".lg").height()+j),l=(e.core.$outer.find(".lg").width()-g.prop("offsetWidth"))/2,m=Math.abs(g.prop("offsetWidth")*Math.abs(g.attr("data-scale"))-e.core.$outer.find(".lg").width()+l);(Math.abs(b.x-a.x)>15||Math.abs(b.y-a.y)>15)&&(d&&(i<=-k?i=-k:i>=-j&&(i=-j)),c&&(h<=-m?h=-m:h>=-l&&(h=-l)),d?f.attr("data-y",Math.abs(i)):i=-Math.abs(f.attr("data-y")),c?f.attr("data-x",Math.abs(h)):h=-Math.abs(f.attr("data-x")),e.core.s.useLeftForZoom?f.css({left:h+"px",top:i+"px"}):f.css("transform","translate3d("+h+"px, "+i+"px, 0)"))},d.prototype.destroy=function(){var b=this;b.core.$el.off(".lg.zoom"),a(window).off(".lg.zoom"),b.core.$slide.off(".lg.zoom"),b.core.$el.off(".lg.tm.zoom"),b.resetZoom(),clearTimeout(b.zoomabletimeout),b.zoomabletimeout=!1},a.fn.lightGallery.modules.zoom=d}()});
\ No newline at end of file
diff --git a/resources/lightgallery/plugins/autoplay/lg-autoplay.es5.js b/resources/lightgallery/plugins/autoplay/lg-autoplay.es5.js
new file mode 100644
index 0000000..b966056
--- /dev/null
+++ b/resources/lightgallery/plugins/autoplay/lg-autoplay.es5.js
@@ -0,0 +1,250 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var autoplaySettings = {
+    autoplay: true,
+    slideShowAutoplay: false,
+    slideShowInterval: 5000,
+    progressBar: true,
+    forceSlideShowAutoplay: false,
+    autoplayControls: true,
+    appendAutoplayControlsTo: '.lg-toolbar',
+    autoplayPluginStrings: {
+        toggleAutoplay: 'Toggle Autoplay',
+    },
+};
+
+/**
+ * Creates the autoplay plugin.
+ * @param {object} element - lightGallery element
+ */
+var Autoplay = /** @class */ (function () {
+    function Autoplay(instance) {
+        this.core = instance;
+        // extend module default settings with lightGallery core settings
+        this.settings = __assign(__assign({}, autoplaySettings), this.core.settings);
+        return this;
+    }
+    Autoplay.prototype.init = function () {
+        var _this = this;
+        if (!this.settings.autoplay) {
+            return;
+        }
+        this.interval = false;
+        // Identify if slide happened from autoplay
+        this.fromAuto = true;
+        // Identify if autoplay canceled from touch/drag
+        this.pausedOnTouchDrag = false;
+        this.pausedOnSlideChange = false;
+        // append autoplay controls
+        if (this.settings.autoplayControls) {
+            this.controls();
+        }
+        // Create progress bar
+        if (this.settings.progressBar) {
+            this.core.outer.append('<div class="lg-progress-bar"><div class="lg-progress"></div></div>');
+        }
+        // Start autoplay
+        if (this.settings.slideShowAutoplay) {
+            this.core.LGel.once(lGEvents.slideItemLoad + ".autoplay", function () {
+                _this.startAutoPlay();
+            });
+        }
+        // cancel interval on touchstart and dragstart
+        this.core.LGel.on(lGEvents.dragStart + ".autoplay touchstart.lg.autoplay", function () {
+            if (_this.interval) {
+                _this.stopAutoPlay();
+                _this.pausedOnTouchDrag = true;
+            }
+        });
+        // restore autoplay if autoplay canceled from touchstart / dragstart
+        this.core.LGel.on(lGEvents.dragEnd + ".autoplay touchend.lg.autoplay", function () {
+            if (!_this.interval && _this.pausedOnTouchDrag) {
+                _this.startAutoPlay();
+                _this.pausedOnTouchDrag = false;
+            }
+        });
+        this.core.LGel.on(lGEvents.beforeSlide + ".autoplay", function () {
+            _this.showProgressBar();
+            if (!_this.fromAuto && _this.interval) {
+                _this.stopAutoPlay();
+                _this.pausedOnSlideChange = true;
+            }
+            else {
+                _this.pausedOnSlideChange = false;
+            }
+            _this.fromAuto = false;
+        });
+        // restore autoplay if autoplay canceled from touchstart / dragstart
+        this.core.LGel.on(lGEvents.afterSlide + ".autoplay", function () {
+            if (_this.pausedOnSlideChange &&
+                !_this.interval &&
+                _this.settings.forceSlideShowAutoplay) {
+                _this.startAutoPlay();
+                _this.pausedOnSlideChange = false;
+            }
+        });
+        // set progress
+        this.showProgressBar();
+    };
+    Autoplay.prototype.showProgressBar = function () {
+        var _this = this;
+        if (this.settings.progressBar && this.fromAuto) {
+            var _$progressBar_1 = this.core.outer.find('.lg-progress-bar');
+            var _$progress_1 = this.core.outer.find('.lg-progress');
+            if (this.interval) {
+                _$progress_1.removeAttr('style');
+                _$progressBar_1.removeClass('lg-start');
+                setTimeout(function () {
+                    _$progress_1.css('transition', 'width ' +
+                        (_this.core.settings.speed +
+                            _this.settings.slideShowInterval) +
+                        'ms ease 0s');
+                    _$progressBar_1.addClass('lg-start');
+                }, 20);
+            }
+        }
+    };
+    // Manage autoplay via play/stop buttons
+    Autoplay.prototype.controls = function () {
+        var _this = this;
+        var _html = "<button aria-label=\"" + this.settings.autoplayPluginStrings['toggleAutoplay'] + "\" type=\"button\" class=\"lg-autoplay-button lg-icon\"></button>";
+        // Append autoplay controls
+        this.core.outer
+            .find(this.settings.appendAutoplayControlsTo)
+            .append(_html);
+        this.core.outer
+            .find('.lg-autoplay-button')
+            .first()
+            .on('click.lg.autoplay', function () {
+            if (_this.core.outer.hasClass('lg-show-autoplay')) {
+                _this.stopAutoPlay();
+            }
+            else {
+                if (!_this.interval) {
+                    _this.startAutoPlay();
+                }
+            }
+        });
+    };
+    // Autostart gallery
+    Autoplay.prototype.startAutoPlay = function () {
+        var _this = this;
+        this.core.outer
+            .find('.lg-progress')
+            .css('transition', 'width ' +
+            (this.core.settings.speed +
+                this.settings.slideShowInterval) +
+            'ms ease 0s');
+        this.core.outer.addClass('lg-show-autoplay');
+        this.core.outer.find('.lg-progress-bar').addClass('lg-start');
+        this.core.LGel.trigger(lGEvents.autoplayStart, {
+            index: this.core.index,
+        });
+        this.interval = setInterval(function () {
+            if (_this.core.index + 1 < _this.core.galleryItems.length) {
+                _this.core.index++;
+            }
+            else {
+                _this.core.index = 0;
+            }
+            _this.core.LGel.trigger(lGEvents.autoplay, {
+                index: _this.core.index,
+            });
+            _this.fromAuto = true;
+            _this.core.slide(_this.core.index, false, false, 'next');
+        }, this.core.settings.speed + this.settings.slideShowInterval);
+    };
+    // cancel Autostart
+    Autoplay.prototype.stopAutoPlay = function () {
+        if (this.interval) {
+            this.core.LGel.trigger(lGEvents.autoplayStop, {
+                index: this.core.index,
+            });
+            this.core.outer.find('.lg-progress').removeAttr('style');
+            this.core.outer.removeClass('lg-show-autoplay');
+            this.core.outer.find('.lg-progress-bar').removeClass('lg-start');
+        }
+        clearInterval(this.interval);
+        this.interval = false;
+    };
+    Autoplay.prototype.closeGallery = function () {
+        this.stopAutoPlay();
+    };
+    Autoplay.prototype.destroy = function () {
+        if (this.settings.autoplay) {
+            this.core.outer.find('.lg-progress-bar').remove();
+        }
+        // Remove all event listeners added by autoplay plugin
+        this.core.LGel.off('.lg.autoplay');
+        this.core.LGel.off('.autoplay');
+    };
+    return Autoplay;
+}());
+
+export default Autoplay;
+//# sourceMappingURL=lg-autoplay.es5.js.map
diff --git a/resources/lightgallery/plugins/autoplay/lg-autoplay.min.js b/resources/lightgallery/plugins/autoplay/lg-autoplay.min.js
new file mode 100644
index 0000000..0e4658f
--- /dev/null
+++ b/resources/lightgallery/plugins/autoplay/lg-autoplay.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(t,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(t="undefined"!=typeof globalThis?globalThis:t||self).lgAutoplay=o()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var o,e=1,s=arguments.length;e<s;e++)for(var r in o=arguments[e])Object.prototype.hasOwnProperty.call(o,r)&&(t[r]=o[r]);return t}).apply(this,arguments)},o="lgSlideItemLoad",e="lgBeforeSlide",s="lgAfterSlide",r="lgDragStart",i="lgDragEnd",a="lgAutoplay",l="lgAutoplayStart",n="lgAutoplayStop",u={autoplay:!0,slideShowAutoplay:!1,slideShowInterval:5e3,progressBar:!0,forceSlideShowAutoplay:!1,autoplayControls:!0,appendAutoplayControlsTo:".lg-toolbar",autoplayPluginStrings:{toggleAutoplay:"Toggle Autoplay"}};return function(){function p(o){return this.core=o,this.settings=t(t({},u),this.core.settings),this}return p.prototype.init=function(){var t=this;this.settings.autoplay&&(this.interval=!1,this.fromAuto=!0,this.pausedOnTouchDrag=!1,this.pausedOnSlideChange=!1,this.settings.autoplayControls&&this.controls(),this.settings.progressBar&&this.core.outer.append('<div class="lg-progress-bar"><div class="lg-progress"></div></div>'),this.settings.slideShowAutoplay&&this.core.LGel.once(o+".autoplay",(function(){t.startAutoPlay()})),this.core.LGel.on(r+".autoplay touchstart.lg.autoplay",(function(){t.interval&&(t.stopAutoPlay(),t.pausedOnTouchDrag=!0)})),this.core.LGel.on(i+".autoplay touchend.lg.autoplay",(function(){!t.interval&&t.pausedOnTouchDrag&&(t.startAutoPlay(),t.pausedOnTouchDrag=!1)})),this.core.LGel.on(e+".autoplay",(function(){t.showProgressBar(),!t.fromAuto&&t.interval?(t.stopAutoPlay(),t.pausedOnSlideChange=!0):t.pausedOnSlideChange=!1,t.fromAuto=!1})),this.core.LGel.on(s+".autoplay",(function(){t.pausedOnSlideChange&&!t.interval&&t.settings.forceSlideShowAutoplay&&(t.startAutoPlay(),t.pausedOnSlideChange=!1)})),this.showProgressBar())},p.prototype.showProgressBar=function(){var t=this;if(this.settings.progressBar&&this.fromAuto){var o=this.core.outer.find(".lg-progress-bar"),e=this.core.outer.find(".lg-progress");this.interval&&(e.removeAttr("style"),o.removeClass("lg-start"),setTimeout((function(){e.css("transition","width "+(t.core.settings.speed+t.settings.slideShowInterval)+"ms ease 0s"),o.addClass("lg-start")}),20))}},p.prototype.controls=function(){var t=this,o='<button aria-label="'+this.settings.autoplayPluginStrings.toggleAutoplay+'" type="button" class="lg-autoplay-button lg-icon"></button>';this.core.outer.find(this.settings.appendAutoplayControlsTo).append(o),this.core.outer.find(".lg-autoplay-button").first().on("click.lg.autoplay",(function(){t.core.outer.hasClass("lg-show-autoplay")?t.stopAutoPlay():t.interval||t.startAutoPlay()}))},p.prototype.startAutoPlay=function(){var t=this;this.core.outer.find(".lg-progress").css("transition","width "+(this.core.settings.speed+this.settings.slideShowInterval)+"ms ease 0s"),this.core.outer.addClass("lg-show-autoplay"),this.core.outer.find(".lg-progress-bar").addClass("lg-start"),this.core.LGel.trigger(l,{index:this.core.index}),this.interval=setInterval((function(){t.core.index+1<t.core.galleryItems.length?t.core.index++:t.core.index=0,t.core.LGel.trigger(a,{index:t.core.index}),t.fromAuto=!0,t.core.slide(t.core.index,!1,!1,"next")}),this.core.settings.speed+this.settings.slideShowInterval)},p.prototype.stopAutoPlay=function(){this.interval&&(this.core.LGel.trigger(n,{index:this.core.index}),this.core.outer.find(".lg-progress").removeAttr("style"),this.core.outer.removeClass("lg-show-autoplay"),this.core.outer.find(".lg-progress-bar").removeClass("lg-start")),clearInterval(this.interval),this.interval=!1},p.prototype.closeGallery=function(){this.stopAutoPlay()},p.prototype.destroy=function(){this.settings.autoplay&&this.core.outer.find(".lg-progress-bar").remove(),this.core.LGel.off(".lg.autoplay"),this.core.LGel.off(".autoplay")},p}()}));
diff --git a/resources/lightgallery/plugins/autoplay/lg-autoplay.umd.js b/resources/lightgallery/plugins/autoplay/lg-autoplay.umd.js
new file mode 100644
index 0000000..8e619df
--- /dev/null
+++ b/resources/lightgallery/plugins/autoplay/lg-autoplay.umd.js
@@ -0,0 +1,258 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgAutoplay = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var autoplaySettings = {
+        autoplay: true,
+        slideShowAutoplay: false,
+        slideShowInterval: 5000,
+        progressBar: true,
+        forceSlideShowAutoplay: false,
+        autoplayControls: true,
+        appendAutoplayControlsTo: '.lg-toolbar',
+        autoplayPluginStrings: {
+            toggleAutoplay: 'Toggle Autoplay',
+        },
+    };
+
+    /**
+     * Creates the autoplay plugin.
+     * @param {object} element - lightGallery element
+     */
+    var Autoplay = /** @class */ (function () {
+        function Autoplay(instance) {
+            this.core = instance;
+            // extend module default settings with lightGallery core settings
+            this.settings = __assign(__assign({}, autoplaySettings), this.core.settings);
+            return this;
+        }
+        Autoplay.prototype.init = function () {
+            var _this = this;
+            if (!this.settings.autoplay) {
+                return;
+            }
+            this.interval = false;
+            // Identify if slide happened from autoplay
+            this.fromAuto = true;
+            // Identify if autoplay canceled from touch/drag
+            this.pausedOnTouchDrag = false;
+            this.pausedOnSlideChange = false;
+            // append autoplay controls
+            if (this.settings.autoplayControls) {
+                this.controls();
+            }
+            // Create progress bar
+            if (this.settings.progressBar) {
+                this.core.outer.append('<div class="lg-progress-bar"><div class="lg-progress"></div></div>');
+            }
+            // Start autoplay
+            if (this.settings.slideShowAutoplay) {
+                this.core.LGel.once(lGEvents.slideItemLoad + ".autoplay", function () {
+                    _this.startAutoPlay();
+                });
+            }
+            // cancel interval on touchstart and dragstart
+            this.core.LGel.on(lGEvents.dragStart + ".autoplay touchstart.lg.autoplay", function () {
+                if (_this.interval) {
+                    _this.stopAutoPlay();
+                    _this.pausedOnTouchDrag = true;
+                }
+            });
+            // restore autoplay if autoplay canceled from touchstart / dragstart
+            this.core.LGel.on(lGEvents.dragEnd + ".autoplay touchend.lg.autoplay", function () {
+                if (!_this.interval && _this.pausedOnTouchDrag) {
+                    _this.startAutoPlay();
+                    _this.pausedOnTouchDrag = false;
+                }
+            });
+            this.core.LGel.on(lGEvents.beforeSlide + ".autoplay", function () {
+                _this.showProgressBar();
+                if (!_this.fromAuto && _this.interval) {
+                    _this.stopAutoPlay();
+                    _this.pausedOnSlideChange = true;
+                }
+                else {
+                    _this.pausedOnSlideChange = false;
+                }
+                _this.fromAuto = false;
+            });
+            // restore autoplay if autoplay canceled from touchstart / dragstart
+            this.core.LGel.on(lGEvents.afterSlide + ".autoplay", function () {
+                if (_this.pausedOnSlideChange &&
+                    !_this.interval &&
+                    _this.settings.forceSlideShowAutoplay) {
+                    _this.startAutoPlay();
+                    _this.pausedOnSlideChange = false;
+                }
+            });
+            // set progress
+            this.showProgressBar();
+        };
+        Autoplay.prototype.showProgressBar = function () {
+            var _this = this;
+            if (this.settings.progressBar && this.fromAuto) {
+                var _$progressBar_1 = this.core.outer.find('.lg-progress-bar');
+                var _$progress_1 = this.core.outer.find('.lg-progress');
+                if (this.interval) {
+                    _$progress_1.removeAttr('style');
+                    _$progressBar_1.removeClass('lg-start');
+                    setTimeout(function () {
+                        _$progress_1.css('transition', 'width ' +
+                            (_this.core.settings.speed +
+                                _this.settings.slideShowInterval) +
+                            'ms ease 0s');
+                        _$progressBar_1.addClass('lg-start');
+                    }, 20);
+                }
+            }
+        };
+        // Manage autoplay via play/stop buttons
+        Autoplay.prototype.controls = function () {
+            var _this = this;
+            var _html = "<button aria-label=\"" + this.settings.autoplayPluginStrings['toggleAutoplay'] + "\" type=\"button\" class=\"lg-autoplay-button lg-icon\"></button>";
+            // Append autoplay controls
+            this.core.outer
+                .find(this.settings.appendAutoplayControlsTo)
+                .append(_html);
+            this.core.outer
+                .find('.lg-autoplay-button')
+                .first()
+                .on('click.lg.autoplay', function () {
+                if (_this.core.outer.hasClass('lg-show-autoplay')) {
+                    _this.stopAutoPlay();
+                }
+                else {
+                    if (!_this.interval) {
+                        _this.startAutoPlay();
+                    }
+                }
+            });
+        };
+        // Autostart gallery
+        Autoplay.prototype.startAutoPlay = function () {
+            var _this = this;
+            this.core.outer
+                .find('.lg-progress')
+                .css('transition', 'width ' +
+                (this.core.settings.speed +
+                    this.settings.slideShowInterval) +
+                'ms ease 0s');
+            this.core.outer.addClass('lg-show-autoplay');
+            this.core.outer.find('.lg-progress-bar').addClass('lg-start');
+            this.core.LGel.trigger(lGEvents.autoplayStart, {
+                index: this.core.index,
+            });
+            this.interval = setInterval(function () {
+                if (_this.core.index + 1 < _this.core.galleryItems.length) {
+                    _this.core.index++;
+                }
+                else {
+                    _this.core.index = 0;
+                }
+                _this.core.LGel.trigger(lGEvents.autoplay, {
+                    index: _this.core.index,
+                });
+                _this.fromAuto = true;
+                _this.core.slide(_this.core.index, false, false, 'next');
+            }, this.core.settings.speed + this.settings.slideShowInterval);
+        };
+        // cancel Autostart
+        Autoplay.prototype.stopAutoPlay = function () {
+            if (this.interval) {
+                this.core.LGel.trigger(lGEvents.autoplayStop, {
+                    index: this.core.index,
+                });
+                this.core.outer.find('.lg-progress').removeAttr('style');
+                this.core.outer.removeClass('lg-show-autoplay');
+                this.core.outer.find('.lg-progress-bar').removeClass('lg-start');
+            }
+            clearInterval(this.interval);
+            this.interval = false;
+        };
+        Autoplay.prototype.closeGallery = function () {
+            this.stopAutoPlay();
+        };
+        Autoplay.prototype.destroy = function () {
+            if (this.settings.autoplay) {
+                this.core.outer.find('.lg-progress-bar').remove();
+            }
+            // Remove all event listeners added by autoplay plugin
+            this.core.LGel.off('.lg.autoplay');
+            this.core.LGel.off('.autoplay');
+        };
+        return Autoplay;
+    }());
+
+    return Autoplay;
+
+})));
+//# sourceMappingURL=lg-autoplay.umd.js.map
diff --git a/resources/lightgallery/plugins/comment/lg-comment.es5.js b/resources/lightgallery/plugins/comment/lg-comment.es5.js
new file mode 100644
index 0000000..a07f5bc
--- /dev/null
+++ b/resources/lightgallery/plugins/comment/lg-comment.es5.js
@@ -0,0 +1,205 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var commentSettings = {
+    commentBox: false,
+    fbComments: false,
+    disqusComments: false,
+    disqusConfig: {
+        title: undefined,
+        language: 'en',
+    },
+    commentsMarkup: '<div id="lg-comment-box" class="lg-comment-box lg-fb-comment-box"><div class="lg-comment-header"><h3 class="lg-comment-title">Leave a comment.</h3><span class="lg-comment-close lg-icon"></span></div><div class="lg-comment-body"></div></div>',
+    commentPluginStrings: {
+        toggleComments: 'Toggle Comments',
+    },
+};
+
+/**
+ * lightGallery comments module
+ * Supports facebook and disqus comments
+ *
+ * @ref - https://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables
+ * @ref - https://github.com/disqus/DISQUS-API-Recipes/blob/master/snippets/js/disqus-reset/disqus_reset.html
+ * @ref - https://css-tricks.com/lazy-loading-disqus-comments/
+ * @ref - https://developers.facebook.com/docs/plugins/comments/#comments-plugin
+ *
+ */
+var CommentBox = /** @class */ (function () {
+    function CommentBox(instance, $LG) {
+        // get lightGallery core plugin instance
+        this.core = instance;
+        this.$LG = $LG;
+        // extend module default settings with lightGallery core settings
+        this.settings = __assign(__assign({}, commentSettings), this.core.settings);
+        return this;
+    }
+    CommentBox.prototype.init = function () {
+        if (!this.settings.commentBox) {
+            return;
+        }
+        this.setMarkup();
+        this.toggleCommentBox();
+        if (this.settings.fbComments) {
+            this.addFbComments();
+        }
+        else if (this.settings.disqusComments) {
+            this.addDisqusComments();
+        }
+    };
+    CommentBox.prototype.setMarkup = function () {
+        this.core.outer.append(this.settings.commentsMarkup +
+            '<div class="lg-comment-overlay"></div>');
+        var commentToggleBtn = "<button type=\"button\" aria-label=\"" + this.settings.commentPluginStrings['toggleComments'] + "\" class=\"lg-comment-toggle lg-icon\"></button>";
+        this.core.$toolbar.append(commentToggleBtn);
+    };
+    CommentBox.prototype.toggleCommentBox = function () {
+        var _this_1 = this;
+        this.core.outer
+            .find('.lg-comment-toggle')
+            .first()
+            .on('click.lg.comment', function () {
+            _this_1.core.outer.toggleClass('lg-comment-active');
+        });
+        this.core.outer
+            .find('.lg-comment-overlay')
+            .first()
+            .on('click.lg.comment', function () {
+            _this_1.core.outer.removeClass('lg-comment-active');
+        });
+        this.core.outer
+            .find('.lg-comment-close')
+            .first()
+            .on('click.lg.comment', function () {
+            _this_1.core.outer.removeClass('lg-comment-active');
+        });
+    };
+    CommentBox.prototype.addFbComments = function () {
+        var _this_1 = this;
+        // eslint-disable-next-line @typescript-eslint/no-this-alias
+        var _this = this;
+        this.core.LGel.on(lGEvents.beforeSlide + ".comment", function (event) {
+            var html = _this_1.core.galleryItems[event.detail.index].fbHtml;
+            _this_1.core.outer.find('.lg-comment-body').html(html);
+        });
+        this.core.LGel.on(lGEvents.afterSlide + ".comment", function () {
+            try {
+                FB.XFBML.parse();
+            }
+            catch (err) {
+                _this.$LG(window).on('fbAsyncInit', function () {
+                    FB.XFBML.parse();
+                });
+            }
+        });
+    };
+    CommentBox.prototype.addDisqusComments = function () {
+        var _this_1 = this;
+        var $disqusThread = this.$LG('#disqus_thread');
+        $disqusThread.remove();
+        this.core.outer
+            .find('.lg-comment-body')
+            .append('<div id="disqus_thread"></div>');
+        this.core.LGel.on(lGEvents.beforeSlide + ".comment", function () {
+            $disqusThread.html('');
+        });
+        this.core.LGel.on(lGEvents.afterSlide + ".comment", function (event) {
+            var index = event.detail.index;
+            // eslint-disable-next-line @typescript-eslint/no-this-alias
+            var _this = _this_1;
+            // DISQUS needs sometime to intialize when lightGallery is opened from direct url(hash plugin).
+            setTimeout(function () {
+                try {
+                    DISQUS.reset({
+                        reload: true,
+                        config: function () {
+                            this.page.identifier =
+                                _this.core.galleryItems[index].disqusIdentifier;
+                            this.page.url =
+                                _this.core.galleryItems[index].disqusURL;
+                            this.page.title =
+                                _this.settings.disqusConfig.title;
+                            this.language =
+                                _this.settings.disqusConfig.language;
+                        },
+                    });
+                }
+                catch (err) {
+                    console.error('Make sure you have included disqus JavaScript code in your document. Ex - https://lg-disqus.disqus.com/admin/install/platforms/universalcode/');
+                }
+            }, _this.core.lGalleryOn ? 0 : 1000);
+        });
+    };
+    CommentBox.prototype.destroy = function () {
+        this.core.LGel.off('.lg.comment');
+        this.core.LGel.off('.comment');
+    };
+    return CommentBox;
+}());
+
+export default CommentBox;
+//# sourceMappingURL=lg-comment.es5.js.map
diff --git a/resources/lightgallery/plugins/comment/lg-comment.min.js b/resources/lightgallery/plugins/comment/lg-comment.min.js
new file mode 100644
index 0000000..cc1e35c
--- /dev/null
+++ b/resources/lightgallery/plugins/comment/lg-comment.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgComment=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,o=1,n=arguments.length;o<n;o++)for(var i in e=arguments[o])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)},e="lgBeforeSlide",o="lgAfterSlide",n={commentBox:!1,fbComments:!1,disqusComments:!1,disqusConfig:{title:void 0,language:"en"},commentsMarkup:'<div id="lg-comment-box" class="lg-comment-box lg-fb-comment-box"><div class="lg-comment-header"><h3 class="lg-comment-title">Leave a comment.</h3><span class="lg-comment-close lg-icon"></span></div><div class="lg-comment-body"></div></div>',commentPluginStrings:{toggleComments:"Toggle Comments"}};return function(){function i(e,o){return this.core=e,this.$LG=o,this.settings=t(t({},n),this.core.settings),this}return i.prototype.init=function(){this.settings.commentBox&&(this.setMarkup(),this.toggleCommentBox(),this.settings.fbComments?this.addFbComments():this.settings.disqusComments&&this.addDisqusComments())},i.prototype.setMarkup=function(){this.core.outer.append(this.settings.commentsMarkup+'<div class="lg-comment-overlay"></div>');var t='<button type="button" aria-label="'+this.settings.commentPluginStrings.toggleComments+'" class="lg-comment-toggle lg-icon"></button>';this.core.$toolbar.append(t)},i.prototype.toggleCommentBox=function(){var t=this;this.core.outer.find(".lg-comment-toggle").first().on("click.lg.comment",(function(){t.core.outer.toggleClass("lg-comment-active")})),this.core.outer.find(".lg-comment-overlay").first().on("click.lg.comment",(function(){t.core.outer.removeClass("lg-comment-active")})),this.core.outer.find(".lg-comment-close").first().on("click.lg.comment",(function(){t.core.outer.removeClass("lg-comment-active")}))},i.prototype.addFbComments=function(){var t=this,n=this;this.core.LGel.on(e+".comment",(function(e){var o=t.core.galleryItems[e.detail.index].fbHtml;t.core.outer.find(".lg-comment-body").html(o)})),this.core.LGel.on(o+".comment",(function(){try{FB.XFBML.parse()}catch(t){n.$LG(window).on("fbAsyncInit",(function(){FB.XFBML.parse()}))}}))},i.prototype.addDisqusComments=function(){var t=this,n=this.$LG("#disqus_thread");n.remove(),this.core.outer.find(".lg-comment-body").append('<div id="disqus_thread"></div>'),this.core.LGel.on(e+".comment",(function(){n.html("")})),this.core.LGel.on(o+".comment",(function(e){var o=e.detail.index,n=t;setTimeout((function(){try{DISQUS.reset({reload:!0,config:function(){this.page.identifier=n.core.galleryItems[o].disqusIdentifier,this.page.url=n.core.galleryItems[o].disqusURL,this.page.title=n.settings.disqusConfig.title,this.language=n.settings.disqusConfig.language}})}catch(t){console.error("Make sure you have included disqus JavaScript code in your document. Ex - https://lg-disqus.disqus.com/admin/install/platforms/universalcode/")}}),n.core.lGalleryOn?0:1e3)}))},i.prototype.destroy=function(){this.core.LGel.off(".lg.comment"),this.core.LGel.off(".comment")},i}()}));
diff --git a/resources/lightgallery/plugins/comment/lg-comment.umd.js b/resources/lightgallery/plugins/comment/lg-comment.umd.js
new file mode 100644
index 0000000..95cc3d1
--- /dev/null
+++ b/resources/lightgallery/plugins/comment/lg-comment.umd.js
@@ -0,0 +1,213 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgComment = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var commentSettings = {
+        commentBox: false,
+        fbComments: false,
+        disqusComments: false,
+        disqusConfig: {
+            title: undefined,
+            language: 'en',
+        },
+        commentsMarkup: '<div id="lg-comment-box" class="lg-comment-box lg-fb-comment-box"><div class="lg-comment-header"><h3 class="lg-comment-title">Leave a comment.</h3><span class="lg-comment-close lg-icon"></span></div><div class="lg-comment-body"></div></div>',
+        commentPluginStrings: {
+            toggleComments: 'Toggle Comments',
+        },
+    };
+
+    /**
+     * lightGallery comments module
+     * Supports facebook and disqus comments
+     *
+     * @ref - https://help.disqus.com/customer/portal/articles/472098-javascript-configuration-variables
+     * @ref - https://github.com/disqus/DISQUS-API-Recipes/blob/master/snippets/js/disqus-reset/disqus_reset.html
+     * @ref - https://css-tricks.com/lazy-loading-disqus-comments/
+     * @ref - https://developers.facebook.com/docs/plugins/comments/#comments-plugin
+     *
+     */
+    var CommentBox = /** @class */ (function () {
+        function CommentBox(instance, $LG) {
+            // get lightGallery core plugin instance
+            this.core = instance;
+            this.$LG = $LG;
+            // extend module default settings with lightGallery core settings
+            this.settings = __assign(__assign({}, commentSettings), this.core.settings);
+            return this;
+        }
+        CommentBox.prototype.init = function () {
+            if (!this.settings.commentBox) {
+                return;
+            }
+            this.setMarkup();
+            this.toggleCommentBox();
+            if (this.settings.fbComments) {
+                this.addFbComments();
+            }
+            else if (this.settings.disqusComments) {
+                this.addDisqusComments();
+            }
+        };
+        CommentBox.prototype.setMarkup = function () {
+            this.core.outer.append(this.settings.commentsMarkup +
+                '<div class="lg-comment-overlay"></div>');
+            var commentToggleBtn = "<button type=\"button\" aria-label=\"" + this.settings.commentPluginStrings['toggleComments'] + "\" class=\"lg-comment-toggle lg-icon\"></button>";
+            this.core.$toolbar.append(commentToggleBtn);
+        };
+        CommentBox.prototype.toggleCommentBox = function () {
+            var _this_1 = this;
+            this.core.outer
+                .find('.lg-comment-toggle')
+                .first()
+                .on('click.lg.comment', function () {
+                _this_1.core.outer.toggleClass('lg-comment-active');
+            });
+            this.core.outer
+                .find('.lg-comment-overlay')
+                .first()
+                .on('click.lg.comment', function () {
+                _this_1.core.outer.removeClass('lg-comment-active');
+            });
+            this.core.outer
+                .find('.lg-comment-close')
+                .first()
+                .on('click.lg.comment', function () {
+                _this_1.core.outer.removeClass('lg-comment-active');
+            });
+        };
+        CommentBox.prototype.addFbComments = function () {
+            var _this_1 = this;
+            // eslint-disable-next-line @typescript-eslint/no-this-alias
+            var _this = this;
+            this.core.LGel.on(lGEvents.beforeSlide + ".comment", function (event) {
+                var html = _this_1.core.galleryItems[event.detail.index].fbHtml;
+                _this_1.core.outer.find('.lg-comment-body').html(html);
+            });
+            this.core.LGel.on(lGEvents.afterSlide + ".comment", function () {
+                try {
+                    FB.XFBML.parse();
+                }
+                catch (err) {
+                    _this.$LG(window).on('fbAsyncInit', function () {
+                        FB.XFBML.parse();
+                    });
+                }
+            });
+        };
+        CommentBox.prototype.addDisqusComments = function () {
+            var _this_1 = this;
+            var $disqusThread = this.$LG('#disqus_thread');
+            $disqusThread.remove();
+            this.core.outer
+                .find('.lg-comment-body')
+                .append('<div id="disqus_thread"></div>');
+            this.core.LGel.on(lGEvents.beforeSlide + ".comment", function () {
+                $disqusThread.html('');
+            });
+            this.core.LGel.on(lGEvents.afterSlide + ".comment", function (event) {
+                var index = event.detail.index;
+                // eslint-disable-next-line @typescript-eslint/no-this-alias
+                var _this = _this_1;
+                // DISQUS needs sometime to intialize when lightGallery is opened from direct url(hash plugin).
+                setTimeout(function () {
+                    try {
+                        DISQUS.reset({
+                            reload: true,
+                            config: function () {
+                                this.page.identifier =
+                                    _this.core.galleryItems[index].disqusIdentifier;
+                                this.page.url =
+                                    _this.core.galleryItems[index].disqusURL;
+                                this.page.title =
+                                    _this.settings.disqusConfig.title;
+                                this.language =
+                                    _this.settings.disqusConfig.language;
+                            },
+                        });
+                    }
+                    catch (err) {
+                        console.error('Make sure you have included disqus JavaScript code in your document. Ex - https://lg-disqus.disqus.com/admin/install/platforms/universalcode/');
+                    }
+                }, _this.core.lGalleryOn ? 0 : 1000);
+            });
+        };
+        CommentBox.prototype.destroy = function () {
+            this.core.LGel.off('.lg.comment');
+            this.core.LGel.off('.comment');
+        };
+        return CommentBox;
+    }());
+
+    return CommentBox;
+
+})));
+//# sourceMappingURL=lg-comment.umd.js.map
diff --git a/resources/lightgallery/plugins/fullscreen/lg-fullscreen.es5.js b/resources/lightgallery/plugins/fullscreen/lg-fullscreen.es5.js
new file mode 100644
index 0000000..370c1be
--- /dev/null
+++ b/resources/lightgallery/plugins/fullscreen/lg-fullscreen.es5.js
@@ -0,0 +1,135 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+var fullscreenSettings = {
+    fullScreen: true,
+    fullscreenPluginStrings: {
+        toggleFullscreen: 'Toggle Fullscreen',
+    },
+};
+
+var FullScreen = /** @class */ (function () {
+    function FullScreen(instance, $LG) {
+        // get lightGallery core plugin instance
+        this.core = instance;
+        this.$LG = $LG;
+        // extend module default settings with lightGallery core settings
+        this.settings = __assign(__assign({}, fullscreenSettings), this.core.settings);
+        return this;
+    }
+    FullScreen.prototype.init = function () {
+        var fullScreen = '';
+        if (this.settings.fullScreen) {
+            // check for fullscreen browser support
+            if (!document.fullscreenEnabled &&
+                !document.webkitFullscreenEnabled &&
+                !document.mozFullScreenEnabled &&
+                !document.msFullscreenEnabled) {
+                return;
+            }
+            else {
+                fullScreen = "<button type=\"button\" aria-label=\"" + this.settings.fullscreenPluginStrings['toggleFullscreen'] + "\" class=\"lg-fullscreen lg-icon\"></button>";
+                this.core.$toolbar.append(fullScreen);
+                this.fullScreen();
+            }
+        }
+    };
+    FullScreen.prototype.isFullScreen = function () {
+        return (document.fullscreenElement ||
+            document.mozFullScreenElement ||
+            document.webkitFullscreenElement ||
+            document.msFullscreenElement);
+    };
+    FullScreen.prototype.requestFullscreen = function () {
+        var el = document.documentElement;
+        if (el.requestFullscreen) {
+            el.requestFullscreen();
+        }
+        else if (el.msRequestFullscreen) {
+            el.msRequestFullscreen();
+        }
+        else if (el.mozRequestFullScreen) {
+            el.mozRequestFullScreen();
+        }
+        else if (el.webkitRequestFullscreen) {
+            el.webkitRequestFullscreen();
+        }
+    };
+    FullScreen.prototype.exitFullscreen = function () {
+        if (document.exitFullscreen) {
+            document.exitFullscreen();
+        }
+        else if (document.msExitFullscreen) {
+            document.msExitFullscreen();
+        }
+        else if (document.mozCancelFullScreen) {
+            document.mozCancelFullScreen();
+        }
+        else if (document.webkitExitFullscreen) {
+            document.webkitExitFullscreen();
+        }
+    };
+    // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode
+    FullScreen.prototype.fullScreen = function () {
+        var _this = this;
+        this.$LG(document).on("fullscreenchange.lg.global" + this.core.lgId + " \n            webkitfullscreenchange.lg.global" + this.core.lgId + " \n            mozfullscreenchange.lg.global" + this.core.lgId + " \n            MSFullscreenChange.lg.global" + this.core.lgId, function () {
+            if (!_this.core.lgOpened)
+                return;
+            _this.core.outer.toggleClass('lg-fullscreen-on');
+        });
+        this.core.outer
+            .find('.lg-fullscreen')
+            .first()
+            .on('click.lg', function () {
+            if (_this.isFullScreen()) {
+                _this.exitFullscreen();
+            }
+            else {
+                _this.requestFullscreen();
+            }
+        });
+    };
+    FullScreen.prototype.closeGallery = function () {
+        // exit from fullscreen if activated
+        if (this.isFullScreen()) {
+            this.exitFullscreen();
+        }
+    };
+    FullScreen.prototype.destroy = function () {
+        this.$LG(document).off("fullscreenchange.lg.global" + this.core.lgId + " \n            webkitfullscreenchange.lg.global" + this.core.lgId + " \n            mozfullscreenchange.lg.global" + this.core.lgId + " \n            MSFullscreenChange.lg.global" + this.core.lgId);
+    };
+    return FullScreen;
+}());
+
+export default FullScreen;
+//# sourceMappingURL=lg-fullscreen.es5.js.map
diff --git a/resources/lightgallery/plugins/fullscreen/lg-fullscreen.min.js b/resources/lightgallery/plugins/fullscreen/lg-fullscreen.min.js
new file mode 100644
index 0000000..1e0f601
--- /dev/null
+++ b/resources/lightgallery/plugins/fullscreen/lg-fullscreen.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(e,l){"object"==typeof exports&&"undefined"!=typeof module?module.exports=l():"function"==typeof define&&define.amd?define(l):(e="undefined"!=typeof globalThis?globalThis:e||self).lgFullscreen=l()}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var l,n=1,t=arguments.length;n<t;n++)for(var c in l=arguments[n])Object.prototype.hasOwnProperty.call(l,c)&&(e[c]=l[c]);return e}).apply(this,arguments)},l={fullScreen:!0,fullscreenPluginStrings:{toggleFullscreen:"Toggle Fullscreen"}};return function(){function n(n,t){return this.core=n,this.$LG=t,this.settings=e(e({},l),this.core.settings),this}return n.prototype.init=function(){var e="";if(this.settings.fullScreen){if(!(document.fullscreenEnabled||document.webkitFullscreenEnabled||document.mozFullScreenEnabled||document.msFullscreenEnabled))return;e='<button type="button" aria-label="'+this.settings.fullscreenPluginStrings.toggleFullscreen+'" class="lg-fullscreen lg-icon"></button>',this.core.$toolbar.append(e),this.fullScreen()}},n.prototype.isFullScreen=function(){return document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement||document.msFullscreenElement},n.prototype.requestFullscreen=function(){var e=document.documentElement;e.requestFullscreen?e.requestFullscreen():e.msRequestFullscreen?e.msRequestFullscreen():e.mozRequestFullScreen?e.mozRequestFullScreen():e.webkitRequestFullscreen&&e.webkitRequestFullscreen()},n.prototype.exitFullscreen=function(){document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen()},n.prototype.fullScreen=function(){var e=this;this.$LG(document).on("fullscreenchange.lg.global"+this.core.lgId+" \n            webkitfullscreenchange.lg.global"+this.core.lgId+" \n            mozfullscreenchange.lg.global"+this.core.lgId+" \n            MSFullscreenChange.lg.global"+this.core.lgId,(function(){e.core.lgOpened&&e.core.outer.toggleClass("lg-fullscreen-on")})),this.core.outer.find(".lg-fullscreen").first().on("click.lg",(function(){e.isFullScreen()?e.exitFullscreen():e.requestFullscreen()}))},n.prototype.closeGallery=function(){this.isFullScreen()&&this.exitFullscreen()},n.prototype.destroy=function(){this.$LG(document).off("fullscreenchange.lg.global"+this.core.lgId+" \n            webkitfullscreenchange.lg.global"+this.core.lgId+" \n            mozfullscreenchange.lg.global"+this.core.lgId+" \n            MSFullscreenChange.lg.global"+this.core.lgId)},n}()}));
diff --git a/resources/lightgallery/plugins/fullscreen/lg-fullscreen.umd.js b/resources/lightgallery/plugins/fullscreen/lg-fullscreen.umd.js
new file mode 100644
index 0000000..09fabdd
--- /dev/null
+++ b/resources/lightgallery/plugins/fullscreen/lg-fullscreen.umd.js
@@ -0,0 +1,143 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgFullscreen = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    var fullscreenSettings = {
+        fullScreen: true,
+        fullscreenPluginStrings: {
+            toggleFullscreen: 'Toggle Fullscreen',
+        },
+    };
+
+    var FullScreen = /** @class */ (function () {
+        function FullScreen(instance, $LG) {
+            // get lightGallery core plugin instance
+            this.core = instance;
+            this.$LG = $LG;
+            // extend module default settings with lightGallery core settings
+            this.settings = __assign(__assign({}, fullscreenSettings), this.core.settings);
+            return this;
+        }
+        FullScreen.prototype.init = function () {
+            var fullScreen = '';
+            if (this.settings.fullScreen) {
+                // check for fullscreen browser support
+                if (!document.fullscreenEnabled &&
+                    !document.webkitFullscreenEnabled &&
+                    !document.mozFullScreenEnabled &&
+                    !document.msFullscreenEnabled) {
+                    return;
+                }
+                else {
+                    fullScreen = "<button type=\"button\" aria-label=\"" + this.settings.fullscreenPluginStrings['toggleFullscreen'] + "\" class=\"lg-fullscreen lg-icon\"></button>";
+                    this.core.$toolbar.append(fullScreen);
+                    this.fullScreen();
+                }
+            }
+        };
+        FullScreen.prototype.isFullScreen = function () {
+            return (document.fullscreenElement ||
+                document.mozFullScreenElement ||
+                document.webkitFullscreenElement ||
+                document.msFullscreenElement);
+        };
+        FullScreen.prototype.requestFullscreen = function () {
+            var el = document.documentElement;
+            if (el.requestFullscreen) {
+                el.requestFullscreen();
+            }
+            else if (el.msRequestFullscreen) {
+                el.msRequestFullscreen();
+            }
+            else if (el.mozRequestFullScreen) {
+                el.mozRequestFullScreen();
+            }
+            else if (el.webkitRequestFullscreen) {
+                el.webkitRequestFullscreen();
+            }
+        };
+        FullScreen.prototype.exitFullscreen = function () {
+            if (document.exitFullscreen) {
+                document.exitFullscreen();
+            }
+            else if (document.msExitFullscreen) {
+                document.msExitFullscreen();
+            }
+            else if (document.mozCancelFullScreen) {
+                document.mozCancelFullScreen();
+            }
+            else if (document.webkitExitFullscreen) {
+                document.webkitExitFullscreen();
+            }
+        };
+        // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode
+        FullScreen.prototype.fullScreen = function () {
+            var _this = this;
+            this.$LG(document).on("fullscreenchange.lg.global" + this.core.lgId + " \n            webkitfullscreenchange.lg.global" + this.core.lgId + " \n            mozfullscreenchange.lg.global" + this.core.lgId + " \n            MSFullscreenChange.lg.global" + this.core.lgId, function () {
+                if (!_this.core.lgOpened)
+                    return;
+                _this.core.outer.toggleClass('lg-fullscreen-on');
+            });
+            this.core.outer
+                .find('.lg-fullscreen')
+                .first()
+                .on('click.lg', function () {
+                if (_this.isFullScreen()) {
+                    _this.exitFullscreen();
+                }
+                else {
+                    _this.requestFullscreen();
+                }
+            });
+        };
+        FullScreen.prototype.closeGallery = function () {
+            // exit from fullscreen if activated
+            if (this.isFullScreen()) {
+                this.exitFullscreen();
+            }
+        };
+        FullScreen.prototype.destroy = function () {
+            this.$LG(document).off("fullscreenchange.lg.global" + this.core.lgId + " \n            webkitfullscreenchange.lg.global" + this.core.lgId + " \n            mozfullscreenchange.lg.global" + this.core.lgId + " \n            MSFullscreenChange.lg.global" + this.core.lgId);
+        };
+        return FullScreen;
+    }());
+
+    return FullScreen;
+
+})));
+//# sourceMappingURL=lg-fullscreen.umd.js.map
diff --git a/resources/lightgallery/plugins/hash/lg-hash.es5.js b/resources/lightgallery/plugins/hash/lg-hash.es5.js
new file mode 100644
index 0000000..da3b154
--- /dev/null
+++ b/resources/lightgallery/plugins/hash/lg-hash.es5.js
@@ -0,0 +1,198 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var hashSettings = {
+    hash: true,
+    galleryId: '1',
+    customSlideName: false,
+};
+
+var Hash = /** @class */ (function () {
+    function Hash(instance, $LG) {
+        // get lightGallery core plugin instance
+        this.core = instance;
+        this.$LG = $LG;
+        // extend module default settings with lightGallery core settings
+        this.settings = __assign(__assign({}, hashSettings), this.core.settings);
+        return this;
+    }
+    Hash.prototype.init = function () {
+        var _this = this;
+        if (!this.settings.hash) {
+            return;
+        }
+        this.oldHash = window.location.hash;
+        setTimeout(function () {
+            _this.buildFromHash();
+        }, 100);
+        // Change hash value on after each slide transition
+        this.core.LGel.on(lGEvents.afterSlide + ".hash", this.onAfterSlide.bind(this));
+        this.core.LGel.on(lGEvents.afterClose + ".hash", this.onCloseAfter.bind(this));
+        // Listen hash change and change the slide according to slide value
+        this.$LG(window).on("hashchange.lg.hash.global" + this.core.lgId, this.onHashchange.bind(this));
+    };
+    Hash.prototype.onAfterSlide = function (event) {
+        var slideName = this.core.galleryItems[event.detail.index].slideName;
+        slideName = this.settings.customSlideName
+            ? slideName || event.detail.index
+            : event.detail.index;
+        if (history.replaceState) {
+            history.replaceState(null, '', window.location.pathname +
+                window.location.search +
+                '#lg=' +
+                this.settings.galleryId +
+                '&slide=' +
+                slideName);
+        }
+        else {
+            window.location.hash =
+                'lg=' + this.settings.galleryId + '&slide=' + slideName;
+        }
+    };
+    /**
+     * Get index of the slide from custom slideName. Has to be a public method. Used in hash plugin
+     * @param {String} hash
+     * @returns {Number} Index of the slide.
+     */
+    Hash.prototype.getIndexFromUrl = function (hash) {
+        if (hash === void 0) { hash = window.location.hash; }
+        var slideName = hash.split('&slide=')[1];
+        var _idx = 0;
+        if (this.settings.customSlideName) {
+            for (var index = 0; index < this.core.galleryItems.length; index++) {
+                var dynamicEl = this.core.galleryItems[index];
+                if (dynamicEl.slideName === slideName) {
+                    _idx = index;
+                    break;
+                }
+            }
+        }
+        else {
+            _idx = parseInt(slideName, 10);
+        }
+        return isNaN(_idx) ? 0 : _idx;
+    };
+    // Build Gallery if gallery id exist in the URL
+    Hash.prototype.buildFromHash = function () {
+        // if dynamic option is enabled execute immediately
+        var _hash = window.location.hash;
+        if (_hash.indexOf('lg=' + this.settings.galleryId) > 0) {
+            // This class is used to remove the initial animation if galleryId present in the URL
+            this.$LG(document.body).addClass('lg-from-hash');
+            var index = this.getIndexFromUrl(_hash);
+            this.core.openGallery(index);
+            return true;
+        }
+    };
+    Hash.prototype.onCloseAfter = function () {
+        // Reset to old hash value
+        if (this.oldHash &&
+            this.oldHash.indexOf('lg=' + this.settings.galleryId) < 0) {
+            if (history.replaceState) {
+                history.replaceState(null, '', this.oldHash);
+            }
+            else {
+                window.location.hash = this.oldHash;
+            }
+        }
+        else {
+            if (history.replaceState) {
+                history.replaceState(null, document.title, window.location.pathname + window.location.search);
+            }
+            else {
+                window.location.hash = '';
+            }
+        }
+    };
+    Hash.prototype.onHashchange = function () {
+        if (!this.core.lgOpened)
+            return;
+        var _hash = window.location.hash;
+        var index = this.getIndexFromUrl(_hash);
+        // it galleryId doesn't exist in the url close the gallery
+        if (_hash.indexOf('lg=' + this.settings.galleryId) > -1) {
+            this.core.slide(index, false, false);
+        }
+        else if (this.core.lGalleryOn) {
+            this.core.closeGallery();
+        }
+    };
+    Hash.prototype.closeGallery = function () {
+        if (this.settings.hash) {
+            this.$LG(document.body).removeClass('lg-from-hash');
+        }
+    };
+    Hash.prototype.destroy = function () {
+        this.core.LGel.off('.lg.hash');
+        this.core.LGel.off('.hash');
+        this.$LG(window).off("hashchange.lg.hash.global" + this.core.lgId);
+    };
+    return Hash;
+}());
+
+export default Hash;
+//# sourceMappingURL=lg-hash.es5.js.map
diff --git a/resources/lightgallery/plugins/hash/lg-hash.min.js b/resources/lightgallery/plugins/hash/lg-hash.min.js
new file mode 100644
index 0000000..eff589e
--- /dev/null
+++ b/resources/lightgallery/plugins/hash/lg-hash.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgHash=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,i=1,o=arguments.length;i<o;i++)for(var s in e=arguments[i])Object.prototype.hasOwnProperty.call(e,s)&&(t[s]=e[s]);return t}).apply(this,arguments)},e="lgAfterSlide",i="lgAfterClose",o={hash:!0,galleryId:"1",customSlideName:!1};return function(){function s(e,i){return this.core=e,this.$LG=i,this.settings=t(t({},o),this.core.settings),this}return s.prototype.init=function(){var t=this;this.settings.hash&&(this.oldHash=window.location.hash,setTimeout((function(){t.buildFromHash()}),100),this.core.LGel.on(e+".hash",this.onAfterSlide.bind(this)),this.core.LGel.on(i+".hash",this.onCloseAfter.bind(this)),this.$LG(window).on("hashchange.lg.hash.global"+this.core.lgId,this.onHashchange.bind(this)))},s.prototype.onAfterSlide=function(t){var e=this.core.galleryItems[t.detail.index].slideName;e=this.settings.customSlideName&&e||t.detail.index,history.replaceState?history.replaceState(null,"",window.location.pathname+window.location.search+"#lg="+this.settings.galleryId+"&slide="+e):window.location.hash="lg="+this.settings.galleryId+"&slide="+e},s.prototype.getIndexFromUrl=function(t){void 0===t&&(t=window.location.hash);var e=t.split("&slide=")[1],i=0;if(this.settings.customSlideName)for(var o=0;o<this.core.galleryItems.length;o++){if(this.core.galleryItems[o].slideName===e){i=o;break}}else i=parseInt(e,10);return isNaN(i)?0:i},s.prototype.buildFromHash=function(){var t=window.location.hash;if(t.indexOf("lg="+this.settings.galleryId)>0){this.$LG(document.body).addClass("lg-from-hash");var e=this.getIndexFromUrl(t);return this.core.openGallery(e),!0}},s.prototype.onCloseAfter=function(){this.oldHash&&this.oldHash.indexOf("lg="+this.settings.galleryId)<0?history.replaceState?history.replaceState(null,"",this.oldHash):window.location.hash=this.oldHash:history.replaceState?history.replaceState(null,document.title,window.location.pathname+window.location.search):window.location.hash=""},s.prototype.onHashchange=function(){if(this.core.lgOpened){var t=window.location.hash,e=this.getIndexFromUrl(t);t.indexOf("lg="+this.settings.galleryId)>-1?this.core.slide(e,!1,!1):this.core.lGalleryOn&&this.core.closeGallery()}},s.prototype.closeGallery=function(){this.settings.hash&&this.$LG(document.body).removeClass("lg-from-hash")},s.prototype.destroy=function(){this.core.LGel.off(".lg.hash"),this.core.LGel.off(".hash"),this.$LG(window).off("hashchange.lg.hash.global"+this.core.lgId)},s}()}));
diff --git a/resources/lightgallery/plugins/hash/lg-hash.umd.js b/resources/lightgallery/plugins/hash/lg-hash.umd.js
new file mode 100644
index 0000000..4a9a4ae
--- /dev/null
+++ b/resources/lightgallery/plugins/hash/lg-hash.umd.js
@@ -0,0 +1,206 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgHash = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var hashSettings = {
+        hash: true,
+        galleryId: '1',
+        customSlideName: false,
+    };
+
+    var Hash = /** @class */ (function () {
+        function Hash(instance, $LG) {
+            // get lightGallery core plugin instance
+            this.core = instance;
+            this.$LG = $LG;
+            // extend module default settings with lightGallery core settings
+            this.settings = __assign(__assign({}, hashSettings), this.core.settings);
+            return this;
+        }
+        Hash.prototype.init = function () {
+            var _this = this;
+            if (!this.settings.hash) {
+                return;
+            }
+            this.oldHash = window.location.hash;
+            setTimeout(function () {
+                _this.buildFromHash();
+            }, 100);
+            // Change hash value on after each slide transition
+            this.core.LGel.on(lGEvents.afterSlide + ".hash", this.onAfterSlide.bind(this));
+            this.core.LGel.on(lGEvents.afterClose + ".hash", this.onCloseAfter.bind(this));
+            // Listen hash change and change the slide according to slide value
+            this.$LG(window).on("hashchange.lg.hash.global" + this.core.lgId, this.onHashchange.bind(this));
+        };
+        Hash.prototype.onAfterSlide = function (event) {
+            var slideName = this.core.galleryItems[event.detail.index].slideName;
+            slideName = this.settings.customSlideName
+                ? slideName || event.detail.index
+                : event.detail.index;
+            if (history.replaceState) {
+                history.replaceState(null, '', window.location.pathname +
+                    window.location.search +
+                    '#lg=' +
+                    this.settings.galleryId +
+                    '&slide=' +
+                    slideName);
+            }
+            else {
+                window.location.hash =
+                    'lg=' + this.settings.galleryId + '&slide=' + slideName;
+            }
+        };
+        /**
+         * Get index of the slide from custom slideName. Has to be a public method. Used in hash plugin
+         * @param {String} hash
+         * @returns {Number} Index of the slide.
+         */
+        Hash.prototype.getIndexFromUrl = function (hash) {
+            if (hash === void 0) { hash = window.location.hash; }
+            var slideName = hash.split('&slide=')[1];
+            var _idx = 0;
+            if (this.settings.customSlideName) {
+                for (var index = 0; index < this.core.galleryItems.length; index++) {
+                    var dynamicEl = this.core.galleryItems[index];
+                    if (dynamicEl.slideName === slideName) {
+                        _idx = index;
+                        break;
+                    }
+                }
+            }
+            else {
+                _idx = parseInt(slideName, 10);
+            }
+            return isNaN(_idx) ? 0 : _idx;
+        };
+        // Build Gallery if gallery id exist in the URL
+        Hash.prototype.buildFromHash = function () {
+            // if dynamic option is enabled execute immediately
+            var _hash = window.location.hash;
+            if (_hash.indexOf('lg=' + this.settings.galleryId) > 0) {
+                // This class is used to remove the initial animation if galleryId present in the URL
+                this.$LG(document.body).addClass('lg-from-hash');
+                var index = this.getIndexFromUrl(_hash);
+                this.core.openGallery(index);
+                return true;
+            }
+        };
+        Hash.prototype.onCloseAfter = function () {
+            // Reset to old hash value
+            if (this.oldHash &&
+                this.oldHash.indexOf('lg=' + this.settings.galleryId) < 0) {
+                if (history.replaceState) {
+                    history.replaceState(null, '', this.oldHash);
+                }
+                else {
+                    window.location.hash = this.oldHash;
+                }
+            }
+            else {
+                if (history.replaceState) {
+                    history.replaceState(null, document.title, window.location.pathname + window.location.search);
+                }
+                else {
+                    window.location.hash = '';
+                }
+            }
+        };
+        Hash.prototype.onHashchange = function () {
+            if (!this.core.lgOpened)
+                return;
+            var _hash = window.location.hash;
+            var index = this.getIndexFromUrl(_hash);
+            // it galleryId doesn't exist in the url close the gallery
+            if (_hash.indexOf('lg=' + this.settings.galleryId) > -1) {
+                this.core.slide(index, false, false);
+            }
+            else if (this.core.lGalleryOn) {
+                this.core.closeGallery();
+            }
+        };
+        Hash.prototype.closeGallery = function () {
+            if (this.settings.hash) {
+                this.$LG(document.body).removeClass('lg-from-hash');
+            }
+        };
+        Hash.prototype.destroy = function () {
+            this.core.LGel.off('.lg.hash');
+            this.core.LGel.off('.hash');
+            this.$LG(window).off("hashchange.lg.hash.global" + this.core.lgId);
+        };
+        return Hash;
+    }());
+
+    return Hash;
+
+})));
+//# sourceMappingURL=lg-hash.umd.js.map
diff --git a/resources/lightgallery/plugins/mediumZoom/lg-medium-zoom.es5.js b/resources/lightgallery/plugins/mediumZoom/lg-medium-zoom.es5.js
new file mode 100644
index 0000000..dc414fc
--- /dev/null
+++ b/resources/lightgallery/plugins/mediumZoom/lg-medium-zoom.es5.js
@@ -0,0 +1,132 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var mediumZoomSettings = {
+    margin: 40,
+    mediumZoom: true,
+    backgroundColor: '#000',
+};
+
+var MediumZoom = /** @class */ (function () {
+    function MediumZoom(instance, $LG) {
+        var _this = this;
+        // get lightGallery core plugin instance
+        this.core = instance;
+        this.$LG = $LG;
+        // Set margin
+        this.core.getMediaContainerPosition = function () {
+            return {
+                top: _this.settings.margin,
+                bottom: _this.settings.margin,
+            };
+        };
+        // Override some of lightGallery default settings
+        var defaultSettings = {
+            controls: false,
+            download: false,
+            counter: false,
+            showCloseIcon: false,
+            extraProps: ['lgBackgroundColor'],
+            closeOnTap: false,
+            enableSwipe: false,
+            enableDrag: false,
+            swipeToClose: false,
+            addClass: this.core.settings.addClass + ' lg-medium-zoom',
+        };
+        this.core.settings = __assign(__assign({}, this.core.settings), defaultSettings);
+        // extend module default settings with lightGallery core settings
+        this.settings = __assign(__assign(__assign({}, mediumZoomSettings), this.core.settings), defaultSettings);
+        return this;
+    }
+    MediumZoom.prototype.toggleItemClass = function () {
+        for (var index = 0; index < this.core.items.length; index++) {
+            var $element = this.$LG(this.core.items[index]);
+            $element.toggleClass('lg-medium-zoom-item');
+        }
+    };
+    MediumZoom.prototype.init = function () {
+        var _this = this;
+        if (!this.settings.mediumZoom) {
+            return;
+        }
+        this.core.LGel.on(lGEvents.beforeOpen + ".medium", function () {
+            _this.core.$backdrop.css('background-color', _this.core.galleryItems[_this.core.index].lgBackgroundColor ||
+                _this.settings.backgroundColor);
+        });
+        this.toggleItemClass();
+        this.core.outer.on('click.lg.medium', function () {
+            _this.core.closeGallery();
+        });
+    };
+    MediumZoom.prototype.destroy = function () {
+        this.toggleItemClass();
+    };
+    return MediumZoom;
+}());
+
+export default MediumZoom;
+//# sourceMappingURL=lg-medium-zoom.es5.js.map
diff --git a/resources/lightgallery/plugins/mediumZoom/lg-medium-zoom.min.js b/resources/lightgallery/plugins/mediumZoom/lg-medium-zoom.min.js
new file mode 100644
index 0000000..53de16c
--- /dev/null
+++ b/resources/lightgallery/plugins/mediumZoom/lg-medium-zoom.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(o,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(o="undefined"!=typeof globalThis?globalThis:o||self).lgMediumZoom=t()}(this,(function(){"use strict";var o=function(){return(o=Object.assign||function(o){for(var t,e=1,i=arguments.length;e<i;e++)for(var n in t=arguments[e])Object.prototype.hasOwnProperty.call(t,n)&&(o[n]=t[n]);return o}).apply(this,arguments)},t="lgBeforeOpen",e={margin:40,mediumZoom:!0,backgroundColor:"#000"};return function(){function i(t,i){var n=this;this.core=t,this.$LG=i,this.core.getMediaContainerPosition=function(){return{top:n.settings.margin,bottom:n.settings.margin}};var s={controls:!1,download:!1,counter:!1,showCloseIcon:!1,extraProps:["lgBackgroundColor"],closeOnTap:!1,enableSwipe:!1,enableDrag:!1,swipeToClose:!1,addClass:this.core.settings.addClass+" lg-medium-zoom"};return this.core.settings=o(o({},this.core.settings),s),this.settings=o(o(o({},e),this.core.settings),s),this}return i.prototype.toggleItemClass=function(){for(var o=0;o<this.core.items.length;o++){this.$LG(this.core.items[o]).toggleClass("lg-medium-zoom-item")}},i.prototype.init=function(){var o=this;this.settings.mediumZoom&&(this.core.LGel.on(t+".medium",(function(){o.core.$backdrop.css("background-color",o.core.galleryItems[o.core.index].lgBackgroundColor||o.settings.backgroundColor)})),this.toggleItemClass(),this.core.outer.on("click.lg.medium",(function(){o.core.closeGallery()})))},i.prototype.destroy=function(){this.toggleItemClass()},i}()}));
diff --git a/resources/lightgallery/plugins/mediumZoom/lg-medium-zoom.umd.js b/resources/lightgallery/plugins/mediumZoom/lg-medium-zoom.umd.js
new file mode 100644
index 0000000..12bbde1
--- /dev/null
+++ b/resources/lightgallery/plugins/mediumZoom/lg-medium-zoom.umd.js
@@ -0,0 +1,140 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgMediumZoom = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var mediumZoomSettings = {
+        margin: 40,
+        mediumZoom: true,
+        backgroundColor: '#000',
+    };
+
+    var MediumZoom = /** @class */ (function () {
+        function MediumZoom(instance, $LG) {
+            var _this = this;
+            // get lightGallery core plugin instance
+            this.core = instance;
+            this.$LG = $LG;
+            // Set margin
+            this.core.getMediaContainerPosition = function () {
+                return {
+                    top: _this.settings.margin,
+                    bottom: _this.settings.margin,
+                };
+            };
+            // Override some of lightGallery default settings
+            var defaultSettings = {
+                controls: false,
+                download: false,
+                counter: false,
+                showCloseIcon: false,
+                extraProps: ['lgBackgroundColor'],
+                closeOnTap: false,
+                enableSwipe: false,
+                enableDrag: false,
+                swipeToClose: false,
+                addClass: this.core.settings.addClass + ' lg-medium-zoom',
+            };
+            this.core.settings = __assign(__assign({}, this.core.settings), defaultSettings);
+            // extend module default settings with lightGallery core settings
+            this.settings = __assign(__assign(__assign({}, mediumZoomSettings), this.core.settings), defaultSettings);
+            return this;
+        }
+        MediumZoom.prototype.toggleItemClass = function () {
+            for (var index = 0; index < this.core.items.length; index++) {
+                var $element = this.$LG(this.core.items[index]);
+                $element.toggleClass('lg-medium-zoom-item');
+            }
+        };
+        MediumZoom.prototype.init = function () {
+            var _this = this;
+            if (!this.settings.mediumZoom) {
+                return;
+            }
+            this.core.LGel.on(lGEvents.beforeOpen + ".medium", function () {
+                _this.core.$backdrop.css('background-color', _this.core.galleryItems[_this.core.index].lgBackgroundColor ||
+                    _this.settings.backgroundColor);
+            });
+            this.toggleItemClass();
+            this.core.outer.on('click.lg.medium', function () {
+                _this.core.closeGallery();
+            });
+        };
+        MediumZoom.prototype.destroy = function () {
+            this.toggleItemClass();
+        };
+        return MediumZoom;
+    }());
+
+    return MediumZoom;
+
+})));
+//# sourceMappingURL=lg-medium-zoom.umd.js.map
diff --git a/resources/lightgallery/plugins/pager/lg-pager.es5.js b/resources/lightgallery/plugins/pager/lg-pager.es5.js
new file mode 100644
index 0000000..3908575
--- /dev/null
+++ b/resources/lightgallery/plugins/pager/lg-pager.es5.js
@@ -0,0 +1,139 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var pagerSettings = {
+    pager: true,
+};
+
+var Pager = /** @class */ (function () {
+    function Pager(instance, $LG) {
+        // get lightGallery core plugin instance
+        this.core = instance;
+        this.$LG = $LG;
+        // extend module default settings with lightGallery core settings
+        this.settings = __assign(__assign({}, pagerSettings), this.core.settings);
+        return this;
+    }
+    Pager.prototype.getPagerHtml = function (items) {
+        var pagerList = '';
+        for (var i = 0; i < items.length; i++) {
+            pagerList += "<span  data-lg-item-id=\"" + i + "\" class=\"lg-pager-cont\"> \n                    <span data-lg-item-id=\"" + i + "\" class=\"lg-pager\"></span>\n                    <div class=\"lg-pager-thumb-cont\"><span class=\"lg-caret\"></span> <img src=\"" + items[i].thumb + "\" /></div>\n                    </span>";
+        }
+        return pagerList;
+    };
+    Pager.prototype.init = function () {
+        var _this = this;
+        if (!this.settings.pager) {
+            return;
+        }
+        var timeout;
+        this.core.$lgComponents.prepend('<div class="lg-pager-outer"></div>');
+        var $pagerOuter = this.core.outer.find('.lg-pager-outer');
+        $pagerOuter.html(this.getPagerHtml(this.core.galleryItems));
+        // @todo enable click
+        $pagerOuter.first().on('click.lg touchend.lg', function (event) {
+            var $target = _this.$LG(event.target);
+            if (!$target.hasAttribute('data-lg-item-id')) {
+                return;
+            }
+            var index = parseInt($target.attr('data-lg-item-id'));
+            _this.core.slide(index, false, true, false);
+        });
+        $pagerOuter.first().on('mouseover.lg', function () {
+            clearTimeout(timeout);
+            $pagerOuter.addClass('lg-pager-hover');
+        });
+        $pagerOuter.first().on('mouseout.lg', function () {
+            timeout = setTimeout(function () {
+                $pagerOuter.removeClass('lg-pager-hover');
+            });
+        });
+        this.core.LGel.on(lGEvents.beforeSlide + ".pager", function (event) {
+            var index = event.detail.index;
+            _this.manageActiveClass.call(_this, index);
+        });
+        this.core.LGel.on(lGEvents.updateSlides + ".pager", function () {
+            $pagerOuter.empty();
+            $pagerOuter.html(_this.getPagerHtml(_this.core.galleryItems));
+            _this.manageActiveClass(_this.core.index);
+        });
+    };
+    Pager.prototype.manageActiveClass = function (index) {
+        var $pagerCont = this.core.outer.find('.lg-pager-cont');
+        $pagerCont.removeClass('lg-pager-active');
+        $pagerCont.eq(index).addClass('lg-pager-active');
+    };
+    Pager.prototype.destroy = function () {
+        this.core.outer.find('.lg-pager-outer').remove();
+        this.core.LGel.off('.lg.pager');
+        this.core.LGel.off('.pager');
+    };
+    return Pager;
+}());
+
+export default Pager;
+//# sourceMappingURL=lg-pager.es5.js.map
diff --git a/resources/lightgallery/plugins/pager/lg-pager.min.js b/resources/lightgallery/plugins/pager/lg-pager.min.js
new file mode 100644
index 0000000..7a856f1
--- /dev/null
+++ b/resources/lightgallery/plugins/pager/lg-pager.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).lgPager=t()}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var t,r=1,o=arguments.length;r<o;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},t="lgUpdateSlides",r="lgBeforeSlide",o={pager:!0};return function(){function i(t,r){return this.core=t,this.$LG=r,this.settings=e(e({},o),this.core.settings),this}return i.prototype.getPagerHtml=function(e){for(var t="",r=0;r<e.length;r++)t+='<span  data-lg-item-id="'+r+'" class="lg-pager-cont"> \n                    <span data-lg-item-id="'+r+'" class="lg-pager"></span>\n                    <div class="lg-pager-thumb-cont"><span class="lg-caret"></span> <img src="'+e[r].thumb+'" /></div>\n                    </span>';return t},i.prototype.init=function(){var e=this;if(this.settings.pager){var o;this.core.$lgComponents.prepend('<div class="lg-pager-outer"></div>');var i=this.core.outer.find(".lg-pager-outer");i.html(this.getPagerHtml(this.core.galleryItems)),i.first().on("click.lg touchend.lg",(function(t){var r=e.$LG(t.target);if(r.hasAttribute("data-lg-item-id")){var o=parseInt(r.attr("data-lg-item-id"));e.core.slide(o,!1,!0,!1)}})),i.first().on("mouseover.lg",(function(){clearTimeout(o),i.addClass("lg-pager-hover")})),i.first().on("mouseout.lg",(function(){o=setTimeout((function(){i.removeClass("lg-pager-hover")}))})),this.core.LGel.on(r+".pager",(function(t){var r=t.detail.index;e.manageActiveClass.call(e,r)})),this.core.LGel.on(t+".pager",(function(){i.empty(),i.html(e.getPagerHtml(e.core.galleryItems)),e.manageActiveClass(e.core.index)}))}},i.prototype.manageActiveClass=function(e){var t=this.core.outer.find(".lg-pager-cont");t.removeClass("lg-pager-active"),t.eq(e).addClass("lg-pager-active")},i.prototype.destroy=function(){this.core.outer.find(".lg-pager-outer").remove(),this.core.LGel.off(".lg.pager"),this.core.LGel.off(".pager")},i}()}));
diff --git a/resources/lightgallery/plugins/pager/lg-pager.umd.js b/resources/lightgallery/plugins/pager/lg-pager.umd.js
new file mode 100644
index 0000000..0d13d80
--- /dev/null
+++ b/resources/lightgallery/plugins/pager/lg-pager.umd.js
@@ -0,0 +1,147 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgPager = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var pagerSettings = {
+        pager: true,
+    };
+
+    var Pager = /** @class */ (function () {
+        function Pager(instance, $LG) {
+            // get lightGallery core plugin instance
+            this.core = instance;
+            this.$LG = $LG;
+            // extend module default settings with lightGallery core settings
+            this.settings = __assign(__assign({}, pagerSettings), this.core.settings);
+            return this;
+        }
+        Pager.prototype.getPagerHtml = function (items) {
+            var pagerList = '';
+            for (var i = 0; i < items.length; i++) {
+                pagerList += "<span  data-lg-item-id=\"" + i + "\" class=\"lg-pager-cont\"> \n                    <span data-lg-item-id=\"" + i + "\" class=\"lg-pager\"></span>\n                    <div class=\"lg-pager-thumb-cont\"><span class=\"lg-caret\"></span> <img src=\"" + items[i].thumb + "\" /></div>\n                    </span>";
+            }
+            return pagerList;
+        };
+        Pager.prototype.init = function () {
+            var _this = this;
+            if (!this.settings.pager) {
+                return;
+            }
+            var timeout;
+            this.core.$lgComponents.prepend('<div class="lg-pager-outer"></div>');
+            var $pagerOuter = this.core.outer.find('.lg-pager-outer');
+            $pagerOuter.html(this.getPagerHtml(this.core.galleryItems));
+            // @todo enable click
+            $pagerOuter.first().on('click.lg touchend.lg', function (event) {
+                var $target = _this.$LG(event.target);
+                if (!$target.hasAttribute('data-lg-item-id')) {
+                    return;
+                }
+                var index = parseInt($target.attr('data-lg-item-id'));
+                _this.core.slide(index, false, true, false);
+            });
+            $pagerOuter.first().on('mouseover.lg', function () {
+                clearTimeout(timeout);
+                $pagerOuter.addClass('lg-pager-hover');
+            });
+            $pagerOuter.first().on('mouseout.lg', function () {
+                timeout = setTimeout(function () {
+                    $pagerOuter.removeClass('lg-pager-hover');
+                });
+            });
+            this.core.LGel.on(lGEvents.beforeSlide + ".pager", function (event) {
+                var index = event.detail.index;
+                _this.manageActiveClass.call(_this, index);
+            });
+            this.core.LGel.on(lGEvents.updateSlides + ".pager", function () {
+                $pagerOuter.empty();
+                $pagerOuter.html(_this.getPagerHtml(_this.core.galleryItems));
+                _this.manageActiveClass(_this.core.index);
+            });
+        };
+        Pager.prototype.manageActiveClass = function (index) {
+            var $pagerCont = this.core.outer.find('.lg-pager-cont');
+            $pagerCont.removeClass('lg-pager-active');
+            $pagerCont.eq(index).addClass('lg-pager-active');
+        };
+        Pager.prototype.destroy = function () {
+            this.core.outer.find('.lg-pager-outer').remove();
+            this.core.LGel.off('.lg.pager');
+            this.core.LGel.off('.pager');
+        };
+        return Pager;
+    }());
+
+    return Pager;
+
+})));
+//# sourceMappingURL=lg-pager.umd.js.map
diff --git a/resources/lightgallery/plugins/relativeCaption/lg-relative-caption.es5.js b/resources/lightgallery/plugins/relativeCaption/lg-relative-caption.es5.js
new file mode 100644
index 0000000..14f7f29
--- /dev/null
+++ b/resources/lightgallery/plugins/relativeCaption/lg-relative-caption.es5.js
@@ -0,0 +1,154 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var relativeCaptionSettings = {
+    relativeCaption: false,
+};
+
+/**
+ * lightGallery caption for placing captions relative to the image
+ */
+var RelativeCaption = /** @class */ (function () {
+    function RelativeCaption(instance) {
+        // get lightGallery core plugin instance
+        this.core = instance;
+        // Override some of lightGallery default settings
+        var defaultSettings = {
+            addClass: this.core.settings.addClass + ' lg-relative-caption',
+        };
+        this.core.settings = __assign(__assign({}, this.core.settings), defaultSettings);
+        // extend module default settings with lightGallery core settings
+        this.settings = __assign(__assign(__assign({}, relativeCaptionSettings), this.core.settings), defaultSettings);
+        return this;
+    }
+    RelativeCaption.prototype.init = function () {
+        var _this = this;
+        if (!this.settings.relativeCaption) {
+            return;
+        }
+        this.core.LGel.on(lGEvents.slideItemLoad + ".caption", function (event) {
+            var _a = event.detail, index = _a.index, delay = _a.delay;
+            setTimeout(function () {
+                if (index === _this.core.index) {
+                    _this.setRelativeCaption(index);
+                }
+            }, delay);
+        });
+        this.core.LGel.on(lGEvents.afterSlide + ".caption", function (event) {
+            var index = event.detail.index;
+            setTimeout(function () {
+                var slide = _this.core.getSlideItem(index);
+                if (slide.hasClass('lg-complete')) {
+                    _this.setRelativeCaption(index);
+                }
+            });
+        });
+        this.core.LGel.on(lGEvents.beforeSlide + ".caption", function (event) {
+            var index = event.detail.index;
+            setTimeout(function () {
+                var slide = _this.core.getSlideItem(index);
+                slide.removeClass('lg-show-caption');
+            });
+        });
+        this.core.LGel.on(lGEvents.containerResize + ".caption", function (event) {
+            _this.setRelativeCaption(_this.core.index);
+        });
+    };
+    RelativeCaption.prototype.setCaptionStyle = function (index, rect, slideWrapRect) {
+        var $subHtmlInner = this.core
+            .getSlideItem(index)
+            .find('.lg-relative-caption-item');
+        var $subHtml = this.core.getSlideItem(index).find('.lg-sub-html');
+        $subHtml.css('width', rect.width + "px").css('left', rect.left + "px");
+        var subHtmlRect = $subHtmlInner.get().getBoundingClientRect();
+        var bottom = slideWrapRect.bottom - rect.bottom - subHtmlRect.height;
+        $subHtml.css('top', "auto").css('bottom', Math.max(bottom, 0) + "px");
+    };
+    RelativeCaption.prototype.setRelativeCaption = function (index) {
+        var slide = this.core.getSlideItem(index);
+        if (slide.hasClass('lg-current')) {
+            var rect = this.core
+                .getSlideItem(index)
+                .find('.lg-object')
+                .get()
+                .getBoundingClientRect();
+            var slideWrapRect = this.core
+                .getSlideItem(index)
+                .get()
+                .getBoundingClientRect();
+            this.setCaptionStyle(index, rect, slideWrapRect);
+            slide.addClass('lg-show-caption');
+        }
+    };
+    RelativeCaption.prototype.destroy = function () {
+        this.core.LGel.off('.caption');
+    };
+    return RelativeCaption;
+}());
+
+export default RelativeCaption;
+//# sourceMappingURL=lg-relative-caption.es5.js.map
diff --git a/resources/lightgallery/plugins/relativeCaption/lg-relative-caption.min.js b/resources/lightgallery/plugins/relativeCaption/lg-relative-caption.min.js
new file mode 100644
index 0000000..b08ccfe
--- /dev/null
+++ b/resources/lightgallery/plugins/relativeCaption/lg-relative-caption.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgRelativeCaption=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,i=1,o=arguments.length;i<o;i++)for(var n in e=arguments[i])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}).apply(this,arguments)},e="lgContainerResize",i="lgSlideItemLoad",o="lgBeforeSlide",n="lgAfterSlide",s={relativeCaption:!1};return function(){function l(e){this.core=e;var i={addClass:this.core.settings.addClass+" lg-relative-caption"};return this.core.settings=t(t({},this.core.settings),i),this.settings=t(t(t({},s),this.core.settings),i),this}return l.prototype.init=function(){var t=this;this.settings.relativeCaption&&(this.core.LGel.on(i+".caption",(function(e){var i=e.detail,o=i.index,n=i.delay;setTimeout((function(){o===t.core.index&&t.setRelativeCaption(o)}),n)})),this.core.LGel.on(n+".caption",(function(e){var i=e.detail.index;setTimeout((function(){t.core.getSlideItem(i).hasClass("lg-complete")&&t.setRelativeCaption(i)}))})),this.core.LGel.on(o+".caption",(function(e){var i=e.detail.index;setTimeout((function(){t.core.getSlideItem(i).removeClass("lg-show-caption")}))})),this.core.LGel.on(e+".caption",(function(e){t.setRelativeCaption(t.core.index)})))},l.prototype.setCaptionStyle=function(t,e,i){var o=this.core.getSlideItem(t).find(".lg-relative-caption-item"),n=this.core.getSlideItem(t).find(".lg-sub-html");n.css("width",e.width+"px").css("left",e.left+"px");var s=o.get().getBoundingClientRect(),l=i.bottom-e.bottom-s.height;n.css("top","auto").css("bottom",Math.max(l,0)+"px")},l.prototype.setRelativeCaption=function(t){var e=this.core.getSlideItem(t);if(e.hasClass("lg-current")){var i=this.core.getSlideItem(t).find(".lg-object").get().getBoundingClientRect(),o=this.core.getSlideItem(t).get().getBoundingClientRect();this.setCaptionStyle(t,i,o),e.addClass("lg-show-caption")}},l.prototype.destroy=function(){this.core.LGel.off(".caption")},l}()}));
diff --git a/resources/lightgallery/plugins/relativeCaption/lg-relative-caption.umd.js b/resources/lightgallery/plugins/relativeCaption/lg-relative-caption.umd.js
new file mode 100644
index 0000000..61e3f7d
--- /dev/null
+++ b/resources/lightgallery/plugins/relativeCaption/lg-relative-caption.umd.js
@@ -0,0 +1,162 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgRelativeCaption = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var relativeCaptionSettings = {
+        relativeCaption: false,
+    };
+
+    /**
+     * lightGallery caption for placing captions relative to the image
+     */
+    var RelativeCaption = /** @class */ (function () {
+        function RelativeCaption(instance) {
+            // get lightGallery core plugin instance
+            this.core = instance;
+            // Override some of lightGallery default settings
+            var defaultSettings = {
+                addClass: this.core.settings.addClass + ' lg-relative-caption',
+            };
+            this.core.settings = __assign(__assign({}, this.core.settings), defaultSettings);
+            // extend module default settings with lightGallery core settings
+            this.settings = __assign(__assign(__assign({}, relativeCaptionSettings), this.core.settings), defaultSettings);
+            return this;
+        }
+        RelativeCaption.prototype.init = function () {
+            var _this = this;
+            if (!this.settings.relativeCaption) {
+                return;
+            }
+            this.core.LGel.on(lGEvents.slideItemLoad + ".caption", function (event) {
+                var _a = event.detail, index = _a.index, delay = _a.delay;
+                setTimeout(function () {
+                    if (index === _this.core.index) {
+                        _this.setRelativeCaption(index);
+                    }
+                }, delay);
+            });
+            this.core.LGel.on(lGEvents.afterSlide + ".caption", function (event) {
+                var index = event.detail.index;
+                setTimeout(function () {
+                    var slide = _this.core.getSlideItem(index);
+                    if (slide.hasClass('lg-complete')) {
+                        _this.setRelativeCaption(index);
+                    }
+                });
+            });
+            this.core.LGel.on(lGEvents.beforeSlide + ".caption", function (event) {
+                var index = event.detail.index;
+                setTimeout(function () {
+                    var slide = _this.core.getSlideItem(index);
+                    slide.removeClass('lg-show-caption');
+                });
+            });
+            this.core.LGel.on(lGEvents.containerResize + ".caption", function (event) {
+                _this.setRelativeCaption(_this.core.index);
+            });
+        };
+        RelativeCaption.prototype.setCaptionStyle = function (index, rect, slideWrapRect) {
+            var $subHtmlInner = this.core
+                .getSlideItem(index)
+                .find('.lg-relative-caption-item');
+            var $subHtml = this.core.getSlideItem(index).find('.lg-sub-html');
+            $subHtml.css('width', rect.width + "px").css('left', rect.left + "px");
+            var subHtmlRect = $subHtmlInner.get().getBoundingClientRect();
+            var bottom = slideWrapRect.bottom - rect.bottom - subHtmlRect.height;
+            $subHtml.css('top', "auto").css('bottom', Math.max(bottom, 0) + "px");
+        };
+        RelativeCaption.prototype.setRelativeCaption = function (index) {
+            var slide = this.core.getSlideItem(index);
+            if (slide.hasClass('lg-current')) {
+                var rect = this.core
+                    .getSlideItem(index)
+                    .find('.lg-object')
+                    .get()
+                    .getBoundingClientRect();
+                var slideWrapRect = this.core
+                    .getSlideItem(index)
+                    .get()
+                    .getBoundingClientRect();
+                this.setCaptionStyle(index, rect, slideWrapRect);
+                slide.addClass('lg-show-caption');
+            }
+        };
+        RelativeCaption.prototype.destroy = function () {
+            this.core.LGel.off('.caption');
+        };
+        return RelativeCaption;
+    }());
+
+    return RelativeCaption;
+
+})));
+//# sourceMappingURL=lg-relative-caption.umd.js.map
diff --git a/resources/lightgallery/plugins/rotate/lg-rotate.es5.js b/resources/lightgallery/plugins/rotate/lg-rotate.es5.js
new file mode 100644
index 0000000..9c3763d
--- /dev/null
+++ b/resources/lightgallery/plugins/rotate/lg-rotate.es5.js
@@ -0,0 +1,274 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var rotateSettings = {
+    rotate: true,
+    rotateSpeed: 400,
+    rotateLeft: true,
+    rotateRight: true,
+    flipHorizontal: true,
+    flipVertical: true,
+    rotatePluginStrings: {
+        flipVertical: 'Flip vertical',
+        flipHorizontal: 'Flip horizontal',
+        rotateLeft: 'Rotate left',
+        rotateRight: 'Rotate right',
+    },
+};
+
+var Rotate = /** @class */ (function () {
+    function Rotate(instance, $LG) {
+        // get lightGallery core plugin instance
+        this.core = instance;
+        this.$LG = $LG;
+        // extend module default settings with lightGallery core settings
+        this.settings = __assign(__assign({}, rotateSettings), this.core.settings);
+        return this;
+    }
+    Rotate.prototype.buildTemplates = function () {
+        var rotateIcons = '';
+        if (this.settings.flipVertical) {
+            rotateIcons += "<button type=\"button\" id=\"lg-flip-ver\" aria-label=\"" + this.settings.rotatePluginStrings['flipVertical'] + "\" class=\"lg-flip-ver lg-icon\"></button>";
+        }
+        if (this.settings.flipHorizontal) {
+            rotateIcons += "<button type=\"button\" id=\"lg-flip-hor\" aria-label=\"" + this.settings.rotatePluginStrings['flipHorizontal'] + "\" class=\"lg-flip-hor lg-icon\"></button>";
+        }
+        if (this.settings.rotateLeft) {
+            rotateIcons += "<button type=\"button\" id=\"lg-rotate-left\" aria-label=\"" + this.settings.rotatePluginStrings['rotateLeft'] + "\" class=\"lg-rotate-left lg-icon\"></button>";
+        }
+        if (this.settings.rotateRight) {
+            rotateIcons += "<button type=\"button\" id=\"lg-rotate-right\" aria-label=\"" + this.settings.rotatePluginStrings['rotateRight'] + "\" class=\"lg-rotate-right lg-icon\"></button>";
+        }
+        this.core.$toolbar.append(rotateIcons);
+    };
+    Rotate.prototype.init = function () {
+        var _this = this;
+        if (!this.settings.rotate) {
+            return;
+        }
+        this.buildTemplates();
+        // Save rotate config for each item to persist its rotate, flip values
+        // even after navigating to diferent slides
+        this.rotateValuesList = {};
+        // event triggered after appending slide content
+        this.core.LGel.on(lGEvents.slideItemLoad + ".rotate", function (event) {
+            var index = event.detail.index;
+            var rotateEl = _this.core
+                .getSlideItem(index)
+                .find('.lg-img-rotate')
+                .get();
+            if (!rotateEl) {
+                var imageWrap = _this.core
+                    .getSlideItem(index)
+                    .find('.lg-object')
+                    .first();
+                imageWrap.wrap('lg-img-rotate');
+                //this.rotateValuesList[this.core.index]
+                _this.core
+                    .getSlideItem(_this.core.index)
+                    .find('.lg-img-rotate')
+                    .css('transition-duration', _this.settings.rotateSpeed + 'ms');
+            }
+        });
+        this.core.outer
+            .find('#lg-rotate-left')
+            .first()
+            .on('click.lg', this.rotateLeft.bind(this));
+        this.core.outer
+            .find('#lg-rotate-right')
+            .first()
+            .on('click.lg', this.rotateRight.bind(this));
+        this.core.outer
+            .find('#lg-flip-hor')
+            .first()
+            .on('click.lg', this.flipHorizontal.bind(this));
+        this.core.outer
+            .find('#lg-flip-ver')
+            .first()
+            .on('click.lg', this.flipVertical.bind(this));
+        // Reset rotate on slide change
+        this.core.LGel.on(lGEvents.beforeSlide + ".rotate", function (event) {
+            if (!_this.rotateValuesList[event.detail.index]) {
+                _this.rotateValuesList[event.detail.index] = {
+                    rotate: 0,
+                    flipHorizontal: 1,
+                    flipVertical: 1,
+                };
+            }
+        });
+    };
+    Rotate.prototype.applyStyles = function () {
+        var $image = this.core
+            .getSlideItem(this.core.index)
+            .find('.lg-img-rotate')
+            .first();
+        $image.css('transform', 'rotate(' +
+            this.rotateValuesList[this.core.index].rotate +
+            'deg)' +
+            ' scale3d(' +
+            this.rotateValuesList[this.core.index].flipHorizontal +
+            ', ' +
+            this.rotateValuesList[this.core.index].flipVertical +
+            ', 1)');
+    };
+    Rotate.prototype.rotateLeft = function () {
+        this.rotateValuesList[this.core.index].rotate -= 90;
+        this.applyStyles();
+        this.triggerEvents(lGEvents.rotateLeft, {
+            rotate: this.rotateValuesList[this.core.index].rotate,
+        });
+    };
+    Rotate.prototype.rotateRight = function () {
+        this.rotateValuesList[this.core.index].rotate += 90;
+        this.applyStyles();
+        this.triggerEvents(lGEvents.rotateRight, {
+            rotate: this.rotateValuesList[this.core.index].rotate,
+        });
+    };
+    Rotate.prototype.getCurrentRotation = function (el) {
+        if (!el) {
+            return 0;
+        }
+        var st = this.$LG(el).style();
+        var tm = st.getPropertyValue('-webkit-transform') ||
+            st.getPropertyValue('-moz-transform') ||
+            st.getPropertyValue('-ms-transform') ||
+            st.getPropertyValue('-o-transform') ||
+            st.getPropertyValue('transform') ||
+            'none';
+        if (tm !== 'none') {
+            var values = tm.split('(')[1].split(')')[0].split(',');
+            if (values) {
+                var angle = Math.round(Math.atan2(values[1], values[0]) * (180 / Math.PI));
+                return angle < 0 ? angle + 360 : angle;
+            }
+        }
+        return 0;
+    };
+    Rotate.prototype.flipHorizontal = function () {
+        var rotateEl = this.core
+            .getSlideItem(this.core.index)
+            .find('.lg-img-rotate')
+            .first()
+            .get();
+        var currentRotation = this.getCurrentRotation(rotateEl);
+        var rotateAxis = 'flipHorizontal';
+        if (currentRotation === 90 || currentRotation === 270) {
+            rotateAxis = 'flipVertical';
+        }
+        this.rotateValuesList[this.core.index][rotateAxis] *= -1;
+        this.applyStyles();
+        this.triggerEvents(lGEvents.flipHorizontal, {
+            flipHorizontal: this.rotateValuesList[this.core.index][rotateAxis],
+        });
+    };
+    Rotate.prototype.flipVertical = function () {
+        var rotateEl = this.core
+            .getSlideItem(this.core.index)
+            .find('.lg-img-rotate')
+            .first()
+            .get();
+        var currentRotation = this.getCurrentRotation(rotateEl);
+        var rotateAxis = 'flipVertical';
+        if (currentRotation === 90 || currentRotation === 270) {
+            rotateAxis = 'flipHorizontal';
+        }
+        this.rotateValuesList[this.core.index][rotateAxis] *= -1;
+        this.applyStyles();
+        this.triggerEvents(lGEvents.flipVertical, {
+            flipVertical: this.rotateValuesList[this.core.index][rotateAxis],
+        });
+    };
+    Rotate.prototype.triggerEvents = function (event, detail) {
+        var _this = this;
+        setTimeout(function () {
+            _this.core.LGel.trigger(event, detail);
+        }, this.settings.rotateSpeed + 10);
+    };
+    Rotate.prototype.isImageOrientationChanged = function () {
+        var rotateValue = this.rotateValuesList[this.core.index];
+        var isRotated = Math.abs(rotateValue.rotate) % 360 !== 0;
+        var ifFlippedHor = rotateValue.flipHorizontal < 0;
+        var ifFlippedVer = rotateValue.flipVertical < 0;
+        return isRotated || ifFlippedHor || ifFlippedVer;
+    };
+    Rotate.prototype.closeGallery = function () {
+        if (this.isImageOrientationChanged()) {
+            this.core.getSlideItem(this.core.index).css('opacity', 0);
+        }
+        this.rotateValuesList = {};
+    };
+    Rotate.prototype.destroy = function () {
+        // Unbind all events added by lightGallery rotate plugin
+        this.core.LGel.off('.lg.rotate');
+        this.core.LGel.off('.rotate');
+    };
+    return Rotate;
+}());
+
+export default Rotate;
+//# sourceMappingURL=lg-rotate.es5.js.map
diff --git a/resources/lightgallery/plugins/rotate/lg-rotate.min.js b/resources/lightgallery/plugins/rotate/lg-rotate.min.js
new file mode 100644
index 0000000..409652f
--- /dev/null
+++ b/resources/lightgallery/plugins/rotate/lg-rotate.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgRotate=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,i=1,o=arguments.length;i<o;i++)for(var r in e=arguments[i])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t}).apply(this,arguments)},e="lgSlideItemLoad",i="lgBeforeSlide",o="lgRotateLeft",r="lgRotateRight",s="lgFlipHorizontal",a="lgFlipVertical",l={rotate:!0,rotateSpeed:400,rotateLeft:!0,rotateRight:!0,flipHorizontal:!0,flipVertical:!0,rotatePluginStrings:{flipVertical:"Flip vertical",flipHorizontal:"Flip horizontal",rotateLeft:"Rotate left",rotateRight:"Rotate right"}};return function(){function n(e,i){return this.core=e,this.$LG=i,this.settings=t(t({},l),this.core.settings),this}return n.prototype.buildTemplates=function(){var t="";this.settings.flipVertical&&(t+='<button type="button" id="lg-flip-ver" aria-label="'+this.settings.rotatePluginStrings.flipVertical+'" class="lg-flip-ver lg-icon"></button>'),this.settings.flipHorizontal&&(t+='<button type="button" id="lg-flip-hor" aria-label="'+this.settings.rotatePluginStrings.flipHorizontal+'" class="lg-flip-hor lg-icon"></button>'),this.settings.rotateLeft&&(t+='<button type="button" id="lg-rotate-left" aria-label="'+this.settings.rotatePluginStrings.rotateLeft+'" class="lg-rotate-left lg-icon"></button>'),this.settings.rotateRight&&(t+='<button type="button" id="lg-rotate-right" aria-label="'+this.settings.rotatePluginStrings.rotateRight+'" class="lg-rotate-right lg-icon"></button>'),this.core.$toolbar.append(t)},n.prototype.init=function(){var t=this;this.settings.rotate&&(this.buildTemplates(),this.rotateValuesList={},this.core.LGel.on(e+".rotate",(function(e){var i=e.detail.index;t.core.getSlideItem(i).find(".lg-img-rotate").get()||(t.core.getSlideItem(i).find(".lg-object").first().wrap("lg-img-rotate"),t.core.getSlideItem(t.core.index).find(".lg-img-rotate").css("transition-duration",t.settings.rotateSpeed+"ms"))})),this.core.outer.find("#lg-rotate-left").first().on("click.lg",this.rotateLeft.bind(this)),this.core.outer.find("#lg-rotate-right").first().on("click.lg",this.rotateRight.bind(this)),this.core.outer.find("#lg-flip-hor").first().on("click.lg",this.flipHorizontal.bind(this)),this.core.outer.find("#lg-flip-ver").first().on("click.lg",this.flipVertical.bind(this)),this.core.LGel.on(i+".rotate",(function(e){t.rotateValuesList[e.detail.index]||(t.rotateValuesList[e.detail.index]={rotate:0,flipHorizontal:1,flipVertical:1})})))},n.prototype.applyStyles=function(){this.core.getSlideItem(this.core.index).find(".lg-img-rotate").first().css("transform","rotate("+this.rotateValuesList[this.core.index].rotate+"deg) scale3d("+this.rotateValuesList[this.core.index].flipHorizontal+", "+this.rotateValuesList[this.core.index].flipVertical+", 1)")},n.prototype.rotateLeft=function(){this.rotateValuesList[this.core.index].rotate-=90,this.applyStyles(),this.triggerEvents(o,{rotate:this.rotateValuesList[this.core.index].rotate})},n.prototype.rotateRight=function(){this.rotateValuesList[this.core.index].rotate+=90,this.applyStyles(),this.triggerEvents(r,{rotate:this.rotateValuesList[this.core.index].rotate})},n.prototype.getCurrentRotation=function(t){if(!t)return 0;var e=this.$LG(t).style(),i=e.getPropertyValue("-webkit-transform")||e.getPropertyValue("-moz-transform")||e.getPropertyValue("-ms-transform")||e.getPropertyValue("-o-transform")||e.getPropertyValue("transform")||"none";if("none"!==i){var o=i.split("(")[1].split(")")[0].split(",");if(o){var r=Math.round(Math.atan2(o[1],o[0])*(180/Math.PI));return r<0?r+360:r}}return 0},n.prototype.flipHorizontal=function(){var t=this.core.getSlideItem(this.core.index).find(".lg-img-rotate").first().get(),e=this.getCurrentRotation(t),i="flipHorizontal";90!==e&&270!==e||(i="flipVertical"),this.rotateValuesList[this.core.index][i]*=-1,this.applyStyles(),this.triggerEvents(s,{flipHorizontal:this.rotateValuesList[this.core.index][i]})},n.prototype.flipVertical=function(){var t=this.core.getSlideItem(this.core.index).find(".lg-img-rotate").first().get(),e=this.getCurrentRotation(t),i="flipVertical";90!==e&&270!==e||(i="flipHorizontal"),this.rotateValuesList[this.core.index][i]*=-1,this.applyStyles(),this.triggerEvents(a,{flipVertical:this.rotateValuesList[this.core.index][i]})},n.prototype.triggerEvents=function(t,e){var i=this;setTimeout((function(){i.core.LGel.trigger(t,e)}),this.settings.rotateSpeed+10)},n.prototype.isImageOrientationChanged=function(){var t=this.rotateValuesList[this.core.index],e=Math.abs(t.rotate)%360!=0,i=t.flipHorizontal<0,o=t.flipVertical<0;return e||i||o},n.prototype.closeGallery=function(){this.isImageOrientationChanged()&&this.core.getSlideItem(this.core.index).css("opacity",0),this.rotateValuesList={}},n.prototype.destroy=function(){this.core.LGel.off(".lg.rotate"),this.core.LGel.off(".rotate")},n}()}));
diff --git a/resources/lightgallery/plugins/rotate/lg-rotate.umd.js b/resources/lightgallery/plugins/rotate/lg-rotate.umd.js
new file mode 100644
index 0000000..5333539
--- /dev/null
+++ b/resources/lightgallery/plugins/rotate/lg-rotate.umd.js
@@ -0,0 +1,282 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgRotate = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var rotateSettings = {
+        rotate: true,
+        rotateSpeed: 400,
+        rotateLeft: true,
+        rotateRight: true,
+        flipHorizontal: true,
+        flipVertical: true,
+        rotatePluginStrings: {
+            flipVertical: 'Flip vertical',
+            flipHorizontal: 'Flip horizontal',
+            rotateLeft: 'Rotate left',
+            rotateRight: 'Rotate right',
+        },
+    };
+
+    var Rotate = /** @class */ (function () {
+        function Rotate(instance, $LG) {
+            // get lightGallery core plugin instance
+            this.core = instance;
+            this.$LG = $LG;
+            // extend module default settings with lightGallery core settings
+            this.settings = __assign(__assign({}, rotateSettings), this.core.settings);
+            return this;
+        }
+        Rotate.prototype.buildTemplates = function () {
+            var rotateIcons = '';
+            if (this.settings.flipVertical) {
+                rotateIcons += "<button type=\"button\" id=\"lg-flip-ver\" aria-label=\"" + this.settings.rotatePluginStrings['flipVertical'] + "\" class=\"lg-flip-ver lg-icon\"></button>";
+            }
+            if (this.settings.flipHorizontal) {
+                rotateIcons += "<button type=\"button\" id=\"lg-flip-hor\" aria-label=\"" + this.settings.rotatePluginStrings['flipHorizontal'] + "\" class=\"lg-flip-hor lg-icon\"></button>";
+            }
+            if (this.settings.rotateLeft) {
+                rotateIcons += "<button type=\"button\" id=\"lg-rotate-left\" aria-label=\"" + this.settings.rotatePluginStrings['rotateLeft'] + "\" class=\"lg-rotate-left lg-icon\"></button>";
+            }
+            if (this.settings.rotateRight) {
+                rotateIcons += "<button type=\"button\" id=\"lg-rotate-right\" aria-label=\"" + this.settings.rotatePluginStrings['rotateRight'] + "\" class=\"lg-rotate-right lg-icon\"></button>";
+            }
+            this.core.$toolbar.append(rotateIcons);
+        };
+        Rotate.prototype.init = function () {
+            var _this = this;
+            if (!this.settings.rotate) {
+                return;
+            }
+            this.buildTemplates();
+            // Save rotate config for each item to persist its rotate, flip values
+            // even after navigating to diferent slides
+            this.rotateValuesList = {};
+            // event triggered after appending slide content
+            this.core.LGel.on(lGEvents.slideItemLoad + ".rotate", function (event) {
+                var index = event.detail.index;
+                var rotateEl = _this.core
+                    .getSlideItem(index)
+                    .find('.lg-img-rotate')
+                    .get();
+                if (!rotateEl) {
+                    var imageWrap = _this.core
+                        .getSlideItem(index)
+                        .find('.lg-object')
+                        .first();
+                    imageWrap.wrap('lg-img-rotate');
+                    //this.rotateValuesList[this.core.index]
+                    _this.core
+                        .getSlideItem(_this.core.index)
+                        .find('.lg-img-rotate')
+                        .css('transition-duration', _this.settings.rotateSpeed + 'ms');
+                }
+            });
+            this.core.outer
+                .find('#lg-rotate-left')
+                .first()
+                .on('click.lg', this.rotateLeft.bind(this));
+            this.core.outer
+                .find('#lg-rotate-right')
+                .first()
+                .on('click.lg', this.rotateRight.bind(this));
+            this.core.outer
+                .find('#lg-flip-hor')
+                .first()
+                .on('click.lg', this.flipHorizontal.bind(this));
+            this.core.outer
+                .find('#lg-flip-ver')
+                .first()
+                .on('click.lg', this.flipVertical.bind(this));
+            // Reset rotate on slide change
+            this.core.LGel.on(lGEvents.beforeSlide + ".rotate", function (event) {
+                if (!_this.rotateValuesList[event.detail.index]) {
+                    _this.rotateValuesList[event.detail.index] = {
+                        rotate: 0,
+                        flipHorizontal: 1,
+                        flipVertical: 1,
+                    };
+                }
+            });
+        };
+        Rotate.prototype.applyStyles = function () {
+            var $image = this.core
+                .getSlideItem(this.core.index)
+                .find('.lg-img-rotate')
+                .first();
+            $image.css('transform', 'rotate(' +
+                this.rotateValuesList[this.core.index].rotate +
+                'deg)' +
+                ' scale3d(' +
+                this.rotateValuesList[this.core.index].flipHorizontal +
+                ', ' +
+                this.rotateValuesList[this.core.index].flipVertical +
+                ', 1)');
+        };
+        Rotate.prototype.rotateLeft = function () {
+            this.rotateValuesList[this.core.index].rotate -= 90;
+            this.applyStyles();
+            this.triggerEvents(lGEvents.rotateLeft, {
+                rotate: this.rotateValuesList[this.core.index].rotate,
+            });
+        };
+        Rotate.prototype.rotateRight = function () {
+            this.rotateValuesList[this.core.index].rotate += 90;
+            this.applyStyles();
+            this.triggerEvents(lGEvents.rotateRight, {
+                rotate: this.rotateValuesList[this.core.index].rotate,
+            });
+        };
+        Rotate.prototype.getCurrentRotation = function (el) {
+            if (!el) {
+                return 0;
+            }
+            var st = this.$LG(el).style();
+            var tm = st.getPropertyValue('-webkit-transform') ||
+                st.getPropertyValue('-moz-transform') ||
+                st.getPropertyValue('-ms-transform') ||
+                st.getPropertyValue('-o-transform') ||
+                st.getPropertyValue('transform') ||
+                'none';
+            if (tm !== 'none') {
+                var values = tm.split('(')[1].split(')')[0].split(',');
+                if (values) {
+                    var angle = Math.round(Math.atan2(values[1], values[0]) * (180 / Math.PI));
+                    return angle < 0 ? angle + 360 : angle;
+                }
+            }
+            return 0;
+        };
+        Rotate.prototype.flipHorizontal = function () {
+            var rotateEl = this.core
+                .getSlideItem(this.core.index)
+                .find('.lg-img-rotate')
+                .first()
+                .get();
+            var currentRotation = this.getCurrentRotation(rotateEl);
+            var rotateAxis = 'flipHorizontal';
+            if (currentRotation === 90 || currentRotation === 270) {
+                rotateAxis = 'flipVertical';
+            }
+            this.rotateValuesList[this.core.index][rotateAxis] *= -1;
+            this.applyStyles();
+            this.triggerEvents(lGEvents.flipHorizontal, {
+                flipHorizontal: this.rotateValuesList[this.core.index][rotateAxis],
+            });
+        };
+        Rotate.prototype.flipVertical = function () {
+            var rotateEl = this.core
+                .getSlideItem(this.core.index)
+                .find('.lg-img-rotate')
+                .first()
+                .get();
+            var currentRotation = this.getCurrentRotation(rotateEl);
+            var rotateAxis = 'flipVertical';
+            if (currentRotation === 90 || currentRotation === 270) {
+                rotateAxis = 'flipHorizontal';
+            }
+            this.rotateValuesList[this.core.index][rotateAxis] *= -1;
+            this.applyStyles();
+            this.triggerEvents(lGEvents.flipVertical, {
+                flipVertical: this.rotateValuesList[this.core.index][rotateAxis],
+            });
+        };
+        Rotate.prototype.triggerEvents = function (event, detail) {
+            var _this = this;
+            setTimeout(function () {
+                _this.core.LGel.trigger(event, detail);
+            }, this.settings.rotateSpeed + 10);
+        };
+        Rotate.prototype.isImageOrientationChanged = function () {
+            var rotateValue = this.rotateValuesList[this.core.index];
+            var isRotated = Math.abs(rotateValue.rotate) % 360 !== 0;
+            var ifFlippedHor = rotateValue.flipHorizontal < 0;
+            var ifFlippedVer = rotateValue.flipVertical < 0;
+            return isRotated || ifFlippedHor || ifFlippedVer;
+        };
+        Rotate.prototype.closeGallery = function () {
+            if (this.isImageOrientationChanged()) {
+                this.core.getSlideItem(this.core.index).css('opacity', 0);
+            }
+            this.rotateValuesList = {};
+        };
+        Rotate.prototype.destroy = function () {
+            // Unbind all events added by lightGallery rotate plugin
+            this.core.LGel.off('.lg.rotate');
+            this.core.LGel.off('.rotate');
+        };
+        return Rotate;
+    }());
+
+    return Rotate;
+
+})));
+//# sourceMappingURL=lg-rotate.umd.js.map
diff --git a/resources/lightgallery/plugins/share/lg-share.es5.js b/resources/lightgallery/plugins/share/lg-share.es5.js
new file mode 100644
index 0000000..52fadf4
--- /dev/null
+++ b/resources/lightgallery/plugins/share/lg-share.es5.js
@@ -0,0 +1,219 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+function __spreadArrays() {
+    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+    for (var r = Array(s), k = 0, i = 0; i < il; i++)
+        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+            r[k] = a[j];
+    return r;
+}
+
+var shareSettings = {
+    share: true,
+    facebook: true,
+    facebookDropdownText: 'Facebook',
+    twitter: true,
+    twitterDropdownText: 'Twitter',
+    pinterest: true,
+    pinterestDropdownText: 'Pinterest',
+    additionalShareOptions: [],
+    sharePluginStrings: { share: 'Share' },
+};
+
+function getFacebookShareLink(galleryItem) {
+    var facebookBaseUrl = '//www.facebook.com/sharer/sharer.php?u=';
+    return (facebookBaseUrl +
+        encodeURIComponent(galleryItem.facebookShareUrl || window.location.href));
+}
+
+function getTwitterShareLink(galleryItem) {
+    var twitterBaseUrl = '//twitter.com/intent/tweet?text=';
+    var url = encodeURIComponent(galleryItem.twitterShareUrl || window.location.href);
+    var text = galleryItem.tweetText;
+    return twitterBaseUrl + text + '&url=' + url;
+}
+
+function getPinterestShareLink(galleryItem) {
+    var pinterestBaseUrl = 'http://www.pinterest.com/pin/create/button/?url=';
+    var description = galleryItem.pinterestText;
+    var media = encodeURIComponent(galleryItem.src);
+    var url = encodeURIComponent(galleryItem.pinterestShareUrl || window.location.href);
+    return (pinterestBaseUrl +
+        url +
+        '&media=' +
+        media +
+        '&description=' +
+        description);
+}
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var Share = /** @class */ (function () {
+    function Share(instance) {
+        this.shareOptions = [];
+        // get lightGallery core plugin instance
+        this.core = instance;
+        // extend module default settings with lightGallery core settings
+        this.settings = __assign(__assign({}, shareSettings), this.core.settings);
+        return this;
+    }
+    Share.prototype.init = function () {
+        if (!this.settings.share) {
+            return;
+        }
+        this.shareOptions = __spreadArrays(this.getDefaultShareOptions(), this.settings.additionalShareOptions);
+        this.setLgShareMarkup();
+        this.core.outer
+            .find('.lg-share .lg-dropdown')
+            .append(this.getShareListHtml());
+        this.core.LGel.on(lGEvents.afterSlide + ".share", this.onAfterSlide.bind(this));
+    };
+    Share.prototype.getShareListHtml = function () {
+        var shareHtml = '';
+        this.shareOptions.forEach(function (shareOption) {
+            shareHtml += shareOption.dropdownHTML;
+        });
+        return shareHtml;
+    };
+    Share.prototype.setLgShareMarkup = function () {
+        var _this = this;
+        this.core.$toolbar.append("<button type=\"button\" aria-label=\"" + this.settings.sharePluginStrings['share'] + "\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"lg-share lg-icon\">\n                <ul class=\"lg-dropdown\" style=\"position: absolute;\"></ul></button>");
+        this.core.outer.append('<div class="lg-dropdown-overlay"></div>');
+        var $shareButton = this.core.outer.find('.lg-share');
+        $shareButton.first().on('click.lg', function () {
+            _this.core.outer.toggleClass('lg-dropdown-active');
+            if (_this.core.outer.hasClass('lg-dropdown-active')) {
+                _this.core.outer.attr('aria-expanded', true);
+            }
+            else {
+                _this.core.outer.attr('aria-expanded', false);
+            }
+        });
+        this.core.outer
+            .find('.lg-dropdown-overlay')
+            .first()
+            .on('click.lg', function () {
+            _this.core.outer.removeClass('lg-dropdown-active');
+            _this.core.outer.attr('aria-expanded', false);
+        });
+    };
+    Share.prototype.onAfterSlide = function (event) {
+        var _this = this;
+        var index = event.detail.index;
+        var currentItem = this.core.galleryItems[index];
+        setTimeout(function () {
+            _this.shareOptions.forEach(function (shareOption) {
+                var selector = shareOption.selector;
+                _this.core.outer
+                    .find(selector)
+                    .attr('href', shareOption.generateLink(currentItem));
+            });
+        }, 100);
+    };
+    Share.prototype.getShareListItemHTML = function (type, text) {
+        return "<li><a class=\"lg-share-" + type + "\" rel=\"noopener\" target=\"_blank\"><span class=\"lg-icon\"></span><span class=\"lg-dropdown-text\">" + text + "</span></a></li>";
+    };
+    Share.prototype.getDefaultShareOptions = function () {
+        return __spreadArrays((this.settings.facebook
+            ? [
+                {
+                    type: 'facebook',
+                    generateLink: getFacebookShareLink,
+                    dropdownHTML: this.getShareListItemHTML('facebook', this.settings.facebookDropdownText),
+                    selector: '.lg-share-facebook',
+                },
+            ]
+            : []), (this.settings.twitter
+            ? [
+                {
+                    type: 'twitter',
+                    generateLink: getTwitterShareLink,
+                    dropdownHTML: this.getShareListItemHTML('twitter', this.settings.twitterDropdownText),
+                    selector: '.lg-share-twitter',
+                },
+            ]
+            : []), (this.settings.pinterest
+            ? [
+                {
+                    type: 'pinterest',
+                    generateLink: getPinterestShareLink,
+                    dropdownHTML: this.getShareListItemHTML('pinterest', this.settings.pinterestDropdownText),
+                    selector: '.lg-share-pinterest',
+                },
+            ]
+            : []));
+    };
+    Share.prototype.destroy = function () {
+        this.core.outer.find('.lg-dropdown-overlay').remove();
+        this.core.outer.find('.lg-share').remove();
+        this.core.LGel.off('.lg.share');
+        this.core.LGel.off('.share');
+    };
+    return Share;
+}());
+
+export default Share;
+//# sourceMappingURL=lg-share.es5.js.map
diff --git a/resources/lightgallery/plugins/share/lg-share.min.js b/resources/lightgallery/plugins/share/lg-share.min.js
new file mode 100644
index 0000000..58430c0
--- /dev/null
+++ b/resources/lightgallery/plugins/share/lg-share.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgShare=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,r=1,o=arguments.length;r<o;r++)for(var n in e=arguments[r])Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t}).apply(this,arguments)};function e(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;var o=Array(t),n=0;for(e=0;e<r;e++)for(var i=arguments[e],s=0,a=i.length;s<a;s++,n++)o[n]=i[s];return o}var r={share:!0,facebook:!0,facebookDropdownText:"Facebook",twitter:!0,twitterDropdownText:"Twitter",pinterest:!0,pinterestDropdownText:"Pinterest",additionalShareOptions:[],sharePluginStrings:{share:"Share"}};function o(t){return"//www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(t.facebookShareUrl||window.location.href)}function n(t){var e=encodeURIComponent(t.twitterShareUrl||window.location.href);return"//twitter.com/intent/tweet?text="+t.tweetText+"&url="+e}function i(t){var e=t.pinterestText,r=encodeURIComponent(t.src);return"http://www.pinterest.com/pin/create/button/?url="+encodeURIComponent(t.pinterestShareUrl||window.location.href)+"&media="+r+"&description="+e}var s="lgAfterSlide";return function(){function a(e){return this.shareOptions=[],this.core=e,this.settings=t(t({},r),this.core.settings),this}return a.prototype.init=function(){this.settings.share&&(this.shareOptions=e(this.getDefaultShareOptions(),this.settings.additionalShareOptions),this.setLgShareMarkup(),this.core.outer.find(".lg-share .lg-dropdown").append(this.getShareListHtml()),this.core.LGel.on(s+".share",this.onAfterSlide.bind(this)))},a.prototype.getShareListHtml=function(){var t="";return this.shareOptions.forEach((function(e){t+=e.dropdownHTML})),t},a.prototype.setLgShareMarkup=function(){var t=this;this.core.$toolbar.append('<button type="button" aria-label="'+this.settings.sharePluginStrings.share+'" aria-haspopup="true" aria-expanded="false" class="lg-share lg-icon">\n                <ul class="lg-dropdown" style="position: absolute;"></ul></button>'),this.core.outer.append('<div class="lg-dropdown-overlay"></div>'),this.core.outer.find(".lg-share").first().on("click.lg",(function(){t.core.outer.toggleClass("lg-dropdown-active"),t.core.outer.hasClass("lg-dropdown-active")?t.core.outer.attr("aria-expanded",!0):t.core.outer.attr("aria-expanded",!1)})),this.core.outer.find(".lg-dropdown-overlay").first().on("click.lg",(function(){t.core.outer.removeClass("lg-dropdown-active"),t.core.outer.attr("aria-expanded",!1)}))},a.prototype.onAfterSlide=function(t){var e=this,r=t.detail.index,o=this.core.galleryItems[r];setTimeout((function(){e.shareOptions.forEach((function(t){var r=t.selector;e.core.outer.find(r).attr("href",t.generateLink(o))}))}),100)},a.prototype.getShareListItemHTML=function(t,e){return'<li><a class="lg-share-'+t+'" rel="noopener" target="_blank"><span class="lg-icon"></span><span class="lg-dropdown-text">'+e+"</span></a></li>"},a.prototype.getDefaultShareOptions=function(){return e(this.settings.facebook?[{type:"facebook",generateLink:o,dropdownHTML:this.getShareListItemHTML("facebook",this.settings.facebookDropdownText),selector:".lg-share-facebook"}]:[],this.settings.twitter?[{type:"twitter",generateLink:n,dropdownHTML:this.getShareListItemHTML("twitter",this.settings.twitterDropdownText),selector:".lg-share-twitter"}]:[],this.settings.pinterest?[{type:"pinterest",generateLink:i,dropdownHTML:this.getShareListItemHTML("pinterest",this.settings.pinterestDropdownText),selector:".lg-share-pinterest"}]:[])},a.prototype.destroy=function(){this.core.outer.find(".lg-dropdown-overlay").remove(),this.core.outer.find(".lg-share").remove(),this.core.LGel.off(".lg.share"),this.core.LGel.off(".share")},a}()}));
diff --git a/resources/lightgallery/plugins/share/lg-share.umd.js b/resources/lightgallery/plugins/share/lg-share.umd.js
new file mode 100644
index 0000000..9cf9612
--- /dev/null
+++ b/resources/lightgallery/plugins/share/lg-share.umd.js
@@ -0,0 +1,227 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgShare = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    function __spreadArrays() {
+        for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
+        for (var r = Array(s), k = 0, i = 0; i < il; i++)
+            for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+                r[k] = a[j];
+        return r;
+    }
+
+    var shareSettings = {
+        share: true,
+        facebook: true,
+        facebookDropdownText: 'Facebook',
+        twitter: true,
+        twitterDropdownText: 'Twitter',
+        pinterest: true,
+        pinterestDropdownText: 'Pinterest',
+        additionalShareOptions: [],
+        sharePluginStrings: { share: 'Share' },
+    };
+
+    function getFacebookShareLink(galleryItem) {
+        var facebookBaseUrl = '//www.facebook.com/sharer/sharer.php?u=';
+        return (facebookBaseUrl +
+            encodeURIComponent(galleryItem.facebookShareUrl || window.location.href));
+    }
+
+    function getTwitterShareLink(galleryItem) {
+        var twitterBaseUrl = '//twitter.com/intent/tweet?text=';
+        var url = encodeURIComponent(galleryItem.twitterShareUrl || window.location.href);
+        var text = galleryItem.tweetText;
+        return twitterBaseUrl + text + '&url=' + url;
+    }
+
+    function getPinterestShareLink(galleryItem) {
+        var pinterestBaseUrl = 'http://www.pinterest.com/pin/create/button/?url=';
+        var description = galleryItem.pinterestText;
+        var media = encodeURIComponent(galleryItem.src);
+        var url = encodeURIComponent(galleryItem.pinterestShareUrl || window.location.href);
+        return (pinterestBaseUrl +
+            url +
+            '&media=' +
+            media +
+            '&description=' +
+            description);
+    }
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var Share = /** @class */ (function () {
+        function Share(instance) {
+            this.shareOptions = [];
+            // get lightGallery core plugin instance
+            this.core = instance;
+            // extend module default settings with lightGallery core settings
+            this.settings = __assign(__assign({}, shareSettings), this.core.settings);
+            return this;
+        }
+        Share.prototype.init = function () {
+            if (!this.settings.share) {
+                return;
+            }
+            this.shareOptions = __spreadArrays(this.getDefaultShareOptions(), this.settings.additionalShareOptions);
+            this.setLgShareMarkup();
+            this.core.outer
+                .find('.lg-share .lg-dropdown')
+                .append(this.getShareListHtml());
+            this.core.LGel.on(lGEvents.afterSlide + ".share", this.onAfterSlide.bind(this));
+        };
+        Share.prototype.getShareListHtml = function () {
+            var shareHtml = '';
+            this.shareOptions.forEach(function (shareOption) {
+                shareHtml += shareOption.dropdownHTML;
+            });
+            return shareHtml;
+        };
+        Share.prototype.setLgShareMarkup = function () {
+            var _this = this;
+            this.core.$toolbar.append("<button type=\"button\" aria-label=\"" + this.settings.sharePluginStrings['share'] + "\" aria-haspopup=\"true\" aria-expanded=\"false\" class=\"lg-share lg-icon\">\n                <ul class=\"lg-dropdown\" style=\"position: absolute;\"></ul></button>");
+            this.core.outer.append('<div class="lg-dropdown-overlay"></div>');
+            var $shareButton = this.core.outer.find('.lg-share');
+            $shareButton.first().on('click.lg', function () {
+                _this.core.outer.toggleClass('lg-dropdown-active');
+                if (_this.core.outer.hasClass('lg-dropdown-active')) {
+                    _this.core.outer.attr('aria-expanded', true);
+                }
+                else {
+                    _this.core.outer.attr('aria-expanded', false);
+                }
+            });
+            this.core.outer
+                .find('.lg-dropdown-overlay')
+                .first()
+                .on('click.lg', function () {
+                _this.core.outer.removeClass('lg-dropdown-active');
+                _this.core.outer.attr('aria-expanded', false);
+            });
+        };
+        Share.prototype.onAfterSlide = function (event) {
+            var _this = this;
+            var index = event.detail.index;
+            var currentItem = this.core.galleryItems[index];
+            setTimeout(function () {
+                _this.shareOptions.forEach(function (shareOption) {
+                    var selector = shareOption.selector;
+                    _this.core.outer
+                        .find(selector)
+                        .attr('href', shareOption.generateLink(currentItem));
+                });
+            }, 100);
+        };
+        Share.prototype.getShareListItemHTML = function (type, text) {
+            return "<li><a class=\"lg-share-" + type + "\" rel=\"noopener\" target=\"_blank\"><span class=\"lg-icon\"></span><span class=\"lg-dropdown-text\">" + text + "</span></a></li>";
+        };
+        Share.prototype.getDefaultShareOptions = function () {
+            return __spreadArrays((this.settings.facebook
+                ? [
+                    {
+                        type: 'facebook',
+                        generateLink: getFacebookShareLink,
+                        dropdownHTML: this.getShareListItemHTML('facebook', this.settings.facebookDropdownText),
+                        selector: '.lg-share-facebook',
+                    },
+                ]
+                : []), (this.settings.twitter
+                ? [
+                    {
+                        type: 'twitter',
+                        generateLink: getTwitterShareLink,
+                        dropdownHTML: this.getShareListItemHTML('twitter', this.settings.twitterDropdownText),
+                        selector: '.lg-share-twitter',
+                    },
+                ]
+                : []), (this.settings.pinterest
+                ? [
+                    {
+                        type: 'pinterest',
+                        generateLink: getPinterestShareLink,
+                        dropdownHTML: this.getShareListItemHTML('pinterest', this.settings.pinterestDropdownText),
+                        selector: '.lg-share-pinterest',
+                    },
+                ]
+                : []));
+        };
+        Share.prototype.destroy = function () {
+            this.core.outer.find('.lg-dropdown-overlay').remove();
+            this.core.outer.find('.lg-share').remove();
+            this.core.LGel.off('.lg.share');
+            this.core.LGel.off('.share');
+        };
+        return Share;
+    }());
+
+    return Share;
+
+})));
+//# sourceMappingURL=lg-share.umd.js.map
diff --git a/resources/lightgallery/plugins/thumbnail/lg-thumbnail.es5.js b/resources/lightgallery/plugins/thumbnail/lg-thumbnail.es5.js
new file mode 100644
index 0000000..eb9c66c
--- /dev/null
+++ b/resources/lightgallery/plugins/thumbnail/lg-thumbnail.es5.js
@@ -0,0 +1,483 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+var thumbnailsSettings = {
+    thumbnail: true,
+    animateThumb: true,
+    currentPagerPosition: 'middle',
+    alignThumbnails: 'middle',
+    thumbWidth: 100,
+    thumbHeight: '80px',
+    thumbMargin: 5,
+    appendThumbnailsTo: '.lg-components',
+    toggleThumb: false,
+    enableThumbDrag: true,
+    enableThumbSwipe: true,
+    thumbnailSwipeThreshold: 10,
+    loadYouTubeThumbnail: true,
+    youTubeThumbSize: 1,
+    thumbnailPluginStrings: {
+        toggleThumbnails: 'Toggle thumbnails',
+    },
+};
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var Thumbnail = /** @class */ (function () {
+    function Thumbnail(instance, $LG) {
+        this.thumbOuterWidth = 0;
+        this.thumbTotalWidth = 0;
+        this.translateX = 0;
+        this.thumbClickable = false;
+        // get lightGallery core plugin instance
+        this.core = instance;
+        this.$LG = $LG;
+        return this;
+    }
+    Thumbnail.prototype.init = function () {
+        // extend module default settings with lightGallery core settings
+        this.settings = __assign(__assign({}, thumbnailsSettings), this.core.settings);
+        this.thumbOuterWidth = 0;
+        this.thumbTotalWidth =
+            this.core.galleryItems.length *
+                (this.settings.thumbWidth + this.settings.thumbMargin);
+        // Thumbnail animation value
+        this.translateX = 0;
+        this.setAnimateThumbStyles();
+        if (!this.core.settings.allowMediaOverlap) {
+            this.settings.toggleThumb = false;
+        }
+        if (this.settings.thumbnail) {
+            this.build();
+            if (this.settings.animateThumb) {
+                if (this.settings.enableThumbDrag) {
+                    this.enableThumbDrag();
+                }
+                if (this.settings.enableThumbSwipe) {
+                    this.enableThumbSwipe();
+                }
+                this.thumbClickable = false;
+            }
+            else {
+                this.thumbClickable = true;
+            }
+            this.toggleThumbBar();
+            this.thumbKeyPress();
+        }
+    };
+    Thumbnail.prototype.build = function () {
+        var _this = this;
+        this.setThumbMarkup();
+        this.manageActiveClassOnSlideChange();
+        this.$lgThumb.first().on('click.lg touchend.lg', function (e) {
+            var $target = _this.$LG(e.target);
+            if (!$target.hasAttribute('data-lg-item-id')) {
+                return;
+            }
+            setTimeout(function () {
+                // In IE9 and bellow touch does not support
+                // Go to slide if browser does not support css transitions
+                if (_this.thumbClickable && !_this.core.lgBusy) {
+                    var index = parseInt($target.attr('data-lg-item-id'));
+                    _this.core.slide(index, false, true, false);
+                }
+            }, 50);
+        });
+        this.core.LGel.on(lGEvents.beforeSlide + ".thumb", function (event) {
+            var index = event.detail.index;
+            _this.animateThumb(index);
+        });
+        this.core.LGel.on(lGEvents.beforeOpen + ".thumb", function () {
+            _this.thumbOuterWidth = _this.core.outer.get().offsetWidth;
+        });
+        this.core.LGel.on(lGEvents.updateSlides + ".thumb", function () {
+            _this.rebuildThumbnails();
+        });
+        this.core.LGel.on(lGEvents.containerResize + ".thumb", function () {
+            if (!_this.core.lgOpened)
+                return;
+            setTimeout(function () {
+                _this.thumbOuterWidth = _this.core.outer.get().offsetWidth;
+                _this.animateThumb(_this.core.index);
+                _this.thumbOuterWidth = _this.core.outer.get().offsetWidth;
+            }, 50);
+        });
+    };
+    Thumbnail.prototype.setThumbMarkup = function () {
+        var thumbOuterClassNames = 'lg-thumb-outer ';
+        if (this.settings.alignThumbnails) {
+            thumbOuterClassNames += "lg-thumb-align-" + this.settings.alignThumbnails;
+        }
+        var html = "<div class=\"" + thumbOuterClassNames + "\">\n        <div class=\"lg-thumb lg-group\">\n        </div>\n        </div>";
+        this.core.outer.addClass('lg-has-thumb');
+        if (this.settings.appendThumbnailsTo === '.lg-components') {
+            this.core.$lgComponents.append(html);
+        }
+        else {
+            this.core.outer.append(html);
+        }
+        this.$thumbOuter = this.core.outer.find('.lg-thumb-outer').first();
+        this.$lgThumb = this.core.outer.find('.lg-thumb').first();
+        if (this.settings.animateThumb) {
+            this.core.outer
+                .find('.lg-thumb')
+                .css('transition-duration', this.core.settings.speed + 'ms')
+                .css('width', this.thumbTotalWidth + 'px')
+                .css('position', 'relative');
+        }
+        this.setThumbItemHtml(this.core.galleryItems);
+    };
+    Thumbnail.prototype.enableThumbDrag = function () {
+        var _this = this;
+        var thumbDragUtils = {
+            cords: {
+                startX: 0,
+                endX: 0,
+            },
+            isMoved: false,
+            newTranslateX: 0,
+            startTime: new Date(),
+            endTime: new Date(),
+            touchMoveTime: 0,
+        };
+        var isDragging = false;
+        this.$thumbOuter.addClass('lg-grab');
+        this.core.outer
+            .find('.lg-thumb')
+            .first()
+            .on('mousedown.lg.thumb', function (e) {
+            if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
+                // execute only on .lg-object
+                e.preventDefault();
+                thumbDragUtils.cords.startX = e.pageX;
+                thumbDragUtils.startTime = new Date();
+                _this.thumbClickable = false;
+                isDragging = true;
+                // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
+                _this.core.outer.get().scrollLeft += 1;
+                _this.core.outer.get().scrollLeft -= 1;
+                // *
+                _this.$thumbOuter
+                    .removeClass('lg-grab')
+                    .addClass('lg-grabbing');
+            }
+        });
+        this.$LG(window).on("mousemove.lg.thumb.global" + this.core.lgId, function (e) {
+            if (!_this.core.lgOpened)
+                return;
+            if (isDragging) {
+                thumbDragUtils.cords.endX = e.pageX;
+                thumbDragUtils = _this.onThumbTouchMove(thumbDragUtils);
+            }
+        });
+        this.$LG(window).on("mouseup.lg.thumb.global" + this.core.lgId, function () {
+            if (!_this.core.lgOpened)
+                return;
+            if (thumbDragUtils.isMoved) {
+                thumbDragUtils = _this.onThumbTouchEnd(thumbDragUtils);
+            }
+            else {
+                _this.thumbClickable = true;
+            }
+            if (isDragging) {
+                isDragging = false;
+                _this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab');
+            }
+        });
+    };
+    Thumbnail.prototype.enableThumbSwipe = function () {
+        var _this = this;
+        var thumbDragUtils = {
+            cords: {
+                startX: 0,
+                endX: 0,
+            },
+            isMoved: false,
+            newTranslateX: 0,
+            startTime: new Date(),
+            endTime: new Date(),
+            touchMoveTime: 0,
+        };
+        this.$lgThumb.on('touchstart.lg', function (e) {
+            if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
+                e.preventDefault();
+                thumbDragUtils.cords.startX = e.targetTouches[0].pageX;
+                _this.thumbClickable = false;
+                thumbDragUtils.startTime = new Date();
+            }
+        });
+        this.$lgThumb.on('touchmove.lg', function (e) {
+            if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
+                e.preventDefault();
+                thumbDragUtils.cords.endX = e.targetTouches[0].pageX;
+                thumbDragUtils = _this.onThumbTouchMove(thumbDragUtils);
+            }
+        });
+        this.$lgThumb.on('touchend.lg', function () {
+            if (thumbDragUtils.isMoved) {
+                thumbDragUtils = _this.onThumbTouchEnd(thumbDragUtils);
+            }
+            else {
+                _this.thumbClickable = true;
+            }
+        });
+    };
+    // Rebuild thumbnails
+    Thumbnail.prototype.rebuildThumbnails = function () {
+        var _this = this;
+        // Remove transitions
+        this.$thumbOuter.addClass('lg-rebuilding-thumbnails');
+        setTimeout(function () {
+            _this.thumbTotalWidth =
+                _this.core.galleryItems.length *
+                    (_this.settings.thumbWidth + _this.settings.thumbMargin);
+            _this.$lgThumb.css('width', _this.thumbTotalWidth + 'px');
+            _this.$lgThumb.empty();
+            _this.setThumbItemHtml(_this.core.galleryItems);
+            _this.animateThumb(_this.core.index);
+        }, 50);
+        setTimeout(function () {
+            _this.$thumbOuter.removeClass('lg-rebuilding-thumbnails');
+        }, 200);
+    };
+    // @ts-check
+    Thumbnail.prototype.setTranslate = function (value) {
+        this.$lgThumb.css('transform', 'translate3d(-' + value + 'px, 0px, 0px)');
+    };
+    Thumbnail.prototype.getPossibleTransformX = function (left) {
+        if (left > this.thumbTotalWidth - this.thumbOuterWidth) {
+            left = this.thumbTotalWidth - this.thumbOuterWidth;
+        }
+        if (left < 0) {
+            left = 0;
+        }
+        return left;
+    };
+    Thumbnail.prototype.animateThumb = function (index) {
+        this.$lgThumb.css('transition-duration', this.core.settings.speed + 'ms');
+        if (this.settings.animateThumb) {
+            var position = 0;
+            switch (this.settings.currentPagerPosition) {
+                case 'left':
+                    position = 0;
+                    break;
+                case 'middle':
+                    position =
+                        this.thumbOuterWidth / 2 - this.settings.thumbWidth / 2;
+                    break;
+                case 'right':
+                    position = this.thumbOuterWidth - this.settings.thumbWidth;
+            }
+            this.translateX =
+                (this.settings.thumbWidth + this.settings.thumbMargin) * index -
+                    1 -
+                    position;
+            if (this.translateX > this.thumbTotalWidth - this.thumbOuterWidth) {
+                this.translateX = this.thumbTotalWidth - this.thumbOuterWidth;
+            }
+            if (this.translateX < 0) {
+                this.translateX = 0;
+            }
+            this.setTranslate(this.translateX);
+        }
+    };
+    Thumbnail.prototype.onThumbTouchMove = function (thumbDragUtils) {
+        thumbDragUtils.newTranslateX = this.translateX;
+        thumbDragUtils.isMoved = true;
+        thumbDragUtils.touchMoveTime = new Date().valueOf();
+        thumbDragUtils.newTranslateX -=
+            thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;
+        thumbDragUtils.newTranslateX = this.getPossibleTransformX(thumbDragUtils.newTranslateX);
+        // move current slide
+        this.setTranslate(thumbDragUtils.newTranslateX);
+        this.$thumbOuter.addClass('lg-dragging');
+        return thumbDragUtils;
+    };
+    Thumbnail.prototype.onThumbTouchEnd = function (thumbDragUtils) {
+        thumbDragUtils.isMoved = false;
+        thumbDragUtils.endTime = new Date();
+        this.$thumbOuter.removeClass('lg-dragging');
+        var touchDuration = thumbDragUtils.endTime.valueOf() -
+            thumbDragUtils.startTime.valueOf();
+        var distanceXnew = thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;
+        var speedX = Math.abs(distanceXnew) / touchDuration;
+        // Some magical numbers
+        // Can be improved
+        if (speedX > 0.15 &&
+            thumbDragUtils.endTime.valueOf() - thumbDragUtils.touchMoveTime < 30) {
+            speedX += 1;
+            if (speedX > 2) {
+                speedX += 1;
+            }
+            speedX =
+                speedX +
+                    speedX * (Math.abs(distanceXnew) / this.thumbOuterWidth);
+            this.$lgThumb.css('transition-duration', Math.min(speedX - 1, 2) + 'settings');
+            distanceXnew = distanceXnew * speedX;
+            this.translateX = this.getPossibleTransformX(this.translateX - distanceXnew);
+            this.setTranslate(this.translateX);
+        }
+        else {
+            this.translateX = thumbDragUtils.newTranslateX;
+        }
+        if (Math.abs(thumbDragUtils.cords.endX - thumbDragUtils.cords.startX) <
+            this.settings.thumbnailSwipeThreshold) {
+            this.thumbClickable = true;
+        }
+        return thumbDragUtils;
+    };
+    Thumbnail.prototype.getThumbHtml = function (thumb, index) {
+        var slideVideoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
+        var thumbImg;
+        if (slideVideoInfo.youtube) {
+            if (this.settings.loadYouTubeThumbnail) {
+                thumbImg =
+                    '//img.youtube.com/vi/' +
+                        slideVideoInfo.youtube[1] +
+                        '/' +
+                        this.settings.youTubeThumbSize +
+                        '.jpg';
+            }
+            else {
+                thumbImg = thumb;
+            }
+        }
+        else {
+            thumbImg = thumb;
+        }
+        return "<div data-lg-item-id=\"" + index + "\" class=\"lg-thumb-item " + (index === this.core.index ? ' active' : '') + "\" \n        style=\"width:" + this.settings.thumbWidth + "px; height: " + this.settings.thumbHeight + ";\n            margin-right: " + this.settings.thumbMargin + "px;\">\n            <img data-lg-item-id=\"" + index + "\" src=\"" + thumbImg + "\" />\n        </div>";
+    };
+    Thumbnail.prototype.getThumbItemHtml = function (items) {
+        var thumbList = '';
+        for (var i = 0; i < items.length; i++) {
+            thumbList += this.getThumbHtml(items[i].thumb, i);
+        }
+        return thumbList;
+    };
+    Thumbnail.prototype.setThumbItemHtml = function (items) {
+        var thumbList = this.getThumbItemHtml(items);
+        this.$lgThumb.html(thumbList);
+    };
+    Thumbnail.prototype.setAnimateThumbStyles = function () {
+        if (this.settings.animateThumb) {
+            this.core.outer.addClass('lg-animate-thumb');
+        }
+    };
+    // Manage thumbnail active calss
+    Thumbnail.prototype.manageActiveClassOnSlideChange = function () {
+        var _this = this;
+        // manage active class for thumbnail
+        this.core.LGel.on(lGEvents.beforeSlide + ".thumb", function (event) {
+            var $thumb = _this.core.outer.find('.lg-thumb-item');
+            var index = event.detail.index;
+            $thumb.removeClass('active');
+            $thumb.eq(index).addClass('active');
+        });
+    };
+    // Toggle thumbnail bar
+    Thumbnail.prototype.toggleThumbBar = function () {
+        var _this = this;
+        if (this.settings.toggleThumb) {
+            this.core.outer.addClass('lg-can-toggle');
+            this.core.$toolbar.append('<button type="button" aria-label="' +
+                this.settings.thumbnailPluginStrings['toggleThumbnails'] +
+                '" class="lg-toggle-thumb lg-icon"></button>');
+            this.core.outer
+                .find('.lg-toggle-thumb')
+                .first()
+                .on('click.lg', function () {
+                _this.core.outer.toggleClass('lg-components-open');
+            });
+        }
+    };
+    Thumbnail.prototype.thumbKeyPress = function () {
+        var _this = this;
+        this.$LG(window).on("keydown.lg.thumb.global" + this.core.lgId, function (e) {
+            if (!_this.core.lgOpened || !_this.settings.toggleThumb)
+                return;
+            if (e.keyCode === 38) {
+                e.preventDefault();
+                _this.core.outer.addClass('lg-components-open');
+            }
+            else if (e.keyCode === 40) {
+                e.preventDefault();
+                _this.core.outer.removeClass('lg-components-open');
+            }
+        });
+    };
+    Thumbnail.prototype.destroy = function () {
+        if (this.settings.thumbnail) {
+            this.$LG(window).off(".lg.thumb.global" + this.core.lgId);
+            this.core.LGel.off('.lg.thumb');
+            this.core.LGel.off('.thumb');
+            this.$thumbOuter.remove();
+            this.core.outer.removeClass('lg-has-thumb');
+        }
+    };
+    return Thumbnail;
+}());
+
+export default Thumbnail;
+//# sourceMappingURL=lg-thumbnail.es5.js.map
diff --git a/resources/lightgallery/plugins/thumbnail/lg-thumbnail.min.js b/resources/lightgallery/plugins/thumbnail/lg-thumbnail.min.js
new file mode 100644
index 0000000..e7cb093
--- /dev/null
+++ b/resources/lightgallery/plugins/thumbnail/lg-thumbnail.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgThumbnail=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,i=1,s=arguments.length;i<s;i++)for(var h in e=arguments[i])Object.prototype.hasOwnProperty.call(e,h)&&(t[h]=e[h]);return t}).apply(this,arguments)},e={thumbnail:!0,animateThumb:!0,currentPagerPosition:"middle",alignThumbnails:"middle",thumbWidth:100,thumbHeight:"80px",thumbMargin:5,appendThumbnailsTo:".lg-components",toggleThumb:!1,enableThumbDrag:!0,enableThumbSwipe:!0,thumbnailSwipeThreshold:10,loadYouTubeThumbnail:!0,youTubeThumbSize:1,thumbnailPluginStrings:{toggleThumbnails:"Toggle thumbnails"}},i="lgContainerResize",s="lgUpdateSlides",h="lgBeforeOpen",n="lgBeforeSlide";return function(){function o(t,e){return this.thumbOuterWidth=0,this.thumbTotalWidth=0,this.translateX=0,this.thumbClickable=!1,this.core=t,this.$LG=e,this}return o.prototype.init=function(){this.settings=t(t({},e),this.core.settings),this.thumbOuterWidth=0,this.thumbTotalWidth=this.core.galleryItems.length*(this.settings.thumbWidth+this.settings.thumbMargin),this.translateX=0,this.setAnimateThumbStyles(),this.core.settings.allowMediaOverlap||(this.settings.toggleThumb=!1),this.settings.thumbnail&&(this.build(),this.settings.animateThumb?(this.settings.enableThumbDrag&&this.enableThumbDrag(),this.settings.enableThumbSwipe&&this.enableThumbSwipe(),this.thumbClickable=!1):this.thumbClickable=!0,this.toggleThumbBar(),this.thumbKeyPress())},o.prototype.build=function(){var t=this;this.setThumbMarkup(),this.manageActiveClassOnSlideChange(),this.$lgThumb.first().on("click.lg touchend.lg",(function(e){var i=t.$LG(e.target);i.hasAttribute("data-lg-item-id")&&setTimeout((function(){if(t.thumbClickable&&!t.core.lgBusy){var e=parseInt(i.attr("data-lg-item-id"));t.core.slide(e,!1,!0,!1)}}),50)})),this.core.LGel.on(n+".thumb",(function(e){var i=e.detail.index;t.animateThumb(i)})),this.core.LGel.on(h+".thumb",(function(){t.thumbOuterWidth=t.core.outer.get().offsetWidth})),this.core.LGel.on(s+".thumb",(function(){t.rebuildThumbnails()})),this.core.LGel.on(i+".thumb",(function(){t.core.lgOpened&&setTimeout((function(){t.thumbOuterWidth=t.core.outer.get().offsetWidth,t.animateThumb(t.core.index),t.thumbOuterWidth=t.core.outer.get().offsetWidth}),50)}))},o.prototype.setThumbMarkup=function(){var t="lg-thumb-outer ";this.settings.alignThumbnails&&(t+="lg-thumb-align-"+this.settings.alignThumbnails);var e='<div class="'+t+'">\n        <div class="lg-thumb lg-group">\n        </div>\n        </div>';this.core.outer.addClass("lg-has-thumb"),".lg-components"===this.settings.appendThumbnailsTo?this.core.$lgComponents.append(e):this.core.outer.append(e),this.$thumbOuter=this.core.outer.find(".lg-thumb-outer").first(),this.$lgThumb=this.core.outer.find(".lg-thumb").first(),this.settings.animateThumb&&this.core.outer.find(".lg-thumb").css("transition-duration",this.core.settings.speed+"ms").css("width",this.thumbTotalWidth+"px").css("position","relative"),this.setThumbItemHtml(this.core.galleryItems)},o.prototype.enableThumbDrag=function(){var t=this,e={cords:{startX:0,endX:0},isMoved:!1,newTranslateX:0,startTime:new Date,endTime:new Date,touchMoveTime:0},i=!1;this.$thumbOuter.addClass("lg-grab"),this.core.outer.find(".lg-thumb").first().on("mousedown.lg.thumb",(function(s){t.thumbTotalWidth>t.thumbOuterWidth&&(s.preventDefault(),e.cords.startX=s.pageX,e.startTime=new Date,t.thumbClickable=!1,i=!0,t.core.outer.get().scrollLeft+=1,t.core.outer.get().scrollLeft-=1,t.$thumbOuter.removeClass("lg-grab").addClass("lg-grabbing"))})),this.$LG(window).on("mousemove.lg.thumb.global"+this.core.lgId,(function(s){t.core.lgOpened&&i&&(e.cords.endX=s.pageX,e=t.onThumbTouchMove(e))})),this.$LG(window).on("mouseup.lg.thumb.global"+this.core.lgId,(function(){t.core.lgOpened&&(e.isMoved?e=t.onThumbTouchEnd(e):t.thumbClickable=!0,i&&(i=!1,t.$thumbOuter.removeClass("lg-grabbing").addClass("lg-grab")))}))},o.prototype.enableThumbSwipe=function(){var t=this,e={cords:{startX:0,endX:0},isMoved:!1,newTranslateX:0,startTime:new Date,endTime:new Date,touchMoveTime:0};this.$lgThumb.on("touchstart.lg",(function(i){t.thumbTotalWidth>t.thumbOuterWidth&&(i.preventDefault(),e.cords.startX=i.targetTouches[0].pageX,t.thumbClickable=!1,e.startTime=new Date)})),this.$lgThumb.on("touchmove.lg",(function(i){t.thumbTotalWidth>t.thumbOuterWidth&&(i.preventDefault(),e.cords.endX=i.targetTouches[0].pageX,e=t.onThumbTouchMove(e))})),this.$lgThumb.on("touchend.lg",(function(){e.isMoved?e=t.onThumbTouchEnd(e):t.thumbClickable=!0}))},o.prototype.rebuildThumbnails=function(){var t=this;this.$thumbOuter.addClass("lg-rebuilding-thumbnails"),setTimeout((function(){t.thumbTotalWidth=t.core.galleryItems.length*(t.settings.thumbWidth+t.settings.thumbMargin),t.$lgThumb.css("width",t.thumbTotalWidth+"px"),t.$lgThumb.empty(),t.setThumbItemHtml(t.core.galleryItems),t.animateThumb(t.core.index)}),50),setTimeout((function(){t.$thumbOuter.removeClass("lg-rebuilding-thumbnails")}),200)},o.prototype.setTranslate=function(t){this.$lgThumb.css("transform","translate3d(-"+t+"px, 0px, 0px)")},o.prototype.getPossibleTransformX=function(t){return t>this.thumbTotalWidth-this.thumbOuterWidth&&(t=this.thumbTotalWidth-this.thumbOuterWidth),t<0&&(t=0),t},o.prototype.animateThumb=function(t){if(this.$lgThumb.css("transition-duration",this.core.settings.speed+"ms"),this.settings.animateThumb){var e=0;switch(this.settings.currentPagerPosition){case"left":e=0;break;case"middle":e=this.thumbOuterWidth/2-this.settings.thumbWidth/2;break;case"right":e=this.thumbOuterWidth-this.settings.thumbWidth}this.translateX=(this.settings.thumbWidth+this.settings.thumbMargin)*t-1-e,this.translateX>this.thumbTotalWidth-this.thumbOuterWidth&&(this.translateX=this.thumbTotalWidth-this.thumbOuterWidth),this.translateX<0&&(this.translateX=0),this.setTranslate(this.translateX)}},o.prototype.onThumbTouchMove=function(t){return t.newTranslateX=this.translateX,t.isMoved=!0,t.touchMoveTime=(new Date).valueOf(),t.newTranslateX-=t.cords.endX-t.cords.startX,t.newTranslateX=this.getPossibleTransformX(t.newTranslateX),this.setTranslate(t.newTranslateX),this.$thumbOuter.addClass("lg-dragging"),t},o.prototype.onThumbTouchEnd=function(t){t.isMoved=!1,t.endTime=new Date,this.$thumbOuter.removeClass("lg-dragging");var e=t.endTime.valueOf()-t.startTime.valueOf(),i=t.cords.endX-t.cords.startX,s=Math.abs(i)/e;return s>.15&&t.endTime.valueOf()-t.touchMoveTime<30?((s+=1)>2&&(s+=1),s+=s*(Math.abs(i)/this.thumbOuterWidth),this.$lgThumb.css("transition-duration",Math.min(s-1,2)+"settings"),i*=s,this.translateX=this.getPossibleTransformX(this.translateX-i),this.setTranslate(this.translateX)):this.translateX=t.newTranslateX,Math.abs(t.cords.endX-t.cords.startX)<this.settings.thumbnailSwipeThreshold&&(this.thumbClickable=!0),t},o.prototype.getThumbHtml=function(t,e){var i,s=this.core.galleryItems[e].__slideVideoInfo||{};return i=s.youtube&&this.settings.loadYouTubeThumbnail?"//img.youtube.com/vi/"+s.youtube[1]+"/"+this.settings.youTubeThumbSize+".jpg":t,'<div data-lg-item-id="'+e+'" class="lg-thumb-item '+(e===this.core.index?" active":"")+'" \n        style="width:'+this.settings.thumbWidth+"px; height: "+this.settings.thumbHeight+";\n            margin-right: "+this.settings.thumbMargin+'px;">\n            <img data-lg-item-id="'+e+'" src="'+i+'" />\n        </div>'},o.prototype.getThumbItemHtml=function(t){for(var e="",i=0;i<t.length;i++)e+=this.getThumbHtml(t[i].thumb,i);return e},o.prototype.setThumbItemHtml=function(t){var e=this.getThumbItemHtml(t);this.$lgThumb.html(e)},o.prototype.setAnimateThumbStyles=function(){this.settings.animateThumb&&this.core.outer.addClass("lg-animate-thumb")},o.prototype.manageActiveClassOnSlideChange=function(){var t=this;this.core.LGel.on(n+".thumb",(function(e){var i=t.core.outer.find(".lg-thumb-item"),s=e.detail.index;i.removeClass("active"),i.eq(s).addClass("active")}))},o.prototype.toggleThumbBar=function(){var t=this;this.settings.toggleThumb&&(this.core.outer.addClass("lg-can-toggle"),this.core.$toolbar.append('<button type="button" aria-label="'+this.settings.thumbnailPluginStrings.toggleThumbnails+'" class="lg-toggle-thumb lg-icon"></button>'),this.core.outer.find(".lg-toggle-thumb").first().on("click.lg",(function(){t.core.outer.toggleClass("lg-components-open")})))},o.prototype.thumbKeyPress=function(){var t=this;this.$LG(window).on("keydown.lg.thumb.global"+this.core.lgId,(function(e){t.core.lgOpened&&t.settings.toggleThumb&&(38===e.keyCode?(e.preventDefault(),t.core.outer.addClass("lg-components-open")):40===e.keyCode&&(e.preventDefault(),t.core.outer.removeClass("lg-components-open")))}))},o.prototype.destroy=function(){this.settings.thumbnail&&(this.$LG(window).off(".lg.thumb.global"+this.core.lgId),this.core.LGel.off(".lg.thumb"),this.core.LGel.off(".thumb"),this.$thumbOuter.remove(),this.core.outer.removeClass("lg-has-thumb"))},o}()}));
diff --git a/resources/lightgallery/plugins/thumbnail/lg-thumbnail.umd.js b/resources/lightgallery/plugins/thumbnail/lg-thumbnail.umd.js
new file mode 100644
index 0000000..91c1a1d
--- /dev/null
+++ b/resources/lightgallery/plugins/thumbnail/lg-thumbnail.umd.js
@@ -0,0 +1,491 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgThumbnail = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    var thumbnailsSettings = {
+        thumbnail: true,
+        animateThumb: true,
+        currentPagerPosition: 'middle',
+        alignThumbnails: 'middle',
+        thumbWidth: 100,
+        thumbHeight: '80px',
+        thumbMargin: 5,
+        appendThumbnailsTo: '.lg-components',
+        toggleThumb: false,
+        enableThumbDrag: true,
+        enableThumbSwipe: true,
+        thumbnailSwipeThreshold: 10,
+        loadYouTubeThumbnail: true,
+        youTubeThumbSize: 1,
+        thumbnailPluginStrings: {
+            toggleThumbnails: 'Toggle thumbnails',
+        },
+    };
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var Thumbnail = /** @class */ (function () {
+        function Thumbnail(instance, $LG) {
+            this.thumbOuterWidth = 0;
+            this.thumbTotalWidth = 0;
+            this.translateX = 0;
+            this.thumbClickable = false;
+            // get lightGallery core plugin instance
+            this.core = instance;
+            this.$LG = $LG;
+            return this;
+        }
+        Thumbnail.prototype.init = function () {
+            // extend module default settings with lightGallery core settings
+            this.settings = __assign(__assign({}, thumbnailsSettings), this.core.settings);
+            this.thumbOuterWidth = 0;
+            this.thumbTotalWidth =
+                this.core.galleryItems.length *
+                    (this.settings.thumbWidth + this.settings.thumbMargin);
+            // Thumbnail animation value
+            this.translateX = 0;
+            this.setAnimateThumbStyles();
+            if (!this.core.settings.allowMediaOverlap) {
+                this.settings.toggleThumb = false;
+            }
+            if (this.settings.thumbnail) {
+                this.build();
+                if (this.settings.animateThumb) {
+                    if (this.settings.enableThumbDrag) {
+                        this.enableThumbDrag();
+                    }
+                    if (this.settings.enableThumbSwipe) {
+                        this.enableThumbSwipe();
+                    }
+                    this.thumbClickable = false;
+                }
+                else {
+                    this.thumbClickable = true;
+                }
+                this.toggleThumbBar();
+                this.thumbKeyPress();
+            }
+        };
+        Thumbnail.prototype.build = function () {
+            var _this = this;
+            this.setThumbMarkup();
+            this.manageActiveClassOnSlideChange();
+            this.$lgThumb.first().on('click.lg touchend.lg', function (e) {
+                var $target = _this.$LG(e.target);
+                if (!$target.hasAttribute('data-lg-item-id')) {
+                    return;
+                }
+                setTimeout(function () {
+                    // In IE9 and bellow touch does not support
+                    // Go to slide if browser does not support css transitions
+                    if (_this.thumbClickable && !_this.core.lgBusy) {
+                        var index = parseInt($target.attr('data-lg-item-id'));
+                        _this.core.slide(index, false, true, false);
+                    }
+                }, 50);
+            });
+            this.core.LGel.on(lGEvents.beforeSlide + ".thumb", function (event) {
+                var index = event.detail.index;
+                _this.animateThumb(index);
+            });
+            this.core.LGel.on(lGEvents.beforeOpen + ".thumb", function () {
+                _this.thumbOuterWidth = _this.core.outer.get().offsetWidth;
+            });
+            this.core.LGel.on(lGEvents.updateSlides + ".thumb", function () {
+                _this.rebuildThumbnails();
+            });
+            this.core.LGel.on(lGEvents.containerResize + ".thumb", function () {
+                if (!_this.core.lgOpened)
+                    return;
+                setTimeout(function () {
+                    _this.thumbOuterWidth = _this.core.outer.get().offsetWidth;
+                    _this.animateThumb(_this.core.index);
+                    _this.thumbOuterWidth = _this.core.outer.get().offsetWidth;
+                }, 50);
+            });
+        };
+        Thumbnail.prototype.setThumbMarkup = function () {
+            var thumbOuterClassNames = 'lg-thumb-outer ';
+            if (this.settings.alignThumbnails) {
+                thumbOuterClassNames += "lg-thumb-align-" + this.settings.alignThumbnails;
+            }
+            var html = "<div class=\"" + thumbOuterClassNames + "\">\n        <div class=\"lg-thumb lg-group\">\n        </div>\n        </div>";
+            this.core.outer.addClass('lg-has-thumb');
+            if (this.settings.appendThumbnailsTo === '.lg-components') {
+                this.core.$lgComponents.append(html);
+            }
+            else {
+                this.core.outer.append(html);
+            }
+            this.$thumbOuter = this.core.outer.find('.lg-thumb-outer').first();
+            this.$lgThumb = this.core.outer.find('.lg-thumb').first();
+            if (this.settings.animateThumb) {
+                this.core.outer
+                    .find('.lg-thumb')
+                    .css('transition-duration', this.core.settings.speed + 'ms')
+                    .css('width', this.thumbTotalWidth + 'px')
+                    .css('position', 'relative');
+            }
+            this.setThumbItemHtml(this.core.galleryItems);
+        };
+        Thumbnail.prototype.enableThumbDrag = function () {
+            var _this = this;
+            var thumbDragUtils = {
+                cords: {
+                    startX: 0,
+                    endX: 0,
+                },
+                isMoved: false,
+                newTranslateX: 0,
+                startTime: new Date(),
+                endTime: new Date(),
+                touchMoveTime: 0,
+            };
+            var isDragging = false;
+            this.$thumbOuter.addClass('lg-grab');
+            this.core.outer
+                .find('.lg-thumb')
+                .first()
+                .on('mousedown.lg.thumb', function (e) {
+                if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
+                    // execute only on .lg-object
+                    e.preventDefault();
+                    thumbDragUtils.cords.startX = e.pageX;
+                    thumbDragUtils.startTime = new Date();
+                    _this.thumbClickable = false;
+                    isDragging = true;
+                    // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723
+                    _this.core.outer.get().scrollLeft += 1;
+                    _this.core.outer.get().scrollLeft -= 1;
+                    // *
+                    _this.$thumbOuter
+                        .removeClass('lg-grab')
+                        .addClass('lg-grabbing');
+                }
+            });
+            this.$LG(window).on("mousemove.lg.thumb.global" + this.core.lgId, function (e) {
+                if (!_this.core.lgOpened)
+                    return;
+                if (isDragging) {
+                    thumbDragUtils.cords.endX = e.pageX;
+                    thumbDragUtils = _this.onThumbTouchMove(thumbDragUtils);
+                }
+            });
+            this.$LG(window).on("mouseup.lg.thumb.global" + this.core.lgId, function () {
+                if (!_this.core.lgOpened)
+                    return;
+                if (thumbDragUtils.isMoved) {
+                    thumbDragUtils = _this.onThumbTouchEnd(thumbDragUtils);
+                }
+                else {
+                    _this.thumbClickable = true;
+                }
+                if (isDragging) {
+                    isDragging = false;
+                    _this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab');
+                }
+            });
+        };
+        Thumbnail.prototype.enableThumbSwipe = function () {
+            var _this = this;
+            var thumbDragUtils = {
+                cords: {
+                    startX: 0,
+                    endX: 0,
+                },
+                isMoved: false,
+                newTranslateX: 0,
+                startTime: new Date(),
+                endTime: new Date(),
+                touchMoveTime: 0,
+            };
+            this.$lgThumb.on('touchstart.lg', function (e) {
+                if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
+                    e.preventDefault();
+                    thumbDragUtils.cords.startX = e.targetTouches[0].pageX;
+                    _this.thumbClickable = false;
+                    thumbDragUtils.startTime = new Date();
+                }
+            });
+            this.$lgThumb.on('touchmove.lg', function (e) {
+                if (_this.thumbTotalWidth > _this.thumbOuterWidth) {
+                    e.preventDefault();
+                    thumbDragUtils.cords.endX = e.targetTouches[0].pageX;
+                    thumbDragUtils = _this.onThumbTouchMove(thumbDragUtils);
+                }
+            });
+            this.$lgThumb.on('touchend.lg', function () {
+                if (thumbDragUtils.isMoved) {
+                    thumbDragUtils = _this.onThumbTouchEnd(thumbDragUtils);
+                }
+                else {
+                    _this.thumbClickable = true;
+                }
+            });
+        };
+        // Rebuild thumbnails
+        Thumbnail.prototype.rebuildThumbnails = function () {
+            var _this = this;
+            // Remove transitions
+            this.$thumbOuter.addClass('lg-rebuilding-thumbnails');
+            setTimeout(function () {
+                _this.thumbTotalWidth =
+                    _this.core.galleryItems.length *
+                        (_this.settings.thumbWidth + _this.settings.thumbMargin);
+                _this.$lgThumb.css('width', _this.thumbTotalWidth + 'px');
+                _this.$lgThumb.empty();
+                _this.setThumbItemHtml(_this.core.galleryItems);
+                _this.animateThumb(_this.core.index);
+            }, 50);
+            setTimeout(function () {
+                _this.$thumbOuter.removeClass('lg-rebuilding-thumbnails');
+            }, 200);
+        };
+        // @ts-check
+        Thumbnail.prototype.setTranslate = function (value) {
+            this.$lgThumb.css('transform', 'translate3d(-' + value + 'px, 0px, 0px)');
+        };
+        Thumbnail.prototype.getPossibleTransformX = function (left) {
+            if (left > this.thumbTotalWidth - this.thumbOuterWidth) {
+                left = this.thumbTotalWidth - this.thumbOuterWidth;
+            }
+            if (left < 0) {
+                left = 0;
+            }
+            return left;
+        };
+        Thumbnail.prototype.animateThumb = function (index) {
+            this.$lgThumb.css('transition-duration', this.core.settings.speed + 'ms');
+            if (this.settings.animateThumb) {
+                var position = 0;
+                switch (this.settings.currentPagerPosition) {
+                    case 'left':
+                        position = 0;
+                        break;
+                    case 'middle':
+                        position =
+                            this.thumbOuterWidth / 2 - this.settings.thumbWidth / 2;
+                        break;
+                    case 'right':
+                        position = this.thumbOuterWidth - this.settings.thumbWidth;
+                }
+                this.translateX =
+                    (this.settings.thumbWidth + this.settings.thumbMargin) * index -
+                        1 -
+                        position;
+                if (this.translateX > this.thumbTotalWidth - this.thumbOuterWidth) {
+                    this.translateX = this.thumbTotalWidth - this.thumbOuterWidth;
+                }
+                if (this.translateX < 0) {
+                    this.translateX = 0;
+                }
+                this.setTranslate(this.translateX);
+            }
+        };
+        Thumbnail.prototype.onThumbTouchMove = function (thumbDragUtils) {
+            thumbDragUtils.newTranslateX = this.translateX;
+            thumbDragUtils.isMoved = true;
+            thumbDragUtils.touchMoveTime = new Date().valueOf();
+            thumbDragUtils.newTranslateX -=
+                thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;
+            thumbDragUtils.newTranslateX = this.getPossibleTransformX(thumbDragUtils.newTranslateX);
+            // move current slide
+            this.setTranslate(thumbDragUtils.newTranslateX);
+            this.$thumbOuter.addClass('lg-dragging');
+            return thumbDragUtils;
+        };
+        Thumbnail.prototype.onThumbTouchEnd = function (thumbDragUtils) {
+            thumbDragUtils.isMoved = false;
+            thumbDragUtils.endTime = new Date();
+            this.$thumbOuter.removeClass('lg-dragging');
+            var touchDuration = thumbDragUtils.endTime.valueOf() -
+                thumbDragUtils.startTime.valueOf();
+            var distanceXnew = thumbDragUtils.cords.endX - thumbDragUtils.cords.startX;
+            var speedX = Math.abs(distanceXnew) / touchDuration;
+            // Some magical numbers
+            // Can be improved
+            if (speedX > 0.15 &&
+                thumbDragUtils.endTime.valueOf() - thumbDragUtils.touchMoveTime < 30) {
+                speedX += 1;
+                if (speedX > 2) {
+                    speedX += 1;
+                }
+                speedX =
+                    speedX +
+                        speedX * (Math.abs(distanceXnew) / this.thumbOuterWidth);
+                this.$lgThumb.css('transition-duration', Math.min(speedX - 1, 2) + 'settings');
+                distanceXnew = distanceXnew * speedX;
+                this.translateX = this.getPossibleTransformX(this.translateX - distanceXnew);
+                this.setTranslate(this.translateX);
+            }
+            else {
+                this.translateX = thumbDragUtils.newTranslateX;
+            }
+            if (Math.abs(thumbDragUtils.cords.endX - thumbDragUtils.cords.startX) <
+                this.settings.thumbnailSwipeThreshold) {
+                this.thumbClickable = true;
+            }
+            return thumbDragUtils;
+        };
+        Thumbnail.prototype.getThumbHtml = function (thumb, index) {
+            var slideVideoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
+            var thumbImg;
+            if (slideVideoInfo.youtube) {
+                if (this.settings.loadYouTubeThumbnail) {
+                    thumbImg =
+                        '//img.youtube.com/vi/' +
+                            slideVideoInfo.youtube[1] +
+                            '/' +
+                            this.settings.youTubeThumbSize +
+                            '.jpg';
+                }
+                else {
+                    thumbImg = thumb;
+                }
+            }
+            else {
+                thumbImg = thumb;
+            }
+            return "<div data-lg-item-id=\"" + index + "\" class=\"lg-thumb-item " + (index === this.core.index ? ' active' : '') + "\" \n        style=\"width:" + this.settings.thumbWidth + "px; height: " + this.settings.thumbHeight + ";\n            margin-right: " + this.settings.thumbMargin + "px;\">\n            <img data-lg-item-id=\"" + index + "\" src=\"" + thumbImg + "\" />\n        </div>";
+        };
+        Thumbnail.prototype.getThumbItemHtml = function (items) {
+            var thumbList = '';
+            for (var i = 0; i < items.length; i++) {
+                thumbList += this.getThumbHtml(items[i].thumb, i);
+            }
+            return thumbList;
+        };
+        Thumbnail.prototype.setThumbItemHtml = function (items) {
+            var thumbList = this.getThumbItemHtml(items);
+            this.$lgThumb.html(thumbList);
+        };
+        Thumbnail.prototype.setAnimateThumbStyles = function () {
+            if (this.settings.animateThumb) {
+                this.core.outer.addClass('lg-animate-thumb');
+            }
+        };
+        // Manage thumbnail active calss
+        Thumbnail.prototype.manageActiveClassOnSlideChange = function () {
+            var _this = this;
+            // manage active class for thumbnail
+            this.core.LGel.on(lGEvents.beforeSlide + ".thumb", function (event) {
+                var $thumb = _this.core.outer.find('.lg-thumb-item');
+                var index = event.detail.index;
+                $thumb.removeClass('active');
+                $thumb.eq(index).addClass('active');
+            });
+        };
+        // Toggle thumbnail bar
+        Thumbnail.prototype.toggleThumbBar = function () {
+            var _this = this;
+            if (this.settings.toggleThumb) {
+                this.core.outer.addClass('lg-can-toggle');
+                this.core.$toolbar.append('<button type="button" aria-label="' +
+                    this.settings.thumbnailPluginStrings['toggleThumbnails'] +
+                    '" class="lg-toggle-thumb lg-icon"></button>');
+                this.core.outer
+                    .find('.lg-toggle-thumb')
+                    .first()
+                    .on('click.lg', function () {
+                    _this.core.outer.toggleClass('lg-components-open');
+                });
+            }
+        };
+        Thumbnail.prototype.thumbKeyPress = function () {
+            var _this = this;
+            this.$LG(window).on("keydown.lg.thumb.global" + this.core.lgId, function (e) {
+                if (!_this.core.lgOpened || !_this.settings.toggleThumb)
+                    return;
+                if (e.keyCode === 38) {
+                    e.preventDefault();
+                    _this.core.outer.addClass('lg-components-open');
+                }
+                else if (e.keyCode === 40) {
+                    e.preventDefault();
+                    _this.core.outer.removeClass('lg-components-open');
+                }
+            });
+        };
+        Thumbnail.prototype.destroy = function () {
+            if (this.settings.thumbnail) {
+                this.$LG(window).off(".lg.thumb.global" + this.core.lgId);
+                this.core.LGel.off('.lg.thumb');
+                this.core.LGel.off('.thumb');
+                this.$thumbOuter.remove();
+                this.core.outer.removeClass('lg-has-thumb');
+            }
+        };
+        return Thumbnail;
+    }());
+
+    return Thumbnail;
+
+})));
+//# sourceMappingURL=lg-thumbnail.umd.js.map
diff --git a/resources/lightgallery/plugins/video/lg-video.es5.js b/resources/lightgallery/plugins/video/lg-video.es5.js
new file mode 100644
index 0000000..7cd933e
--- /dev/null
+++ b/resources/lightgallery/plugins/video/lg-video.es5.js
@@ -0,0 +1,535 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+var videoSettings = {
+    autoplayFirstVideo: true,
+    youTubePlayerParams: false,
+    vimeoPlayerParams: false,
+    wistiaPlayerParams: false,
+    gotoNextSlideOnVideoEnd: true,
+    autoplayVideoOnSlide: false,
+    videojs: false,
+    videojsTheme: '',
+    videojsOptions: {},
+};
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var param = function (obj) {
+    return Object.keys(obj)
+        .map(function (k) {
+        return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);
+    })
+        .join('&');
+};
+var paramsToObject = function (url) {
+    var paramas = url
+        .slice(1)
+        .split('&')
+        .map(function (p) { return p.split('='); })
+        .reduce(function (obj, pair) {
+        var _a = pair.map(decodeURIComponent), key = _a[0], value = _a[1];
+        obj[key] = value;
+        return obj;
+    }, {});
+    return paramas;
+};
+var getYouTubeParams = function (videoInfo, youTubePlayerParamsSettings) {
+    if (!videoInfo.youtube)
+        return '';
+    var slideUrlParams = videoInfo.youtube[2]
+        ? paramsToObject(videoInfo.youtube[2])
+        : '';
+    // For youtube first params gets priority if duplicates found
+    var defaultYouTubePlayerParams = {
+        wmode: 'opaque',
+        autoplay: 0,
+        mute: 1,
+        enablejsapi: 1,
+    };
+    var playerParamsSettings = youTubePlayerParamsSettings || {};
+    var youTubePlayerParams = __assign(__assign(__assign({}, defaultYouTubePlayerParams), playerParamsSettings), slideUrlParams);
+    var youTubeParams = "?" + param(youTubePlayerParams);
+    return youTubeParams;
+};
+var isYouTubeNoCookie = function (url) {
+    return url.includes('youtube-nocookie.com');
+};
+var getVimeoURLParams = function (defaultParams, videoInfo) {
+    if (!videoInfo || !videoInfo.vimeo)
+        return '';
+    var urlParams = videoInfo.vimeo[2] || '';
+    var defaultPlayerParams = defaultParams && Object.keys(defaultParams).length !== 0
+        ? '&' + param(defaultParams)
+        : '';
+    // Support private video
+    var urlWithHash = videoInfo.vimeo[0].split('/').pop() || '';
+    var urlWithHashWithParams = urlWithHash.split('?')[0] || '';
+    var hash = urlWithHashWithParams.split('#')[0];
+    var isPrivate = videoInfo.vimeo[1] !== hash;
+    if (isPrivate) {
+        urlParams = urlParams.replace("/" + hash, '');
+    }
+    urlParams =
+        urlParams[0] == '?' ? '&' + urlParams.slice(1) : urlParams || '';
+    // For vimeo last params gets priority if duplicates found
+    var vimeoPlayerParams = "?autoplay=0&muted=1" + (isPrivate ? "&h=" + hash : '') + defaultPlayerParams + urlParams;
+    return vimeoPlayerParams;
+};
+
+/**
+ * Video module for lightGallery
+ * Supports HTML5, YouTube, Vimeo, wistia videos
+ *
+ *
+ * @ref Wistia
+ * https://wistia.com/support/integrations/wordpress(How to get url)
+ * https://wistia.com/support/developers/embed-options#using-embed-options
+ * https://wistia.com/support/developers/player-api
+ * https://wistia.com/support/developers/construct-an-embed-code
+ * http://jsfiddle.net/xvnm7xLm/
+ * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video
+ * https://wistia.com/support/embed-and-share/sharing-videos
+ * https://private-sharing.wistia.com/medias/mwhrulrucj
+ *
+ * @ref Youtube
+ * https://developers.google.com/youtube/player_parameters#enablejsapi
+ * https://developers.google.com/youtube/iframe_api_reference
+ * https://developer.chrome.com/blog/autoplay/#iframe-delegation
+ *
+ * @ref Vimeo
+ * https://stackoverflow.com/questions/10488943/easy-way-to-get-vimeo-id-from-a-vimeo-url
+ * https://vimeo.zendesk.com/hc/en-us/articles/360000121668-Starting-playback-at-a-specific-timecode
+ * https://vimeo.zendesk.com/hc/en-us/articles/360001494447-Using-Player-Parameters
+ */
+var Video = /** @class */ (function () {
+    function Video(instance) {
+        // get lightGallery core plugin instance
+        this.core = instance;
+        this.settings = __assign(__assign({}, videoSettings), this.core.settings);
+        return this;
+    }
+    Video.prototype.init = function () {
+        var _this = this;
+        /**
+         * Event triggered when video url found without poster
+         * Append video HTML
+         * Play if autoplayFirstVideo is true
+         */
+        this.core.LGel.on(lGEvents.hasVideo + ".video", this.onHasVideo.bind(this));
+        this.core.LGel.on(lGEvents.posterClick + ".video", function () {
+            var $el = _this.core.getSlideItem(_this.core.index);
+            _this.loadVideoOnPosterClick($el);
+        });
+        this.core.LGel.on(lGEvents.slideItemLoad + ".video", this.onSlideItemLoad.bind(this));
+        // @desc fired immediately before each slide transition.
+        this.core.LGel.on(lGEvents.beforeSlide + ".video", this.onBeforeSlide.bind(this));
+        // @desc fired immediately after each slide transition.
+        this.core.LGel.on(lGEvents.afterSlide + ".video", this.onAfterSlide.bind(this));
+    };
+    /**
+     * @desc Event triggered when a slide is completely loaded
+     *
+     * @param {Event} event - lightGalley custom event
+     */
+    Video.prototype.onSlideItemLoad = function (event) {
+        var _this = this;
+        var _a = event.detail, isFirstSlide = _a.isFirstSlide, index = _a.index;
+        // Should check the active slide as well as user may have moved to different slide before the first slide is loaded
+        if (this.settings.autoplayFirstVideo &&
+            isFirstSlide &&
+            index === this.core.index) {
+            // Delay is just for the transition effect on video load
+            setTimeout(function () {
+                _this.loadAndPlayVideo(index);
+            }, 200);
+        }
+        // Should not call on first slide. should check only if the slide is active
+        if (!isFirstSlide &&
+            this.settings.autoplayVideoOnSlide &&
+            index === this.core.index) {
+            this.loadAndPlayVideo(index);
+        }
+    };
+    /**
+     * @desc Event triggered when video url or poster found
+     * Append video HTML is poster is not given
+     * Play if autoplayFirstVideo is true
+     *
+     * @param {Event} event - Javascript Event object.
+     */
+    Video.prototype.onHasVideo = function (event) {
+        var _a = event.detail, index = _a.index, src = _a.src, html5Video = _a.html5Video, hasPoster = _a.hasPoster;
+        if (!hasPoster) {
+            // All functions are called separately if poster exist in loadVideoOnPosterClick function
+            this.appendVideos(this.core.getSlideItem(index), {
+                src: src,
+                addClass: 'lg-object',
+                index: index,
+                html5Video: html5Video,
+            });
+            // Automatically navigate to next slide once video reaches the end.
+            this.gotoNextSlideOnVideoEnd(src, index);
+        }
+    };
+    /**
+     * @desc fired immediately before each slide transition.
+     * Pause the previous video
+     * Hide the download button if the slide contains YouTube, Vimeo, or Wistia videos.
+     *
+     * @param {Event} event - Javascript Event object.
+     * @param {number} prevIndex - Previous index of the slide.
+     * @param {number} index - Current index of the slide
+     */
+    Video.prototype.onBeforeSlide = function (event) {
+        if (this.core.lGalleryOn) {
+            var prevIndex = event.detail.prevIndex;
+            this.pauseVideo(prevIndex);
+        }
+    };
+    /**
+     * @desc fired immediately after each slide transition.
+     * Play video if autoplayVideoOnSlide option is enabled.
+     *
+     * @param {Event} event - Javascript Event object.
+     * @param {number} prevIndex - Previous index of the slide.
+     * @param {number} index - Current index of the slide
+     * @todo should check on onSlideLoad as well if video is not loaded on after slide
+     */
+    Video.prototype.onAfterSlide = function (event) {
+        var _this = this;
+        var _a = event.detail, index = _a.index, prevIndex = _a.prevIndex;
+        // Do not call on first slide
+        var $slide = this.core.getSlideItem(index);
+        if (this.settings.autoplayVideoOnSlide && index !== prevIndex) {
+            if ($slide.hasClass('lg-complete')) {
+                setTimeout(function () {
+                    _this.loadAndPlayVideo(index);
+                }, 100);
+            }
+        }
+    };
+    Video.prototype.loadAndPlayVideo = function (index) {
+        var $slide = this.core.getSlideItem(index);
+        var currentGalleryItem = this.core.galleryItems[index];
+        if (currentGalleryItem.poster) {
+            this.loadVideoOnPosterClick($slide, true);
+        }
+        else {
+            this.playVideo(index);
+        }
+    };
+    /**
+     * Play HTML5, Youtube, Vimeo or Wistia videos in a particular slide.
+     * @param {number} index - Index of the slide
+     */
+    Video.prototype.playVideo = function (index) {
+        this.controlVideo(index, 'play');
+    };
+    /**
+     * Pause HTML5, Youtube, Vimeo or Wistia videos in a particular slide.
+     * @param {number} index - Index of the slide
+     */
+    Video.prototype.pauseVideo = function (index) {
+        this.controlVideo(index, 'pause');
+    };
+    Video.prototype.getVideoHtml = function (src, addClass, index, html5Video) {
+        var video = '';
+        var videoInfo = this.core.galleryItems[index]
+            .__slideVideoInfo || {};
+        var currentGalleryItem = this.core.galleryItems[index];
+        var videoTitle = currentGalleryItem.title || currentGalleryItem.alt;
+        videoTitle = videoTitle ? 'title="' + videoTitle + '"' : '';
+        var commonIframeProps = "allowtransparency=\"true\"\n            frameborder=\"0\"\n            scrolling=\"no\"\n            allowfullscreen\n            mozallowfullscreen\n            webkitallowfullscreen\n            oallowfullscreen\n            msallowfullscreen";
+        if (videoInfo.youtube) {
+            var videoId = 'lg-youtube' + index;
+            var youTubeParams = getYouTubeParams(videoInfo, this.settings.youTubePlayerParams);
+            var isYouTubeNoCookieURL = isYouTubeNoCookie(src);
+            var youtubeURL = isYouTubeNoCookieURL
+                ? '//www.youtube-nocookie.com/'
+                : '//www.youtube.com/';
+            video = "<iframe allow=\"autoplay\" id=" + videoId + " class=\"lg-video-object lg-youtube " + addClass + "\" " + videoTitle + " src=\"" + youtubeURL + "embed/" + (videoInfo.youtube[1] + youTubeParams) + "\" " + commonIframeProps + "></iframe>";
+        }
+        else if (videoInfo.vimeo) {
+            var videoId = 'lg-vimeo' + index;
+            var playerParams = getVimeoURLParams(this.settings.vimeoPlayerParams, videoInfo);
+            video = "<iframe allow=\"autoplay\" id=" + videoId + " class=\"lg-video-object lg-vimeo " + addClass + "\" " + videoTitle + " src=\"//player.vimeo.com/video/" + (videoInfo.vimeo[1] + playerParams) + "\" " + commonIframeProps + "></iframe>";
+        }
+        else if (videoInfo.wistia) {
+            var wistiaId = 'lg-wistia' + index;
+            var playerParams = param(this.settings.wistiaPlayerParams);
+            playerParams = playerParams ? '?' + playerParams : '';
+            video = "<iframe allow=\"autoplay\" id=\"" + wistiaId + "\" src=\"//fast.wistia.net/embed/iframe/" + (videoInfo.wistia[4] + playerParams) + "\" " + videoTitle + " class=\"wistia_embed lg-video-object lg-wistia " + addClass + "\" name=\"wistia_embed\" " + commonIframeProps + "></iframe>";
+        }
+        else if (videoInfo.html5) {
+            var html5VideoMarkup = '';
+            for (var i = 0; i < html5Video.source.length; i++) {
+                html5VideoMarkup += "<source src=\"" + html5Video.source[i].src + "\" type=\"" + html5Video.source[i].type + "\">";
+            }
+            if (html5Video.tracks) {
+                var _loop_1 = function (i) {
+                    var trackAttributes = '';
+                    var track = html5Video.tracks[i];
+                    Object.keys(track || {}).forEach(function (key) {
+                        trackAttributes += key + "=\"" + track[key] + "\" ";
+                    });
+                    html5VideoMarkup += "<track " + trackAttributes + ">";
+                };
+                for (var i = 0; i < html5Video.tracks.length; i++) {
+                    _loop_1(i);
+                }
+            }
+            var html5VideoAttrs_1 = '';
+            var videoAttributes_1 = html5Video.attributes || {};
+            Object.keys(videoAttributes_1 || {}).forEach(function (key) {
+                html5VideoAttrs_1 += key + "=\"" + videoAttributes_1[key] + "\" ";
+            });
+            video = "<video class=\"lg-video-object lg-html5 " + (this.settings.videojs && this.settings.videojsTheme
+                ? this.settings.videojsTheme + ' '
+                : '') + " " + (this.settings.videojs ? ' video-js' : '') + "\" " + html5VideoAttrs_1 + ">\n                " + html5VideoMarkup + "\n                Your browser does not support HTML5 video.\n            </video>";
+        }
+        return video;
+    };
+    /**
+     * @desc - Append videos to the slide
+     *
+     * @param {HTMLElement} el - slide element
+     * @param {Object} videoParams - Video parameters, Contains src, class, index, htmlVideo
+     */
+    Video.prototype.appendVideos = function (el, videoParams) {
+        var _a;
+        var videoHtml = this.getVideoHtml(videoParams.src, videoParams.addClass, videoParams.index, videoParams.html5Video);
+        el.find('.lg-video-cont').append(videoHtml);
+        var $videoElement = el.find('.lg-video-object').first();
+        if (videoParams.html5Video) {
+            $videoElement.on('mousedown.lg.video', function (e) {
+                e.stopPropagation();
+            });
+        }
+        if (this.settings.videojs && ((_a = this.core.galleryItems[videoParams.index].__slideVideoInfo) === null || _a === void 0 ? void 0 : _a.html5)) {
+            try {
+                return videojs($videoElement.get(), this.settings.videojsOptions);
+            }
+            catch (e) {
+                console.error('lightGallery:- Make sure you have included videojs');
+            }
+        }
+    };
+    Video.prototype.gotoNextSlideOnVideoEnd = function (src, index) {
+        var _this = this;
+        var $videoElement = this.core
+            .getSlideItem(index)
+            .find('.lg-video-object')
+            .first();
+        var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
+        if (this.settings.gotoNextSlideOnVideoEnd) {
+            if (videoInfo.html5) {
+                $videoElement.on('ended', function () {
+                    _this.core.goToNextSlide();
+                });
+            }
+            else if (videoInfo.vimeo) {
+                try {
+                    // https://github.com/vimeo/player.js/#ended
+                    new Vimeo.Player($videoElement.get()).on('ended', function () {
+                        _this.core.goToNextSlide();
+                    });
+                }
+                catch (e) {
+                    console.error('lightGallery:- Make sure you have included //github.com/vimeo/player.js');
+                }
+            }
+            else if (videoInfo.wistia) {
+                try {
+                    window._wq = window._wq || [];
+                    // @todo Event is gettign triggered multiple times
+                    window._wq.push({
+                        id: $videoElement.attr('id'),
+                        onReady: function (video) {
+                            video.bind('end', function () {
+                                _this.core.goToNextSlide();
+                            });
+                        },
+                    });
+                }
+                catch (e) {
+                    console.error('lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js');
+                }
+            }
+        }
+    };
+    Video.prototype.controlVideo = function (index, action) {
+        var $videoElement = this.core
+            .getSlideItem(index)
+            .find('.lg-video-object')
+            .first();
+        var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
+        if (!$videoElement.get())
+            return;
+        if (videoInfo.youtube) {
+            try {
+                $videoElement.get().contentWindow.postMessage("{\"event\":\"command\",\"func\":\"" + action + "Video\",\"args\":\"\"}", '*');
+            }
+            catch (e) {
+                console.error("lightGallery:- " + e);
+            }
+        }
+        else if (videoInfo.vimeo) {
+            try {
+                new Vimeo.Player($videoElement.get())[action]();
+            }
+            catch (e) {
+                console.error('lightGallery:- Make sure you have included //github.com/vimeo/player.js');
+            }
+        }
+        else if (videoInfo.html5) {
+            if (this.settings.videojs) {
+                try {
+                    videojs($videoElement.get())[action]();
+                }
+                catch (e) {
+                    console.error('lightGallery:- Make sure you have included videojs');
+                }
+            }
+            else {
+                $videoElement.get()[action]();
+            }
+        }
+        else if (videoInfo.wistia) {
+            try {
+                window._wq = window._wq || [];
+                // @todo Find a way to destroy wistia player instance
+                window._wq.push({
+                    id: $videoElement.attr('id'),
+                    onReady: function (video) {
+                        video[action]();
+                    },
+                });
+            }
+            catch (e) {
+                console.error('lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js');
+            }
+        }
+    };
+    Video.prototype.loadVideoOnPosterClick = function ($el, forcePlay) {
+        var _this = this;
+        // check slide has poster
+        if (!$el.hasClass('lg-video-loaded')) {
+            // check already video element present
+            if (!$el.hasClass('lg-has-video')) {
+                $el.addClass('lg-has-video');
+                var _html = void 0;
+                var _src = this.core.galleryItems[this.core.index].src;
+                var video = this.core.galleryItems[this.core.index].video;
+                if (video) {
+                    _html =
+                        typeof video === 'string' ? JSON.parse(video) : video;
+                }
+                var videoJsPlayer_1 = this.appendVideos($el, {
+                    src: _src,
+                    addClass: '',
+                    index: this.core.index,
+                    html5Video: _html,
+                });
+                this.gotoNextSlideOnVideoEnd(_src, this.core.index);
+                var $tempImg = $el.find('.lg-object').first().get();
+                // @todo make sure it is working
+                $el.find('.lg-video-cont').first().append($tempImg);
+                $el.addClass('lg-video-loading');
+                videoJsPlayer_1 &&
+                    videoJsPlayer_1.ready(function () {
+                        videoJsPlayer_1.on('loadedmetadata', function () {
+                            _this.onVideoLoadAfterPosterClick($el, _this.core.index);
+                        });
+                    });
+                $el.find('.lg-video-object')
+                    .first()
+                    .on('load.lg error.lg loadedmetadata.lg', function () {
+                    setTimeout(function () {
+                        _this.onVideoLoadAfterPosterClick($el, _this.core.index);
+                    }, 50);
+                });
+            }
+            else {
+                this.playVideo(this.core.index);
+            }
+        }
+        else if (forcePlay) {
+            this.playVideo(this.core.index);
+        }
+    };
+    Video.prototype.onVideoLoadAfterPosterClick = function ($el, index) {
+        $el.addClass('lg-video-loaded');
+        this.playVideo(index);
+    };
+    Video.prototype.destroy = function () {
+        this.core.LGel.off('.lg.video');
+        this.core.LGel.off('.video');
+    };
+    return Video;
+}());
+
+export default Video;
+//# sourceMappingURL=lg-video.es5.js.map
diff --git a/resources/lightgallery/plugins/video/lg-video.min.js b/resources/lightgallery/plugins/video/lg-video.min.js
new file mode 100644
index 0000000..485f9f6
--- /dev/null
+++ b/resources/lightgallery/plugins/video/lg-video.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?module.exports=o():"function"==typeof define&&define.amd?define(o):(e="undefined"!=typeof globalThis?globalThis:e||self).lgVideo=o()}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var o,i=1,t=arguments.length;i<t;i++)for(var s in o=arguments[i])Object.prototype.hasOwnProperty.call(o,s)&&(e[s]=o[s]);return e}).apply(this,arguments)},o={autoplayFirstVideo:!0,youTubePlayerParams:!1,vimeoPlayerParams:!1,wistiaPlayerParams:!1,gotoNextSlideOnVideoEnd:!0,autoplayVideoOnSlide:!1,videojs:!1,videojsTheme:"",videojsOptions:{}},i="lgHasVideo",t="lgSlideItemLoad",s="lgBeforeSlide",n="lgAfterSlide",l="lgPosterClick",r=function(e){return Object.keys(e).map((function(o){return encodeURIComponent(o)+"="+encodeURIComponent(e[o])})).join("&")},d=function(o,i){if(!o.youtube)return"";var t=o.youtube[2]?o.youtube[2].slice(1).split("&").map((function(e){return e.split("=")})).reduce((function(e,o){var i=o.map(decodeURIComponent),t=i[0],s=i[1];return e[t]=s,e}),{}):"",s=i||{},n=e(e(e({},{wmode:"opaque",autoplay:0,mute:1,enablejsapi:1}),s),t);return"?"+r(n)};return function(){function a(i){return this.core=i,this.settings=e(e({},o),this.core.settings),this}return a.prototype.init=function(){var e=this;this.core.LGel.on(i+".video",this.onHasVideo.bind(this)),this.core.LGel.on(l+".video",(function(){var o=e.core.getSlideItem(e.core.index);e.loadVideoOnPosterClick(o)})),this.core.LGel.on(t+".video",this.onSlideItemLoad.bind(this)),this.core.LGel.on(s+".video",this.onBeforeSlide.bind(this)),this.core.LGel.on(n+".video",this.onAfterSlide.bind(this))},a.prototype.onSlideItemLoad=function(e){var o=this,i=e.detail,t=i.isFirstSlide,s=i.index;this.settings.autoplayFirstVideo&&t&&s===this.core.index&&setTimeout((function(){o.loadAndPlayVideo(s)}),200),!t&&this.settings.autoplayVideoOnSlide&&s===this.core.index&&this.loadAndPlayVideo(s)},a.prototype.onHasVideo=function(e){var o=e.detail,i=o.index,t=o.src,s=o.html5Video;o.hasPoster||(this.appendVideos(this.core.getSlideItem(i),{src:t,addClass:"lg-object",index:i,html5Video:s}),this.gotoNextSlideOnVideoEnd(t,i))},a.prototype.onBeforeSlide=function(e){if(this.core.lGalleryOn){var o=e.detail.prevIndex;this.pauseVideo(o)}},a.prototype.onAfterSlide=function(e){var o=this,i=e.detail,t=i.index,s=i.prevIndex,n=this.core.getSlideItem(t);this.settings.autoplayVideoOnSlide&&t!==s&&n.hasClass("lg-complete")&&setTimeout((function(){o.loadAndPlayVideo(t)}),100)},a.prototype.loadAndPlayVideo=function(e){var o=this.core.getSlideItem(e);this.core.galleryItems[e].poster?this.loadVideoOnPosterClick(o,!0):this.playVideo(e)},a.prototype.playVideo=function(e){this.controlVideo(e,"play")},a.prototype.pauseVideo=function(e){this.controlVideo(e,"pause")},a.prototype.getVideoHtml=function(e,o,i,t){var s="",n=this.core.galleryItems[i].__slideVideoInfo||{},l=this.core.galleryItems[i],a=l.title||l.alt;a=a?'title="'+a+'"':"";var c='allowtransparency="true"\n            frameborder="0"\n            scrolling="no"\n            allowfullscreen\n            mozallowfullscreen\n            webkitallowfullscreen\n            oallowfullscreen\n            msallowfullscreen';if(n.youtube){var u="lg-youtube"+i,f=d(n,this.settings.youTubePlayerParams);s='<iframe allow="autoplay" id='+u+' class="lg-video-object lg-youtube '+o+'" '+a+' src="'+(e.includes("youtube-nocookie.com")?"//www.youtube-nocookie.com/":"//www.youtube.com/")+"embed/"+(n.youtube[1]+f)+'" '+c+"></iframe>"}else if(n.vimeo){u="lg-vimeo"+i;var h=function(e,o){if(!o||!o.vimeo)return"";var i=o.vimeo[2]||"",t=e&&0!==Object.keys(e).length?"&"+r(e):"",s=((o.vimeo[0].split("/").pop()||"").split("?")[0]||"").split("#")[0],n=o.vimeo[1]!==s;return n&&(i=i.replace("/"+s,"")),"?autoplay=0&muted=1"+(n?"&h="+s:"")+t+("?"==i[0]?"&"+i.slice(1):i||"")}(this.settings.vimeoPlayerParams,n);s='<iframe allow="autoplay" id='+u+' class="lg-video-object lg-vimeo '+o+'" '+a+' src="//player.vimeo.com/video/'+(n.vimeo[1]+h)+'" '+c+"></iframe>"}else if(n.wistia){var p="lg-wistia"+i;h=(h=r(this.settings.wistiaPlayerParams))?"?"+h:"",s='<iframe allow="autoplay" id="'+p+'" src="//fast.wistia.net/embed/iframe/'+(n.wistia[4]+h)+'" '+a+' class="wistia_embed lg-video-object lg-wistia '+o+'" name="wistia_embed" '+c+"></iframe>"}else if(n.html5){for(var y="",g=0;g<t.source.length;g++)y+='<source src="'+t.source[g].src+'" type="'+t.source[g].type+'">';if(t.tracks){var v=function(e){var o="",i=t.tracks[e];Object.keys(i||{}).forEach((function(e){o+=e+'="'+i[e]+'" '})),y+="<track "+o+">"};for(g=0;g<t.tracks.length;g++)v(g)}var m="",w=t.attributes||{};Object.keys(w||{}).forEach((function(e){m+=e+'="'+w[e]+'" '})),s='<video class="lg-video-object lg-html5 '+(this.settings.videojs&&this.settings.videojsTheme?this.settings.videojsTheme+" ":"")+" "+(this.settings.videojs?" video-js":"")+'" '+m+">\n                "+y+"\n                Your browser does not support HTML5 video.\n            </video>"}return s},a.prototype.appendVideos=function(e,o){var i,t=this.getVideoHtml(o.src,o.addClass,o.index,o.html5Video);e.find(".lg-video-cont").append(t);var s=e.find(".lg-video-object").first();if(o.html5Video&&s.on("mousedown.lg.video",(function(e){e.stopPropagation()})),this.settings.videojs&&(null===(i=this.core.galleryItems[o.index].__slideVideoInfo)||void 0===i?void 0:i.html5))try{return videojs(s.get(),this.settings.videojsOptions)}catch(e){console.error("lightGallery:- Make sure you have included videojs")}},a.prototype.gotoNextSlideOnVideoEnd=function(e,o){var i=this,t=this.core.getSlideItem(o).find(".lg-video-object").first(),s=this.core.galleryItems[o].__slideVideoInfo||{};if(this.settings.gotoNextSlideOnVideoEnd)if(s.html5)t.on("ended",(function(){i.core.goToNextSlide()}));else if(s.vimeo)try{new Vimeo.Player(t.get()).on("ended",(function(){i.core.goToNextSlide()}))}catch(e){console.error("lightGallery:- Make sure you have included //github.com/vimeo/player.js")}else if(s.wistia)try{window._wq=window._wq||[],window._wq.push({id:t.attr("id"),onReady:function(e){e.bind("end",(function(){i.core.goToNextSlide()}))}})}catch(e){console.error("lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js")}},a.prototype.controlVideo=function(e,o){var i=this.core.getSlideItem(e).find(".lg-video-object").first(),t=this.core.galleryItems[e].__slideVideoInfo||{};if(i.get())if(t.youtube)try{i.get().contentWindow.postMessage('{"event":"command","func":"'+o+'Video","args":""}',"*")}catch(e){console.error("lightGallery:- "+e)}else if(t.vimeo)try{new Vimeo.Player(i.get())[o]()}catch(e){console.error("lightGallery:- Make sure you have included //github.com/vimeo/player.js")}else if(t.html5)if(this.settings.videojs)try{videojs(i.get())[o]()}catch(e){console.error("lightGallery:- Make sure you have included videojs")}else i.get()[o]();else if(t.wistia)try{window._wq=window._wq||[],window._wq.push({id:i.attr("id"),onReady:function(e){e[o]()}})}catch(e){console.error("lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js")}},a.prototype.loadVideoOnPosterClick=function(e,o){var i=this;if(e.hasClass("lg-video-loaded"))o&&this.playVideo(this.core.index);else if(e.hasClass("lg-has-video"))this.playVideo(this.core.index);else{e.addClass("lg-has-video");var t=void 0,s=this.core.galleryItems[this.core.index].src,n=this.core.galleryItems[this.core.index].video;n&&(t="string"==typeof n?JSON.parse(n):n);var l=this.appendVideos(e,{src:s,addClass:"",index:this.core.index,html5Video:t});this.gotoNextSlideOnVideoEnd(s,this.core.index);var r=e.find(".lg-object").first().get();e.find(".lg-video-cont").first().append(r),e.addClass("lg-video-loading"),l&&l.ready((function(){l.on("loadedmetadata",(function(){i.onVideoLoadAfterPosterClick(e,i.core.index)}))})),e.find(".lg-video-object").first().on("load.lg error.lg loadedmetadata.lg",(function(){setTimeout((function(){i.onVideoLoadAfterPosterClick(e,i.core.index)}),50)}))}},a.prototype.onVideoLoadAfterPosterClick=function(e,o){e.addClass("lg-video-loaded"),this.playVideo(o)},a.prototype.destroy=function(){this.core.LGel.off(".lg.video"),this.core.LGel.off(".video")},a}()}));
diff --git a/resources/lightgallery/plugins/video/lg-video.umd.js b/resources/lightgallery/plugins/video/lg-video.umd.js
new file mode 100644
index 0000000..bb61475
--- /dev/null
+++ b/resources/lightgallery/plugins/video/lg-video.umd.js
@@ -0,0 +1,543 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgVideo = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    var videoSettings = {
+        autoplayFirstVideo: true,
+        youTubePlayerParams: false,
+        vimeoPlayerParams: false,
+        wistiaPlayerParams: false,
+        gotoNextSlideOnVideoEnd: true,
+        autoplayVideoOnSlide: false,
+        videojs: false,
+        videojsTheme: '',
+        videojsOptions: {},
+    };
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var param = function (obj) {
+        return Object.keys(obj)
+            .map(function (k) {
+            return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]);
+        })
+            .join('&');
+    };
+    var paramsToObject = function (url) {
+        var paramas = url
+            .slice(1)
+            .split('&')
+            .map(function (p) { return p.split('='); })
+            .reduce(function (obj, pair) {
+            var _a = pair.map(decodeURIComponent), key = _a[0], value = _a[1];
+            obj[key] = value;
+            return obj;
+        }, {});
+        return paramas;
+    };
+    var getYouTubeParams = function (videoInfo, youTubePlayerParamsSettings) {
+        if (!videoInfo.youtube)
+            return '';
+        var slideUrlParams = videoInfo.youtube[2]
+            ? paramsToObject(videoInfo.youtube[2])
+            : '';
+        // For youtube first params gets priority if duplicates found
+        var defaultYouTubePlayerParams = {
+            wmode: 'opaque',
+            autoplay: 0,
+            mute: 1,
+            enablejsapi: 1,
+        };
+        var playerParamsSettings = youTubePlayerParamsSettings || {};
+        var youTubePlayerParams = __assign(__assign(__assign({}, defaultYouTubePlayerParams), playerParamsSettings), slideUrlParams);
+        var youTubeParams = "?" + param(youTubePlayerParams);
+        return youTubeParams;
+    };
+    var isYouTubeNoCookie = function (url) {
+        return url.includes('youtube-nocookie.com');
+    };
+    var getVimeoURLParams = function (defaultParams, videoInfo) {
+        if (!videoInfo || !videoInfo.vimeo)
+            return '';
+        var urlParams = videoInfo.vimeo[2] || '';
+        var defaultPlayerParams = defaultParams && Object.keys(defaultParams).length !== 0
+            ? '&' + param(defaultParams)
+            : '';
+        // Support private video
+        var urlWithHash = videoInfo.vimeo[0].split('/').pop() || '';
+        var urlWithHashWithParams = urlWithHash.split('?')[0] || '';
+        var hash = urlWithHashWithParams.split('#')[0];
+        var isPrivate = videoInfo.vimeo[1] !== hash;
+        if (isPrivate) {
+            urlParams = urlParams.replace("/" + hash, '');
+        }
+        urlParams =
+            urlParams[0] == '?' ? '&' + urlParams.slice(1) : urlParams || '';
+        // For vimeo last params gets priority if duplicates found
+        var vimeoPlayerParams = "?autoplay=0&muted=1" + (isPrivate ? "&h=" + hash : '') + defaultPlayerParams + urlParams;
+        return vimeoPlayerParams;
+    };
+
+    /**
+     * Video module for lightGallery
+     * Supports HTML5, YouTube, Vimeo, wistia videos
+     *
+     *
+     * @ref Wistia
+     * https://wistia.com/support/integrations/wordpress(How to get url)
+     * https://wistia.com/support/developers/embed-options#using-embed-options
+     * https://wistia.com/support/developers/player-api
+     * https://wistia.com/support/developers/construct-an-embed-code
+     * http://jsfiddle.net/xvnm7xLm/
+     * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video
+     * https://wistia.com/support/embed-and-share/sharing-videos
+     * https://private-sharing.wistia.com/medias/mwhrulrucj
+     *
+     * @ref Youtube
+     * https://developers.google.com/youtube/player_parameters#enablejsapi
+     * https://developers.google.com/youtube/iframe_api_reference
+     * https://developer.chrome.com/blog/autoplay/#iframe-delegation
+     *
+     * @ref Vimeo
+     * https://stackoverflow.com/questions/10488943/easy-way-to-get-vimeo-id-from-a-vimeo-url
+     * https://vimeo.zendesk.com/hc/en-us/articles/360000121668-Starting-playback-at-a-specific-timecode
+     * https://vimeo.zendesk.com/hc/en-us/articles/360001494447-Using-Player-Parameters
+     */
+    var Video = /** @class */ (function () {
+        function Video(instance) {
+            // get lightGallery core plugin instance
+            this.core = instance;
+            this.settings = __assign(__assign({}, videoSettings), this.core.settings);
+            return this;
+        }
+        Video.prototype.init = function () {
+            var _this = this;
+            /**
+             * Event triggered when video url found without poster
+             * Append video HTML
+             * Play if autoplayFirstVideo is true
+             */
+            this.core.LGel.on(lGEvents.hasVideo + ".video", this.onHasVideo.bind(this));
+            this.core.LGel.on(lGEvents.posterClick + ".video", function () {
+                var $el = _this.core.getSlideItem(_this.core.index);
+                _this.loadVideoOnPosterClick($el);
+            });
+            this.core.LGel.on(lGEvents.slideItemLoad + ".video", this.onSlideItemLoad.bind(this));
+            // @desc fired immediately before each slide transition.
+            this.core.LGel.on(lGEvents.beforeSlide + ".video", this.onBeforeSlide.bind(this));
+            // @desc fired immediately after each slide transition.
+            this.core.LGel.on(lGEvents.afterSlide + ".video", this.onAfterSlide.bind(this));
+        };
+        /**
+         * @desc Event triggered when a slide is completely loaded
+         *
+         * @param {Event} event - lightGalley custom event
+         */
+        Video.prototype.onSlideItemLoad = function (event) {
+            var _this = this;
+            var _a = event.detail, isFirstSlide = _a.isFirstSlide, index = _a.index;
+            // Should check the active slide as well as user may have moved to different slide before the first slide is loaded
+            if (this.settings.autoplayFirstVideo &&
+                isFirstSlide &&
+                index === this.core.index) {
+                // Delay is just for the transition effect on video load
+                setTimeout(function () {
+                    _this.loadAndPlayVideo(index);
+                }, 200);
+            }
+            // Should not call on first slide. should check only if the slide is active
+            if (!isFirstSlide &&
+                this.settings.autoplayVideoOnSlide &&
+                index === this.core.index) {
+                this.loadAndPlayVideo(index);
+            }
+        };
+        /**
+         * @desc Event triggered when video url or poster found
+         * Append video HTML is poster is not given
+         * Play if autoplayFirstVideo is true
+         *
+         * @param {Event} event - Javascript Event object.
+         */
+        Video.prototype.onHasVideo = function (event) {
+            var _a = event.detail, index = _a.index, src = _a.src, html5Video = _a.html5Video, hasPoster = _a.hasPoster;
+            if (!hasPoster) {
+                // All functions are called separately if poster exist in loadVideoOnPosterClick function
+                this.appendVideos(this.core.getSlideItem(index), {
+                    src: src,
+                    addClass: 'lg-object',
+                    index: index,
+                    html5Video: html5Video,
+                });
+                // Automatically navigate to next slide once video reaches the end.
+                this.gotoNextSlideOnVideoEnd(src, index);
+            }
+        };
+        /**
+         * @desc fired immediately before each slide transition.
+         * Pause the previous video
+         * Hide the download button if the slide contains YouTube, Vimeo, or Wistia videos.
+         *
+         * @param {Event} event - Javascript Event object.
+         * @param {number} prevIndex - Previous index of the slide.
+         * @param {number} index - Current index of the slide
+         */
+        Video.prototype.onBeforeSlide = function (event) {
+            if (this.core.lGalleryOn) {
+                var prevIndex = event.detail.prevIndex;
+                this.pauseVideo(prevIndex);
+            }
+        };
+        /**
+         * @desc fired immediately after each slide transition.
+         * Play video if autoplayVideoOnSlide option is enabled.
+         *
+         * @param {Event} event - Javascript Event object.
+         * @param {number} prevIndex - Previous index of the slide.
+         * @param {number} index - Current index of the slide
+         * @todo should check on onSlideLoad as well if video is not loaded on after slide
+         */
+        Video.prototype.onAfterSlide = function (event) {
+            var _this = this;
+            var _a = event.detail, index = _a.index, prevIndex = _a.prevIndex;
+            // Do not call on first slide
+            var $slide = this.core.getSlideItem(index);
+            if (this.settings.autoplayVideoOnSlide && index !== prevIndex) {
+                if ($slide.hasClass('lg-complete')) {
+                    setTimeout(function () {
+                        _this.loadAndPlayVideo(index);
+                    }, 100);
+                }
+            }
+        };
+        Video.prototype.loadAndPlayVideo = function (index) {
+            var $slide = this.core.getSlideItem(index);
+            var currentGalleryItem = this.core.galleryItems[index];
+            if (currentGalleryItem.poster) {
+                this.loadVideoOnPosterClick($slide, true);
+            }
+            else {
+                this.playVideo(index);
+            }
+        };
+        /**
+         * Play HTML5, Youtube, Vimeo or Wistia videos in a particular slide.
+         * @param {number} index - Index of the slide
+         */
+        Video.prototype.playVideo = function (index) {
+            this.controlVideo(index, 'play');
+        };
+        /**
+         * Pause HTML5, Youtube, Vimeo or Wistia videos in a particular slide.
+         * @param {number} index - Index of the slide
+         */
+        Video.prototype.pauseVideo = function (index) {
+            this.controlVideo(index, 'pause');
+        };
+        Video.prototype.getVideoHtml = function (src, addClass, index, html5Video) {
+            var video = '';
+            var videoInfo = this.core.galleryItems[index]
+                .__slideVideoInfo || {};
+            var currentGalleryItem = this.core.galleryItems[index];
+            var videoTitle = currentGalleryItem.title || currentGalleryItem.alt;
+            videoTitle = videoTitle ? 'title="' + videoTitle + '"' : '';
+            var commonIframeProps = "allowtransparency=\"true\"\n            frameborder=\"0\"\n            scrolling=\"no\"\n            allowfullscreen\n            mozallowfullscreen\n            webkitallowfullscreen\n            oallowfullscreen\n            msallowfullscreen";
+            if (videoInfo.youtube) {
+                var videoId = 'lg-youtube' + index;
+                var youTubeParams = getYouTubeParams(videoInfo, this.settings.youTubePlayerParams);
+                var isYouTubeNoCookieURL = isYouTubeNoCookie(src);
+                var youtubeURL = isYouTubeNoCookieURL
+                    ? '//www.youtube-nocookie.com/'
+                    : '//www.youtube.com/';
+                video = "<iframe allow=\"autoplay\" id=" + videoId + " class=\"lg-video-object lg-youtube " + addClass + "\" " + videoTitle + " src=\"" + youtubeURL + "embed/" + (videoInfo.youtube[1] + youTubeParams) + "\" " + commonIframeProps + "></iframe>";
+            }
+            else if (videoInfo.vimeo) {
+                var videoId = 'lg-vimeo' + index;
+                var playerParams = getVimeoURLParams(this.settings.vimeoPlayerParams, videoInfo);
+                video = "<iframe allow=\"autoplay\" id=" + videoId + " class=\"lg-video-object lg-vimeo " + addClass + "\" " + videoTitle + " src=\"//player.vimeo.com/video/" + (videoInfo.vimeo[1] + playerParams) + "\" " + commonIframeProps + "></iframe>";
+            }
+            else if (videoInfo.wistia) {
+                var wistiaId = 'lg-wistia' + index;
+                var playerParams = param(this.settings.wistiaPlayerParams);
+                playerParams = playerParams ? '?' + playerParams : '';
+                video = "<iframe allow=\"autoplay\" id=\"" + wistiaId + "\" src=\"//fast.wistia.net/embed/iframe/" + (videoInfo.wistia[4] + playerParams) + "\" " + videoTitle + " class=\"wistia_embed lg-video-object lg-wistia " + addClass + "\" name=\"wistia_embed\" " + commonIframeProps + "></iframe>";
+            }
+            else if (videoInfo.html5) {
+                var html5VideoMarkup = '';
+                for (var i = 0; i < html5Video.source.length; i++) {
+                    html5VideoMarkup += "<source src=\"" + html5Video.source[i].src + "\" type=\"" + html5Video.source[i].type + "\">";
+                }
+                if (html5Video.tracks) {
+                    var _loop_1 = function (i) {
+                        var trackAttributes = '';
+                        var track = html5Video.tracks[i];
+                        Object.keys(track || {}).forEach(function (key) {
+                            trackAttributes += key + "=\"" + track[key] + "\" ";
+                        });
+                        html5VideoMarkup += "<track " + trackAttributes + ">";
+                    };
+                    for (var i = 0; i < html5Video.tracks.length; i++) {
+                        _loop_1(i);
+                    }
+                }
+                var html5VideoAttrs_1 = '';
+                var videoAttributes_1 = html5Video.attributes || {};
+                Object.keys(videoAttributes_1 || {}).forEach(function (key) {
+                    html5VideoAttrs_1 += key + "=\"" + videoAttributes_1[key] + "\" ";
+                });
+                video = "<video class=\"lg-video-object lg-html5 " + (this.settings.videojs && this.settings.videojsTheme
+                    ? this.settings.videojsTheme + ' '
+                    : '') + " " + (this.settings.videojs ? ' video-js' : '') + "\" " + html5VideoAttrs_1 + ">\n                " + html5VideoMarkup + "\n                Your browser does not support HTML5 video.\n            </video>";
+            }
+            return video;
+        };
+        /**
+         * @desc - Append videos to the slide
+         *
+         * @param {HTMLElement} el - slide element
+         * @param {Object} videoParams - Video parameters, Contains src, class, index, htmlVideo
+         */
+        Video.prototype.appendVideos = function (el, videoParams) {
+            var _a;
+            var videoHtml = this.getVideoHtml(videoParams.src, videoParams.addClass, videoParams.index, videoParams.html5Video);
+            el.find('.lg-video-cont').append(videoHtml);
+            var $videoElement = el.find('.lg-video-object').first();
+            if (videoParams.html5Video) {
+                $videoElement.on('mousedown.lg.video', function (e) {
+                    e.stopPropagation();
+                });
+            }
+            if (this.settings.videojs && ((_a = this.core.galleryItems[videoParams.index].__slideVideoInfo) === null || _a === void 0 ? void 0 : _a.html5)) {
+                try {
+                    return videojs($videoElement.get(), this.settings.videojsOptions);
+                }
+                catch (e) {
+                    console.error('lightGallery:- Make sure you have included videojs');
+                }
+            }
+        };
+        Video.prototype.gotoNextSlideOnVideoEnd = function (src, index) {
+            var _this = this;
+            var $videoElement = this.core
+                .getSlideItem(index)
+                .find('.lg-video-object')
+                .first();
+            var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
+            if (this.settings.gotoNextSlideOnVideoEnd) {
+                if (videoInfo.html5) {
+                    $videoElement.on('ended', function () {
+                        _this.core.goToNextSlide();
+                    });
+                }
+                else if (videoInfo.vimeo) {
+                    try {
+                        // https://github.com/vimeo/player.js/#ended
+                        new Vimeo.Player($videoElement.get()).on('ended', function () {
+                            _this.core.goToNextSlide();
+                        });
+                    }
+                    catch (e) {
+                        console.error('lightGallery:- Make sure you have included //github.com/vimeo/player.js');
+                    }
+                }
+                else if (videoInfo.wistia) {
+                    try {
+                        window._wq = window._wq || [];
+                        // @todo Event is gettign triggered multiple times
+                        window._wq.push({
+                            id: $videoElement.attr('id'),
+                            onReady: function (video) {
+                                video.bind('end', function () {
+                                    _this.core.goToNextSlide();
+                                });
+                            },
+                        });
+                    }
+                    catch (e) {
+                        console.error('lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js');
+                    }
+                }
+            }
+        };
+        Video.prototype.controlVideo = function (index, action) {
+            var $videoElement = this.core
+                .getSlideItem(index)
+                .find('.lg-video-object')
+                .first();
+            var videoInfo = this.core.galleryItems[index].__slideVideoInfo || {};
+            if (!$videoElement.get())
+                return;
+            if (videoInfo.youtube) {
+                try {
+                    $videoElement.get().contentWindow.postMessage("{\"event\":\"command\",\"func\":\"" + action + "Video\",\"args\":\"\"}", '*');
+                }
+                catch (e) {
+                    console.error("lightGallery:- " + e);
+                }
+            }
+            else if (videoInfo.vimeo) {
+                try {
+                    new Vimeo.Player($videoElement.get())[action]();
+                }
+                catch (e) {
+                    console.error('lightGallery:- Make sure you have included //github.com/vimeo/player.js');
+                }
+            }
+            else if (videoInfo.html5) {
+                if (this.settings.videojs) {
+                    try {
+                        videojs($videoElement.get())[action]();
+                    }
+                    catch (e) {
+                        console.error('lightGallery:- Make sure you have included videojs');
+                    }
+                }
+                else {
+                    $videoElement.get()[action]();
+                }
+            }
+            else if (videoInfo.wistia) {
+                try {
+                    window._wq = window._wq || [];
+                    // @todo Find a way to destroy wistia player instance
+                    window._wq.push({
+                        id: $videoElement.attr('id'),
+                        onReady: function (video) {
+                            video[action]();
+                        },
+                    });
+                }
+                catch (e) {
+                    console.error('lightGallery:- Make sure you have included //fast.wistia.com/assets/external/E-v1.js');
+                }
+            }
+        };
+        Video.prototype.loadVideoOnPosterClick = function ($el, forcePlay) {
+            var _this = this;
+            // check slide has poster
+            if (!$el.hasClass('lg-video-loaded')) {
+                // check already video element present
+                if (!$el.hasClass('lg-has-video')) {
+                    $el.addClass('lg-has-video');
+                    var _html = void 0;
+                    var _src = this.core.galleryItems[this.core.index].src;
+                    var video = this.core.galleryItems[this.core.index].video;
+                    if (video) {
+                        _html =
+                            typeof video === 'string' ? JSON.parse(video) : video;
+                    }
+                    var videoJsPlayer_1 = this.appendVideos($el, {
+                        src: _src,
+                        addClass: '',
+                        index: this.core.index,
+                        html5Video: _html,
+                    });
+                    this.gotoNextSlideOnVideoEnd(_src, this.core.index);
+                    var $tempImg = $el.find('.lg-object').first().get();
+                    // @todo make sure it is working
+                    $el.find('.lg-video-cont').first().append($tempImg);
+                    $el.addClass('lg-video-loading');
+                    videoJsPlayer_1 &&
+                        videoJsPlayer_1.ready(function () {
+                            videoJsPlayer_1.on('loadedmetadata', function () {
+                                _this.onVideoLoadAfterPosterClick($el, _this.core.index);
+                            });
+                        });
+                    $el.find('.lg-video-object')
+                        .first()
+                        .on('load.lg error.lg loadedmetadata.lg', function () {
+                        setTimeout(function () {
+                            _this.onVideoLoadAfterPosterClick($el, _this.core.index);
+                        }, 50);
+                    });
+                }
+                else {
+                    this.playVideo(this.core.index);
+                }
+            }
+            else if (forcePlay) {
+                this.playVideo(this.core.index);
+            }
+        };
+        Video.prototype.onVideoLoadAfterPosterClick = function ($el, index) {
+            $el.addClass('lg-video-loaded');
+            this.playVideo(index);
+        };
+        Video.prototype.destroy = function () {
+            this.core.LGel.off('.lg.video');
+            this.core.LGel.off('.video');
+        };
+        return Video;
+    }());
+
+    return Video;
+
+})));
+//# sourceMappingURL=lg-video.umd.js.map
diff --git a/resources/lightgallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js b/resources/lightgallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js
new file mode 100644
index 0000000..efebc96
--- /dev/null
+++ b/resources/lightgallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.es5.js
@@ -0,0 +1,182 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+function __awaiter(thisArg, _arguments, P, generator) {
+    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+    return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+    });
+}
+
+function __generator(thisArg, body) {
+    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+    function verb(n) { return function (v) { return step([n, v]); }; }
+    function step(op) {
+        if (f) throw new TypeError("Generator is already executing.");
+        while (_) try {
+            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+            if (y = 0, t) op = [op[0] & 2, t.value];
+            switch (op[0]) {
+                case 0: case 1: t = op; break;
+                case 4: _.label++; return { value: op[1], done: false };
+                case 5: _.label++; y = op[1]; op = [0]; continue;
+                case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                default:
+                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                    if (t[2]) _.ops.pop();
+                    _.trys.pop(); continue;
+            }
+            op = body.call(thisArg, _);
+        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+    }
+}
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var vimeoSettings = {
+    showVimeoThumbnails: true,
+    showThumbnailWithPlayButton: false,
+};
+
+/**
+ * Creates the vimeo thumbnails plugin.
+ * @param {object} element - lightGallery element
+ */
+var VimeoThumbnail = /** @class */ (function () {
+    function VimeoThumbnail(instance) {
+        this.core = instance;
+        // extend module default settings with lightGallery core settings
+        this.settings = __assign(__assign({}, vimeoSettings), this.core.settings);
+        return this;
+    }
+    VimeoThumbnail.prototype.init = function () {
+        var _this = this;
+        if (!this.settings.showVimeoThumbnails) {
+            return;
+        }
+        this.core.LGel.on(lGEvents.init + ".vimeothumbnails", function (event) {
+            var pluginInstance = event.detail.instance;
+            var thumbCont = pluginInstance.$container
+                .find('.lg-thumb-outer')
+                .get();
+            if (thumbCont) {
+                _this.setVimeoThumbnails(pluginInstance);
+            }
+        });
+    };
+    VimeoThumbnail.prototype.setVimeoThumbnails = function (dynamicGallery) {
+        return __awaiter(this, void 0, void 0, function () {
+            var i, item, slideVideoInfo, response, vimeoInfo;
+            return __generator(this, function (_a) {
+                switch (_a.label) {
+                    case 0:
+                        i = 0;
+                        _a.label = 1;
+                    case 1:
+                        if (!(i < dynamicGallery.galleryItems.length)) return [3 /*break*/, 5];
+                        item = dynamicGallery.galleryItems[i];
+                        slideVideoInfo = item.__slideVideoInfo || {};
+                        if (!slideVideoInfo.vimeo) return [3 /*break*/, 4];
+                        return [4 /*yield*/, fetch('https://vimeo.com/api/oembed.json?url=' +
+                                encodeURIComponent(item.src))];
+                    case 2:
+                        response = _a.sent();
+                        return [4 /*yield*/, response.json()];
+                    case 3:
+                        vimeoInfo = _a.sent();
+                        dynamicGallery.$container
+                            .find('.lg-thumb-item')
+                            .eq(i)
+                            .find('img')
+                            .attr('src', this.settings.showThumbnailWithPlayButton
+                            ? vimeoInfo.thumbnail_url_with_play_button
+                            : vimeoInfo.thumbnail_url);
+                        _a.label = 4;
+                    case 4:
+                        i++;
+                        return [3 /*break*/, 1];
+                    case 5: return [2 /*return*/];
+                }
+            });
+        });
+    };
+    VimeoThumbnail.prototype.destroy = function () {
+        // Remove all event listeners added by vimeothumbnails plugin
+        this.core.LGel.off('.lg.vimeothumbnails');
+        this.core.LGel.off('.vimeothumbnails');
+    };
+    return VimeoThumbnail;
+}());
+
+export default VimeoThumbnail;
+//# sourceMappingURL=lg-vimeo-thumbnail.es5.js.map
diff --git a/resources/lightgallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js b/resources/lightgallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js
new file mode 100644
index 0000000..eb81602
--- /dev/null
+++ b/resources/lightgallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).lgVimeoThumbnail=e()}(this,(function(){"use strict";var t=function(){return(t=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++)for(var i in e=arguments[n])Object.prototype.hasOwnProperty.call(e,i)&&(t[i]=e[i]);return t}).apply(this,arguments)};function e(t,e,n,o){return new(n||(n=Promise))((function(i,r){function u(t){try{a(o.next(t))}catch(t){r(t)}}function l(t){try{a(o.throw(t))}catch(t){r(t)}}function a(t){var e;t.done?i(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(u,l)}a((o=o.apply(t,e||[])).next())}))}function n(t,e){var n,o,i,r,u={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return r={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(r[Symbol.iterator]=function(){return this}),r;function l(r){return function(l){return function(r){if(n)throw new TypeError("Generator is already executing.");for(;u;)try{if(n=1,o&&(i=2&r[0]?o.return:r[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,r[1])).done)return i;switch(o=0,i&&(r=[2&r[0],i.value]),r[0]){case 0:case 1:i=r;break;case 4:return u.label++,{value:r[1],done:!1};case 5:u.label++,o=r[1],r=[0];continue;case 7:r=u.ops.pop(),u.trys.pop();continue;default:if(!(i=u.trys,(i=i.length>0&&i[i.length-1])||6!==r[0]&&2!==r[0])){u=0;continue}if(3===r[0]&&(!i||r[1]>i[0]&&r[1]<i[3])){u.label=r[1];break}if(6===r[0]&&u.label<i[1]){u.label=i[1],i=r;break}if(i&&u.label<i[2]){u.label=i[2],u.ops.push(r);break}i[2]&&u.ops.pop(),u.trys.pop();continue}r=e.call(t,u)}catch(t){r=[6,t],o=0}finally{n=i=0}if(5&r[0])throw r[1];return{value:r[0]?r[1]:void 0,done:!0}}([r,l])}}}var o="lgInit",i={showVimeoThumbnails:!0,showThumbnailWithPlayButton:!1};return function(){function r(e){return this.core=e,this.settings=t(t({},i),this.core.settings),this}return r.prototype.init=function(){var t=this;this.settings.showVimeoThumbnails&&this.core.LGel.on(o+".vimeothumbnails",(function(e){var n=e.detail.instance;n.$container.find(".lg-thumb-outer").get()&&t.setVimeoThumbnails(n)}))},r.prototype.setVimeoThumbnails=function(t){return e(this,void 0,void 0,(function(){var e,o,i;return n(this,(function(n){switch(n.label){case 0:e=0,n.label=1;case 1:return e<t.galleryItems.length?(o=t.galleryItems[e],(o.__slideVideoInfo||{}).vimeo?[4,fetch("https://vimeo.com/api/oembed.json?url="+encodeURIComponent(o.src))]:[3,4]):[3,5];case 2:return[4,n.sent().json()];case 3:i=n.sent(),t.$container.find(".lg-thumb-item").eq(e).find("img").attr("src",this.settings.showThumbnailWithPlayButton?i.thumbnail_url_with_play_button:i.thumbnail_url),n.label=4;case 4:return e++,[3,1];case 5:return[2]}}))}))},r.prototype.destroy=function(){this.core.LGel.off(".lg.vimeothumbnails"),this.core.LGel.off(".vimeothumbnails")},r}()}));
diff --git a/resources/lightgallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js b/resources/lightgallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js
new file mode 100644
index 0000000..b404e87
--- /dev/null
+++ b/resources/lightgallery/plugins/vimeoThumbnail/lg-vimeo-thumbnail.umd.js
@@ -0,0 +1,190 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgVimeoThumbnail = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    function __awaiter(thisArg, _arguments, P, generator) {
+        function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
+        return new (P || (P = Promise))(function (resolve, reject) {
+            function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
+            function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
+            function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
+            step((generator = generator.apply(thisArg, _arguments || [])).next());
+        });
+    }
+
+    function __generator(thisArg, body) {
+        var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
+        return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
+        function verb(n) { return function (v) { return step([n, v]); }; }
+        function step(op) {
+            if (f) throw new TypeError("Generator is already executing.");
+            while (_) try {
+                if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
+                if (y = 0, t) op = [op[0] & 2, t.value];
+                switch (op[0]) {
+                    case 0: case 1: t = op; break;
+                    case 4: _.label++; return { value: op[1], done: false };
+                    case 5: _.label++; y = op[1]; op = [0]; continue;
+                    case 7: op = _.ops.pop(); _.trys.pop(); continue;
+                    default:
+                        if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
+                        if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
+                        if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
+                        if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
+                        if (t[2]) _.ops.pop();
+                        _.trys.pop(); continue;
+                }
+                op = body.call(thisArg, _);
+            } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
+            if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
+        }
+    }
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var vimeoSettings = {
+        showVimeoThumbnails: true,
+        showThumbnailWithPlayButton: false,
+    };
+
+    /**
+     * Creates the vimeo thumbnails plugin.
+     * @param {object} element - lightGallery element
+     */
+    var VimeoThumbnail = /** @class */ (function () {
+        function VimeoThumbnail(instance) {
+            this.core = instance;
+            // extend module default settings with lightGallery core settings
+            this.settings = __assign(__assign({}, vimeoSettings), this.core.settings);
+            return this;
+        }
+        VimeoThumbnail.prototype.init = function () {
+            var _this = this;
+            if (!this.settings.showVimeoThumbnails) {
+                return;
+            }
+            this.core.LGel.on(lGEvents.init + ".vimeothumbnails", function (event) {
+                var pluginInstance = event.detail.instance;
+                var thumbCont = pluginInstance.$container
+                    .find('.lg-thumb-outer')
+                    .get();
+                if (thumbCont) {
+                    _this.setVimeoThumbnails(pluginInstance);
+                }
+            });
+        };
+        VimeoThumbnail.prototype.setVimeoThumbnails = function (dynamicGallery) {
+            return __awaiter(this, void 0, void 0, function () {
+                var i, item, slideVideoInfo, response, vimeoInfo;
+                return __generator(this, function (_a) {
+                    switch (_a.label) {
+                        case 0:
+                            i = 0;
+                            _a.label = 1;
+                        case 1:
+                            if (!(i < dynamicGallery.galleryItems.length)) return [3 /*break*/, 5];
+                            item = dynamicGallery.galleryItems[i];
+                            slideVideoInfo = item.__slideVideoInfo || {};
+                            if (!slideVideoInfo.vimeo) return [3 /*break*/, 4];
+                            return [4 /*yield*/, fetch('https://vimeo.com/api/oembed.json?url=' +
+                                    encodeURIComponent(item.src))];
+                        case 2:
+                            response = _a.sent();
+                            return [4 /*yield*/, response.json()];
+                        case 3:
+                            vimeoInfo = _a.sent();
+                            dynamicGallery.$container
+                                .find('.lg-thumb-item')
+                                .eq(i)
+                                .find('img')
+                                .attr('src', this.settings.showThumbnailWithPlayButton
+                                ? vimeoInfo.thumbnail_url_with_play_button
+                                : vimeoInfo.thumbnail_url);
+                            _a.label = 4;
+                        case 4:
+                            i++;
+                            return [3 /*break*/, 1];
+                        case 5: return [2 /*return*/];
+                    }
+                });
+            });
+        };
+        VimeoThumbnail.prototype.destroy = function () {
+            // Remove all event listeners added by vimeothumbnails plugin
+            this.core.LGel.off('.lg.vimeothumbnails');
+            this.core.LGel.off('.vimeothumbnails');
+        };
+        return VimeoThumbnail;
+    }());
+
+    return VimeoThumbnail;
+
+})));
+//# sourceMappingURL=lg-vimeo-thumbnail.umd.js.map
diff --git a/resources/lightgallery/plugins/zoom/lg-zoom.es5.js b/resources/lightgallery/plugins/zoom/lg-zoom.es5.js
new file mode 100644
index 0000000..7951091
--- /dev/null
+++ b/resources/lightgallery/plugins/zoom/lg-zoom.es5.js
@@ -0,0 +1,961 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation.
+
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+***************************************************************************** */
+
+var __assign = function() {
+    __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+            s = arguments[i];
+            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+    };
+    return __assign.apply(this, arguments);
+};
+
+var zoomSettings = {
+    scale: 1,
+    zoom: true,
+    actualSize: true,
+    showZoomInOutIcons: false,
+    actualSizeIcons: {
+        zoomIn: 'lg-zoom-in',
+        zoomOut: 'lg-zoom-out',
+    },
+    enableZoomAfter: 300,
+    zoomPluginStrings: {
+        zoomIn: 'Zoom in',
+        zoomOut: 'Zoom out',
+        viewActualSize: 'View actual size',
+    },
+};
+
+/**
+ * List of lightGallery events
+ * All events should be documented here
+ * Below interfaces are used to build the website documentations
+ * */
+var lGEvents = {
+    afterAppendSlide: 'lgAfterAppendSlide',
+    init: 'lgInit',
+    hasVideo: 'lgHasVideo',
+    containerResize: 'lgContainerResize',
+    updateSlides: 'lgUpdateSlides',
+    afterAppendSubHtml: 'lgAfterAppendSubHtml',
+    beforeOpen: 'lgBeforeOpen',
+    afterOpen: 'lgAfterOpen',
+    slideItemLoad: 'lgSlideItemLoad',
+    beforeSlide: 'lgBeforeSlide',
+    afterSlide: 'lgAfterSlide',
+    posterClick: 'lgPosterClick',
+    dragStart: 'lgDragStart',
+    dragMove: 'lgDragMove',
+    dragEnd: 'lgDragEnd',
+    beforeNextSlide: 'lgBeforeNextSlide',
+    beforePrevSlide: 'lgBeforePrevSlide',
+    beforeClose: 'lgBeforeClose',
+    afterClose: 'lgAfterClose',
+    rotateLeft: 'lgRotateLeft',
+    rotateRight: 'lgRotateRight',
+    flipHorizontal: 'lgFlipHorizontal',
+    flipVertical: 'lgFlipVertical',
+    autoplay: 'lgAutoplay',
+    autoplayStart: 'lgAutoplayStart',
+    autoplayStop: 'lgAutoplayStop',
+};
+
+var ZOOM_TRANSITION_DURATION = 500;
+var Zoom = /** @class */ (function () {
+    function Zoom(instance, $LG) {
+        // get lightGallery core plugin instance
+        this.core = instance;
+        this.$LG = $LG;
+        this.settings = __assign(__assign({}, zoomSettings), this.core.settings);
+        return this;
+    }
+    // Append Zoom controls. Actual size, Zoom-in, Zoom-out
+    Zoom.prototype.buildTemplates = function () {
+        var zoomIcons = this.settings.showZoomInOutIcons
+            ? "<button id=\"" + this.core.getIdName('lg-zoom-in') + "\" type=\"button\" aria-label=\"" + this.settings.zoomPluginStrings['zoomIn'] + "\" class=\"lg-zoom-in lg-icon\"></button><button id=\"" + this.core.getIdName('lg-zoom-out') + "\" type=\"button\" aria-label=\"" + this.settings.zoomPluginStrings['zoomIn'] + "\" class=\"lg-zoom-out lg-icon\"></button>"
+            : '';
+        if (this.settings.actualSize) {
+            zoomIcons += "<button id=\"" + this.core.getIdName('lg-actual-size') + "\" type=\"button\" aria-label=\"" + this.settings.zoomPluginStrings['viewActualSize'] + "\" class=\"" + this.settings.actualSizeIcons.zoomIn + " lg-icon\"></button>";
+        }
+        this.core.outer.addClass('lg-use-transition-for-zoom');
+        this.core.$toolbar.first().append(zoomIcons);
+    };
+    /**
+     * @desc Enable zoom option only once the image is completely loaded
+     * If zoomFromOrigin is true, Zoom is enabled once the dummy image has been inserted
+     *
+     * Zoom styles are defined under lg-zoomable CSS class.
+     */
+    Zoom.prototype.enableZoom = function (event) {
+        var _this = this;
+        // delay will be 0 except first time
+        var _speed = this.settings.enableZoomAfter + event.detail.delay;
+        // set _speed value 0 if gallery opened from direct url and if it is first slide
+        if (this.$LG('body').first().hasClass('lg-from-hash') &&
+            event.detail.delay) {
+            // will execute only once
+            _speed = 0;
+        }
+        else {
+            // Remove lg-from-hash to enable starting animation.
+            this.$LG('body').first().removeClass('lg-from-hash');
+        }
+        this.zoomableTimeout = setTimeout(function () {
+            if (!_this.isImageSlide(_this.core.index)) {
+                return;
+            }
+            _this.core.getSlideItem(event.detail.index).addClass('lg-zoomable');
+            if (event.detail.index === _this.core.index) {
+                _this.setZoomEssentials();
+            }
+        }, _speed + 30);
+    };
+    Zoom.prototype.enableZoomOnSlideItemLoad = function () {
+        // Add zoomable class
+        this.core.LGel.on(lGEvents.slideItemLoad + ".zoom", this.enableZoom.bind(this));
+    };
+    Zoom.prototype.getDragCords = function (e) {
+        return {
+            x: e.pageX,
+            y: e.pageY,
+        };
+    };
+    Zoom.prototype.getSwipeCords = function (e) {
+        var x = e.touches[0].pageX;
+        var y = e.touches[0].pageY;
+        return {
+            x: x,
+            y: y,
+        };
+    };
+    Zoom.prototype.getDragAllowedAxises = function (scale, scaleDiff) {
+        var $image = this.core
+            .getSlideItem(this.core.index)
+            .find('.lg-image')
+            .first()
+            .get();
+        var height = 0;
+        var width = 0;
+        var rect = $image.getBoundingClientRect();
+        if (scale) {
+            height = $image.offsetHeight * scale;
+            width = $image.offsetWidth * scale;
+        }
+        else if (scaleDiff) {
+            height = rect.height + scaleDiff * rect.height;
+            width = rect.width + scaleDiff * rect.width;
+        }
+        else {
+            height = rect.height;
+            width = rect.width;
+        }
+        var allowY = height > this.containerRect.height;
+        var allowX = width > this.containerRect.width;
+        return {
+            allowX: allowX,
+            allowY: allowY,
+        };
+    };
+    Zoom.prototype.setZoomEssentials = function () {
+        this.containerRect = this.core.$content.get().getBoundingClientRect();
+    };
+    /**
+     * @desc Image zoom
+     * Translate the wrap and scale the image to get better user experience
+     *
+     * @param {String} scale - Zoom decrement/increment value
+     */
+    Zoom.prototype.zoomImage = function (scale, scaleDiff, reposition, resetToMax) {
+        if (Math.abs(scaleDiff) <= 0)
+            return;
+        var offsetX = this.containerRect.width / 2 + this.containerRect.left;
+        var offsetY = this.containerRect.height / 2 +
+            this.containerRect.top +
+            this.scrollTop;
+        var originalX;
+        var originalY;
+        if (scale === 1) {
+            this.positionChanged = false;
+        }
+        var dragAllowedAxises = this.getDragAllowedAxises(0, scaleDiff);
+        var allowY = dragAllowedAxises.allowY, allowX = dragAllowedAxises.allowX;
+        if (this.positionChanged) {
+            originalX = this.left / (this.scale - scaleDiff);
+            originalY = this.top / (this.scale - scaleDiff);
+            this.pageX = offsetX - originalX;
+            this.pageY = offsetY - originalY;
+            this.positionChanged = false;
+        }
+        var possibleSwipeCords = this.getPossibleSwipeDragCords(scaleDiff);
+        var x;
+        var y;
+        var _x = offsetX - this.pageX;
+        var _y = offsetY - this.pageY;
+        if (scale - scaleDiff > 1) {
+            var scaleVal = (scale - scaleDiff) / Math.abs(scaleDiff);
+            _x =
+                (scaleDiff < 0 ? -_x : _x) +
+                    this.left * (scaleVal + (scaleDiff < 0 ? -1 : 1));
+            _y =
+                (scaleDiff < 0 ? -_y : _y) +
+                    this.top * (scaleVal + (scaleDiff < 0 ? -1 : 1));
+            x = _x / scaleVal;
+            y = _y / scaleVal;
+        }
+        else {
+            var scaleVal = (scale - scaleDiff) * scaleDiff;
+            x = _x * scaleVal;
+            y = _y * scaleVal;
+        }
+        if (reposition) {
+            if (allowX) {
+                if (this.isBeyondPossibleLeft(x, possibleSwipeCords.minX)) {
+                    x = possibleSwipeCords.minX;
+                }
+                else if (this.isBeyondPossibleRight(x, possibleSwipeCords.maxX)) {
+                    x = possibleSwipeCords.maxX;
+                }
+            }
+            else {
+                if (scale > 1) {
+                    if (x < possibleSwipeCords.minX) {
+                        x = possibleSwipeCords.minX;
+                    }
+                    else if (x > possibleSwipeCords.maxX) {
+                        x = possibleSwipeCords.maxX;
+                    }
+                }
+            }
+            // @todo fix this
+            if (allowY) {
+                if (this.isBeyondPossibleTop(y, possibleSwipeCords.minY)) {
+                    y = possibleSwipeCords.minY;
+                }
+                else if (this.isBeyondPossibleBottom(y, possibleSwipeCords.maxY)) {
+                    y = possibleSwipeCords.maxY;
+                }
+            }
+            else {
+                // If the translate value based on index of beyond the viewport, utilize the available space to prevent image being cut out
+                if (scale > 1) {
+                    //If image goes beyond viewport top, use the minim possible translate value
+                    if (y < possibleSwipeCords.minY) {
+                        y = possibleSwipeCords.minY;
+                    }
+                    else if (y > possibleSwipeCords.maxY) {
+                        y = possibleSwipeCords.maxY;
+                    }
+                }
+            }
+        }
+        this.setZoomStyles({
+            x: x,
+            y: y,
+            scale: scale,
+        });
+        this.left = x;
+        this.top = y;
+        if (resetToMax) {
+            this.setZoomImageSize();
+        }
+    };
+    Zoom.prototype.resetImageTranslate = function (index) {
+        if (!this.isImageSlide(index)) {
+            return;
+        }
+        var $image = this.core.getSlideItem(index).find('.lg-image').first();
+        this.imageReset = false;
+        $image.removeClass('reset-transition reset-transition-y reset-transition-x');
+        this.core.outer.removeClass('lg-actual-size');
+        $image.css('width', 'auto').css('height', 'auto');
+        setTimeout(function () {
+            $image.removeClass('no-transition');
+        }, 10);
+    };
+    Zoom.prototype.setZoomImageSize = function () {
+        var _this = this;
+        var $image = this.core
+            .getSlideItem(this.core.index)
+            .find('.lg-image')
+            .first();
+        setTimeout(function () {
+            var actualSizeScale = _this.getCurrentImageActualSizeScale();
+            if (_this.scale >= actualSizeScale) {
+                $image.addClass('no-transition');
+                _this.imageReset = true;
+            }
+        }, ZOOM_TRANSITION_DURATION);
+        setTimeout(function () {
+            var actualSizeScale = _this.getCurrentImageActualSizeScale();
+            if (_this.scale >= actualSizeScale) {
+                var dragAllowedAxises = _this.getDragAllowedAxises(_this.scale);
+                $image
+                    .css('width', $image.get().naturalWidth + 'px')
+                    .css('height', $image.get().naturalHeight + 'px');
+                _this.core.outer.addClass('lg-actual-size');
+                if (dragAllowedAxises.allowX && dragAllowedAxises.allowY) {
+                    $image.addClass('reset-transition');
+                }
+                else if (dragAllowedAxises.allowX &&
+                    !dragAllowedAxises.allowY) {
+                    $image.addClass('reset-transition-x');
+                }
+                else if (!dragAllowedAxises.allowX &&
+                    dragAllowedAxises.allowY) {
+                    $image.addClass('reset-transition-y');
+                }
+            }
+        }, ZOOM_TRANSITION_DURATION + 50);
+    };
+    /**
+     * @desc apply scale3d to image and translate to image wrap
+     * @param {style} X,Y and scale
+     */
+    Zoom.prototype.setZoomStyles = function (style) {
+        var $imageWrap = this.core
+            .getSlideItem(this.core.index)
+            .find('.lg-img-wrap')
+            .first();
+        var $image = this.core
+            .getSlideItem(this.core.index)
+            .find('.lg-image')
+            .first();
+        var $dummyImage = this.core.outer
+            .find('.lg-current .lg-dummy-img')
+            .first();
+        this.scale = style.scale;
+        $image.css('transform', 'scale3d(' + style.scale + ', ' + style.scale + ', 1)');
+        $dummyImage.css('transform', 'scale3d(' + style.scale + ', ' + style.scale + ', 1)');
+        var transform = 'translate3d(' + style.x + 'px, ' + style.y + 'px, 0)';
+        $imageWrap.css('transform', transform);
+    };
+    /**
+     * @param index - Index of the current slide
+     * @param event - event will be available only if the function is called on clicking/taping the imags
+     */
+    Zoom.prototype.setActualSize = function (index, event) {
+        var _this = this;
+        var currentItem = this.core.galleryItems[this.core.index];
+        this.resetImageTranslate(index);
+        setTimeout(function () {
+            // Allow zoom only on image
+            if (!currentItem.src ||
+                _this.core.outer.hasClass('lg-first-slide-loading')) {
+                return;
+            }
+            var scale = _this.getCurrentImageActualSizeScale();
+            var prevScale = _this.scale;
+            if (_this.core.outer.hasClass('lg-zoomed')) {
+                _this.scale = 1;
+            }
+            else {
+                _this.scale = _this.getScale(scale);
+            }
+            _this.setPageCords(event);
+            _this.beginZoom(_this.scale);
+            _this.zoomImage(_this.scale, _this.scale - prevScale, true, true);
+            setTimeout(function () {
+                _this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');
+            }, 10);
+        }, 50);
+    };
+    Zoom.prototype.getNaturalWidth = function (index) {
+        var $image = this.core.getSlideItem(index).find('.lg-image').first();
+        var naturalWidth = this.core.galleryItems[index].width;
+        return naturalWidth
+            ? parseFloat(naturalWidth)
+            : $image.get().naturalWidth;
+    };
+    Zoom.prototype.getActualSizeScale = function (naturalWidth, width) {
+        var _scale;
+        var scale;
+        if (naturalWidth >= width) {
+            _scale = naturalWidth / width;
+            scale = _scale || 2;
+        }
+        else {
+            scale = 1;
+        }
+        return scale;
+    };
+    Zoom.prototype.getCurrentImageActualSizeScale = function () {
+        var $image = this.core
+            .getSlideItem(this.core.index)
+            .find('.lg-image')
+            .first();
+        var width = $image.get().offsetWidth;
+        var naturalWidth = this.getNaturalWidth(this.core.index) || width;
+        return this.getActualSizeScale(naturalWidth, width);
+    };
+    Zoom.prototype.getPageCords = function (event) {
+        var cords = {};
+        if (event) {
+            cords.x = event.pageX || event.touches[0].pageX;
+            cords.y = event.pageY || event.touches[0].pageY;
+        }
+        else {
+            var containerRect = this.core.$content
+                .get()
+                .getBoundingClientRect();
+            cords.x = containerRect.width / 2 + containerRect.left;
+            cords.y =
+                containerRect.height / 2 + this.scrollTop + containerRect.top;
+        }
+        return cords;
+    };
+    Zoom.prototype.setPageCords = function (event) {
+        var pageCords = this.getPageCords(event);
+        this.pageX = pageCords.x;
+        this.pageY = pageCords.y;
+    };
+    Zoom.prototype.manageActualPixelClassNames = function () {
+        var $actualSize = this.core.getElementById('lg-actual-size');
+        $actualSize
+            .removeClass(this.settings.actualSizeIcons.zoomIn)
+            .addClass(this.settings.actualSizeIcons.zoomOut);
+    };
+    // If true, zoomed - in else zoomed out
+    Zoom.prototype.beginZoom = function (scale) {
+        this.core.outer.removeClass('lg-zoom-drag-transition lg-zoom-dragging');
+        if (scale > 1) {
+            this.core.outer.addClass('lg-zoomed');
+            this.manageActualPixelClassNames();
+        }
+        else {
+            this.resetZoom();
+        }
+        return scale > 1;
+    };
+    Zoom.prototype.getScale = function (scale) {
+        var actualSizeScale = this.getCurrentImageActualSizeScale();
+        if (scale < 1) {
+            scale = 1;
+        }
+        else if (scale > actualSizeScale) {
+            scale = actualSizeScale;
+        }
+        return scale;
+    };
+    Zoom.prototype.init = function () {
+        var _this = this;
+        if (!this.settings.zoom) {
+            return;
+        }
+        this.buildTemplates();
+        this.enableZoomOnSlideItemLoad();
+        var tapped = null;
+        this.core.outer.on('dblclick.lg', function (event) {
+            if (!_this.$LG(event.target).hasClass('lg-image')) {
+                return;
+            }
+            _this.setActualSize(_this.core.index, event);
+        });
+        this.core.outer.on('touchstart.lg', function (event) {
+            var $target = _this.$LG(event.target);
+            if (event.touches.length === 1 && $target.hasClass('lg-image')) {
+                if (!tapped) {
+                    tapped = setTimeout(function () {
+                        tapped = null;
+                    }, 300);
+                }
+                else {
+                    clearTimeout(tapped);
+                    tapped = null;
+                    event.preventDefault();
+                    _this.setActualSize(_this.core.index, event);
+                }
+            }
+        });
+        this.core.LGel.on(lGEvents.containerResize + ".zoom " + lGEvents.rotateRight + ".zoom " + lGEvents.rotateLeft + ".zoom " + lGEvents.flipHorizontal + ".zoom " + lGEvents.flipVertical + ".zoom", function () {
+            if (!_this.core.lgOpened ||
+                !_this.isImageSlide(_this.core.index) ||
+                _this.core.touchAction) {
+                return;
+            }
+            var _LGel = _this.core
+                .getSlideItem(_this.core.index)
+                .find('.lg-img-wrap')
+                .first();
+            _this.top = 0;
+            _this.left = 0;
+            _this.setZoomEssentials();
+            _this.setZoomSwipeStyles(_LGel, { x: 0, y: 0 });
+            _this.positionChanged = true;
+        });
+        // Update zoom on resize and orientationchange
+        this.$LG(window).on("scroll.lg.zoom.global" + this.core.lgId, function () {
+            if (!_this.core.lgOpened)
+                return;
+            _this.scrollTop = _this.$LG(window).scrollTop();
+        });
+        this.core.getElementById('lg-zoom-out').on('click.lg', function () {
+            // Allow zoom only on image
+            if (!_this.isImageSlide(_this.core.index)) {
+                return;
+            }
+            var timeout = 0;
+            if (_this.imageReset) {
+                _this.resetImageTranslate(_this.core.index);
+                timeout = 50;
+            }
+            setTimeout(function () {
+                var scale = _this.scale - _this.settings.scale;
+                if (scale < 1) {
+                    scale = 1;
+                }
+                _this.beginZoom(scale);
+                _this.zoomImage(scale, -_this.settings.scale, true, true);
+            }, timeout);
+        });
+        this.core.getElementById('lg-zoom-in').on('click.lg', function () {
+            _this.zoomIn();
+        });
+        this.core.getElementById('lg-actual-size').on('click.lg', function () {
+            _this.setActualSize(_this.core.index);
+        });
+        this.core.LGel.on(lGEvents.beforeOpen + ".zoom", function () {
+            _this.core.outer.find('.lg-item').removeClass('lg-zoomable');
+        });
+        this.core.LGel.on(lGEvents.afterOpen + ".zoom", function () {
+            _this.scrollTop = _this.$LG(window).scrollTop();
+            // Set the initial value center
+            _this.pageX = _this.core.outer.width() / 2;
+            _this.pageY = _this.core.outer.height() / 2 + _this.scrollTop;
+            _this.scale = 1;
+        });
+        // Reset zoom on slide change
+        this.core.LGel.on(lGEvents.afterSlide + ".zoom", function (event) {
+            var prevIndex = event.detail.prevIndex;
+            _this.scale = 1;
+            _this.positionChanged = false;
+            _this.resetZoom(prevIndex);
+            _this.resetImageTranslate(prevIndex);
+            if (_this.isImageSlide(_this.core.index)) {
+                _this.setZoomEssentials();
+            }
+        });
+        // Drag option after zoom
+        this.zoomDrag();
+        this.pinchZoom();
+        this.zoomSwipe();
+        // Store the zoomable timeout value just to clear it while closing
+        this.zoomableTimeout = false;
+        this.positionChanged = false;
+    };
+    Zoom.prototype.zoomIn = function () {
+        // Allow zoom only on image
+        if (!this.isImageSlide(this.core.index)) {
+            return;
+        }
+        var scale = this.scale + this.settings.scale;
+        scale = this.getScale(scale);
+        this.beginZoom(scale);
+        this.zoomImage(scale, Math.min(this.settings.scale, scale - this.scale), true, true);
+    };
+    // Reset zoom effect
+    Zoom.prototype.resetZoom = function (index) {
+        this.core.outer.removeClass('lg-zoomed lg-zoom-drag-transition');
+        var $actualSize = this.core.getElementById('lg-actual-size');
+        var $item = this.core.getSlideItem(index !== undefined ? index : this.core.index);
+        $actualSize
+            .removeClass(this.settings.actualSizeIcons.zoomOut)
+            .addClass(this.settings.actualSizeIcons.zoomIn);
+        $item.find('.lg-img-wrap').first().removeAttr('style');
+        $item.find('.lg-image').first().removeAttr('style');
+        this.scale = 1;
+        this.left = 0;
+        this.top = 0;
+        // Reset pagx pagy values to center
+        this.setPageCords();
+    };
+    Zoom.prototype.getTouchDistance = function (e) {
+        return Math.sqrt((e.touches[0].pageX - e.touches[1].pageX) *
+            (e.touches[0].pageX - e.touches[1].pageX) +
+            (e.touches[0].pageY - e.touches[1].pageY) *
+                (e.touches[0].pageY - e.touches[1].pageY));
+    };
+    Zoom.prototype.pinchZoom = function () {
+        var _this = this;
+        var startDist = 0;
+        var pinchStarted = false;
+        var initScale = 1;
+        var prevScale = 0;
+        var $item = this.core.getSlideItem(this.core.index);
+        this.core.outer.on('touchstart.lg', function (e) {
+            $item = _this.core.getSlideItem(_this.core.index);
+            if (!_this.isImageSlide(_this.core.index)) {
+                return;
+            }
+            if (e.touches.length === 2) {
+                e.preventDefault();
+                if (_this.core.outer.hasClass('lg-first-slide-loading')) {
+                    return;
+                }
+                initScale = _this.scale || 1;
+                _this.core.outer.removeClass('lg-zoom-drag-transition lg-zoom-dragging');
+                _this.setPageCords(e);
+                _this.resetImageTranslate(_this.core.index);
+                _this.core.touchAction = 'pinch';
+                startDist = _this.getTouchDistance(e);
+            }
+        });
+        this.core.$inner.on('touchmove.lg', function (e) {
+            if (e.touches.length === 2 &&
+                _this.core.touchAction === 'pinch' &&
+                (_this.$LG(e.target).hasClass('lg-item') ||
+                    $item.get().contains(e.target))) {
+                e.preventDefault();
+                var endDist = _this.getTouchDistance(e);
+                var distance = startDist - endDist;
+                if (!pinchStarted && Math.abs(distance) > 5) {
+                    pinchStarted = true;
+                }
+                if (pinchStarted) {
+                    prevScale = _this.scale;
+                    var _scale = Math.max(1, initScale + -distance * 0.02);
+                    _this.scale =
+                        Math.round((_scale + Number.EPSILON) * 100) / 100;
+                    var diff = _this.scale - prevScale;
+                    _this.zoomImage(_this.scale, Math.round((diff + Number.EPSILON) * 100) / 100, false, false);
+                }
+            }
+        });
+        this.core.$inner.on('touchend.lg', function (e) {
+            if (_this.core.touchAction === 'pinch' &&
+                (_this.$LG(e.target).hasClass('lg-item') ||
+                    $item.get().contains(e.target))) {
+                pinchStarted = false;
+                startDist = 0;
+                if (_this.scale <= 1) {
+                    _this.resetZoom();
+                }
+                else {
+                    var actualSizeScale = _this.getCurrentImageActualSizeScale();
+                    if (_this.scale >= actualSizeScale) {
+                        var scaleDiff = actualSizeScale - _this.scale;
+                        if (scaleDiff === 0) {
+                            scaleDiff = 0.01;
+                        }
+                        _this.zoomImage(actualSizeScale, scaleDiff, false, true);
+                    }
+                    _this.manageActualPixelClassNames();
+                    _this.core.outer.addClass('lg-zoomed');
+                }
+                _this.core.touchAction = undefined;
+            }
+        });
+    };
+    Zoom.prototype.touchendZoom = function (startCoords, endCoords, allowX, allowY, touchDuration) {
+        var distanceXnew = endCoords.x - startCoords.x;
+        var distanceYnew = endCoords.y - startCoords.y;
+        var speedX = Math.abs(distanceXnew) / touchDuration + 1;
+        var speedY = Math.abs(distanceYnew) / touchDuration + 1;
+        if (speedX > 2) {
+            speedX += 1;
+        }
+        if (speedY > 2) {
+            speedY += 1;
+        }
+        distanceXnew = distanceXnew * speedX;
+        distanceYnew = distanceYnew * speedY;
+        var _LGel = this.core
+            .getSlideItem(this.core.index)
+            .find('.lg-img-wrap')
+            .first();
+        var distance = {};
+        distance.x = this.left + distanceXnew;
+        distance.y = this.top + distanceYnew;
+        var possibleSwipeCords = this.getPossibleSwipeDragCords();
+        if (Math.abs(distanceXnew) > 15 || Math.abs(distanceYnew) > 15) {
+            if (allowY) {
+                if (this.isBeyondPossibleTop(distance.y, possibleSwipeCords.minY)) {
+                    distance.y = possibleSwipeCords.minY;
+                }
+                else if (this.isBeyondPossibleBottom(distance.y, possibleSwipeCords.maxY)) {
+                    distance.y = possibleSwipeCords.maxY;
+                }
+            }
+            if (allowX) {
+                if (this.isBeyondPossibleLeft(distance.x, possibleSwipeCords.minX)) {
+                    distance.x = possibleSwipeCords.minX;
+                }
+                else if (this.isBeyondPossibleRight(distance.x, possibleSwipeCords.maxX)) {
+                    distance.x = possibleSwipeCords.maxX;
+                }
+            }
+            if (allowY) {
+                this.top = distance.y;
+            }
+            else {
+                distance.y = this.top;
+            }
+            if (allowX) {
+                this.left = distance.x;
+            }
+            else {
+                distance.x = this.left;
+            }
+            this.setZoomSwipeStyles(_LGel, distance);
+            this.positionChanged = true;
+        }
+    };
+    Zoom.prototype.getZoomSwipeCords = function (startCoords, endCoords, allowX, allowY, possibleSwipeCords) {
+        var distance = {};
+        if (allowY) {
+            distance.y = this.top + (endCoords.y - startCoords.y);
+            if (this.isBeyondPossibleTop(distance.y, possibleSwipeCords.minY)) {
+                var diffMinY = possibleSwipeCords.minY - distance.y;
+                distance.y = possibleSwipeCords.minY - diffMinY / 6;
+            }
+            else if (this.isBeyondPossibleBottom(distance.y, possibleSwipeCords.maxY)) {
+                var diffMaxY = distance.y - possibleSwipeCords.maxY;
+                distance.y = possibleSwipeCords.maxY + diffMaxY / 6;
+            }
+        }
+        else {
+            distance.y = this.top;
+        }
+        if (allowX) {
+            distance.x = this.left + (endCoords.x - startCoords.x);
+            if (this.isBeyondPossibleLeft(distance.x, possibleSwipeCords.minX)) {
+                var diffMinX = possibleSwipeCords.minX - distance.x;
+                distance.x = possibleSwipeCords.minX - diffMinX / 6;
+            }
+            else if (this.isBeyondPossibleRight(distance.x, possibleSwipeCords.maxX)) {
+                var difMaxX = distance.x - possibleSwipeCords.maxX;
+                distance.x = possibleSwipeCords.maxX + difMaxX / 6;
+            }
+        }
+        else {
+            distance.x = this.left;
+        }
+        return distance;
+    };
+    Zoom.prototype.isBeyondPossibleLeft = function (x, minX) {
+        return x >= minX;
+    };
+    Zoom.prototype.isBeyondPossibleRight = function (x, maxX) {
+        return x <= maxX;
+    };
+    Zoom.prototype.isBeyondPossibleTop = function (y, minY) {
+        return y >= minY;
+    };
+    Zoom.prototype.isBeyondPossibleBottom = function (y, maxY) {
+        return y <= maxY;
+    };
+    Zoom.prototype.isImageSlide = function (index) {
+        var currentItem = this.core.galleryItems[index];
+        return this.core.getSlideType(currentItem) === 'image';
+    };
+    Zoom.prototype.getPossibleSwipeDragCords = function (scale) {
+        var $image = this.core
+            .getSlideItem(this.core.index)
+            .find('.lg-image')
+            .first();
+        var bottom = this.core.mediaContainerPosition.bottom;
+        var imgRect = $image.get().getBoundingClientRect();
+        var imageHeight = imgRect.height;
+        var imageWidth = imgRect.width;
+        if (scale) {
+            imageHeight = imageHeight + scale * imageHeight;
+            imageWidth = imageWidth + scale * imageWidth;
+        }
+        var minY = (imageHeight - this.containerRect.height) / 2;
+        var maxY = (this.containerRect.height - imageHeight) / 2 + bottom;
+        var minX = (imageWidth - this.containerRect.width) / 2;
+        var maxX = (this.containerRect.width - imageWidth) / 2;
+        var possibleSwipeCords = {
+            minY: minY,
+            maxY: maxY,
+            minX: minX,
+            maxX: maxX,
+        };
+        return possibleSwipeCords;
+    };
+    Zoom.prototype.setZoomSwipeStyles = function (LGel, distance) {
+        LGel.css('transform', 'translate3d(' + distance.x + 'px, ' + distance.y + 'px, 0)');
+    };
+    Zoom.prototype.zoomSwipe = function () {
+        var _this = this;
+        var startCoords = {};
+        var endCoords = {};
+        var isMoved = false;
+        // Allow x direction drag
+        var allowX = false;
+        // Allow Y direction drag
+        var allowY = false;
+        var startTime = new Date();
+        var endTime = new Date();
+        var possibleSwipeCords;
+        var _LGel;
+        var $item = this.core.getSlideItem(this.core.index);
+        this.core.$inner.on('touchstart.lg', function (e) {
+            // Allow zoom only on image
+            if (!_this.isImageSlide(_this.core.index)) {
+                return;
+            }
+            $item = _this.core.getSlideItem(_this.core.index);
+            if ((_this.$LG(e.target).hasClass('lg-item') ||
+                $item.get().contains(e.target)) &&
+                e.touches.length === 1 &&
+                _this.core.outer.hasClass('lg-zoomed')) {
+                e.preventDefault();
+                startTime = new Date();
+                _this.core.touchAction = 'zoomSwipe';
+                _LGel = _this.core
+                    .getSlideItem(_this.core.index)
+                    .find('.lg-img-wrap')
+                    .first();
+                var dragAllowedAxises = _this.getDragAllowedAxises(0);
+                allowY = dragAllowedAxises.allowY;
+                allowX = dragAllowedAxises.allowX;
+                if (allowX || allowY) {
+                    startCoords = _this.getSwipeCords(e);
+                }
+                possibleSwipeCords = _this.getPossibleSwipeDragCords();
+                // reset opacity and transition duration
+                _this.core.outer.addClass('lg-zoom-dragging lg-zoom-drag-transition');
+            }
+        });
+        this.core.$inner.on('touchmove.lg', function (e) {
+            if (e.touches.length === 1 &&
+                _this.core.touchAction === 'zoomSwipe' &&
+                (_this.$LG(e.target).hasClass('lg-item') ||
+                    $item.get().contains(e.target))) {
+                e.preventDefault();
+                _this.core.touchAction = 'zoomSwipe';
+                endCoords = _this.getSwipeCords(e);
+                var distance = _this.getZoomSwipeCords(startCoords, endCoords, allowX, allowY, possibleSwipeCords);
+                if (Math.abs(endCoords.x - startCoords.x) > 15 ||
+                    Math.abs(endCoords.y - startCoords.y) > 15) {
+                    isMoved = true;
+                    _this.setZoomSwipeStyles(_LGel, distance);
+                }
+            }
+        });
+        this.core.$inner.on('touchend.lg', function (e) {
+            if (_this.core.touchAction === 'zoomSwipe' &&
+                (_this.$LG(e.target).hasClass('lg-item') ||
+                    $item.get().contains(e.target))) {
+                e.preventDefault();
+                _this.core.touchAction = undefined;
+                _this.core.outer.removeClass('lg-zoom-dragging');
+                if (!isMoved) {
+                    return;
+                }
+                isMoved = false;
+                endTime = new Date();
+                var touchDuration = endTime.valueOf() - startTime.valueOf();
+                _this.touchendZoom(startCoords, endCoords, allowX, allowY, touchDuration);
+            }
+        });
+    };
+    Zoom.prototype.zoomDrag = function () {
+        var _this = this;
+        var startCoords = {};
+        var endCoords = {};
+        var isDragging = false;
+        var isMoved = false;
+        // Allow x direction drag
+        var allowX = false;
+        // Allow Y direction drag
+        var allowY = false;
+        var startTime;
+        var endTime;
+        var possibleSwipeCords;
+        var _LGel;
+        this.core.outer.on('mousedown.lg.zoom', function (e) {
+            // Allow zoom only on image
+            if (!_this.isImageSlide(_this.core.index)) {
+                return;
+            }
+            var $item = _this.core.getSlideItem(_this.core.index);
+            if (_this.$LG(e.target).hasClass('lg-item') ||
+                $item.get().contains(e.target)) {
+                startTime = new Date();
+                _LGel = _this.core
+                    .getSlideItem(_this.core.index)
+                    .find('.lg-img-wrap')
+                    .first();
+                var dragAllowedAxises = _this.getDragAllowedAxises(0);
+                allowY = dragAllowedAxises.allowY;
+                allowX = dragAllowedAxises.allowX;
+                if (_this.core.outer.hasClass('lg-zoomed')) {
+                    if (_this.$LG(e.target).hasClass('lg-object') &&
+                        (allowX || allowY)) {
+                        e.preventDefault();
+                        startCoords = _this.getDragCords(e);
+                        possibleSwipeCords = _this.getPossibleSwipeDragCords();
+                        isDragging = true;
+                        _this.core.outer
+                            .removeClass('lg-grab')
+                            .addClass('lg-grabbing lg-zoom-drag-transition lg-zoom-dragging');
+                        // reset opacity and transition duration
+                    }
+                }
+            }
+        });
+        this.$LG(window).on("mousemove.lg.zoom.global" + this.core.lgId, function (e) {
+            if (isDragging) {
+                isMoved = true;
+                endCoords = _this.getDragCords(e);
+                var distance = _this.getZoomSwipeCords(startCoords, endCoords, allowX, allowY, possibleSwipeCords);
+                _this.setZoomSwipeStyles(_LGel, distance);
+            }
+        });
+        this.$LG(window).on("mouseup.lg.zoom.global" + this.core.lgId, function (e) {
+            if (isDragging) {
+                endTime = new Date();
+                isDragging = false;
+                _this.core.outer.removeClass('lg-zoom-dragging');
+                // Fix for chrome mouse move on click
+                if (isMoved &&
+                    (startCoords.x !== endCoords.x ||
+                        startCoords.y !== endCoords.y)) {
+                    endCoords = _this.getDragCords(e);
+                    var touchDuration = endTime.valueOf() - startTime.valueOf();
+                    _this.touchendZoom(startCoords, endCoords, allowX, allowY, touchDuration);
+                }
+                isMoved = false;
+            }
+            _this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');
+        });
+    };
+    Zoom.prototype.closeGallery = function () {
+        this.resetZoom();
+    };
+    Zoom.prototype.destroy = function () {
+        // Unbind all events added by lightGallery zoom plugin
+        this.$LG(window).off(".lg.zoom.global" + this.core.lgId);
+        this.core.LGel.off('.lg.zoom');
+        this.core.LGel.off('.zoom');
+        clearTimeout(this.zoomableTimeout);
+        this.zoomableTimeout = false;
+    };
+    return Zoom;
+}());
+
+export default Zoom;
+//# sourceMappingURL=lg-zoom.es5.js.map
diff --git a/resources/lightgallery/plugins/zoom/lg-zoom.min.js b/resources/lightgallery/plugins/zoom/lg-zoom.min.js
new file mode 100644
index 0000000..2435816
--- /dev/null
+++ b/resources/lightgallery/plugins/zoom/lg-zoom.min.js
@@ -0,0 +1,8 @@
+/**
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).lgZoom=t()}(this,(function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var t,o=1,i=arguments.length;o<i;o++)for(var s in t=arguments[o])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e}).apply(this,arguments)},t={scale:1,zoom:!0,actualSize:!0,showZoomInOutIcons:!1,actualSizeIcons:{zoomIn:"lg-zoom-in",zoomOut:"lg-zoom-out"},enableZoomAfter:300,zoomPluginStrings:{zoomIn:"Zoom in",zoomOut:"Zoom out",viewActualSize:"View actual size"}},o="lgContainerResize",i="lgBeforeOpen",s="lgAfterOpen",a="lgSlideItemLoad",n="lgAfterSlide",r="lgRotateLeft",l="lgRotateRight",c="lgFlipHorizontal",g="lgFlipVertical";return function(){function h(o,i){return this.core=o,this.$LG=i,this.settings=e(e({},t),this.core.settings),this}return h.prototype.buildTemplates=function(){var e=this.settings.showZoomInOutIcons?'<button id="'+this.core.getIdName("lg-zoom-in")+'" type="button" aria-label="'+this.settings.zoomPluginStrings.zoomIn+'" class="lg-zoom-in lg-icon"></button><button id="'+this.core.getIdName("lg-zoom-out")+'" type="button" aria-label="'+this.settings.zoomPluginStrings.zoomIn+'" class="lg-zoom-out lg-icon"></button>':"";this.settings.actualSize&&(e+='<button id="'+this.core.getIdName("lg-actual-size")+'" type="button" aria-label="'+this.settings.zoomPluginStrings.viewActualSize+'" class="'+this.settings.actualSizeIcons.zoomIn+' lg-icon"></button>'),this.core.outer.addClass("lg-use-transition-for-zoom"),this.core.$toolbar.first().append(e)},h.prototype.enableZoom=function(e){var t=this,o=this.settings.enableZoomAfter+e.detail.delay;this.$LG("body").first().hasClass("lg-from-hash")&&e.detail.delay?o=0:this.$LG("body").first().removeClass("lg-from-hash"),this.zoomableTimeout=setTimeout((function(){t.isImageSlide(t.core.index)&&(t.core.getSlideItem(e.detail.index).addClass("lg-zoomable"),e.detail.index===t.core.index&&t.setZoomEssentials())}),o+30)},h.prototype.enableZoomOnSlideItemLoad=function(){this.core.LGel.on(a+".zoom",this.enableZoom.bind(this))},h.prototype.getDragCords=function(e){return{x:e.pageX,y:e.pageY}},h.prototype.getSwipeCords=function(e){return{x:e.touches[0].pageX,y:e.touches[0].pageY}},h.prototype.getDragAllowedAxises=function(e,t){var o=this.core.getSlideItem(this.core.index).find(".lg-image").first().get(),i=0,s=0,a=o.getBoundingClientRect();e?(i=o.offsetHeight*e,s=o.offsetWidth*e):t?(i=a.height+t*a.height,s=a.width+t*a.width):(i=a.height,s=a.width);var n=i>this.containerRect.height;return{allowX:s>this.containerRect.width,allowY:n}},h.prototype.setZoomEssentials=function(){this.containerRect=this.core.$content.get().getBoundingClientRect()},h.prototype.zoomImage=function(e,t,o,i){if(!(Math.abs(t)<=0)){var s,a,n=this.containerRect.width/2+this.containerRect.left,r=this.containerRect.height/2+this.containerRect.top+this.scrollTop;1===e&&(this.positionChanged=!1);var l=this.getDragAllowedAxises(0,t),c=l.allowY,g=l.allowX;this.positionChanged&&(s=this.left/(this.scale-t),a=this.top/(this.scale-t),this.pageX=n-s,this.pageY=r-a,this.positionChanged=!1);var h,m,u=this.getPossibleSwipeDragCords(t),d=n-this.pageX,f=r-this.pageY;if(e-t>1){var p=(e-t)/Math.abs(t);h=(d=(t<0?-d:d)+this.left*(p+(t<0?-1:1)))/p,m=(f=(t<0?-f:f)+this.top*(p+(t<0?-1:1)))/p}else{h=d*(p=(e-t)*t),m=f*p}o&&(g?this.isBeyondPossibleLeft(h,u.minX)?h=u.minX:this.isBeyondPossibleRight(h,u.maxX)&&(h=u.maxX):e>1&&(h<u.minX?h=u.minX:h>u.maxX&&(h=u.maxX)),c?this.isBeyondPossibleTop(m,u.minY)?m=u.minY:this.isBeyondPossibleBottom(m,u.maxY)&&(m=u.maxY):e>1&&(m<u.minY?m=u.minY:m>u.maxY&&(m=u.maxY))),this.setZoomStyles({x:h,y:m,scale:e}),this.left=h,this.top=m,i&&this.setZoomImageSize()}},h.prototype.resetImageTranslate=function(e){if(this.isImageSlide(e)){var t=this.core.getSlideItem(e).find(".lg-image").first();this.imageReset=!1,t.removeClass("reset-transition reset-transition-y reset-transition-x"),this.core.outer.removeClass("lg-actual-size"),t.css("width","auto").css("height","auto"),setTimeout((function(){t.removeClass("no-transition")}),10)}},h.prototype.setZoomImageSize=function(){var e=this,t=this.core.getSlideItem(this.core.index).find(".lg-image").first();setTimeout((function(){var o=e.getCurrentImageActualSizeScale();e.scale>=o&&(t.addClass("no-transition"),e.imageReset=!0)}),500),setTimeout((function(){var o=e.getCurrentImageActualSizeScale();if(e.scale>=o){var i=e.getDragAllowedAxises(e.scale);t.css("width",t.get().naturalWidth+"px").css("height",t.get().naturalHeight+"px"),e.core.outer.addClass("lg-actual-size"),i.allowX&&i.allowY?t.addClass("reset-transition"):i.allowX&&!i.allowY?t.addClass("reset-transition-x"):!i.allowX&&i.allowY&&t.addClass("reset-transition-y")}}),550)},h.prototype.setZoomStyles=function(e){var t=this.core.getSlideItem(this.core.index).find(".lg-img-wrap").first(),o=this.core.getSlideItem(this.core.index).find(".lg-image").first(),i=this.core.outer.find(".lg-current .lg-dummy-img").first();this.scale=e.scale,o.css("transform","scale3d("+e.scale+", "+e.scale+", 1)"),i.css("transform","scale3d("+e.scale+", "+e.scale+", 1)");var s="translate3d("+e.x+"px, "+e.y+"px, 0)";t.css("transform",s)},h.prototype.setActualSize=function(e,t){var o=this,i=this.core.galleryItems[this.core.index];this.resetImageTranslate(e),setTimeout((function(){if(i.src&&!o.core.outer.hasClass("lg-first-slide-loading")){var e=o.getCurrentImageActualSizeScale(),s=o.scale;o.core.outer.hasClass("lg-zoomed")?o.scale=1:o.scale=o.getScale(e),o.setPageCords(t),o.beginZoom(o.scale),o.zoomImage(o.scale,o.scale-s,!0,!0),setTimeout((function(){o.core.outer.removeClass("lg-grabbing").addClass("lg-grab")}),10)}}),50)},h.prototype.getNaturalWidth=function(e){var t=this.core.getSlideItem(e).find(".lg-image").first(),o=this.core.galleryItems[e].width;return o?parseFloat(o):t.get().naturalWidth},h.prototype.getActualSizeScale=function(e,t){return e>=t?e/t||2:1},h.prototype.getCurrentImageActualSizeScale=function(){var e=this.core.getSlideItem(this.core.index).find(".lg-image").first().get().offsetWidth,t=this.getNaturalWidth(this.core.index)||e;return this.getActualSizeScale(t,e)},h.prototype.getPageCords=function(e){var t={};if(e)t.x=e.pageX||e.touches[0].pageX,t.y=e.pageY||e.touches[0].pageY;else{var o=this.core.$content.get().getBoundingClientRect();t.x=o.width/2+o.left,t.y=o.height/2+this.scrollTop+o.top}return t},h.prototype.setPageCords=function(e){var t=this.getPageCords(e);this.pageX=t.x,this.pageY=t.y},h.prototype.manageActualPixelClassNames=function(){this.core.getElementById("lg-actual-size").removeClass(this.settings.actualSizeIcons.zoomIn).addClass(this.settings.actualSizeIcons.zoomOut)},h.prototype.beginZoom=function(e){return this.core.outer.removeClass("lg-zoom-drag-transition lg-zoom-dragging"),e>1?(this.core.outer.addClass("lg-zoomed"),this.manageActualPixelClassNames()):this.resetZoom(),e>1},h.prototype.getScale=function(e){var t=this.getCurrentImageActualSizeScale();return e<1?e=1:e>t&&(e=t),e},h.prototype.init=function(){var e=this;if(this.settings.zoom){this.buildTemplates(),this.enableZoomOnSlideItemLoad();var t=null;this.core.outer.on("dblclick.lg",(function(t){e.$LG(t.target).hasClass("lg-image")&&e.setActualSize(e.core.index,t)})),this.core.outer.on("touchstart.lg",(function(o){var i=e.$LG(o.target);1===o.touches.length&&i.hasClass("lg-image")&&(t?(clearTimeout(t),t=null,o.preventDefault(),e.setActualSize(e.core.index,o)):t=setTimeout((function(){t=null}),300))})),this.core.LGel.on(o+".zoom "+l+".zoom "+r+".zoom "+c+".zoom "+g+".zoom",(function(){if(e.core.lgOpened&&e.isImageSlide(e.core.index)&&!e.core.touchAction){var t=e.core.getSlideItem(e.core.index).find(".lg-img-wrap").first();e.top=0,e.left=0,e.setZoomEssentials(),e.setZoomSwipeStyles(t,{x:0,y:0}),e.positionChanged=!0}})),this.$LG(window).on("scroll.lg.zoom.global"+this.core.lgId,(function(){e.core.lgOpened&&(e.scrollTop=e.$LG(window).scrollTop())})),this.core.getElementById("lg-zoom-out").on("click.lg",(function(){if(e.isImageSlide(e.core.index)){var t=0;e.imageReset&&(e.resetImageTranslate(e.core.index),t=50),setTimeout((function(){var t=e.scale-e.settings.scale;t<1&&(t=1),e.beginZoom(t),e.zoomImage(t,-e.settings.scale,!0,!0)}),t)}})),this.core.getElementById("lg-zoom-in").on("click.lg",(function(){e.zoomIn()})),this.core.getElementById("lg-actual-size").on("click.lg",(function(){e.setActualSize(e.core.index)})),this.core.LGel.on(i+".zoom",(function(){e.core.outer.find(".lg-item").removeClass("lg-zoomable")})),this.core.LGel.on(s+".zoom",(function(){e.scrollTop=e.$LG(window).scrollTop(),e.pageX=e.core.outer.width()/2,e.pageY=e.core.outer.height()/2+e.scrollTop,e.scale=1})),this.core.LGel.on(n+".zoom",(function(t){var o=t.detail.prevIndex;e.scale=1,e.positionChanged=!1,e.resetZoom(o),e.resetImageTranslate(o),e.isImageSlide(e.core.index)&&e.setZoomEssentials()})),this.zoomDrag(),this.pinchZoom(),this.zoomSwipe(),this.zoomableTimeout=!1,this.positionChanged=!1}},h.prototype.zoomIn=function(){if(this.isImageSlide(this.core.index)){var e=this.scale+this.settings.scale;e=this.getScale(e),this.beginZoom(e),this.zoomImage(e,Math.min(this.settings.scale,e-this.scale),!0,!0)}},h.prototype.resetZoom=function(e){this.core.outer.removeClass("lg-zoomed lg-zoom-drag-transition");var t=this.core.getElementById("lg-actual-size"),o=this.core.getSlideItem(void 0!==e?e:this.core.index);t.removeClass(this.settings.actualSizeIcons.zoomOut).addClass(this.settings.actualSizeIcons.zoomIn),o.find(".lg-img-wrap").first().removeAttr("style"),o.find(".lg-image").first().removeAttr("style"),this.scale=1,this.left=0,this.top=0,this.setPageCords()},h.prototype.getTouchDistance=function(e){return Math.sqrt((e.touches[0].pageX-e.touches[1].pageX)*(e.touches[0].pageX-e.touches[1].pageX)+(e.touches[0].pageY-e.touches[1].pageY)*(e.touches[0].pageY-e.touches[1].pageY))},h.prototype.pinchZoom=function(){var e=this,t=0,o=!1,i=1,s=0,a=this.core.getSlideItem(this.core.index);this.core.outer.on("touchstart.lg",(function(o){if(a=e.core.getSlideItem(e.core.index),e.isImageSlide(e.core.index)&&2===o.touches.length){if(o.preventDefault(),e.core.outer.hasClass("lg-first-slide-loading"))return;i=e.scale||1,e.core.outer.removeClass("lg-zoom-drag-transition lg-zoom-dragging"),e.setPageCords(o),e.resetImageTranslate(e.core.index),e.core.touchAction="pinch",t=e.getTouchDistance(o)}})),this.core.$inner.on("touchmove.lg",(function(n){if(2===n.touches.length&&"pinch"===e.core.touchAction&&(e.$LG(n.target).hasClass("lg-item")||a.get().contains(n.target))){n.preventDefault();var r=e.getTouchDistance(n),l=t-r;if(!o&&Math.abs(l)>5&&(o=!0),o){s=e.scale;var c=Math.max(1,i+.02*-l);e.scale=Math.round(100*(c+Number.EPSILON))/100;var g=e.scale-s;e.zoomImage(e.scale,Math.round(100*(g+Number.EPSILON))/100,!1,!1)}}})),this.core.$inner.on("touchend.lg",(function(i){if("pinch"===e.core.touchAction&&(e.$LG(i.target).hasClass("lg-item")||a.get().contains(i.target))){if(o=!1,t=0,e.scale<=1)e.resetZoom();else{var s=e.getCurrentImageActualSizeScale();if(e.scale>=s){var n=s-e.scale;0===n&&(n=.01),e.zoomImage(s,n,!1,!0)}e.manageActualPixelClassNames(),e.core.outer.addClass("lg-zoomed")}e.core.touchAction=void 0}}))},h.prototype.touchendZoom=function(e,t,o,i,s){var a=t.x-e.x,n=t.y-e.y,r=Math.abs(a)/s+1,l=Math.abs(n)/s+1;r>2&&(r+=1),l>2&&(l+=1),a*=r,n*=l;var c=this.core.getSlideItem(this.core.index).find(".lg-img-wrap").first(),g={};g.x=this.left+a,g.y=this.top+n;var h=this.getPossibleSwipeDragCords();(Math.abs(a)>15||Math.abs(n)>15)&&(i&&(this.isBeyondPossibleTop(g.y,h.minY)?g.y=h.minY:this.isBeyondPossibleBottom(g.y,h.maxY)&&(g.y=h.maxY)),o&&(this.isBeyondPossibleLeft(g.x,h.minX)?g.x=h.minX:this.isBeyondPossibleRight(g.x,h.maxX)&&(g.x=h.maxX)),i?this.top=g.y:g.y=this.top,o?this.left=g.x:g.x=this.left,this.setZoomSwipeStyles(c,g),this.positionChanged=!0)},h.prototype.getZoomSwipeCords=function(e,t,o,i,s){var a={};if(i){if(a.y=this.top+(t.y-e.y),this.isBeyondPossibleTop(a.y,s.minY)){var n=s.minY-a.y;a.y=s.minY-n/6}else if(this.isBeyondPossibleBottom(a.y,s.maxY)){var r=a.y-s.maxY;a.y=s.maxY+r/6}}else a.y=this.top;if(o){if(a.x=this.left+(t.x-e.x),this.isBeyondPossibleLeft(a.x,s.minX)){var l=s.minX-a.x;a.x=s.minX-l/6}else if(this.isBeyondPossibleRight(a.x,s.maxX)){var c=a.x-s.maxX;a.x=s.maxX+c/6}}else a.x=this.left;return a},h.prototype.isBeyondPossibleLeft=function(e,t){return e>=t},h.prototype.isBeyondPossibleRight=function(e,t){return e<=t},h.prototype.isBeyondPossibleTop=function(e,t){return e>=t},h.prototype.isBeyondPossibleBottom=function(e,t){return e<=t},h.prototype.isImageSlide=function(e){var t=this.core.galleryItems[e];return"image"===this.core.getSlideType(t)},h.prototype.getPossibleSwipeDragCords=function(e){var t=this.core.getSlideItem(this.core.index).find(".lg-image").first(),o=this.core.mediaContainerPosition.bottom,i=t.get().getBoundingClientRect(),s=i.height,a=i.width;return e&&(s+=e*s,a+=e*a),{minY:(s-this.containerRect.height)/2,maxY:(this.containerRect.height-s)/2+o,minX:(a-this.containerRect.width)/2,maxX:(this.containerRect.width-a)/2}},h.prototype.setZoomSwipeStyles=function(e,t){e.css("transform","translate3d("+t.x+"px, "+t.y+"px, 0)")},h.prototype.zoomSwipe=function(){var e,t,o=this,i={},s={},a=!1,n=!1,r=!1,l=new Date,c=(new Date,this.core.getSlideItem(this.core.index));this.core.$inner.on("touchstart.lg",(function(s){if(o.isImageSlide(o.core.index)&&(c=o.core.getSlideItem(o.core.index),(o.$LG(s.target).hasClass("lg-item")||c.get().contains(s.target))&&1===s.touches.length&&o.core.outer.hasClass("lg-zoomed"))){s.preventDefault(),l=new Date,o.core.touchAction="zoomSwipe",t=o.core.getSlideItem(o.core.index).find(".lg-img-wrap").first();var a=o.getDragAllowedAxises(0);r=a.allowY,((n=a.allowX)||r)&&(i=o.getSwipeCords(s)),e=o.getPossibleSwipeDragCords(),o.core.outer.addClass("lg-zoom-dragging lg-zoom-drag-transition")}})),this.core.$inner.on("touchmove.lg",(function(l){if(1===l.touches.length&&"zoomSwipe"===o.core.touchAction&&(o.$LG(l.target).hasClass("lg-item")||c.get().contains(l.target))){l.preventDefault(),o.core.touchAction="zoomSwipe",s=o.getSwipeCords(l);var g=o.getZoomSwipeCords(i,s,n,r,e);(Math.abs(s.x-i.x)>15||Math.abs(s.y-i.y)>15)&&(a=!0,o.setZoomSwipeStyles(t,g))}})),this.core.$inner.on("touchend.lg",(function(e){if("zoomSwipe"===o.core.touchAction&&(o.$LG(e.target).hasClass("lg-item")||c.get().contains(e.target))){if(e.preventDefault(),o.core.touchAction=void 0,o.core.outer.removeClass("lg-zoom-dragging"),!a)return;a=!1;var t=(new Date).valueOf()-l.valueOf();o.touchendZoom(i,s,n,r,t)}}))},h.prototype.zoomDrag=function(){var e,t,o,i,s=this,a={},n={},r=!1,l=!1,c=!1,g=!1;this.core.outer.on("mousedown.lg.zoom",(function(t){if(s.isImageSlide(s.core.index)){var n=s.core.getSlideItem(s.core.index);if(s.$LG(t.target).hasClass("lg-item")||n.get().contains(t.target)){e=new Date,i=s.core.getSlideItem(s.core.index).find(".lg-img-wrap").first();var l=s.getDragAllowedAxises(0);g=l.allowY,c=l.allowX,s.core.outer.hasClass("lg-zoomed")&&s.$LG(t.target).hasClass("lg-object")&&(c||g)&&(t.preventDefault(),a=s.getDragCords(t),o=s.getPossibleSwipeDragCords(),r=!0,s.core.outer.removeClass("lg-grab").addClass("lg-grabbing lg-zoom-drag-transition lg-zoom-dragging"))}}})),this.$LG(window).on("mousemove.lg.zoom.global"+this.core.lgId,(function(e){if(r){l=!0,n=s.getDragCords(e);var t=s.getZoomSwipeCords(a,n,c,g,o);s.setZoomSwipeStyles(i,t)}})),this.$LG(window).on("mouseup.lg.zoom.global"+this.core.lgId,(function(o){if(r){if(t=new Date,r=!1,s.core.outer.removeClass("lg-zoom-dragging"),l&&(a.x!==n.x||a.y!==n.y)){n=s.getDragCords(o);var i=t.valueOf()-e.valueOf();s.touchendZoom(a,n,c,g,i)}l=!1}s.core.outer.removeClass("lg-grabbing").addClass("lg-grab")}))},h.prototype.closeGallery=function(){this.resetZoom()},h.prototype.destroy=function(){this.$LG(window).off(".lg.zoom.global"+this.core.lgId),this.core.LGel.off(".lg.zoom"),this.core.LGel.off(".zoom"),clearTimeout(this.zoomableTimeout),this.zoomableTimeout=!1},h}()}));
diff --git a/resources/lightgallery/plugins/zoom/lg-zoom.umd.js b/resources/lightgallery/plugins/zoom/lg-zoom.umd.js
new file mode 100644
index 0000000..461fe46
--- /dev/null
+++ b/resources/lightgallery/plugins/zoom/lg-zoom.umd.js
@@ -0,0 +1,969 @@
+/*!
+ * lightgallery | 2.7.1-beta.1 | November 17th 2022
+ * http://www.lightgalleryjs.com/
+ * Copyright (c) 2020 Sachin Neravath;
+ * @license GPLv3
+ */
+
+(function (global, factory) {
+    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+    typeof define === 'function' && define.amd ? define(factory) :
+    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lgZoom = factory());
+}(this, (function () { 'use strict';
+
+    /*! *****************************************************************************
+    Copyright (c) Microsoft Corporation.
+
+    Permission to use, copy, modify, and/or distribute this software for any
+    purpose with or without fee is hereby granted.
+
+    THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+    REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+    AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+    INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+    LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+    OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+    PERFORMANCE OF THIS SOFTWARE.
+    ***************************************************************************** */
+
+    var __assign = function() {
+        __assign = Object.assign || function __assign(t) {
+            for (var s, i = 1, n = arguments.length; i < n; i++) {
+                s = arguments[i];
+                for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+            }
+            return t;
+        };
+        return __assign.apply(this, arguments);
+    };
+
+    var zoomSettings = {
+        scale: 1,
+        zoom: true,
+        actualSize: true,
+        showZoomInOutIcons: false,
+        actualSizeIcons: {
+            zoomIn: 'lg-zoom-in',
+            zoomOut: 'lg-zoom-out',
+        },
+        enableZoomAfter: 300,
+        zoomPluginStrings: {
+            zoomIn: 'Zoom in',
+            zoomOut: 'Zoom out',
+            viewActualSize: 'View actual size',
+        },
+    };
+
+    /**
+     * List of lightGallery events
+     * All events should be documented here
+     * Below interfaces are used to build the website documentations
+     * */
+    var lGEvents = {
+        afterAppendSlide: 'lgAfterAppendSlide',
+        init: 'lgInit',
+        hasVideo: 'lgHasVideo',
+        containerResize: 'lgContainerResize',
+        updateSlides: 'lgUpdateSlides',
+        afterAppendSubHtml: 'lgAfterAppendSubHtml',
+        beforeOpen: 'lgBeforeOpen',
+        afterOpen: 'lgAfterOpen',
+        slideItemLoad: 'lgSlideItemLoad',
+        beforeSlide: 'lgBeforeSlide',
+        afterSlide: 'lgAfterSlide',
+        posterClick: 'lgPosterClick',
+        dragStart: 'lgDragStart',
+        dragMove: 'lgDragMove',
+        dragEnd: 'lgDragEnd',
+        beforeNextSlide: 'lgBeforeNextSlide',
+        beforePrevSlide: 'lgBeforePrevSlide',
+        beforeClose: 'lgBeforeClose',
+        afterClose: 'lgAfterClose',
+        rotateLeft: 'lgRotateLeft',
+        rotateRight: 'lgRotateRight',
+        flipHorizontal: 'lgFlipHorizontal',
+        flipVertical: 'lgFlipVertical',
+        autoplay: 'lgAutoplay',
+        autoplayStart: 'lgAutoplayStart',
+        autoplayStop: 'lgAutoplayStop',
+    };
+
+    var ZOOM_TRANSITION_DURATION = 500;
+    var Zoom = /** @class */ (function () {
+        function Zoom(instance, $LG) {
+            // get lightGallery core plugin instance
+            this.core = instance;
+            this.$LG = $LG;
+            this.settings = __assign(__assign({}, zoomSettings), this.core.settings);
+            return this;
+        }
+        // Append Zoom controls. Actual size, Zoom-in, Zoom-out
+        Zoom.prototype.buildTemplates = function () {
+            var zoomIcons = this.settings.showZoomInOutIcons
+                ? "<button id=\"" + this.core.getIdName('lg-zoom-in') + "\" type=\"button\" aria-label=\"" + this.settings.zoomPluginStrings['zoomIn'] + "\" class=\"lg-zoom-in lg-icon\"></button><button id=\"" + this.core.getIdName('lg-zoom-out') + "\" type=\"button\" aria-label=\"" + this.settings.zoomPluginStrings['zoomIn'] + "\" class=\"lg-zoom-out lg-icon\"></button>"
+                : '';
+            if (this.settings.actualSize) {
+                zoomIcons += "<button id=\"" + this.core.getIdName('lg-actual-size') + "\" type=\"button\" aria-label=\"" + this.settings.zoomPluginStrings['viewActualSize'] + "\" class=\"" + this.settings.actualSizeIcons.zoomIn + " lg-icon\"></button>";
+            }
+            this.core.outer.addClass('lg-use-transition-for-zoom');
+            this.core.$toolbar.first().append(zoomIcons);
+        };
+        /**
+         * @desc Enable zoom option only once the image is completely loaded
+         * If zoomFromOrigin is true, Zoom is enabled once the dummy image has been inserted
+         *
+         * Zoom styles are defined under lg-zoomable CSS class.
+         */
+        Zoom.prototype.enableZoom = function (event) {
+            var _this = this;
+            // delay will be 0 except first time
+            var _speed = this.settings.enableZoomAfter + event.detail.delay;
+            // set _speed value 0 if gallery opened from direct url and if it is first slide
+            if (this.$LG('body').first().hasClass('lg-from-hash') &&
+                event.detail.delay) {
+                // will execute only once
+                _speed = 0;
+            }
+            else {
+                // Remove lg-from-hash to enable starting animation.
+                this.$LG('body').first().removeClass('lg-from-hash');
+            }
+            this.zoomableTimeout = setTimeout(function () {
+                if (!_this.isImageSlide(_this.core.index)) {
+                    return;
+                }
+                _this.core.getSlideItem(event.detail.index).addClass('lg-zoomable');
+                if (event.detail.index === _this.core.index) {
+                    _this.setZoomEssentials();
+                }
+            }, _speed + 30);
+        };
+        Zoom.prototype.enableZoomOnSlideItemLoad = function () {
+            // Add zoomable class
+            this.core.LGel.on(lGEvents.slideItemLoad + ".zoom", this.enableZoom.bind(this));
+        };
+        Zoom.prototype.getDragCords = function (e) {
+            return {
+                x: e.pageX,
+                y: e.pageY,
+            };
+        };
+        Zoom.prototype.getSwipeCords = function (e) {
+            var x = e.touches[0].pageX;
+            var y = e.touches[0].pageY;
+            return {
+                x: x,
+                y: y,
+            };
+        };
+        Zoom.prototype.getDragAllowedAxises = function (scale, scaleDiff) {
+            var $image = this.core
+                .getSlideItem(this.core.index)
+                .find('.lg-image')
+                .first()
+                .get();
+            var height = 0;
+            var width = 0;
+            var rect = $image.getBoundingClientRect();
+            if (scale) {
+                height = $image.offsetHeight * scale;
+                width = $image.offsetWidth * scale;
+            }
+            else if (scaleDiff) {
+                height = rect.height + scaleDiff * rect.height;
+                width = rect.width + scaleDiff * rect.width;
+            }
+            else {
+                height = rect.height;
+                width = rect.width;
+            }
+            var allowY = height > this.containerRect.height;
+            var allowX = width > this.containerRect.width;
+            return {
+                allowX: allowX,
+                allowY: allowY,
+            };
+        };
+        Zoom.prototype.setZoomEssentials = function () {
+            this.containerRect = this.core.$content.get().getBoundingClientRect();
+        };
+        /**
+         * @desc Image zoom
+         * Translate the wrap and scale the image to get better user experience
+         *
+         * @param {String} scale - Zoom decrement/increment value
+         */
+        Zoom.prototype.zoomImage = function (scale, scaleDiff, reposition, resetToMax) {
+            if (Math.abs(scaleDiff) <= 0)
+                return;
+            var offsetX = this.containerRect.width / 2 + this.containerRect.left;
+            var offsetY = this.containerRect.height / 2 +
+                this.containerRect.top +
+                this.scrollTop;
+            var originalX;
+            var originalY;
+            if (scale === 1) {
+                this.positionChanged = false;
+            }
+            var dragAllowedAxises = this.getDragAllowedAxises(0, scaleDiff);
+            var allowY = dragAllowedAxises.allowY, allowX = dragAllowedAxises.allowX;
+            if (this.positionChanged) {
+                originalX = this.left / (this.scale - scaleDiff);
+                originalY = this.top / (this.scale - scaleDiff);
+                this.pageX = offsetX - originalX;
+                this.pageY = offsetY - originalY;
+                this.positionChanged = false;
+            }
+            var possibleSwipeCords = this.getPossibleSwipeDragCords(scaleDiff);
+            var x;
+            var y;
+            var _x = offsetX - this.pageX;
+            var _y = offsetY - this.pageY;
+            if (scale - scaleDiff > 1) {
+                var scaleVal = (scale - scaleDiff) / Math.abs(scaleDiff);
+                _x =
+                    (scaleDiff < 0 ? -_x : _x) +
+                        this.left * (scaleVal + (scaleDiff < 0 ? -1 : 1));
+                _y =
+                    (scaleDiff < 0 ? -_y : _y) +
+                        this.top * (scaleVal + (scaleDiff < 0 ? -1 : 1));
+                x = _x / scaleVal;
+                y = _y / scaleVal;
+            }
+            else {
+                var scaleVal = (scale - scaleDiff) * scaleDiff;
+                x = _x * scaleVal;
+                y = _y * scaleVal;
+            }
+            if (reposition) {
+                if (allowX) {
+                    if (this.isBeyondPossibleLeft(x, possibleSwipeCords.minX)) {
+                        x = possibleSwipeCords.minX;
+                    }
+                    else if (this.isBeyondPossibleRight(x, possibleSwipeCords.maxX)) {
+                        x = possibleSwipeCords.maxX;
+                    }
+                }
+                else {
+                    if (scale > 1) {
+                        if (x < possibleSwipeCords.minX) {
+                            x = possibleSwipeCords.minX;
+                        }
+                        else if (x > possibleSwipeCords.maxX) {
+                            x = possibleSwipeCords.maxX;
+                        }
+                    }
+                }
+                // @todo fix this
+                if (allowY) {
+                    if (this.isBeyondPossibleTop(y, possibleSwipeCords.minY)) {
+                        y = possibleSwipeCords.minY;
+                    }
+                    else if (this.isBeyondPossibleBottom(y, possibleSwipeCords.maxY)) {
+                        y = possibleSwipeCords.maxY;
+                    }
+                }
+                else {
+                    // If the translate value based on index of beyond the viewport, utilize the available space to prevent image being cut out
+                    if (scale > 1) {
+                        //If image goes beyond viewport top, use the minim possible translate value
+                        if (y < possibleSwipeCords.minY) {
+                            y = possibleSwipeCords.minY;
+                        }
+                        else if (y > possibleSwipeCords.maxY) {
+                            y = possibleSwipeCords.maxY;
+                        }
+                    }
+                }
+            }
+            this.setZoomStyles({
+                x: x,
+                y: y,
+                scale: scale,
+            });
+            this.left = x;
+            this.top = y;
+            if (resetToMax) {
+                this.setZoomImageSize();
+            }
+        };
+        Zoom.prototype.resetImageTranslate = function (index) {
+            if (!this.isImageSlide(index)) {
+                return;
+            }
+            var $image = this.core.getSlideItem(index).find('.lg-image').first();
+            this.imageReset = false;
+            $image.removeClass('reset-transition reset-transition-y reset-transition-x');
+            this.core.outer.removeClass('lg-actual-size');
+            $image.css('width', 'auto').css('height', 'auto');
+            setTimeout(function () {
+                $image.removeClass('no-transition');
+            }, 10);
+        };
+        Zoom.prototype.setZoomImageSize = function () {
+            var _this = this;
+            var $image = this.core
+                .getSlideItem(this.core.index)
+                .find('.lg-image')
+                .first();
+            setTimeout(function () {
+                var actualSizeScale = _this.getCurrentImageActualSizeScale();
+                if (_this.scale >= actualSizeScale) {
+                    $image.addClass('no-transition');
+                    _this.imageReset = true;
+                }
+            }, ZOOM_TRANSITION_DURATION);
+            setTimeout(function () {
+                var actualSizeScale = _this.getCurrentImageActualSizeScale();
+                if (_this.scale >= actualSizeScale) {
+                    var dragAllowedAxises = _this.getDragAllowedAxises(_this.scale);
+                    $image
+                        .css('width', $image.get().naturalWidth + 'px')
+                        .css('height', $image.get().naturalHeight + 'px');
+                    _this.core.outer.addClass('lg-actual-size');
+                    if (dragAllowedAxises.allowX && dragAllowedAxises.allowY) {
+                        $image.addClass('reset-transition');
+                    }
+                    else if (dragAllowedAxises.allowX &&
+                        !dragAllowedAxises.allowY) {
+                        $image.addClass('reset-transition-x');
+                    }
+                    else if (!dragAllowedAxises.allowX &&
+                        dragAllowedAxises.allowY) {
+                        $image.addClass('reset-transition-y');
+                    }
+                }
+            }, ZOOM_TRANSITION_DURATION + 50);
+        };
+        /**
+         * @desc apply scale3d to image and translate to image wrap
+         * @param {style} X,Y and scale
+         */
+        Zoom.prototype.setZoomStyles = function (style) {
+            var $imageWrap = this.core
+                .getSlideItem(this.core.index)
+                .find('.lg-img-wrap')
+                .first();
+            var $image = this.core
+                .getSlideItem(this.core.index)
+                .find('.lg-image')
+                .first();
+            var $dummyImage = this.core.outer
+                .find('.lg-current .lg-dummy-img')
+                .first();
+            this.scale = style.scale;
+            $image.css('transform', 'scale3d(' + style.scale + ', ' + style.scale + ', 1)');
+            $dummyImage.css('transform', 'scale3d(' + style.scale + ', ' + style.scale + ', 1)');
+            var transform = 'translate3d(' + style.x + 'px, ' + style.y + 'px, 0)';
+            $imageWrap.css('transform', transform);
+        };
+        /**
+         * @param index - Index of the current slide
+         * @param event - event will be available only if the function is called on clicking/taping the imags
+         */
+        Zoom.prototype.setActualSize = function (index, event) {
+            var _this = this;
+            var currentItem = this.core.galleryItems[this.core.index];
+            this.resetImageTranslate(index);
+            setTimeout(function () {
+                // Allow zoom only on image
+                if (!currentItem.src ||
+                    _this.core.outer.hasClass('lg-first-slide-loading')) {
+                    return;
+                }
+                var scale = _this.getCurrentImageActualSizeScale();
+                var prevScale = _this.scale;
+                if (_this.core.outer.hasClass('lg-zoomed')) {
+                    _this.scale = 1;
+                }
+                else {
+                    _this.scale = _this.getScale(scale);
+                }
+                _this.setPageCords(event);
+                _this.beginZoom(_this.scale);
+                _this.zoomImage(_this.scale, _this.scale - prevScale, true, true);
+                setTimeout(function () {
+                    _this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');
+                }, 10);
+            }, 50);
+        };
+        Zoom.prototype.getNaturalWidth = function (index) {
+            var $image = this.core.getSlideItem(index).find('.lg-image').first();
+            var naturalWidth = this.core.galleryItems[index].width;
+            return naturalWidth
+                ? parseFloat(naturalWidth)
+                : $image.get().naturalWidth;
+        };
+        Zoom.prototype.getActualSizeScale = function (naturalWidth, width) {
+            var _scale;
+            var scale;
+            if (naturalWidth >= width) {
+                _scale = naturalWidth / width;
+                scale = _scale || 2;
+            }
+            else {
+                scale = 1;
+            }
+            return scale;
+        };
+        Zoom.prototype.getCurrentImageActualSizeScale = function () {
+            var $image = this.core
+                .getSlideItem(this.core.index)
+                .find('.lg-image')
+                .first();
+            var width = $image.get().offsetWidth;
+            var naturalWidth = this.getNaturalWidth(this.core.index) || width;
+            return this.getActualSizeScale(naturalWidth, width);
+        };
+        Zoom.prototype.getPageCords = function (event) {
+            var cords = {};
+            if (event) {
+                cords.x = event.pageX || event.touches[0].pageX;
+                cords.y = event.pageY || event.touches[0].pageY;
+            }
+            else {
+                var containerRect = this.core.$content
+                    .get()
+                    .getBoundingClientRect();
+                cords.x = containerRect.width / 2 + containerRect.left;
+                cords.y =
+                    containerRect.height / 2 + this.scrollTop + containerRect.top;
+            }
+            return cords;
+        };
+        Zoom.prototype.setPageCords = function (event) {
+            var pageCords = this.getPageCords(event);
+            this.pageX = pageCords.x;
+            this.pageY = pageCords.y;
+        };
+        Zoom.prototype.manageActualPixelClassNames = function () {
+            var $actualSize = this.core.getElementById('lg-actual-size');
+            $actualSize
+                .removeClass(this.settings.actualSizeIcons.zoomIn)
+                .addClass(this.settings.actualSizeIcons.zoomOut);
+        };
+        // If true, zoomed - in else zoomed out
+        Zoom.prototype.beginZoom = function (scale) {
+            this.core.outer.removeClass('lg-zoom-drag-transition lg-zoom-dragging');
+            if (scale > 1) {
+                this.core.outer.addClass('lg-zoomed');
+                this.manageActualPixelClassNames();
+            }
+            else {
+                this.resetZoom();
+            }
+            return scale > 1;
+        };
+        Zoom.prototype.getScale = function (scale) {
+            var actualSizeScale = this.getCurrentImageActualSizeScale();
+            if (scale < 1) {
+                scale = 1;
+            }
+            else if (scale > actualSizeScale) {
+                scale = actualSizeScale;
+            }
+            return scale;
+        };
+        Zoom.prototype.init = function () {
+            var _this = this;
+            if (!this.settings.zoom) {
+                return;
+            }
+            this.buildTemplates();
+            this.enableZoomOnSlideItemLoad();
+            var tapped = null;
+            this.core.outer.on('dblclick.lg', function (event) {
+                if (!_this.$LG(event.target).hasClass('lg-image')) {
+                    return;
+                }
+                _this.setActualSize(_this.core.index, event);
+            });
+            this.core.outer.on('touchstart.lg', function (event) {
+                var $target = _this.$LG(event.target);
+                if (event.touches.length === 1 && $target.hasClass('lg-image')) {
+                    if (!tapped) {
+                        tapped = setTimeout(function () {
+                            tapped = null;
+                        }, 300);
+                    }
+                    else {
+                        clearTimeout(tapped);
+                        tapped = null;
+                        event.preventDefault();
+                        _this.setActualSize(_this.core.index, event);
+                    }
+                }
+            });
+            this.core.LGel.on(lGEvents.containerResize + ".zoom " + lGEvents.rotateRight + ".zoom " + lGEvents.rotateLeft + ".zoom " + lGEvents.flipHorizontal + ".zoom " + lGEvents.flipVertical + ".zoom", function () {
+                if (!_this.core.lgOpened ||
+                    !_this.isImageSlide(_this.core.index) ||
+                    _this.core.touchAction) {
+                    return;
+                }
+                var _LGel = _this.core
+                    .getSlideItem(_this.core.index)
+                    .find('.lg-img-wrap')
+                    .first();
+                _this.top = 0;
+                _this.left = 0;
+                _this.setZoomEssentials();
+                _this.setZoomSwipeStyles(_LGel, { x: 0, y: 0 });
+                _this.positionChanged = true;
+            });
+            // Update zoom on resize and orientationchange
+            this.$LG(window).on("scroll.lg.zoom.global" + this.core.lgId, function () {
+                if (!_this.core.lgOpened)
+                    return;
+                _this.scrollTop = _this.$LG(window).scrollTop();
+            });
+            this.core.getElementById('lg-zoom-out').on('click.lg', function () {
+                // Allow zoom only on image
+                if (!_this.isImageSlide(_this.core.index)) {
+                    return;
+                }
+                var timeout = 0;
+                if (_this.imageReset) {
+                    _this.resetImageTranslate(_this.core.index);
+                    timeout = 50;
+                }
+                setTimeout(function () {
+                    var scale = _this.scale - _this.settings.scale;
+                    if (scale < 1) {
+                        scale = 1;
+                    }
+                    _this.beginZoom(scale);
+                    _this.zoomImage(scale, -_this.settings.scale, true, true);
+                }, timeout);
+            });
+            this.core.getElementById('lg-zoom-in').on('click.lg', function () {
+                _this.zoomIn();
+            });
+            this.core.getElementById('lg-actual-size').on('click.lg', function () {
+                _this.setActualSize(_this.core.index);
+            });
+            this.core.LGel.on(lGEvents.beforeOpen + ".zoom", function () {
+                _this.core.outer.find('.lg-item').removeClass('lg-zoomable');
+            });
+            this.core.LGel.on(lGEvents.afterOpen + ".zoom", function () {
+                _this.scrollTop = _this.$LG(window).scrollTop();
+                // Set the initial value center
+                _this.pageX = _this.core.outer.width() / 2;
+                _this.pageY = _this.core.outer.height() / 2 + _this.scrollTop;
+                _this.scale = 1;
+            });
+            // Reset zoom on slide change
+            this.core.LGel.on(lGEvents.afterSlide + ".zoom", function (event) {
+                var prevIndex = event.detail.prevIndex;
+                _this.scale = 1;
+                _this.positionChanged = false;
+                _this.resetZoom(prevIndex);
+                _this.resetImageTranslate(prevIndex);
+                if (_this.isImageSlide(_this.core.index)) {
+                    _this.setZoomEssentials();
+                }
+            });
+            // Drag option after zoom
+            this.zoomDrag();
+            this.pinchZoom();
+            this.zoomSwipe();
+            // Store the zoomable timeout value just to clear it while closing
+            this.zoomableTimeout = false;
+            this.positionChanged = false;
+        };
+        Zoom.prototype.zoomIn = function () {
+            // Allow zoom only on image
+            if (!this.isImageSlide(this.core.index)) {
+                return;
+            }
+            var scale = this.scale + this.settings.scale;
+            scale = this.getScale(scale);
+            this.beginZoom(scale);
+            this.zoomImage(scale, Math.min(this.settings.scale, scale - this.scale), true, true);
+        };
+        // Reset zoom effect
+        Zoom.prototype.resetZoom = function (index) {
+            this.core.outer.removeClass('lg-zoomed lg-zoom-drag-transition');
+            var $actualSize = this.core.getElementById('lg-actual-size');
+            var $item = this.core.getSlideItem(index !== undefined ? index : this.core.index);
+            $actualSize
+                .removeClass(this.settings.actualSizeIcons.zoomOut)
+                .addClass(this.settings.actualSizeIcons.zoomIn);
+            $item.find('.lg-img-wrap').first().removeAttr('style');
+            $item.find('.lg-image').first().removeAttr('style');
+            this.scale = 1;
+            this.left = 0;
+            this.top = 0;
+            // Reset pagx pagy values to center
+            this.setPageCords();
+        };
+        Zoom.prototype.getTouchDistance = function (e) {
+            return Math.sqrt((e.touches[0].pageX - e.touches[1].pageX) *
+                (e.touches[0].pageX - e.touches[1].pageX) +
+                (e.touches[0].pageY - e.touches[1].pageY) *
+                    (e.touches[0].pageY - e.touches[1].pageY));
+        };
+        Zoom.prototype.pinchZoom = function () {
+            var _this = this;
+            var startDist = 0;
+            var pinchStarted = false;
+            var initScale = 1;
+            var prevScale = 0;
+            var $item = this.core.getSlideItem(this.core.index);
+            this.core.outer.on('touchstart.lg', function (e) {
+                $item = _this.core.getSlideItem(_this.core.index);
+                if (!_this.isImageSlide(_this.core.index)) {
+                    return;
+                }
+                if (e.touches.length === 2) {
+                    e.preventDefault();
+                    if (_this.core.outer.hasClass('lg-first-slide-loading')) {
+                        return;
+                    }
+                    initScale = _this.scale || 1;
+                    _this.core.outer.removeClass('lg-zoom-drag-transition lg-zoom-dragging');
+                    _this.setPageCords(e);
+                    _this.resetImageTranslate(_this.core.index);
+                    _this.core.touchAction = 'pinch';
+                    startDist = _this.getTouchDistance(e);
+                }
+            });
+            this.core.$inner.on('touchmove.lg', function (e) {
+                if (e.touches.length === 2 &&
+                    _this.core.touchAction === 'pinch' &&
+                    (_this.$LG(e.target).hasClass('lg-item') ||
+                        $item.get().contains(e.target))) {
+                    e.preventDefault();
+                    var endDist = _this.getTouchDistance(e);
+                    var distance = startDist - endDist;
+                    if (!pinchStarted && Math.abs(distance) > 5) {
+                        pinchStarted = true;
+                    }
+                    if (pinchStarted) {
+                        prevScale = _this.scale;
+                        var _scale = Math.max(1, initScale + -distance * 0.02);
+                        _this.scale =
+                            Math.round((_scale + Number.EPSILON) * 100) / 100;
+                        var diff = _this.scale - prevScale;
+                        _this.zoomImage(_this.scale, Math.round((diff + Number.EPSILON) * 100) / 100, false, false);
+                    }
+                }
+            });
+            this.core.$inner.on('touchend.lg', function (e) {
+                if (_this.core.touchAction === 'pinch' &&
+                    (_this.$LG(e.target).hasClass('lg-item') ||
+                        $item.get().contains(e.target))) {
+                    pinchStarted = false;
+                    startDist = 0;
+                    if (_this.scale <= 1) {
+                        _this.resetZoom();
+                    }
+                    else {
+                        var actualSizeScale = _this.getCurrentImageActualSizeScale();
+                        if (_this.scale >= actualSizeScale) {
+                            var scaleDiff = actualSizeScale - _this.scale;
+                            if (scaleDiff === 0) {
+                                scaleDiff = 0.01;
+                            }
+                            _this.zoomImage(actualSizeScale, scaleDiff, false, true);
+                        }
+                        _this.manageActualPixelClassNames();
+                        _this.core.outer.addClass('lg-zoomed');
+                    }
+                    _this.core.touchAction = undefined;
+                }
+            });
+        };
+        Zoom.prototype.touchendZoom = function (startCoords, endCoords, allowX, allowY, touchDuration) {
+            var distanceXnew = endCoords.x - startCoords.x;
+            var distanceYnew = endCoords.y - startCoords.y;
+            var speedX = Math.abs(distanceXnew) / touchDuration + 1;
+            var speedY = Math.abs(distanceYnew) / touchDuration + 1;
+            if (speedX > 2) {
+                speedX += 1;
+            }
+            if (speedY > 2) {
+                speedY += 1;
+            }
+            distanceXnew = distanceXnew * speedX;
+            distanceYnew = distanceYnew * speedY;
+            var _LGel = this.core
+                .getSlideItem(this.core.index)
+                .find('.lg-img-wrap')
+                .first();
+            var distance = {};
+            distance.x = this.left + distanceXnew;
+            distance.y = this.top + distanceYnew;
+            var possibleSwipeCords = this.getPossibleSwipeDragCords();
+            if (Math.abs(distanceXnew) > 15 || Math.abs(distanceYnew) > 15) {
+                if (allowY) {
+                    if (this.isBeyondPossibleTop(distance.y, possibleSwipeCords.minY)) {
+                        distance.y = possibleSwipeCords.minY;
+                    }
+                    else if (this.isBeyondPossibleBottom(distance.y, possibleSwipeCords.maxY)) {
+                        distance.y = possibleSwipeCords.maxY;
+                    }
+                }
+                if (allowX) {
+                    if (this.isBeyondPossibleLeft(distance.x, possibleSwipeCords.minX)) {
+                        distance.x = possibleSwipeCords.minX;
+                    }
+                    else if (this.isBeyondPossibleRight(distance.x, possibleSwipeCords.maxX)) {
+                        distance.x = possibleSwipeCords.maxX;
+                    }
+                }
+                if (allowY) {
+                    this.top = distance.y;
+                }
+                else {
+                    distance.y = this.top;
+                }
+                if (allowX) {
+                    this.left = distance.x;
+                }
+                else {
+                    distance.x = this.left;
+                }
+                this.setZoomSwipeStyles(_LGel, distance);
+                this.positionChanged = true;
+            }
+        };
+        Zoom.prototype.getZoomSwipeCords = function (startCoords, endCoords, allowX, allowY, possibleSwipeCords) {
+            var distance = {};
+            if (allowY) {
+                distance.y = this.top + (endCoords.y - startCoords.y);
+                if (this.isBeyondPossibleTop(distance.y, possibleSwipeCords.minY)) {
+                    var diffMinY = possibleSwipeCords.minY - distance.y;
+                    distance.y = possibleSwipeCords.minY - diffMinY / 6;
+                }
+                else if (this.isBeyondPossibleBottom(distance.y, possibleSwipeCords.maxY)) {
+                    var diffMaxY = distance.y - possibleSwipeCords.maxY;
+                    distance.y = possibleSwipeCords.maxY + diffMaxY / 6;
+                }
+            }
+            else {
+                distance.y = this.top;
+            }
+            if (allowX) {
+                distance.x = this.left + (endCoords.x - startCoords.x);
+                if (this.isBeyondPossibleLeft(distance.x, possibleSwipeCords.minX)) {
+                    var diffMinX = possibleSwipeCords.minX - distance.x;
+                    distance.x = possibleSwipeCords.minX - diffMinX / 6;
+                }
+                else if (this.isBeyondPossibleRight(distance.x, possibleSwipeCords.maxX)) {
+                    var difMaxX = distance.x - possibleSwipeCords.maxX;
+                    distance.x = possibleSwipeCords.maxX + difMaxX / 6;
+                }
+            }
+            else {
+                distance.x = this.left;
+            }
+            return distance;
+        };
+        Zoom.prototype.isBeyondPossibleLeft = function (x, minX) {
+            return x >= minX;
+        };
+        Zoom.prototype.isBeyondPossibleRight = function (x, maxX) {
+            return x <= maxX;
+        };
+        Zoom.prototype.isBeyondPossibleTop = function (y, minY) {
+            return y >= minY;
+        };
+        Zoom.prototype.isBeyondPossibleBottom = function (y, maxY) {
+            return y <= maxY;
+        };
+        Zoom.prototype.isImageSlide = function (index) {
+            var currentItem = this.core.galleryItems[index];
+            return this.core.getSlideType(currentItem) === 'image';
+        };
+        Zoom.prototype.getPossibleSwipeDragCords = function (scale) {
+            var $image = this.core
+                .getSlideItem(this.core.index)
+                .find('.lg-image')
+                .first();
+            var bottom = this.core.mediaContainerPosition.bottom;
+            var imgRect = $image.get().getBoundingClientRect();
+            var imageHeight = imgRect.height;
+            var imageWidth = imgRect.width;
+            if (scale) {
+                imageHeight = imageHeight + scale * imageHeight;
+                imageWidth = imageWidth + scale * imageWidth;
+            }
+            var minY = (imageHeight - this.containerRect.height) / 2;
+            var maxY = (this.containerRect.height - imageHeight) / 2 + bottom;
+            var minX = (imageWidth - this.containerRect.width) / 2;
+            var maxX = (this.containerRect.width - imageWidth) / 2;
+            var possibleSwipeCords = {
+                minY: minY,
+                maxY: maxY,
+                minX: minX,
+                maxX: maxX,
+            };
+            return possibleSwipeCords;
+        };
+        Zoom.prototype.setZoomSwipeStyles = function (LGel, distance) {
+            LGel.css('transform', 'translate3d(' + distance.x + 'px, ' + distance.y + 'px, 0)');
+        };
+        Zoom.prototype.zoomSwipe = function () {
+            var _this = this;
+            var startCoords = {};
+            var endCoords = {};
+            var isMoved = false;
+            // Allow x direction drag
+            var allowX = false;
+            // Allow Y direction drag
+            var allowY = false;
+            var startTime = new Date();
+            var endTime = new Date();
+            var possibleSwipeCords;
+            var _LGel;
+            var $item = this.core.getSlideItem(this.core.index);
+            this.core.$inner.on('touchstart.lg', function (e) {
+                // Allow zoom only on image
+                if (!_this.isImageSlide(_this.core.index)) {
+                    return;
+                }
+                $item = _this.core.getSlideItem(_this.core.index);
+                if ((_this.$LG(e.target).hasClass('lg-item') ||
+                    $item.get().contains(e.target)) &&
+                    e.touches.length === 1 &&
+                    _this.core.outer.hasClass('lg-zoomed')) {
+                    e.preventDefault();
+                    startTime = new Date();
+                    _this.core.touchAction = 'zoomSwipe';
+                    _LGel = _this.core
+                        .getSlideItem(_this.core.index)
+                        .find('.lg-img-wrap')
+                        .first();
+                    var dragAllowedAxises = _this.getDragAllowedAxises(0);
+                    allowY = dragAllowedAxises.allowY;
+                    allowX = dragAllowedAxises.allowX;
+                    if (allowX || allowY) {
+                        startCoords = _this.getSwipeCords(e);
+                    }
+                    possibleSwipeCords = _this.getPossibleSwipeDragCords();
+                    // reset opacity and transition duration
+                    _this.core.outer.addClass('lg-zoom-dragging lg-zoom-drag-transition');
+                }
+            });
+            this.core.$inner.on('touchmove.lg', function (e) {
+                if (e.touches.length === 1 &&
+                    _this.core.touchAction === 'zoomSwipe' &&
+                    (_this.$LG(e.target).hasClass('lg-item') ||
+                        $item.get().contains(e.target))) {
+                    e.preventDefault();
+                    _this.core.touchAction = 'zoomSwipe';
+                    endCoords = _this.getSwipeCords(e);
+                    var distance = _this.getZoomSwipeCords(startCoords, endCoords, allowX, allowY, possibleSwipeCords);
+                    if (Math.abs(endCoords.x - startCoords.x) > 15 ||
+                        Math.abs(endCoords.y - startCoords.y) > 15) {
+                        isMoved = true;
+                        _this.setZoomSwipeStyles(_LGel, distance);
+                    }
+                }
+            });
+            this.core.$inner.on('touchend.lg', function (e) {
+                if (_this.core.touchAction === 'zoomSwipe' &&
+                    (_this.$LG(e.target).hasClass('lg-item') ||
+                        $item.get().contains(e.target))) {
+                    e.preventDefault();
+                    _this.core.touchAction = undefined;
+                    _this.core.outer.removeClass('lg-zoom-dragging');
+                    if (!isMoved) {
+                        return;
+                    }
+                    isMoved = false;
+                    endTime = new Date();
+                    var touchDuration = endTime.valueOf() - startTime.valueOf();
+                    _this.touchendZoom(startCoords, endCoords, allowX, allowY, touchDuration);
+                }
+            });
+        };
+        Zoom.prototype.zoomDrag = function () {
+            var _this = this;
+            var startCoords = {};
+            var endCoords = {};
+            var isDragging = false;
+            var isMoved = false;
+            // Allow x direction drag
+            var allowX = false;
+            // Allow Y direction drag
+            var allowY = false;
+            var startTime;
+            var endTime;
+            var possibleSwipeCords;
+            var _LGel;
+            this.core.outer.on('mousedown.lg.zoom', function (e) {
+                // Allow zoom only on image
+                if (!_this.isImageSlide(_this.core.index)) {
+                    return;
+                }
+                var $item = _this.core.getSlideItem(_this.core.index);
+                if (_this.$LG(e.target).hasClass('lg-item') ||
+                    $item.get().contains(e.target)) {
+                    startTime = new Date();
+                    _LGel = _this.core
+                        .getSlideItem(_this.core.index)
+                        .find('.lg-img-wrap')
+                        .first();
+                    var dragAllowedAxises = _this.getDragAllowedAxises(0);
+                    allowY = dragAllowedAxises.allowY;
+                    allowX = dragAllowedAxises.allowX;
+                    if (_this.core.outer.hasClass('lg-zoomed')) {
+                        if (_this.$LG(e.target).hasClass('lg-object') &&
+                            (allowX || allowY)) {
+                            e.preventDefault();
+                            startCoords = _this.getDragCords(e);
+                            possibleSwipeCords = _this.getPossibleSwipeDragCords();
+                            isDragging = true;
+                            _this.core.outer
+                                .removeClass('lg-grab')
+                                .addClass('lg-grabbing lg-zoom-drag-transition lg-zoom-dragging');
+                            // reset opacity and transition duration
+                        }
+                    }
+                }
+            });
+            this.$LG(window).on("mousemove.lg.zoom.global" + this.core.lgId, function (e) {
+                if (isDragging) {
+                    isMoved = true;
+                    endCoords = _this.getDragCords(e);
+                    var distance = _this.getZoomSwipeCords(startCoords, endCoords, allowX, allowY, possibleSwipeCords);
+                    _this.setZoomSwipeStyles(_LGel, distance);
+                }
+            });
+            this.$LG(window).on("mouseup.lg.zoom.global" + this.core.lgId, function (e) {
+                if (isDragging) {
+                    endTime = new Date();
+                    isDragging = false;
+                    _this.core.outer.removeClass('lg-zoom-dragging');
+                    // Fix for chrome mouse move on click
+                    if (isMoved &&
+                        (startCoords.x !== endCoords.x ||
+                            startCoords.y !== endCoords.y)) {
+                        endCoords = _this.getDragCords(e);
+                        var touchDuration = endTime.valueOf() - startTime.valueOf();
+                        _this.touchendZoom(startCoords, endCoords, allowX, allowY, touchDuration);
+                    }
+                    isMoved = false;
+                }
+                _this.core.outer.removeClass('lg-grabbing').addClass('lg-grab');
+            });
+        };
+        Zoom.prototype.closeGallery = function () {
+            this.resetZoom();
+        };
+        Zoom.prototype.destroy = function () {
+            // Unbind all events added by lightGallery zoom plugin
+            this.$LG(window).off(".lg.zoom.global" + this.core.lgId);
+            this.core.LGel.off('.lg.zoom');
+            this.core.LGel.off('.zoom');
+            clearTimeout(this.zoomableTimeout);
+            this.zoomableTimeout = false;
+        };
+        return Zoom;
+    }());
+
+    return Zoom;
+
+})));
+//# sourceMappingURL=lg-zoom.umd.js.map
diff --git a/resources/order_dialog.js b/resources/order_dialog.js
index 7f0a1c9..dcbb6da 100644
--- a/resources/order_dialog.js
+++ b/resources/order_dialog.js
@@ -72,6 +72,11 @@ $(document).ready( function(){
 					return;
 				}
 				
+				if ( data.itemId && data.itemId < 0 ){
+					alert( data.itemId = -1 ? errorMaxItems : errorDefault + ' (' + data.itemId + ')' );
+					return;
+				}
+
 				var row = $( 'tr[data-id=' + data.productId + ']' );
 				
 				if ( row.length ){
diff --git a/setup_appearance.html b/setup_appearance.html
index 73602c8..a2e3b47 100644
--- a/setup_appearance.html
+++ b/setup_appearance.html
@@ -144,6 +144,9 @@
 					<!--{{vtElse}}-->
 						Deutsch
 					<!--{{vtEndIf}}-->
+					<!--{{vtIf: {pxtcLanguageInformal} .eq. 1 }}-->
+						informell
+					<!--{{vtEndIf}}-->
 					<!--{{vtIf: {pxtcAllowLanguageSwitch} .eq. 1}}-->
 						(Besucher dürfen Sprache wechseln)
 					<!--{{vtElse}}-->
diff --git a/setup_appearance.vtedit.html b/setup_appearance.vtedit.html
index a90a604..bebde68 100644
--- a/setup_appearance.vtedit.html
+++ b/setup_appearance.vtedit.html
@@ -481,6 +481,10 @@
 						<option value="de">Deutsch</option>
 						<option {{vtIf: {pxtcLanguage}.eq.en }}selected{{vtEndIf}} value="en">English</option>
 					</select>
+					&nbsp;
+					<input type="hidden" name="pxtcLanguageInformal" value="">
+					<input type="checkbox" value="1" name="pxtcLanguageInformal" {{vtIf: {pxtcLanguageInformal} .eq. 1 }}checked{{vtEndIf}} id="pxtcLanguageInformal">
+					<label for="pxtcLanguageInformal">informelle Varianten bevorzugen</label>
 				</td>
 			</tr>
 			<tr><td colspan="2">&nbsp;</td></tr>
diff --git a/topic.html b/topic.html
index b19c096..52d6975 100644
--- a/topic.html
+++ b/topic.html
@@ -23,7 +23,32 @@
 				<td>&nbsp;</td>
 			</tr>
 			<tr>
-				<!--{{vtSelect:-origin="{vtGet:ID_Bilder}", -type="image", -search="{Suchwort}", -ftmode="boolean" }}-->
+				<!--
+					{{vtCalc: analyzeSearchString( '{Suchwort}' ) }}
+					{{vtSet: Search}}
+
+					{{vtDo: -act="setSelection", -name="mainsearch", -origin="{vtGet:ID_Bilder}", -type="image",
+						-search="{vtGet:Search[all]}",
+						-mode="{vtGlobal:pxtcSearchMode}",
+						-ftmode="{vtGlobal:pxtcSearchFtMode}",
+						Keywords="{vtGet:Search[keywords]}",
+						Photographer="{vtGet:Search[photographer]}",
+						City="{vtGet:Search[city]}",
+						State="{vtGet:Search[state]}",
+						Country="{vtGet:Search[country]}",
+						CreationDate="{vtGet:Search[creationdate]}",
+						Instructions="{vtGet:Search[instructions]}",
+						Credit="{vtGet:Search[credit]}",
+						Copyright="{vtGet:Search[copyright]}",
+						Category="{vtGet:Search[category]}",
+						Name="{vtGet:Search[title]}",
+						Dateiname="{vtGet:Search[file]}",
+						Remarks="{vtGet:Search[caption]}",
+						Rating="{vtGet:Search[rating]}"
+					}}
+
+					{{vtSelect:-name="mainsearch"}}
+				-->
 				<td>Treffer:</td>
 				<td>
 					<!--{{vtIf: {vtCountSelection} .eq. 0}}-->
diff --git a/views/gallery_r.html b/views/gallery_r.html
index 7704c49..1c3b981 100644
--- a/views/gallery_r.html
+++ b/views/gallery_r.html
@@ -10,6 +10,7 @@
 	{{vtGet:PageAdditionalHeaders,raw}}
 	<!--{{vtIf: {vtGlobal:pxtcGalleryViewer} .eq. 1 }}-->
 		<link type="text/css" rel="stylesheet" href="resources/lightgallery/css/lightgallery.css" /> 
+		<link type="text/css" rel="stylesheet" href="resources/lightgallery/css/lg-zoom.css" />
 	<!--{{vtEndIf}}-->
 	<!--{{vtCalc: round( sqrt( 30000 ) ) }}-->
 	<!--{{vtSet: FolderSize }}-->
@@ -213,11 +214,17 @@
 							<!--{{vtEndIf}}-->
 						</div>
 					<!--{{vtElse}}-->
-						<div id="gallery-item-{{vtItem:id}}" class="gallery-item-border gallery-item-image {{vtIf: {vtItem:id} .in. {vtGet:Lightbox} }}flagged{{vtEndIf}} {{vtIf: {vtItem:badge} .neq. }}in-cart{{vtEndIf}}" data-id="{{vtItem:id}}" data-productlist="{{vtLink:-pg='{vtItem:id}',-met='ajax/order_dialog.html'}}" data-rating="{{vtItem:rating}}">
+						<div id="gallery-item-{{vtItem:id}}" class="gallery-item-border gallery-item-image {{vtItem:classes}} {{vtIf: {vtItem:id} .in. {vtGet:Lightbox} }}flagged{{vtEndIf}} {{vtIf: {vtItem:badge} .neq. }}in-cart{{vtEndIf}}" data-id="{{vtItem:id}}" data-productlist="{{vtLink:-pg='{vtItem:id}',-met='ajax/order_dialog.html'}}" data-rating="{{vtItem:rating}}">
 							<a class="d-none" href="{{vtItem:link}}">Details</a> <!-- for crawlers -->
 							<div class="gallery-item">
 								<!--{{vtIf: {vtItem:src} .neq. .and. {vtItem:width} .gt. 0 }}-->
-									<!--{{vtCalc: round( sqrt( 30000 / ( {vtItem:width} / {vtItem:height} ) ) ) }}-->
+									<!--
+										{{vtSet: Area = "30000" }}
+										{{vtIf: {vtGlobal:pxtcThumbnailArea} .gt. 0 }}
+											{{vtSet: Area = "{vtGlobal:pxtcThumbnailArea}" }}
+										{{vtEndIf}}
+									-->
+									<!--{{vtCalc: round( sqrt( {vtGet:Area} / ( {vtItem:width} / {vtItem:height} ) ) ) }}-->
 									<!--{{vtSet: Height }}-->
 									<!--{{vtCalc: round( {vtGet:Height} * {vtItem:width} / {vtItem:height} ) }}-->
 									<!--{{vtSet: Width }}-->
@@ -259,14 +266,14 @@
 		{{vtGet:Portions,raw}}
 
 		<!--{{vtIf: {vtGlobal:pxtcGalleryViewer} .eq. 1 }}-->
-			<script src="resources/lightgallery/js/lightgallery.min.js"></script>
-			<script src="resources/lightgallery/modules/lg-zoom.min.js"></script>
-			<script src="resources/lightgallery/modules/lg-fullscreen.min.js"></script>
+			<script src="resources/lightgallery/lightgallery.min.js"></script>
+			<script src="resources/lightgallery/plugins/zoom/lg-zoom.min.js"></script>
+			<script src="resources/lightgallery/plugins/fullscreen/lg-fullscreen.min.js"></script>
 			<!--{{vtIf: {vtGlobal:pxtcNaviLightboxBehaviour} .neq. -1 }}-->
-				<script src="resources/lightgallery/modules/lg-flagging.js"></script>
+				<script src="resources/lg-flagging.js"></script>
 			<!--{{vtEndIf}}-->
 			<!--{{vtIf: {vtGet:ShowCartButtons} .eq. 1 }}-->
-				<script src="resources/lightgallery/modules/lg-cart.js"></script>
+				<script src="resources/lg-cart.js"></script>
 			<!--{{vtEndIf}}-->
 			<?php function remove_linebreaks( $string ) { return str_replace( array( "\r\n", "\r", "\n" ), ' ', $string ); } ?>
 		<!--{{vtEndIf}}-->
@@ -290,30 +297,35 @@
 			// {{vtEndIf}}
 
 			$( document ).ready( function(){
-					// {{vtIf: {vtGlobal:pxtcGalleryViewer} .eq. 1 }}
+				// {{vtIf: {vtGlobal:pxtcGalleryViewer} .eq. 1 }}
+				lightGallery = lightGallery( document.getElementById('gallery'), {
+					plugins: [ lgZoom, lgFullscreen, lgFlagging, lgCart ],
+					licenseKey: '7F34D92A-BAF14E85-B3730431-A98526B0',
+					speed: 500,
+					//index: $('img[data-lg="1"]').index(this),
+					download: downloadAllowed,
+					loop: false,
+					hideControlOnEnd: true,
+					fullScreen: true,
+					dynamic: true,
+					dynamicEl: [
+						// {{vtRepeat: {vtGet:Images} }}
+						// {{vtIf: {vtItem:type} .ncn. folder .and. {vtItem:preview} .neq.}}
+						{
+							'src': '{{vtItem:preview,escaped}}',
+							'thumb': '{{vtItem:src,escaped}}',
+							'subHtml': '<span id="lgSubHtml"><br>{{vtItem:title,escaped|remove_linebreaks}} <a href="{{vtItem:link}}" class="text-nowrap"><i class="fas fa-info-circle ml-2 mr-1"></i>{{vtGet:s_btn_details}}</a></span>',
+							'elementId': 'gallery-item-{{vtItem:id}}',
+							'productList': '{{vtLink:-pg="{vtItem:id}",-met="ajax/order_dialog.html"}}',
+							//'download': '{{vtItem:name}}',
+							//'downloadUrl': 'https://www.pixtacy.de/data/media/418_vtimg3.jpg',
+						},
+						// {{vtEndIf}}
+						// {{vtEndRepeat}}
+					]
+				});
 				$('img[data-lg="1"]').on( 'click', function( event ){
-					lightGallery = this.core;
-					$(this).lightGallery({
-						index: $('img[data-lg="1"]').index(this),
-						hideUnflaggedElements: $('body').hasClass('pxtc_class_lightbox'),
-						download: downloadAllowed,
-						loop: false,
-						hideControlOnEnd: true,
-						dynamic: true,
-			         dynamicEl: [
-							// {{vtRepeat: {vtGet:Images} }}
-							// {{vtIf: {vtItem:type} .ncn. folder .and. {vtItem:preview} .neq.}}
-							{
-								'src': '{{vtItem:preview,escaped}}',
-								'thumb': '{{vtItem:src,escaped}}',
-								'subHtml': '<span id="lgSubHtml"><br>{{vtItem:title,escaped|remove_linebreaks}} <a href="{{vtItem:link}}" class="text-nowrap"><i class="fas fa-info-circle ml-2 mr-1"></i>{{vtGet:s_btn_details}}</a></span>',
-								'elementId': 'gallery-item-{{vtItem:id}}',
-								'productList': '{{vtLink:-pg="{vtItem:id}",-met="ajax/order_dialog.html"}}'
-							},
-							// {{vtEndIf}}
-							// {{vtEndRepeat}}
-						]					
-					});
+					lightGallery.openGallery( $('img[data-lg="1"]').index(this) );
 					if ( ! downloadAllowed ){
 						$('body').on ( 'contextmenu', 'img.lg-image', function( event ){
 							event.preventDefault();
@@ -326,7 +338,7 @@
 						});
 					}
 				});
-					// {{vtElse}}
+				// {{vtElse}}
 				$('.gallery-item-border img').on( 'click', function( event ){
 					var url = $(this).parents('.gallery-item-border').find('a').attr('href');
 					url ? window.location.href = url : null;
diff --git a/views/image.html b/views/image.html
index 6c48633..7f9ce05 100644
--- a/views/image.html
+++ b/views/image.html
@@ -91,6 +91,10 @@
 						<p id="meta_caption">{{vtGet:ImageCaption,raw}}</p>
 					<!--{{vtEndIf}}-->
 
+					<!--{{vtIf: {vtGet:OriginalResolution} .neq. }}-->
+						<p id="meta_resolution">{{vtGet:OriginalResolution}}</p>
+					<!--{{vtEndIf}}-->
+
 					<div id="keywordlist">
 						<!--{{vtIf: {vtGet:MetaKeywords} .neq. }}-->
 							<p id="meta_keywords">
@@ -197,4 +201,4 @@
 	</div>
 
 </body>
-</html>
\ No newline at end of file
+</html>
