Commit 5343f110 authored by kaveena's avatar kaveena

add car park new code

parent c2c124bb
This diff is collapsed.
import yaml
import numpy as np
import cv2
from bson import json_util
from flask import Flask, request, jsonify, render_template
import json
import pymongo
from pymongo import MongoClient
app = Flask(__name__)
client = MongoClient('localhost', 27017)
client.list_database_names()
db = client.slot
db.list_collection_names()
@app.route('/')
def hello_world():
return render_template("index.html")
@app.route('/my-link/')
def my_link():
print(str_on_frame)
return render_template("index.html", value=str_on_frame)
@app.route('/bookingSlot/')
def bookingSlot():
return render_template("bookingSlot.html")
@app.route('/view-slot/')
def view_bookingSlot():
return render_template("viewBookingSlot.html")
@app.route('/login/')
def login():
return render_template("login.html")
@app.route('/register/')
def register():
return render_template("register.html")
@app.route('/slot/')
def slot():
return render_template("slot.html")
@app.route('/slotManagment/')
def slotManagment():
return render_template("slotManagment.html")
fn = r"./datasets/Parking_Lot1.mp4"
fn_yaml = r"./datasets/Parking_Lot1.yml"
fn_out = r"./datasets/output.avi"
config = {'save_video': False,
'text_overlay': True,
'parking_overlay': True,
'parking_id_overlay': False,
'parking_detection': True,
'min_area_motion_contour': 60,
'park_sec_to_wait': 3,
'start_frame': 0}
cap = cv2.VideoCapture ( fn )
video_info = {'fps': cap.get ( cv2.CAP_PROP_FPS ),
'width': int ( cap.get ( cv2.CAP_PROP_FRAME_WIDTH ) ),
'height': int ( cap.get ( cv2.CAP_PROP_FRAME_HEIGHT ) ),
'fourcc': cap.get ( cv2.CAP_PROP_FOURCC ),
'num_of_frames': int ( cap.get ( cv2.CAP_PROP_FRAME_COUNT ) )}
cap.set ( cv2.CAP_PROP_POS_FRAMES, config['start_frame'] )
if config['save_video']:
fourcc = cv2.VideoWriter_fourcc ( 'D', 'I', 'V', 'X' )
out = cv2.VideoWriter ( fn_out, -1, 25.0,
(video_info['width'], video_info['height']) )
with open ( fn_yaml, 'r' ) as stream:
parking_data = yaml.load ( stream, yaml.FullLoader )
parking_contours = []
parking_bounding_rects = []
parking_mask = []
for park in parking_data:
points = np.array ( park['points'] )
rect = cv2.boundingRect ( points )
points_shifted = points.copy ()
points_shifted[:, 0] = points[:, 0] - rect[0]
points_shifted[:, 1] = points[:, 1] - rect[1]
parking_contours.append ( points )
parking_bounding_rects.append ( rect )
mask = cv2.drawContours ( np.zeros ( (rect[3], rect[2]), dtype=np.uint8 ), [points_shifted], contourIdx=-1,
color=255, thickness=-1, lineType=cv2.LINE_8 )
mask = mask == 255
parking_mask.append ( mask )
parking_status = [False] * len ( parking_data )
parking_buffer = [None] * len ( parking_data )
while (cap.isOpened ()):
empty = 0
full = 0
video_cur_pos = cap.get ( cv2.CAP_PROP_POS_MSEC ) / 1000.0
video_cur_frame = cap.get ( cv2.CAP_PROP_POS_FRAMES )
ret, frame = cap.read ()
if ret == False:
print ( "Capture Error" )
break
# frame_gray = cv2.cvtColor(frame.copy(), cv2.COLOR_BGR2GRAY)
frame_blur = cv2.GaussianBlur ( frame.copy (), (5, 5), 3 )
frame_gray = cv2.cvtColor ( frame_blur, cv2.COLOR_BGR2GRAY )
frame_out = frame.copy ()
if config['parking_detection']:
for ind, park in enumerate ( parking_data ):
points = np.array ( park['points'] )
rect = parking_bounding_rects[ind]
roi_gray = frame_gray[rect[1]:(rect[1] + rect[3]), rect[0]:(rect[0] + rect[2])]
# print np.std(roi_gray)
points[:, 0] = points[:, 0] - rect[0]
points[:, 1] = points[:, 1] - rect[1]
# print np.std(roi_gray), np.mean(roi_gray)
status = np.std ( roi_gray ) < 22 and np.mean ( roi_gray ) > 53
if status != parking_status[ind] and parking_buffer[ind] == None:
parking_buffer[ind] = video_cur_pos
elif status != parking_status[ind] and parking_buffer[ind] != None:
if video_cur_pos - parking_buffer[ind] > config['park_sec_to_wait']:
parking_status[ind] = status
parking_buffer[ind] = None
elif status == parking_status[ind] and parking_buffer[ind] != None:
# if video_cur_pos - parking_buffer[ind] > config['park_sec_to_wait']:
parking_buffer[ind] = None
# print(parking_status)
if config['parking_overlay']:
for ind, park in enumerate ( parking_data ):
points = np.array ( park['points'] )
if parking_status[ind]:
color = (0, 255, 0)
empty = empty + 1
else:
color = (0, 0, 255)
full = full + 1
cv2.drawContours ( frame_out, [points], contourIdx=-1,
color=color, thickness=2, lineType=cv2.LINE_8 )
moments = cv2.moments ( points )
centroid = (int ( moments['m10'] / moments['m00'] ) - 3, int ( moments['m01'] / moments['m00'] ) + 3)
# cv2.putText ( frame_out, str ( park['id'] ), (centroid[0] + 1, centroid[1] + 1), cv2.FONT_HERSHEY_SIMPLEX,
# 0.4, (255, 255, 255), 1, cv2.LINE_AA )
# cv2.putText ( frame_out, str ( park['id'] ), (centroid[0] - 1, centroid[1] - 1), cv2.FONT_HERSHEY_SIMPLEX,
# 0.4, (255, 255, 255), 1, cv2.LINE_AA )
# cv2.putText ( frame_out, str ( park['id'] ), (centroid[0] + 1, centroid[1] - 1), cv2.FONT_HERSHEY_SIMPLEX,
# 0.4, (255, 255, 255), 1, cv2.LINE_AA )
# cv2.putText ( frame_out, str ( park['id'] ), (centroid[0] - 1, centroid[1] + 1), cv2.FONT_HERSHEY_SIMPLEX,
# 0.4, (255, 255, 255), 1, cv2.LINE_AA )
# cv2.putText ( frame_out, str ( park['id'] ), centroid, cv2.FONT_HERSHEY_SIMPLEX, 0.4, (0, 0, 0), 1,
# cv2.LINE_AA )
# print 'occupied: ', occupied
# print 'spot: ', spot
# Show empty slot and full slot in display
if config['text_overlay']:
# cv2.rectangle(frame_out, (1, 5), (280, 90),(255,255,255), 85)
str_on_frame = "Empty Slot:%d Full Slot:%d" % (empty, full)
cv2.putText(frame_out,
str_on_frame,
(50, 50), # org
cv2.FONT_HERSHEY_SIMPLEX, # font style
0.7,
(0, 0, 255), # orange color in letters
2, # Line thickness of 2 px
cv2.LINE_AA)
##############
if config['save_video']:
# if video_cur_frame % 35 == 0:
out.write ( frame_out )
cv2.imshow ('Car Parking Slot Availability', frame_out) # Displaying the image
cv2.waitKey ( 40 )
k = cv2.waitKey ( 1 )
if k == ord ( 'q' ):
db.carpark.insert_one({'full': str_on_frame}) # db connect
break
cap.release ()
if config['save_video']: out.release ()
cv2.destroyAllWindows ()
if __name__ == '__main__':
app.run()
<html lang="en">
<head>
<title>Smart Car Parking System</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {
box-sizing: border-box;
}
/* Style the body */
body {
font-family: Arial, Helvetica, sans-serif;
margin: 0;
}
/* Header/logo Title */
.header {
padding: 10px;
text-align: center;
background: #1abc9c;
color: white;
}
/* Increase the font size of the heading */
.header h1 {
font-size: 40px;
}
h2 {
color: #436a63;
}
/* Style the top navigation bar */
.navbar {
overflow: hidden;
background-color: #333;
}
/* Style the navigation bar links */
.navbar a {
float: left;
display: block;
color: white;
text-align: center;
padding: 14px 20px;
text-decoration: none;
}
/* Right-aligned link */
.navbar a.right {
float: right;
}
/* Change color on hover */
.navbar a:hover {
background-color: #ddd;
color: black;
}
/* Column container */
.row {
display: -ms-flexbox; /* IE10 */
display: flex;
-ms-flex-wrap: wrap; /* IE10 */
flex-wrap: wrap;
}
/* Create two unequal columns that sits next to each other */
/* Sidebar/left column */
.side {
-ms-flex: 30%; /* IE10 */
flex: 30%;
background-color: #ddd;
padding: 20px;
}
/* Main column */
.main {
-ms-flex: 70%; /* IE10 */
flex: 70%;
background-color: #ddd;
padding: 20px;
}
/* Footer */
.footer {
padding: 10px;
text-color:white;
text-align: center;
background: black;
}
}
/* Responsive layout - when the screen is less than 400px wide, make the navigation links stack on top of each other instead of next to each other */
@media screen and (max-width: 400px) {
.navbar a {
float: none;
width: 100%;
}
}
</style>
</head>
<body>
<div class="header">
<h1>SMART CAR PARKING SOLUTION</h1>
<h2>Slot Managment</h2>
<p>MLB_2021-122</p>
</div>
<div class="navbar">
<a href="#">Slot Managment</a>
<a href="#">Routing Managment</a>
<a href="intex.html">Queue Managment</a>
<a href="#">Security Managment</a>
<a href="#" class="right">Main Dashboard</a>
</div>
<div class="row">
<div class="side">
</div>
<div class="main" style="padding-left: 200px"><br><br><br>
<h1>Slot Information</h1>
<h3>Slot Availability: {{ value }}</h3>
<a href="/my-link/" style="margin: 25px;">Show Availability</a>
<br><br><br><br><br><br><br><br><br><br><br><br>
</div>
</div>
<div class="footer">
<p style="color: white;">© 2021 Copyright: 2021_122</p>
</div>
</body>
</html>
-
id: 0
points: [[55,475],[143,475],[142,416],[72,416]]
-
id: 1
points: [[186,478],[266,479],[247,416],[176,416]]
-
id: 2
points: [[380,477],[287,478],[270,437],[354,432]]
-
id: 3
points: [[500,477],[407,478],[372,434],[450,429]]
-
id: 4
points: [[605,465],[515,473],[469,419],[543,414]]
-
id: 5
points: [[624,460],[676,440],[634,382],[583,382]]
-
id: 6
points: [[6,372],[76,372],[67,326],[22, 326]]
-
id: 7
points: [[146,368],[87,370],[89,340],[145,339]]
-
id: 8
points: [[224,363],[168,367],[162,337],[216,336]]
-
id: 9
points: [[299,358],[241,362],[230,333],[283,332]]
-
id: 10
points: [[374,357],[319,361],[298,330],[344,327]]
-
id: 11
points: [[441,349],[397,353],[371,328],[410,327]]
-
id: 12
points: [[514,347],[468,352],[428,324],[469,321]]
-
id: 13
points: [[577,340],[533,346],[509,319],[541,318]]
-
id: 14
points: [[587,337],[633,337],[600,291],[557,302]]
-
id: 15
points: [[657,334],[688,332],[641,312],[631,314]]
-
id: 16
points: [[742,324],[713,328],[663,306],[687,304]]
-
id: 17
points: [[9,292],[48,292],[56,279],[20,279]]
-
id: 18
points: [[60,285],[100,285],[100,269],[60,269]]
-
id: 19
points: [[109,285],[152,285],[149,271],[114,271]]
-
id: 20
points: [[158,285],[196,285],[193,271],[158,271]]
-
id: 21
points: [[207,285],[249,285],[241,268],[205,270]]
-
id: 22
points: [[258,277],[293,277],[286,263],[253,266]]
-
id: 23
points: [[306,276],[345,277],[329,265],[300,267]]
-
id: 24
points: [[354,274],[388,273],[373,247],[341,252]]
-
id: 25
points: [[400,268],[433,268],[417,261],[387,261]]
-
id: 26
points: [[447,269],[469,266],[459,259],[427,259]]
-
id: 27
points: [[486,267],[512,267],[497,257],[469,258]]
-
id: 28
points: [[533,268],[554,263],[541,250],[512,255]]
from flask import Flask, request, jsonify, render_template
import json
import pymongo
from bson import json_util
from pymongo import MongoClient
import app as test
myclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["slot"]
mycol = mydb["carpark"]
app = Flask(__name__)
@app.route('/')
def hello_world():
data = mycol.find_one({'full': "Empty Slot:11 Full Slot:19"})
strData = json_util.dumps(data)
det = json.loads(strData)
info = det['full']
print(test.hello_world())
return render_template("index.html", value=info)
if __name__ == '__main__':
app.run()
\ No newline at end of file
This diff is collapsed.
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<title>Smart Car Parking System</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {
box-sizing: border-box;
}
/* Style the body */
body {
font-family: Arial, Helvetica, sans-serif;
margin: 0;
}
/* Header/logo Title */
.header {
padding: 10px;
text-align: center;
background: #1abc9c;
color: white;
}
/* Increase the font size of the heading */
.header h1 {
font-size: 40px;
}
h2 {
color: #436a63;
}
/* Style the top navigation bar */
.navbar {
overflow: hidden;
background-color: #333;
}
/* Style the navigation bar links */
.navbar a {
float: left;
display: block;
color: white;
text-align: center;
padding: 14px 20px;
text-decoration: none;
}
/* Right-aligned link */
.navbar a.right {
float: right;
}
/* Change color on hover */
.navbar a:hover {
background-color: #ddd;
color: black;
}
/* Column container */
.row {
display: -ms-flexbox; /* IE10 */
display: flex;
-ms-flex-wrap: wrap; /* IE10 */
flex-wrap: wrap;
}
/* Create two unequal columns that sits next to each other */
/* Sidebar/left column */
.side {
-ms-flex: 30%; /* IE10 */
flex: 30%;
background-color: #ddd;
padding: 20px;
}
/* Main column */
.main {
-ms-flex: 70%; /* IE10 */
flex: 10%;
background-color: #ddd;
padding: 20px;
}
/* Footer */
.footer {
padding: 10px;
text-color:white;
text-align: center;
background: black;
}
}
/* Responsive layout - when the screen is less than 400px wide, make the navigation links stack on top of each other instead of next to each other */
@media screen and (max-width: 400px) {
.navbar a {
float: none;
width: 100%;
}
}
</style>
</head>
<body>
<div class="header" style="padding-top: 1vh; background: #0b486b; color: #FFFFFF">
<h1>SMART CAR PARKING SOLUTION</h1>
<h2>Slot Managment</h2>
<p>MLB_2021-122</p>
</div>
<div class="navbar">
<a href="/bookingSlot/">Booking Slot</a>
<a href="/view-slot/">View Booking Slot</a>
<a href="/slot/">Slot</a>
<a href="/login/" class="right">Login</a>
<a href="/register/" class="right">Register</a>
</div>
<div class="row">
<div className="container" style="padding-left: 200px">
<div className="py-4">
<h1>Book a Slot</h1>
<!-- <form onsubmit="event.preventDefault(); onFormSubmit();" autocomplete="off">-->
<!-- <div>-->
<!-- <label>Booking Date</label>-->
<!-- <input type="text" name="bookingDate" id="date">-->
<!-- </div>-->
<div class="col-12">
<label for="date" class="form-label">Booking Date</label>
<input type="text" class="form-control" id="date" placeholder="yyyy - mm - dd" />
</div> <br>
<div class="col-12">
<label for="time" class="form-label">Booking Time</label>
<input type="text" class="form-control" id="time" placeholder="00 : 00 AM/PM" />
</div> <br>
<div class="col-12">
<label for="hours" class="form-label">Booking Hours</label>
<select class="form-select" aria-label="Default select example">
<option selected>Select Hours</option>
<option value="1">0-1 hours</option>
<option value="2">2 Hours</option>
<option value="3">5 Hours</option>
<option value="3">5 Hours to</option>
</select>
</div> <br>
<div class="col-12">
<label for="customerName" class="form-label">Customer Name</label>
<input type="text" class="form-control" id="customerName" placeholder="" />
</div>
<div class="col-12">
<label for="contactNo" class="form-label">Contact No</label>
<input type="text" class="form-control" id="contactNo" placeholder="07********" />
</div>
<div class="col-12">
<label for="vehicleNo" class="form-label">Vehicle No</label>
<input type="text" class="form-control" id="vehicleNo" placeholder="" />
</div>
<div class="col-12">
<label for="vehicleType" class="form-label">Vehicle Type</label>
<input type="text" class="form-control" id="vehicleType" placeholder="" />
</div>
<div class="form-action-buttons">
<input type="submit" value="Save">
<!-- <button type="button" class="btn btn-dark">Save</button>-->
</div>
<!-- </div>-->
<!-- </form>-->
</div>
</div>
</div>
<div class="footer">
<p style="color: white;">© 2021 Copyright: 2021_122</p>
</div>
<script src="bookingSlot.js"></script>
</body>
</html>
This diff is collapsed.
This diff is collapsed.
This source diff could not be displayed because it is too large. You can view the blob instead.
/* Deafult Margin & Padding */
/*-- Margin Top --*/
.mt-5 {
margin-top: 5px;
}
.mt-10 {
margin-top: 10px;
}
.mt-15 {
margin-top: 15px;
}
.mt-20 {
margin-top: 20px;
}
.mt-25 {
margin-top: 25px;
}
.mt-30 {
margin-top: 30px;
}
.mt-35 {
margin-top: 35px;
}
.mt-40 {
margin-top: 40px;
}
.mt-45 {
margin-top: 45px;
}
.mt-50 {
margin-top: 50px;
}
.mt-55 {
margin-top: 55px;
}
.mt-60 {
margin-top: 60px;
}
.mt-65 {
margin-top: 65px;
}
.mt-70 {
margin-top: 70px;
}
.mt-75 {
margin-top: 75px;
}
.mt-80 {
margin-top: 80px;
}
.mt-85 {
margin-top: 85px;
}
.mt-90 {
margin-top: 90px;
}
.mt-95 {
margin-top: 95px;
}
.mt-100 {
margin-top: 100px;
}
.mt-105 {
margin-top: 105px;
}
.mt-110 {
margin-top: 110px;
}
.mt-115 {
margin-top: 115px;
}
.mt-120 {
margin-top: 120px;
}
.mt-125 {
margin-top: 125px;
}
.mt-130 {
margin-top: 130px;
}
.mt-135 {
margin-top: 135px;
}
.mt-140 {
margin-top: 140px;
}
.mt-145 {
margin-top: 145px;
}
.mt-150 {
margin-top: 150px;
}
.mt-155 {
margin-top: 155px;
}
.mt-160 {
margin-top: 160px;
}
.mt-165 {
margin-top: 165px;
}
.mt-170 {
margin-top: 170px;
}
.mt-175 {
margin-top: 175px;
}
.mt-180 {
margin-top: 180px;
}
.mt-185 {
margin-top: 185px;
}
.mt-190 {
margin-top: 190px;
}
.mt-195 {
margin-top: 195px;
}
.mt-200 {
margin-top: 200px;
}
/*-- Margin Bottom --*/
.mb-5 {
margin-bottom: 5px;
}
.mb-10 {
margin-bottom: 10px;
}
.mb-15 {
margin-bottom: 15px;
}
.mb-20 {
margin-bottom: 20px;
}
.mb-25 {
margin-bottom: 25px;
}
.mb-30 {
margin-bottom: 30px;
}
.mb-35 {
margin-bottom: 35px;
}
.mb-40 {
margin-bottom: 40px;
}
.mb-45 {
margin-bottom: 45px;
}
.mb-50 {
margin-bottom: 50px;
}
.mb-55 {
margin-bottom: 55px;
}
.mb-60 {
margin-bottom: 60px;
}
.mb-65 {
margin-bottom: 65px;
}
.mb-70 {
margin-bottom: 70px;
}
.mb-75 {
margin-bottom: 75px;
}
.mb-80 {
margin-bottom: 80px;
}
.mb-85 {
margin-bottom: 85px;
}
.mb-90 {
margin-bottom: 90px;
}
.mb-95 {
margin-bottom: 95px;
}
.mb-100 {
margin-bottom: 100px;
}
.mb-105 {
margin-bottom: 105px;
}
.mb-110 {
margin-bottom: 110px;
}
.mb-115 {
margin-bottom: 115px;
}
.mb-120 {
margin-bottom: 120px;
}
.mb-125 {
margin-bottom: 125px;
}
.mb-130 {
margin-bottom: 130px;
}
.mb-135 {
margin-bottom: 135px;
}
.mb-140 {
margin-bottom: 140px;
}
.mb-145 {
margin-bottom: 145px;
}
.mb-150 {
margin-bottom: 150px;
}
.mb-155 {
margin-bottom: 155px;
}
.mb-160 {
margin-bottom: 160px;
}
.mb-165 {
margin-bottom: 165px;
}
.mb-170 {
margin-bottom: 170px;
}
.mb-175 {
margin-bottom: 175px;
}
.mb-180 {
margin-bottom: 180px;
}
.mb-185 {
margin-bottom: 185px;
}
.mb-190 {
margin-bottom: 190px;
}
.mb-195 {
margin-bottom: 195px;
}
.mb-200 {
margin-bottom: 200px;
}
/*-- Padding Top --*/
.pt-5 {
padding-top: 5px;
}
.pt-10 {
padding-top: 10px;
}
.pt-15 {
padding-top: 15px;
}
.pt-20 {
padding-top: 20px;
}
.pt-25 {
padding-top: 25px;
}
.pt-30 {
padding-top: 30px;
}
.pt-35 {
padding-top: 35px;
}
.pt-40 {
padding-top: 40px;
}
.pt-45 {
padding-top: 45px;
}
.pt-50 {
padding-top: 50px;
}
.pt-55 {
padding-top: 55px;
}
.pt-60 {
padding-top: 60px;
}
.pt-65 {
padding-top: 65px;
}
.pt-70 {
padding-top: 70px;
}
.pt-75 {
padding-top: 75px;
}
.pt-80 {
padding-top: 80px;
}
.pt-85 {
padding-top: 85px;
}
.pt-90 {
padding-top: 90px;
}
.pt-95 {
padding-top: 95px;
}
.pt-100 {
padding-top: 100px;
}
.pt-105 {
padding-top: 105px;
}
.pt-110 {
padding-top: 110px;
}
.pt-115 {
padding-top: 115px;
}
.pt-120 {
padding-top: 50px;
}
.pt-125 {
padding-top: 125px;
}
.pt-130 {
padding-top: 130px;
}
.pt-135 {
padding-top: 135px;
}
.pt-140 {
padding-top: 140px;
}
.pt-145 {
padding-top: 145px;
}
.pt-150 {
padding-top: 150px;
}
.pt-155 {
padding-top: 155px;
}
.pt-160 {
padding-top: 160px;
}
.pt-165 {
padding-top: 165px;
}
.pt-170 {
padding-top: 170px;
}
.pt-175 {
padding-top: 175px;
}
.pt-180 {
padding-top: 180px;
}
.pt-185 {
padding-top: 185px;
}
.pt-190 {
padding-top: 190px;
}
.pt-195 {
padding-top: 195px;
}
.pt-200 {
padding-top: 200px;
}
/*-- Padding Bottom --*/
.pb-5 {
padding-bottom: 5px;
}
.pb-10 {
padding-bottom: 10px;
}
.pb-15 {
padding-bottom: 15px;
}
.pb-20 {
padding-bottom: 20px;
}
.pb-25 {
padding-bottom: 25px;
}
.pb-30 {
padding-bottom: 30px;
}
.pb-35 {
padding-bottom: 35px;
}
.pb-40 {
padding-bottom: 40px;
}
.pb-45 {
padding-bottom: 45px;
}
.pb-50 {
padding-bottom: 50px;
}
.pb-55 {
padding-bottom: 55px;
}
.pb-60 {
padding-bottom: 60px;
}
.pb-65 {
padding-bottom: 0px;
}
.pb-70 {
padding-bottom: 70px;
}
.pb-75 {
padding-bottom: 75px;
}
.pb-80 {
padding-bottom: 80px;
}
.pb-85 {
padding-bottom: 85px;
}
.pb-90 {
padding-bottom: 0px;
}
.pb-95 {
padding-bottom: 95px;
}
.pb-100 {
padding-bottom: 100px;
}
.pb-105 {
padding-bottom: 105px;
}
.pb-110 {
padding-bottom: 110px;
}
.pb-115 {
padding-bottom: 115px;
}
.pb-120 {
padding-bottom: 120px;
}
.pb-125 {
padding-bottom: 125px;
}
.pb-130 {
padding-bottom: 130px;
}
.pb-135 {
padding-bottom: 135px;
}
.pb-140 {
padding-bottom: 140px;
}
.pb-145 {
padding-bottom: 145px;
}
.pb-150 {
padding-bottom: 150px;
}
.pb-155 {
padding-bottom: 155px;
}
.pb-160 {
padding-bottom: 160px;
}
.pb-165 {
padding-bottom: 165px;
}
.pb-170 {
padding-bottom: 170px;
}
.pb-175 {
padding-bottom: 175px;
}
.pb-180 {
padding-bottom: 180px;
}
.pb-185 {
padding-bottom: 185px;
}
.pb-190 {
padding-bottom: 190px;
}
.pb-195 {
padding-bottom: 195px;
}
.pb-200 {
padding-bottom: 200px;
}
/*-- Padding Left --*/
.pl-0 {
padding-left: 0px;
}
.pl-5 {
padding-left: 5px;
}
.pl-10 {
padding-left: 10px;
}
.pl-15 {
padding-left: 15px;
}
.pl-20{
padding-left: 20px;
}
.pl-25 {
padding-left: 35px;
}
.pl-30 {
padding-left: 30px;
}
.pl-35 {
padding-left: 35px;
}
.pl-35 {
padding-left: 35px;
}
.pl-40 {
padding-left: 40px;
}
.pl-45 {
padding-left: 45px;
}
.pl-50 {
padding-left: 50px;
}
.pl-55 {
padding-left: 55px;
}
.pl-60 {
padding-left: 60px;
}
.pl-65 {
padding-left: 65px;
}
.pl-70 {
padding-left: 70px;
}
.pl-75 {
padding-left: 75px;
}
.pl-80 {
padding-left: 80px;
}
.pl-85 {
padding-left: 80px;
}
.pl-90 {
padding-left: 90px;
}
.pl-95 {
padding-left: 95px;
}
.pl-100 {
padding-left: 100px;
}
/*-- Padding Right --*/
.pr-0 {
padding-right: 0px;
}
.pr-5 {
padding-right: 5px;
}
.pr-10 {
padding-right: 10px;
}
.pr-15 {
padding-right: 15px;
}
.pr-20{
padding-right: 20px;
}
.pr-25 {
padding-right: 35px;
}
.pr-30 {
padding-right: 30px;
}
.pr-35 {
padding-right: 35px;
}
.pr-35 {
padding-right: 35px;
}
.pr-40 {
padding-right: 40px;
}
.pr-45 {
padding-right: 45px;
}
.pr-50 {
padding-right: 50px;
}
.pr-55 {
padding-right: 55px;
}
.pr-60 {
padding-right: 60px;
}
.pr-65 {
padding-right: 65px;
}
.pr-70 {
padding-right: 70px;
}
.pr-75 {
padding-right: 75px;
}
.pr-80 {
padding-right: 80px;
}
.pr-85 {
padding-right: 80px;
}
.pr-90 {
padding-right: 90px;
}
.pr-95 {
padding-right: 95px;
}
.pr-100 {
padding-right: 100px;
}
/* font weight */
.f-700{font-weight: 700;}
.f-600{font-weight: 600;}
.f-500{font-weight: 500;}
.f-400{font-weight: 400;}
.f-300{font-weight: 300;}
/* Background Color */
.gray-bg {
background: #f8f5f0;
}
.white-bg {
background: #fff;
}
.black-bg {
background: #222;
}
.theme-bg {
background: #222;
}
.primary-bg {
background: #222;
}
/* Color */
.white-color {
color: #fff;
}
.black-color {
color: #222;
}
.theme-color {
color: #222;
}
.primary-color {
color: #222;
}
/* black overlay */
[data-overlay] {
position: relative;
}
[data-overlay]::before {
background: #000 none repeat scroll 0 0;
content: "";
height: 100%;
left: 0;
position: absolute;
top: 0;
width: 100%;
z-index: 1;
}
[data-overlay="3"]::before {
opacity: 0.3;
}
[data-overlay="4"]::before {
opacity: 0.4;
}
[data-overlay="5"]::before {
opacity: 0.5;
}
[data-overlay="6"]::before {
opacity: 0.6;
}
[data-overlay="7"]::before {
opacity: 0.7;
}
[data-overlay="8"]::before {
opacity: 0.8;
}
[data-overlay="9"]::before {
opacity: 0.9;
}
\ No newline at end of file
/*
Flaticon icon font: Flaticon
Creation date: 31/05/2020 03:44
*/
@font-face {
font-family: "Flaticon";
src: url("../fonts/Flaticon.eot");
src: url("../fonts/Flaticond41d.eot?#iefix") format("embedded-opentype"),
url("../fonts/Flaticon.woff2") format("woff2"),
url("../fonts/Flaticon.woff") format("woff"),
url("../fonts/Flaticon.ttf") format("truetype"),
url("../fonts/Flaticon.svg#Flaticon") format("svg");
font-weight: normal;
font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: "Flaticon";
src: url("../fonts/Flaticon.svg#Flaticon") format("svg");
}
}
[class^="flaticon-"]:before, [class*=" flaticon-"]:before,
[class^="flaticon-"]:after, [class*=" flaticon-"]:after {
font-family: Flaticon;
font-style: normal;
}
.flaticon-rooster:before { content: "\f100"; }
.flaticon-cow-head-outline:before { content: "\f101"; }
.flaticon-cow-head:before { content: "\f102"; }
.flaticon-harvest:before { content: "\f103"; }
.flaticon-combine-harvester:before { content: "\f104"; }
.flaticon-heavy-vehicle:before { content: "\f105"; }
.flaticon-cauliflower:before { content: "\f106"; }
.flaticon-up-arrow:before { content: "\f107"; }
.flaticon-down-arrow:before { content: "\f108"; }
.flaticon-duck:before { content: "\f109"; }
.flaticon-null:before { content: "\f10a"; }
.flaticon-pistachio:before { content: "\f10b"; }
.flaticon-placeholder:before { content: "\f10c"; }
.flaticon-grain:before { content: "\f10d"; }
.flaticon-greenhouse:before { content: "\f10e"; }
.flaticon-hen:before { content: "\f10f"; }
.flaticon-chainsaw:before { content: "\f110"; }
.flaticon-carrot:before { content: "\f111"; }
.flaticon-fish:before { content: "\f112"; }
.flaticon-field:before { content: "\f113"; }
.flaticon-butterfly:before { content: "\f114"; }
.flaticon-boot:before { content: "\f115"; }
.flaticon-fence:before { content: "\f116"; }
.flaticon-farmer:before { content: "\f117"; }
.flaticon-beetroot:before { content: "\f118"; }
.flaticon-barrel:before { content: "\f119"; }
.flaticon-cow:before { content: "\f11a"; }
.flaticon-meat:before { content: "\f11b"; }
.flaticon-corn:before { content: "\f11c"; }
.flaticon-cotton:before { content: "\f11d"; }
.flaticon-hose:before { content: "\f11e"; }
.flaticon-null-1:before { content: "\f11f"; }
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
/* Magnific Popup CSS */
.mfp-bg {
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1042;
overflow: hidden;
position: fixed;
background: #0b0b0b;
opacity: 0.8; }
.mfp-wrap {
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1043;
position: fixed;
outline: none !important;
-webkit-backface-visibility: hidden; }
.mfp-container {
text-align: center;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
padding: 0 8px;
box-sizing: border-box; }
.mfp-container:before {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle; }
.mfp-align-top .mfp-container:before {
display: none; }
.mfp-content {
position: relative;
display: inline-block;
vertical-align: middle;
margin: 0 auto;
text-align: left;
z-index: 1045; }
.mfp-inline-holder .mfp-content,
.mfp-ajax-holder .mfp-content {
width: 100%;
cursor: auto; }
.mfp-ajax-cur {
cursor: progress; }
.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
cursor: -moz-zoom-out;
cursor: -webkit-zoom-out;
cursor: zoom-out; }
.mfp-zoom {
cursor: pointer;
cursor: -webkit-zoom-in;
cursor: -moz-zoom-in;
cursor: zoom-in; }
.mfp-auto-cursor .mfp-content {
cursor: auto; }
.mfp-close,
.mfp-arrow,
.mfp-preloader,
.mfp-counter {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none; }
.mfp-loading.mfp-figure {
display: none; }
.mfp-hide {
display: none !important; }
.mfp-preloader {
color: #CCC;
position: absolute;
top: 50%;
width: auto;
text-align: center;
margin-top: -0.8em;
left: 8px;
right: 8px;
z-index: 1044; }
.mfp-preloader a {
color: #CCC; }
.mfp-preloader a:hover {
color: #FFF; }
.mfp-s-ready .mfp-preloader {
display: none; }
.mfp-s-error .mfp-content {
display: none; }
button.mfp-close,
button.mfp-arrow {
overflow: visible;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none;
display: block;
outline: none;
padding: 0;
z-index: 1046;
box-shadow: none;
touch-action: manipulation; }
button::-moz-focus-inner {
padding: 0;
border: 0; }
.mfp-close {
width: 44px;
height: 44px;
line-height: 44px;
position: absolute;
right: 0;
top: 0;
text-decoration: none;
text-align: center;
opacity: 0.65;
padding: 0 0 18px 10px;
color: #FFF;
font-style: normal;
font-size: 28px;
font-family: Arial, Baskerville, monospace; }
.mfp-close:hover,
.mfp-close:focus {
opacity: 1; }
.mfp-close:active {
top: 1px; }
.mfp-close-btn-in .mfp-close {
color: #333; }
.mfp-image-holder .mfp-close,
.mfp-iframe-holder .mfp-close {
color: #FFF;
right: -6px;
text-align: right;
padding-right: 6px;
width: 100%; }
.mfp-counter {
position: absolute;
top: 0;
right: 0;
color: #CCC;
font-size: 12px;
line-height: 18px;
white-space: nowrap; }
.mfp-arrow {
position: absolute;
opacity: 0.65;
margin: 0;
top: 50%;
margin-top: -55px;
padding: 0;
width: 90px;
height: 110px;
-webkit-tap-highlight-color: transparent; }
.mfp-arrow:active {
margin-top: -54px; }
.mfp-arrow:hover,
.mfp-arrow:focus {
opacity: 1; }
.mfp-arrow:before,
.mfp-arrow:after {
content: '';
display: block;
width: 0;
height: 0;
position: absolute;
left: 0;
top: 0;
margin-top: 35px;
margin-left: 35px;
border: medium inset transparent; }
.mfp-arrow:after {
border-top-width: 13px;
border-bottom-width: 13px;
top: 8px; }
.mfp-arrow:before {
border-top-width: 21px;
border-bottom-width: 21px;
opacity: 0.7; }
.mfp-arrow-left {
left: 0; }
.mfp-arrow-left:after {
border-right: 17px solid #FFF;
margin-left: 31px; }
.mfp-arrow-left:before {
margin-left: 25px;
border-right: 27px solid #3F3F3F; }
.mfp-arrow-right {
right: 0; }
.mfp-arrow-right:after {
border-left: 17px solid #FFF;
margin-left: 39px; }
.mfp-arrow-right:before {
border-left: 27px solid #3F3F3F; }
.mfp-iframe-holder {
padding-top: 40px;
padding-bottom: 40px; }
.mfp-iframe-holder .mfp-content {
line-height: 0;
width: 100%;
max-width: 900px; }
.mfp-iframe-holder .mfp-close {
top: -40px; }
.mfp-iframe-scaler {
width: 100%;
height: 0;
overflow: hidden;
padding-top: 56.25%; }
.mfp-iframe-scaler iframe {
position: absolute;
display: block;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
background: #000; }
/* Main image in popup */
img.mfp-img {
width: auto;
max-width: 100%;
height: auto;
display: block;
line-height: 0;
box-sizing: border-box;
padding: 40px 0 40px;
margin: 0 auto; }
/* The shadow behind the image */
.mfp-figure {
line-height: 0; }
.mfp-figure:after {
content: '';
position: absolute;
left: 0;
top: 40px;
bottom: 40px;
display: block;
right: 0;
width: auto;
height: auto;
z-index: -1;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
background: #444; }
.mfp-figure small {
color: #BDBDBD;
display: block;
font-size: 12px;
line-height: 14px; }
.mfp-figure figure {
margin: 0; }
.mfp-bottom-bar {
margin-top: -36px;
position: absolute;
top: 100%;
left: 0;
width: 100%;
cursor: auto; }
.mfp-title {
text-align: left;
line-height: 18px;
color: #F3F3F3;
word-wrap: break-word;
padding-right: 36px; }
.mfp-image-holder .mfp-content {
max-width: 100%; }
.mfp-gallery .mfp-image-holder .mfp-figure {
cursor: pointer; }
@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
/**
* Remove all paddings around the image on small screen
*/
.mfp-img-mobile .mfp-image-holder {
padding-left: 0;
padding-right: 0; }
.mfp-img-mobile img.mfp-img {
padding: 0; }
.mfp-img-mobile .mfp-figure:after {
top: 0;
bottom: 0; }
.mfp-img-mobile .mfp-figure small {
display: inline;
margin-left: 5px; }
.mfp-img-mobile .mfp-bottom-bar {
background: rgba(0, 0, 0, 0.6);
bottom: 0;
margin: 0;
top: auto;
padding: 3px 5px;
position: fixed;
box-sizing: border-box; }
.mfp-img-mobile .mfp-bottom-bar:empty {
padding: 0; }
.mfp-img-mobile .mfp-counter {
right: 5px;
top: 3px; }
.mfp-img-mobile .mfp-close {
top: 0;
right: 0;
width: 35px;
height: 35px;
line-height: 35px;
background: rgba(0, 0, 0, 0.6);
position: fixed;
text-align: center;
padding: 0; } }
@media all and (max-width: 900px) {
.mfp-arrow {
-webkit-transform: scale(0.75);
transform: scale(0.75); }
.mfp-arrow-left {
-webkit-transform-origin: 0;
transform-origin: 0; }
.mfp-arrow-right {
-webkit-transform-origin: 100%;
transform-origin: 100%; }
.mfp-container {
padding-left: 6px;
padding-right: 6px; } }
.odometer.odometer-auto-theme, .odometer.odometer-theme-default {
display: inline-block;
vertical-align: middle;
*vertical-align: auto;
*zoom: 1;
*display: inline;
position: relative;
}
.odometer.odometer-auto-theme .odometer-digit, .odometer.odometer-theme-default .odometer-digit {
display: inline-block;
vertical-align: middle;
*vertical-align: auto;
*zoom: 1;
*display: inline;
position: relative;
}
.odometer.odometer-auto-theme .odometer-digit .odometer-digit-spacer, .odometer.odometer-theme-default .odometer-digit .odometer-digit-spacer {
display: inline-block;
vertical-align: middle;
*vertical-align: auto;
*zoom: 1;
*display: inline;
visibility: hidden;
}
.odometer.odometer-auto-theme .odometer-digit .odometer-digit-inner, .odometer.odometer-theme-default .odometer-digit .odometer-digit-inner {
text-align: left;
display: block;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
overflow: hidden;
}
.odometer.odometer-auto-theme .odometer-digit .odometer-ribbon, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon {
display: block;
}
.odometer.odometer-auto-theme .odometer-digit .odometer-ribbon-inner, .odometer.odometer-theme-default .odometer-digit .odometer-ribbon-inner {
display: block;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
}
.odometer.odometer-auto-theme .odometer-digit .odometer-value, .odometer.odometer-theme-default .odometer-digit .odometer-value {
display: block;
-webkit-transform: translateZ(0);
transform: translateZ(0);
}
.odometer.odometer-auto-theme .odometer-digit .odometer-value.odometer-last-value, .odometer.odometer-theme-default .odometer-digit .odometer-value.odometer-last-value {
position: absolute;
}
.odometer.odometer-auto-theme.odometer-animating-up .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up .odometer-ribbon-inner {
-webkit-transition: -webkit-transform 2s;
-moz-transition: -moz-transform 2s;
-ms-transition: -ms-transform 2s;
-o-transition: -o-transform 2s;
transition: transform 2s;
}
.odometer.odometer-auto-theme.odometer-animating-up.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-up.odometer-animating .odometer-ribbon-inner {
-webkit-transform: translateY(-100%);
-moz-transform: translateY(-100%);
-ms-transform: translateY(-100%);
-o-transform: translateY(-100%);
transform: translateY(-100%);
}
.odometer.odometer-auto-theme.odometer-animating-down .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down .odometer-ribbon-inner {
-webkit-transform: translateY(-100%);
-moz-transform: translateY(-100%);
-ms-transform: translateY(-100%);
-o-transform: translateY(-100%);
transform: translateY(-100%);
}
.odometer.odometer-auto-theme.odometer-animating-down.odometer-animating .odometer-ribbon-inner, .odometer.odometer-theme-default.odometer-animating-down.odometer-animating .odometer-ribbon-inner {
-webkit-transition: -webkit-transform 2s;
-moz-transition: -moz-transform 2s;
-ms-transition: -ms-transform 2s;
-o-transition: -o-transform 2s;
transition: transform 2s;
-webkit-transform: translateY(0);
-moz-transform: translateY(0);
-ms-transform: translateY(0);
-o-transform: translateY(0);
transform: translateY(0);
}
.odometer.odometer-auto-theme .odometer-value, .odometer.odometer-theme-default .odometer-value {
text-align: center;
}
.odometer-formatting-mark {
display: none;
}
\ No newline at end of file
/**
* Owl Carousel v2.3.4
* Copyright 2013-2018 David Deutsch
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
*/
.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y;touch-action:manipulation;-moz-backface-visibility:hidden}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item,.owl-carousel .owl-wrapper{-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;-ms-backface-visibility:hidden;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.no-js .owl-carousel,.owl-carousel.owl-loaded{display:block}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel .owl-nav button.owl-next,.owl-carousel .owl-nav button.owl-prev,.owl-carousel button.owl-dot{background:0 0;color:inherit;border:none;padding:0!important;font:inherit}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{visibility:hidden}.owl-carousel.owl-drag .owl-item{-ms-touch-action:pan-y;touch-action:pan-y;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.owl-carousel .animated{animation-duration:1s;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{animation-name:fadeOut}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item .owl-lazy:not([src]),.owl-carousel .owl-item .owl-lazy[src^=""]{max-height:0}.owl-carousel .owl-item img.owl-lazy{transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.html) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%}
This diff is collapsed.
This diff is collapsed.
/* Slider */
.slick-slider
{
position: relative;
display: block;
box-sizing: border-box;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-touch-callout: none;
-khtml-user-select: none;
-ms-touch-action: pan-y;
touch-action: pan-y;
-webkit-tap-highlight-color: transparent;
}
.slick-list
{
position: relative;
display: block;
overflow: hidden;
margin: 0;
padding: 0;
}
.slick-list:focus
{
outline: none;
}
.slick-list.dragging
{
cursor: pointer;
cursor: hand;
}
.slick-slider .slick-track,
.slick-slider .slick-list
{
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.slick-track
{
position: relative;
top: 0;
left: 0;
display: block;
margin-left: auto;
margin-right: auto;
}
.slick-track:before,
.slick-track:after
{
display: table;
content: '';
}
.slick-track:after
{
clear: both;
}
.slick-loading .slick-track
{
visibility: hidden;
}
.slick-slide
{
display: none;
float: left;
height: 100%;
min-height: 1px;
}
[dir='rtl'] .slick-slide
{
float: right;
}
.slick-slide img
{
display: block;
}
.slick-slide.slick-loading img
{
display: none;
}
.slick-slide.dragging img
{
pointer-events: none;
}
.slick-initialized .slick-slide
{
display: block;
}
.slick-loading .slick-slide
{
visibility: hidden;
}
.slick-vertical .slick-slide
{
display: block;
height: auto;
border: 1px solid transparent;
}
.slick-arrow.slick-hidden {
display: none;
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*!
* imagesLoaded PACKAGED v4.1.4
* JavaScript is all like "You images are done yet or what?"
* MIT License
*/
!function(e,t){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",t):"object"==typeof module&&module.exports?module.exports=t():e.EvEmitter=t()}("undefined"!=typeof window?window:this,function(){function e(){}var t=e.prototype;return t.on=function(e,t){if(e&&t){var i=this._events=this._events||{},n=i[e]=i[e]||[];return n.indexOf(t)==-1&&n.push(t),this}},t.once=function(e,t){if(e&&t){this.on(e,t);var i=this._onceEvents=this._onceEvents||{},n=i[e]=i[e]||{};return n[t]=!0,this}},t.off=function(e,t){var i=this._events&&this._events[e];if(i&&i.length){var n=i.indexOf(t);return n!=-1&&i.splice(n,1),this}},t.emitEvent=function(e,t){var i=this._events&&this._events[e];if(i&&i.length){i=i.slice(0),t=t||[];for(var n=this._onceEvents&&this._onceEvents[e],o=0;o<i.length;o++){var r=i[o],s=n&&n[r];s&&(this.off(e,r),delete n[r]),r.apply(this,t)}return this}},t.allOff=function(){delete this._events,delete this._onceEvents},e}),function(e,t){"use strict";"function"==typeof define&&define.amd?define(["ev-emitter/ev-emitter"],function(i){return t(e,i)}):"object"==typeof module&&module.exports?module.exports=t(e,require("ev-emitter")):e.imagesLoaded=t(e,e.EvEmitter)}("undefined"!=typeof window?window:this,function(e,t){function i(e,t){for(var i in t)e[i]=t[i];return e}function n(e){if(Array.isArray(e))return e;var t="object"==typeof e&&"number"==typeof e.length;return t?d.call(e):[e]}function o(e,t,r){if(!(this instanceof o))return new o(e,t,r);var s=e;return"string"==typeof e&&(s=document.querySelectorAll(e)),s?(this.elements=n(s),this.options=i({},this.options),"function"==typeof t?r=t:i(this.options,t),r&&this.on("always",r),this.getImages(),h&&(this.jqDeferred=new h.Deferred),void setTimeout(this.check.bind(this))):void a.error("Bad element for imagesLoaded "+(s||e))}function r(e){this.img=e}function s(e,t){this.url=e,this.element=t,this.img=new Image}var h=e.jQuery,a=e.console,d=Array.prototype.slice;o.prototype=Object.create(t.prototype),o.prototype.options={},o.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)},o.prototype.addElementImages=function(e){"IMG"==e.nodeName&&this.addImage(e),this.options.background===!0&&this.addElementBackgroundImages(e);var t=e.nodeType;if(t&&u[t]){for(var i=e.querySelectorAll("img"),n=0;n<i.length;n++){var o=i[n];this.addImage(o)}if("string"==typeof this.options.background){var r=e.querySelectorAll(this.options.background);for(n=0;n<r.length;n++){var s=r[n];this.addElementBackgroundImages(s)}}}};var u={1:!0,9:!0,11:!0};return o.prototype.addElementBackgroundImages=function(e){var t=getComputedStyle(e);if(t)for(var i=/url\((['"])?(.*?)\1\)/gi,n=i.exec(t.backgroundImage);null!==n;){var o=n&&n[2];o&&this.addBackground(o,e),n=i.exec(t.backgroundImage)}},o.prototype.addImage=function(e){var t=new r(e);this.images.push(t)},o.prototype.addBackground=function(e,t){var i=new s(e,t);this.images.push(i)},o.prototype.check=function(){function e(e,i,n){setTimeout(function(){t.progress(e,i,n)})}var t=this;return this.progressedCount=0,this.hasAnyBroken=!1,this.images.length?void this.images.forEach(function(t){t.once("progress",e),t.check()}):void this.complete()},o.prototype.progress=function(e,t,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!e.isLoaded,this.emitEvent("progress",[this,e,t]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,e),this.progressedCount==this.images.length&&this.complete(),this.options.debug&&a&&a.log("progress: "+i,e,t)},o.prototype.complete=function(){var e=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(e,[this]),this.emitEvent("always",[this]),this.jqDeferred){var t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},r.prototype=Object.create(t.prototype),r.prototype.check=function(){var e=this.getIsImageComplete();return e?void this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),void(this.proxyImage.src=this.img.src))},r.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},r.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.img,t])},r.prototype.handleEvent=function(e){var t="on"+e.type;this[t]&&this[t](e)},r.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},r.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},r.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype=Object.create(r.prototype),s.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url;var e=this.getIsImageComplete();e&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},s.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},s.prototype.confirm=function(e,t){this.isLoaded=e,this.emitEvent("progress",[this,this.element,t])},o.makeJQueryPlugin=function(t){t=t||e.jQuery,t&&(h=t,h.fn.imagesLoaded=function(e,t){var i=new o(this,e,t);return i.jqDeferred.promise(h(this))})},o.makeJQueryPlugin(),o});
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment