├── .gitignore ├── Data └── pattern.csv ├── README.md ├── abc.json ├── classifier └── arith.py ├── main.py ├── oldMain.py ├── solver ├── SI.py ├── SIformula.py ├── common_functions.py ├── findAnswer_SI.py ├── pattern.csv └── unitary.py ├── template ├── css │ ├── font-awesome.min.css │ ├── skel.css │ ├── style-large.css │ ├── style-medium.css │ ├── style-small.css │ ├── style-xlarge.css │ ├── style-xsmall.css │ └── style.css ├── favicon.ico ├── fonts │ ├── FontAwesome.otf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ └── fontawesome-webfont.woff ├── images │ ├── bokeh_car_lights_bg.jpg │ ├── dark_tint.png │ ├── gurpal.jpg │ ├── mathly.png │ ├── pic02.jpg │ ├── pic03.jpg │ ├── pic04.jpg │ ├── pic07.jpg │ ├── pic08.jpg │ ├── profile_placeholder.gif │ ├── purvanshi.jpg │ ├── shreyas.jpg │ └── siddhartha.jpg ├── index.html └── js │ ├── autosize.js │ ├── html5shiv.js │ ├── init.js │ ├── jquery.easing.1.3.js │ ├── jquery.js │ ├── skel-layers.min.js │ └── skel.min.js └── working.png /.gitignore: -------------------------------------------------------------------------------- 1 | libs -------------------------------------------------------------------------------- /Data/pattern.csv: -------------------------------------------------------------------------------- 1 | pattern,tag 2 | "(('interest', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('years', 'NNS'))",si 3 | "(('interest', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))",si 4 | "(('Find', 'VBP'), 'nsubj', ('', 'CD')),(('', 'CD'), 'dep', ('$', '$')),(('', 'CD'), 'acl:relcl', ('invested', 'VBN'))",p 5 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('given', 'VBN'))",p 6 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('borrowed', 'VBN'))",p 7 | "(('interest', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('years', 'NNS'))",si 8 | "(('sum', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))",p 9 | "(('', 'NNP'), 'case', (""'s"", 'POS'))(('', 'NNP'), 'case', (""'s"", 'POS'))(('', 'CD'), 'dep', ('#', '#'))(('', 'CD'), 'nmod', ('account', 'NN'))",p 10 | "(('worth', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('years', 'NNS'))",p 11 | "(('sum', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))",p 12 | "(('amounts', 'NNS'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('to', 'TO'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('years', 'NNS'))",a 13 | "(('interest', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))",si 14 | "(('interest', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('amount', 'NN'))",si 15 | "(('was', 'VBD'), 'advcl', ('', 'CD'))(('', 'CD'), 'mark', ('If', 'IN'))(('', 'CD'), 'nsubj', ('interest', 'NN'))(('', 'CD'), 'cop', ('was', 'VBD'))(('', 'CD'), 'dep', ('$', '$'))",si 16 | "(('will', 'VB'), 'dep', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))",p 17 | "(('will', 'VB'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('to', 'TO'))(('', 'CD'), 'dep', ('$', '$'))",a 18 | "(('interest', 'NN'), 'nmod', (‘’, 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('years', 'NNS'))",si 19 | "(('sum', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))",p 20 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('borrowed', 'VBN'))",p 21 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('borrowed', 'VBN'))",p 22 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('given', 'VBN'))",p 23 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('invested', 'VBN'))",p 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## iSolveMath### 2 | 3 | 4 | ********** 5 | 6 | 7 | **iSolveMath solves and visualizes Math Word Problems (MWPs).** 8 | 9 | **Introduction** 10 | ============= 11 | 12 | iSolveMath is a platform where a student can enter a maths word problem, get an automatic answer and visual explanation generated of both the question and the answer. 13 | 14 | ![Alt text](/working.png "Working") 15 | 16 | 17 | **Installation** 18 | ============= 19 | 20 | sudo apt install python3-dev 21 | sudo apt-get install build-essential autoconf libtool pkg-config python-pyrex idle-python2.7 qt4-dev-tools qt4-designer libqtgui4 libqtcore4 libqt4-xml libqt4-test libqt4-script libqt4-network libqt4-dbus python-dev 22 | 23 | pip install -r requirements.txt 24 | python3 -m spacy download en 25 | 26 | python3 27 | >>>import nltk 28 | >>>nltk.download('all') 29 | 30 | 31 | RUN USING 32 | gunicorn -b 0.0.0.0:5000 main:app —reload 33 | 34 | 35 | **Approach** 36 | ======== 37 | You can check the system which solves simple arithmetic problems https://github.com/purvanshi/operation-prediction 38 | 39 | The system at present solves starightforward simple interest problems like- 40 | 41 | - How much time will it take for an amount of $900 to yield $81 as interest at 4.5% per annum of simple interest? 42 | - If Manohar pays an interest of $750 for 2 years on a sum of $4,500, find the rate of interest. 43 | - Sahil took a loan for 6 years at the rate of 5% per annum on Simple Interest, If the total interest paid was $1230, Find the principal. 44 | 45 | The process takes place as follows- 46 | - Finding the question part and classifying into what is unknown. 47 | - Finding the known quantities with the help of NER tagging and classification of money tag into simple interest, amount or principal. 48 | - Formula call and return of answer. 49 | Each basic word problem can be classified into subcategories. For example, SI problems can be divided into: 50 | 51 | 1. Finding a quantity when three others are given. 52 | 2. Investment of parts (example - splitting investment into two parts, and finding the cumulative interest after a year). This also includes profit sharing. 53 | 54 | 55 | **Current Work and research** 56 | ========================= 57 | We have worked on the arithmetic word problem solver http://www.aclweb.org/anthology/I17-3017 58 | The code at present is highly domain specific. To make it more generic, we would be using deep learning and semantic graph formation technique to solve a wide variety of problems. 59 | 60 | **Contributors** 61 | ========================= 62 | Purvanshi Mehta, Vinayak Athavale, Pruthwik Mishra 63 | Demo and working - Siddharth Khanooja, Himanshi Mehta 64 | 65 | **Who can contribute** 66 | ================== 67 | - Researchers - People who want to challenge the current accuracies of present maths word problem solvers, or extend the research in this field to higher level and complex problems and who love to play with the language(natural language processing). 68 | 69 | - Developers - We beleieve in building something which can be used by someone directly. Bridging the gap between research and develepment work, iSolveMath is a platform which involves both development and research work. 70 | 71 | - _ANYONE WHO LOVES MATHS AND BELIEVES EVERYONE ELSE SHOULD LOVE IT TOO._ 72 | 73 | 74 | **Alternatives currently available in maths word problem solving** 75 | ============================================================== 76 | 77 | The following alternatives already exist, but they perform to a limited capacity: 78 | 79 | 80 | - `WolframAlpha `_ (as detailed here - `[1] `_, and `[2] `_ ): WolframAlpha has been *the* computational engine ever since its inception in 2009. This means that it would return answers to factual answers directly, rather than linking to pages that *might* contain the content. WolframAlpha began offering solutions to single-step junior-school level problems in 2012, and has been refining it till now. 81 | 82 | The only problem with using WolframAlpha as a natural language parser (rather than a computational engine) is the maximum *complexity* of the word problems that the site can handle, which is depressingly low. 83 | 84 | - `Euclid `_: Euclid is one of the products of the Allen Institute of Artificial Intelligence (AI2), It aims to solve SAT-style Math questions. (for example, "What is x, if x plus three is 10?" 85 | 86 | -------------------------------------------------------------------------------- /abc.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "808f4700-8e75-4f1a-a83c-29e36837d191", 3 | "timestamp": "2017-07-30T00:35:34.716Z", 4 | "lang": "en", 5 | "result": { 6 | "source": "agent", 7 | "resolvedQuery": "a", 8 | "speech": "", 9 | "action": "input.unknown", 10 | "actionIncomplete": false, 11 | "parameters": {}, 12 | "contexts": [], 13 | "metadata": { 14 | "intentId": "d1bcb654-ffca-4b38-8ddb-b3a3d2acc9e1", 15 | "webhookUsed": "true", 16 | "webhookForSlotFillingUsed": "true", 17 | "intentName": "Default Fallback Intent" 18 | }, 19 | "fulfillment": { 20 | "speech": "One more time?", 21 | "messages": [{ 22 | "type": 0, 23 | "speech": "Can you say that again?" 24 | }] 25 | }, 26 | "score": 1.0 27 | }, 28 | "status": { 29 | "code": 200, 30 | "errorType": "success" 31 | }, 32 | "sessionId": "b84d850f-8dc9-2b80-74e7-0403379dd479" 33 | } 34 | 35 | 36 | { 37 | 'lang': 'en', 38 | 'timestamp': '2017-07-30T00:38:24.564Z', 39 | 'result': { 40 | 'actionIncomplete': False, 41 | 'metadata': { 42 | 'intentId': 'd1bcb654-ffca-4b38-8ddb-b3a3d2acc9e1', 43 | 'webhookForSlotFillingUsed': 'true', 44 | 'intentName': 'Default Fallback Intent', 45 | 'webhookUsed': 'true' 46 | }, 47 | 'score': 1.0, 48 | 'source': 'agent', 49 | 'parameters': {}, 50 | 'speech': '', 51 | 'contexts': [], 52 | 'fulfillment': { 53 | 'speech': 'I missed what you said. Say it again?', 54 | 'messages': [{ 55 | 'speech': "Sorry, 56 | I didn 't get that.", 57 | 'type': 0 58 | }] 59 | }, 60 | 'action': 'input.unknown', 61 | 'resolvedQuery': 'a' 62 | }, 63 | 'id': 'f961ead0-4928-4b6b-b820-51a065cffa98', 64 | 'status': { 65 | 'errorType': 'success', 66 | 'code': 200 67 | }, 68 | 'sessionId': 'b84d850f-8dc9-2b80-74e7-0403379dd479' 69 | } -------------------------------------------------------------------------------- /classifier/arith.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | from sklearn import datasets,preprocessing,linear_model 4 | import nltk 5 | from nltk.classify import ClassifierI 6 | from nltk.tokenize import sent_tokenize,word_tokenize 7 | from nltk.parse.stanford import StanfordDependencyParser 8 | from nltk.parse.stanford import StanfordParser 9 | from nltk.internals import find_jars_within_path 10 | import csv 11 | import sys 12 | import re 13 | from sklearn.feature_extraction.text import CountVectorizer 14 | from bs4 import BeautifulSoup 15 | from nltk.corpus import stopwords 16 | from nltk.tokenize import word_tokenize, sent_tokenize 17 | from sklearn.feature_extraction.text import CountVectorizer 18 | from sklearn.feature_extraction.text import TfidfVectorizer 19 | import pickle 20 | from sklearn.ensemble import RandomForestClassifier 21 | from sklearn.preprocessing import LabelEncoder 22 | from sklearn import svm 23 | 24 | def read(name): 25 | train = pd.read_csv(name, header=0) 26 | return train 27 | 28 | def cleandata(name): 29 | letter=[] 30 | word=[] 31 | for i in range(len(name)): 32 | letters_only = re.sub("[^a-zA-Z]", " ", name[i][0]) 33 | words = name[i][0].lower().split() 34 | letter.append(letters_only) 35 | word.append(words) 36 | stops = set(stopwords.words("english")) 37 | meaningful_words = [w for w in words if not w in stops] 38 | return( " ".join( meaningful_words )) 39 | 40 | def bag_of_words(name): 41 | vectorizer = CountVectorizer(analyzer = "word", \ 42 | tokenizer = None,\ 43 | preprocessor = None, \ 44 | stop_words = None, \ 45 | max_features = 10 ) 46 | train_data_features= map(vectorizer.fit_transform,name) 47 | return(train_data_features) 48 | 49 | def letters_only(name): 50 | final=[] 51 | for i in range(len(name["questions"])): 52 | letters_only = re.sub("[^a-zA-Z]", " ", name["questions"][i]) 53 | final.append(letters_only) 54 | return final 55 | 56 | def check_percentage(name): 57 | if "%" in name: 58 | return 1 59 | elif "percentage" in name: 60 | return 1 61 | else: 62 | return 0 63 | 64 | def hey(name): 65 | vectorizer = CountVectorizer(analyzer = "word", \ 66 | tokenizer = None,\ 67 | preprocessor = None, \ 68 | stop_words = None, \ 69 | max_features = 5000) 70 | vocab = vectorizer.get_feature_names() 71 | dist = np.sum(name, axis=0) 72 | for tag, count in zip(vocab, dist): 73 | print(tag) 74 | print(count) 75 | 76 | #def insert(name): 77 | # l,h=name.shape 78 | # for i in range(len(name)): 79 | # name["Equations"][i]="n" 80 | # for key,value in globals().iteritems(): 81 | # if type(value)==list and value==["questions","Equations"]: 82 | # print(key) 83 | # print("o") 84 | # print("ak") 85 | # return name 86 | 87 | a=input("enter question") 88 | r=check_percentage(a) 89 | if(r==1): 90 | print("classified as percentage") 91 | percentage=read("Percentage.csv") 92 | unitary=read("unitary.csv") 93 | dst=read("dst.csv") 94 | profit=read("profit.csv") 95 | #percentage_final=insert(percentage) 96 | #l,h=percentage.shape 97 | #print(percentage[1][1]) 98 | #l,h=percentage.shape 99 | #for i in range(len(percentage)): 100 | # percentage["Equations"][i]="percentage" 101 | # 102 | #l,h=dst.shape 103 | #for i in range(len(dst)): 104 | # dst["Equations"][i]="dst" 105 | # 106 | #l,h=profit.shape 107 | #for i in range(len(profit)): 108 | # profit["Equations"][i]="profit" 109 | # 110 | #l,h=unitary.shape 111 | #for i in range(len(unitary)): 112 | # unitary["Equations"][i]="unitary" 113 | # 114 | traininglist=[] 115 | 116 | stop_words = set(stopwords.words("english")) 117 | l_unitary=letters_only(unitary) 118 | l_dst=letters_only(dst) 119 | 120 | final=[] 121 | for i in range(len(l_unitary)): 122 | for sent in sent_tokenize(l_unitary[i]): 123 | words = word_tokenize(sent) 124 | filtered_sentence = [w for w in words if not w in stop_words] 125 | final.append(filtered_sentence) 126 | unit=final 127 | print("done after unitary cleaning") 128 | 129 | final=[] 130 | 131 | for i in range(len(l_dst)): 132 | for sent in sent_tokenize(l_dst[i]): 133 | words = word_tokenize(sent) 134 | filtered_sentence = [w for w in words if not w in stop_words] 135 | final.append(filtered_sentence) 136 | 137 | ds=final 138 | values = ','.join(str(v) for v in final) 139 | print("after dst cleaning") 140 | 141 | feature_ds=np.array(list(bag_of_words(ds))) 142 | feature_unit=np.array(list(bag_of_words(unit))) 143 | c=np.concatenate((feature_ds,feature_unit)) 144 | print (list(bag_of_words(ds))) 145 | a = np.zeros(shape=(200,2)) 146 | p=[] 147 | for i in range(len(feature_ds)): 148 | p.append("ds") 149 | j=i+1 150 | 151 | for i in range(len(feature_unit)): 152 | p.append("unit") 153 | print(c.shape) 154 | print(p.shape) 155 | clf = svm.SVC(kernel='linear', C = 1.0) 156 | clf.fit(c,p) 157 | 158 | #forest = RandomForestClassifier(n_estimators = 100) 159 | #forest = forest.fit(c,p) 160 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | import json 2 | import requests 3 | import time 4 | import urllib 5 | import sys 6 | 7 | 8 | sys.path.insert(0, 'solver') 9 | import SI 10 | 11 | TOKEN = "441560082:AAEIdBz5_y0gfY-DgAbJ2TuJbWy3EVZeN9c" 12 | URL = "https://api.telegram.org/bot{}/".format(TOKEN) 13 | 14 | 15 | def get_url(url): 16 | response = requests.get(url) 17 | content = response.content.decode("utf8") 18 | return content 19 | 20 | 21 | def get_json_from_url(url): 22 | content = get_url(url) 23 | js = json.loads(content) 24 | return js 25 | 26 | 27 | def get_updates(offset=None): 28 | url = URL + "getUpdates" 29 | if offset: 30 | url += "?offset={}".format(offset) 31 | js = get_json_from_url(url) 32 | return js 33 | 34 | 35 | def get_last_update_id(updates): 36 | update_ids = [] 37 | for update in updates["result"]: 38 | update_ids.append(int(update["update_id"])) 39 | return max(update_ids) 40 | 41 | 42 | def echo_all(updates): 43 | for update in updates["result"]: 44 | text = SI.mainp(update["message"]["text"]) 45 | chat = update["message"]["chat"]["id"] 46 | send_message(text, chat) 47 | 48 | 49 | def get_last_chat_id_and_text(updates): 50 | num_updates = len(updates["result"]) 51 | last_update = num_updates - 1 52 | text = updates["result"][last_update]["message"]["text"] 53 | chat_id = updates["result"][last_update]["message"]["chat"]["id"] 54 | return (text, chat_id) 55 | 56 | 57 | def send_message(text, chat_id): 58 | text = urllib.parse.quote_plus(text) 59 | url = URL + "sendMessage?text={}&chat_id={}".format(text, chat_id) 60 | get_url(url) 61 | 62 | 63 | def main(): 64 | last_update_id = None 65 | while True: 66 | updates = get_updates(last_update_id) 67 | if len(updates["result"]) > 0: 68 | last_update_id = get_last_update_id(updates) + 1 69 | echo_all(updates) 70 | time.sleep(0.5) 71 | 72 | 73 | if __name__ == '__main__': 74 | main() -------------------------------------------------------------------------------- /oldMain.py: -------------------------------------------------------------------------------- 1 | import falcon 2 | import json 3 | import sys 4 | import codecs 5 | import urllib 6 | import html 7 | import time 8 | import requests 9 | 10 | 11 | #from BeautifulSoup import BeautifulSoup 12 | 13 | sys.path.insert(0, 'solver') 14 | import SI 15 | 16 | TOKEN = "441560082:AAEIdBz5_y0gfY-DgAbJ2TuJbWy3EVZeN9c" 17 | URL = "https://api.telegram.org/bot{}/".format(TOKEN) 18 | 19 | 20 | class ThingsResource(object): 21 | def on_get(self, req, resp,filename): 22 | """Handles GET requests""" 23 | resp.status = falcon.HTTP_200 24 | resp.content_type = 'text/html' 25 | with open(filename, 'r') as f: 26 | resp.body = f.read() 27 | 28 | class Starting(object): 29 | #def on_get(self, req, resp): 30 | # p = ('\nTwo things awe me most, the starry sky ' 31 | # 'above me and the moral law within me.\n' 32 | # '\n' 33 | # ' ~ Immanuel Kant\n\n') 34 | # print("p") 35 | 36 | def on_post(self,req,resp): 37 | t0 = time.time() 38 | print("called\n\n") 39 | data=req.stream.read() 40 | print(data) 41 | print("\n\n\nnow printing resolved \n\n") 42 | data=data.decode() 43 | 44 | data=json.loads(data) 45 | 46 | print(data["result"]["resolvedQuery"]) 47 | answer=SI.mainp(data["result"]["resolvedQuery"]) 48 | answer=str(answer) 49 | print(answer) 50 | d={} 51 | d["type"]=0 52 | d["siaplayText"]="The answer is "+str(answer) 53 | d["speech"]="The answer is "+str(answer) 54 | d["answer"]=answer 55 | 56 | resp.body = json.dumps(d, ensure_ascii=False) 57 | resp.status = falcon.HTTP_200 58 | t1 = time.time() 59 | total = t1-t0 60 | print("\n\n\n\n time taken") 61 | print(total) 62 | app = falcon.API() 63 | things = ThingsResource() 64 | thi = Starting() 65 | 66 | app.add_route('/things/{filename}', things) 67 | app.add_route('/things',thi) 68 | -------------------------------------------------------------------------------- /solver/SI.py: -------------------------------------------------------------------------------- 1 | import common_functions 2 | import findAnswer_SI 3 | 4 | def find(question,name): 5 | sen_list=common_functions.sent_tokenize(name) 6 | no_sen=common_functions.nltk.FreqDist(common_functions.sent_tokenize(name)).N() 7 | final=[] 8 | j=0 9 | print(name) 10 | print(no_sen) 11 | if(no_sen==1): 12 | j=0 13 | fin=0 14 | for i in question: 15 | if(fin==0): 16 | j=j+1 17 | if(i[1]=="WDT" or i[1]=="WRB" or i[0]=="find" or i[1]=="WP" or i[0]=="Find" or i[0]=="FIND" or i[0]=="Calculate" or i[0]=="calculate" ): 18 | fin=1 19 | print("n") 20 | while(i[1]!="MD" or i[0]=="." or i[0]=="?"): 21 | if (i[0]=="." or i[0]=="?"): 22 | break 23 | print(i[0]) 24 | final.append(i[0]) 25 | i=question[j] 26 | j=j+1 27 | else: 28 | j=0 29 | print(question) 30 | fin=0 31 | for i in question: 32 | if(fin==0): 33 | j=j+1 34 | if(i[1]=="WDT" or i[1]=="WRB" or i[1]=="WP"or i[0]=="find" or i[0]=="Find" or i[0]=="Calculate" or i[0]=="calculate"): 35 | fin=1 36 | while(i[1]!="." or i[1]!="?"): 37 | print(i[0]) 38 | if (i[0]=="." or i[0]=="?"): 39 | break 40 | final.append(i[0]) 41 | i=question[j] 42 | j=j+1 43 | 44 | p=0 45 | print(final) 46 | for i in final: 47 | if(i=="time" and p==0): 48 | print("time") 49 | p=1 50 | return 0 51 | for i in final: 52 | if(i=="rate" and p==0): 53 | print("rate") 54 | p=1 55 | return 1 56 | for i in final: 57 | if(i=="principal" and p==0): 58 | print("principal") 59 | p=1 60 | return 2 61 | for i in final: 62 | if(i=="interest" and p==0): 63 | print("int") 64 | p=1 65 | return 3 66 | for i in final: 67 | if(i=="amount" or i=="total" and p==0): 68 | print("amount") 69 | p=1 70 | return 5 71 | if(p==0): 72 | return 4 73 | 74 | def main(input_question): 75 | print(input_question) 76 | pattern=common_functions.read("Data/pattern.csv") 77 | question=input_question 78 | tagged_question=common_functions.pos_tagger.tag(common_functions.nltk.word_tokenize(question)) 79 | result = common_functions.dependency_parser.raw_parse(question) 80 | doc = common_functions.nlp(question) 81 | print(tagged_question) 82 | unknown=find(tagged_question,question) 83 | time=0 84 | rate=0 85 | 86 | #Find the rate of percentage and time given in the question 87 | for ent in doc.ents: 88 | print(ent.label_, ent.text) 89 | if(ent.label_=="PERCENT" and rate==0): 90 | frate=ent.text 91 | rate=common_functions.clean(frate) 92 | print(rate) 93 | rate=common_functions.isfloat(rate) 94 | elif(ent.label_=="DATE" and time==0): 95 | t=ent.text 96 | time=common_functions.clean(t) 97 | time=common_functions.isfloat(time) 98 | 99 | #Find number of amounts given in the question 100 | p=0 101 | for ent in doc.ents: 102 | if(ent.label_=="MONEY"): 103 | p=p+1 104 | loops=p 105 | dependency = result.__next__() 106 | if (p==1): 107 | print("abc1") 108 | print(findAnswer_SI.oneMoney(dependency,doc,pattern,unknown,rate,time)) 109 | print("abc2") 110 | return str(findAnswer_SI.oneMoney(dependency,doc,pattern,unknown,rate,time)) 111 | 112 | elif(p>1): 113 | print(findAnswer_SI.moreMoney(dependency,doc,pattern,unknown,rate,time)) 114 | return str(findAnswer_SI.moreMoney(dependency,doc,pattern,unknown,rate,time)) 115 | 116 | print("App is running") 117 | -------------------------------------------------------------------------------- /solver/SIformula.py: -------------------------------------------------------------------------------- 1 | def find_principal(rate,interest,time): 2 | float(interest) 3 | float(rate) 4 | if(time==0): 5 | time=1 6 | float(time) 7 | print(rate,interest,time) 8 | p=(interest*100) 9 | q=(rate*time) 10 | q=float(q) 11 | n=p/q 12 | return n 13 | 14 | def find_si(p,r,t): 15 | p=float(p) 16 | r=float(r) 17 | if(t==0): 18 | t=1 19 | t=float(t) 20 | si=p*r*t 21 | si=si/100 22 | print("Simple interest=") 23 | return si 24 | 25 | def find_time(p,r,si): 26 | print(p,r,si) 27 | t=(si*100)/(p*r) 28 | print("Time=") 29 | return t 30 | 31 | def find_rate(p,t,si): 32 | if(t==0): 33 | t=1 34 | r=(si*100)/(p*t) 35 | print("rate is") 36 | return r 37 | 38 | def find_amt(interest,principal): 39 | print("finding amount") 40 | amount=interest+principal 41 | print("amount is") 42 | return amount 43 | -------------------------------------------------------------------------------- /solver/common_functions.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | import nltk 4 | from nltk.tag import StanfordNERTagger 5 | from nltk import word_tokenize 6 | from nltk.tag import StanfordPOSTagger 7 | from nltk.parse.stanford import StanfordParser 8 | from nltk.parse.stanford import StanfordDependencyParser 9 | from nltk.tokenize import sent_tokenize, word_tokenize 10 | import spacy 11 | from sklearn import svm 12 | from sklearn import preprocessing 13 | from difflib import SequenceMatcher 14 | import re 15 | 16 | 17 | jar = 'libs/stanford-postagger-full/stanford-postagger.jar' 18 | model = 'libs/stanford-postagger-full/models/english-left3words-distsim.tagger' 19 | pos_tagger = StanfordPOSTagger(model, jar, encoding='utf8') 20 | 21 | path_to_jar = 'libs/stanford-parser-full/stanford-parser.jar' 22 | path_to_models_jar = 'libs/stanford-parser-full/stanford-parser-3.8.0-models.jar' 23 | dependency_parser = StanfordDependencyParser(path_to_jar=path_to_jar, path_to_models_jar=path_to_models_jar) 24 | nlp = spacy.load('en') 25 | 26 | 27 | def clean(text): 28 | money = text.replace(',', '') 29 | rate=re.findall(r"[-+]?\d*\.\d+|\d+", money) 30 | if rate==[]: 31 | return 0 32 | else: 33 | return rate[0] 34 | 35 | def traindata(): 36 | training=[] 37 | nlp = spacy.load('en') 38 | for i in range(len(si)): 39 | doc = nlp(si["Question"][i]) 40 | result = dependency_parser.raw_parse(si["Question"][i]) 41 | dep = result.__next__() 42 | cool=list(dep.triples()) 43 | for triple in dep.triples(): 44 | for ent in doc.ents: 45 | if(triple[0][0]==ent.text or triple[2][0]==ent.text and ent.label_=="MONEY"): 46 | print(triple[1],"(",triple[0][0],", ",triple[2][0],")") 47 | training.append(triple) 48 | for i in training: 49 | print(i) 50 | w, h = len(si)*2,2; 51 | Matrix = [[0 for x in range(w)] for y in range(h)] 52 | print(len(Matrix)) 53 | for i in range(len(si)): 54 | p=-1 55 | doc = nlp(si["Question"][i]) 56 | for ent in doc.ents: 57 | if(ent.label_=="MONEY"): 58 | p=p+i 59 | Matrix[p][0]=ent.text 60 | Matrix[p][1]=si["tags"][i] 61 | print(Matrix) 62 | 63 | 64 | def read(name): 65 | train = pd.read_csv(name, header=0) 66 | return train 67 | 68 | def isfloat(x): 69 | try: 70 | a = float(x) 71 | except ValueError: 72 | p=int(x) 73 | l=float(p) 74 | return l 75 | else: 76 | return a 77 | -------------------------------------------------------------------------------- /solver/findAnswer_SI.py: -------------------------------------------------------------------------------- 1 | import common_functions 2 | import SIformula 3 | 4 | def oneMoney(dep,doc,pattern,unknown,rate,time): 5 | interest=0 6 | principal=0 7 | amount=0 8 | ratios=[] 9 | for triple in dep.triples(): 10 | q_dep=[] 11 | for ent in doc.ents: 12 | if(ent.label_=="MONEY"): 13 | pq=common_functions.clean(ent.text) 14 | com=common_functions.clean(triple[0][0]) 15 | com1=common_functions.clean(triple[2][0]) 16 | if(com==pq or com1==pq): 17 | money=pq 18 | q_dep.append(triple) 19 | q_dep = str(q_dep) 20 | 21 | #Matching with the closest pattern and classifying money as SI, principal or amount 22 | for i in range(len(pattern)): 23 | m=common_functions.SequenceMatcher(None,pattern["pattern"][i],q_dep) 24 | q=m.ratio() 25 | ratios.append(q) 26 | 27 | mx=max(ratios) 28 | ino=ratios.index(mx) 29 | answer=pattern["tag"][ino] 30 | print("printing tagged") 31 | print(answer,money) 32 | if(answer=="p" and (unknown==3 or unknown==5)): 33 | principal=money 34 | principal=common_functions.isfloat(principal) 35 | 36 | elif(answer=="si" and unknown==2 or unknown==5): 37 | interest=money 38 | interest=common_functions.isfloat(interest) 39 | 40 | elif(answer=="p" and unknown==2): 41 | interest=money 42 | interest=common_functions.isfloat(interest) 43 | 44 | elif(answer=="si" and unknown==3): 45 | principal=money 46 | principal=common_functions.isfloat(principal) 47 | 48 | elif(unknown==4 and answer=="si"): 49 | interest=money 50 | interest=common_functions.isfloat(interest) 51 | unknown=2 52 | 53 | elif(unknown==4 and answer=="p"): 54 | principal=money 55 | principal=common_functions.isfloat(principal) 56 | unknown=3 57 | 58 | if(unknown==2): 59 | print("principal=") 60 | 61 | answer=SIformula.find_principal(rate,interest,time) 62 | print(answer) 63 | elif(unknown==3): 64 | answer=SIformula.find_si(principal,rate,time) 65 | print(answer) 66 | elif(unknown==5): 67 | if(principal==0): 68 | print("principal=") 69 | prin=SIformula.find_principal(rate,interest,time) 70 | answer=SIformula.find_amt(interest,prin) 71 | print(answer) 72 | elif(interest==0): 73 | interest=SIformula.find_si(principal,rate,time) 74 | answer=SIformula.find_amt(interest,principal) 75 | print(answer) 76 | return answer 77 | 78 | def moreMoney(dep,doc,pattern,unknown,rate,time): 79 | q_dep=[] 80 | interest=0 81 | principal=0 82 | amount=0 83 | ratios=[] 84 | for ent in doc.ents: 85 | if(ent.label_=="MONEY"): 86 | print(principal,interest,amount) 87 | q_dep=[] 88 | for triple in dep.triples(): 89 | pq=common_functions.clean(ent.text) 90 | com=common_functions.clean(triple[0][0]) 91 | com1=common_functions.clean(triple[2][0]) 92 | if(com==pq or com1==pq): 93 | money=pq 94 | q_dep.append(triple) 95 | q_dep = str(q_dep) 96 | for i in range(len(pattern)): 97 | m=SequenceMatcher(None,pattern["pattern"][i],q_dep) 98 | q=m.ratio() 99 | ratios.append(q) 100 | mx=max(ratios) 101 | ino=ratios.index(mx) 102 | answer=pattern["tag"][ino] 103 | print(answer,unknown) 104 | 105 | if(answer=="a" and unknown!=5 and amount==0): 106 | amount=money 107 | amount=common_functions.isfloat(amount) 108 | 109 | elif(answer=="a" and unknown==5 or amount!=0): 110 | for i in range(len(pattern)): 111 | if(pattern["tag"][i]!="a"): 112 | m=SequenceMatcher(None,pattern["pattern"][i],q_dep) 113 | q=m.ratio() 114 | ratios.append(q) 115 | mx=max(ratios) 116 | ino=ratios.index(mx) 117 | answer=pattern["tag"][ino] 118 | 119 | elif(answer=="si" and unknown!=3 and interest==0): 120 | print("tagging int") 121 | interest=money 122 | interest=common_functions.isfloat(interest) 123 | print(interest) 124 | 125 | elif(answer=="si" and unknown==3 or interest!=0): 126 | q=0 127 | maxo=0 128 | for i in range(len(pattern)): 129 | if(pattern["tag"][i]=="p" or pattern["tag"][i]=="a"): 130 | m=SequenceMatcher(None,pattern["pattern"][i],q_dep) 131 | q=m.ratio() 132 | if(q>=maxo): 133 | maxo=q 134 | maxoindex=i 135 | answer=pattern["tag"][maxoindex] 136 | if(answer=="p"): 137 | principal=money 138 | principal=common_functions.isfloat(principal) 139 | elif(answer=="a"): 140 | amount=money 141 | amount=common_functions.isfloat(amount) 142 | 143 | elif(answer=="p" and unknown!=2 and principal==0): 144 | principal=money 145 | principal=common_functions.isfloat(principal) 146 | 147 | elif(answer=="p" and (unknown==2 or principal!=0)): 148 | q=0 149 | maxo=0 150 | for i in range(len(pattern)): 151 | if(pattern["tag"][i]=="si" or pattern["tag"][i]=="a"): 152 | m=SequenceMatcher(None,pattern["pattern"][i],q_dep) 153 | q=m.ratio() 154 | if(q>=maxo): 155 | maxo=q 156 | maxoindex=i 157 | answer=pattern["tag"][maxoindex] 158 | print(answer) 159 | if(answer=="si"): 160 | interest=money 161 | interest=common_functions.isfloat(interest) 162 | elif(answer=="a"): 163 | q=common_functions.re.search(r'interest of \d+',question) 164 | w=common_functions.re.search(r'\d+ as interest',question) 165 | if(q or w and interest==0): 166 | interest=money 167 | interest=common_functions.isfloat(interest) 168 | else: 169 | amount=money 170 | amount=common_functions.isfloat(amount) 171 | 172 | print(principal,interest,amount) 173 | if(interest!=0 and principal!=0 and unknown==5): 174 | amount=principal+interest 175 | print(amount) 176 | elif(unknown==0): 177 | if(interest!=0 and principal!=0): 178 | answer=SIformula.find_time(principal,rate,interest) 179 | print(answer) 180 | elif(amount!=0 and principal!=0): 181 | interest=amount-principal 182 | answer=SIformula.find_time(principal,rate,interest) 183 | print(answer) 184 | elif(amount!=0 and interest!=0): 185 | principal=amount-interest 186 | answer=SIformula.find_time(principal,rate,interest) 187 | print(answer) 188 | elif(unknown==1): 189 | if(interest!=0 and principal!=0): 190 | answer=SIformula.find_rate(principal,time,interest) 191 | print(answer) 192 | elif(amount!=0 and principal!=0): 193 | interest=amount-principal 194 | answer=SIformula.find_rate(principal,time,interest) 195 | print(answer) 196 | elif(amount!=0 and interest!=0): 197 | principal=amount-interest 198 | answer=SIformula.find_rate(principal,time,interest) 199 | print(answer) 200 | if 'answer' not in locals(): 201 | answer = "No small talk just ask, a simple interest question." # nope 202 | return answer -------------------------------------------------------------------------------- /solver/pattern.csv: -------------------------------------------------------------------------------- 1 | pattern,tag 2 | "(('interest', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('years', 'NNS'))",si 3 | "(('interest', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))",si 4 | "(('Find', 'VBP'), 'nsubj', ('', 'CD')),(('', 'CD'), 'dep', ('$', '$')),(('', 'CD'), 'acl:relcl', ('invested', 'VBN'))",p 5 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('given', 'VBN'))",p 6 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('borrowed', 'VBN'))",p 7 | "(('interest', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('years', 'NNS'))",si 8 | "(('sum', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))",p 9 | "(('', 'NNP'), 'case', (""'s"", 'POS'))(('', 'NNP'), 'case', (""'s"", 'POS'))(('', 'CD'), 'dep', ('#', '#'))(('', 'CD'), 'nmod', ('account', 'NN'))",p 10 | "(('worth', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('years', 'NNS'))",p 11 | "(('sum', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))",p 12 | "(('amounts', 'NNS'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('to', 'TO'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('years', 'NNS'))",a 13 | "(('interest', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))",si 14 | "(('interest', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('amount', 'NN'))",si 15 | "(('was', 'VBD'), 'advcl', ('', 'CD'))(('', 'CD'), 'mark', ('If', 'IN'))(('', 'CD'), 'nsubj', ('interest', 'NN'))(('', 'CD'), 'cop', ('was', 'VBD'))(('', 'CD'), 'dep', ('$', '$'))",si 16 | "(('will', 'VB'), 'dep', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))",p 17 | "(('will', 'VB'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('to', 'TO'))(('', 'CD'), 'dep', ('$', '$'))",a 18 | "(('interest', 'NN'), 'nmod', (‘’, 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'nmod', ('years', 'NNS'))",si 19 | "(('sum', 'NN'), 'nmod', ('', 'CD'))(('', 'CD'), 'case', ('of', 'IN'))(('', 'CD'), 'dep', ('$', '$'))",p 20 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('borrowed', 'VBN'))",p 21 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('borrowed', 'VBN'))",p 22 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('given', 'VBN'))",p 23 | "(('Find', 'VBP'), 'nsubj', ('', 'CD'))(('', 'CD'), 'dep', ('$', '$'))(('', 'CD'), 'acl:relcl', ('invested', 'VBN'))",p 24 | -------------------------------------------------------------------------------- /solver/unitary.py: -------------------------------------------------------------------------------- 1 | import numpy as np 2 | import pandas as pd 3 | from sklearn import datasets,preprocessing,linear_model 4 | import nltk 5 | from nltk.classify import ClassifierI 6 | from nltk.tokenize import sent_tokenize,word_tokenize 7 | from nltk.parse.stanford import StanfordDependencyParser 8 | from nltk.parse.stanford import StanfordParser 9 | from nltk.internals import find_jars_within_path 10 | import csv 11 | import sys 12 | import re 13 | from sklearn.feature_extraction.text import CountVectorizer 14 | from bs4 import BeautifulSoup 15 | from nltk.corpus import stopwords 16 | from nltk.tokenize import word_tokenize, sent_tokenize 17 | from sklearn.feature_extraction.text import CountVectorizer 18 | from sklearn.feature_extraction.text import TfidfVectorizer 19 | import pickle 20 | from sklearn.ensemble import RandomForestClassifier 21 | from sklearn.preprocessing import LabelEncoder 22 | 23 | def read(name): 24 | train = pd.read_csv(name, header=0) 25 | return train 26 | 27 | 28 | file=read("UnitaryMethod.csv") 29 | print(file) 30 | 31 | -------------------------------------------------------------------------------- /template/css/font-awesome.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.2.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"} -------------------------------------------------------------------------------- /template/css/skel.css: -------------------------------------------------------------------------------- 1 | /* Resets (http://meyerweb.com/eric/tools/css/reset/ | v2.0 | 20110126 | License: none (public domain)) */ 2 | 3 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block;}body{line-height:1;}ol,ul{list-style:none;}blockquote,q{quotes:none;}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}table{border-collapse:collapse;border-spacing:0;}body{-webkit-text-size-adjust:none} 4 | 5 | /* Box Model */ 6 | 7 | *, *:before, *:after { 8 | -moz-box-sizing: border-box; 9 | -webkit-box-sizing: border-box; 10 | box-sizing: border-box; 11 | } 12 | 13 | /* Container */ 14 | 15 | .container { 16 | margin-left: auto; 17 | margin-right: auto; 18 | 19 | /* width: (containers) */ 20 | width: 1200px; 21 | } 22 | 23 | /* Modifiers */ 24 | 25 | /* 125% */ 26 | .container.\31 25\25 { 27 | width: 100%; 28 | 29 | /* max-width: (containers * 1.25) */ 30 | max-width: 1500px; 31 | 32 | /* min-width: (containers) */ 33 | min-width: 1200px; 34 | } 35 | 36 | /* 75% */ 37 | .container.\37 5\25 { 38 | 39 | /* width: (containers * 0.75) */ 40 | width: 900px; 41 | 42 | } 43 | 44 | /* 50% */ 45 | .container.\35 0\25 { 46 | 47 | /* width: (containers * 0.50) */ 48 | width: 600px; 49 | 50 | } 51 | 52 | /* 25% */ 53 | .container.\32 5\25 { 54 | 55 | /* width: (containers * 0.25) */ 56 | width: 300px; 57 | 58 | } 59 | 60 | /* Grid */ 61 | 62 | .row { 63 | border-bottom: solid 1px transparent; 64 | } 65 | 66 | .row > * { 67 | float: left; 68 | } 69 | 70 | .row:after, .row:before { 71 | content: ''; 72 | display: block; 73 | clear: both; 74 | height: 0; 75 | } 76 | 77 | .row.uniform > * > :first-child { 78 | margin-top: 0; 79 | } 80 | 81 | .row.uniform > * > :last-child { 82 | margin-bottom: 0; 83 | } 84 | 85 | /* Gutters */ 86 | 87 | /* Normal */ 88 | 89 | .row > * { 90 | /* padding: (gutters.horizontal) 0 0 (gutters.vertical) */ 91 | padding: 0 0 0 2em; 92 | } 93 | 94 | .row { 95 | /* margin: -(gutters.horizontal) 0 -1px -(gutters.vertical) */ 96 | margin: 0 0 -1px -2em; 97 | } 98 | 99 | .row.uniform > * { 100 | /* padding: (gutters.vertical) 0 0 (gutters.vertical) */ 101 | padding: 2em 0 0 2em; 102 | } 103 | 104 | .row.uniform { 105 | /* margin: -(gutters.vertical) 0 -1px -(gutters.vertical) */ 106 | margin: -2em 0 -1px -2em; 107 | } 108 | 109 | /* 200% */ 110 | 111 | .row.\32 00\25 > * { 112 | /* padding: (gutters.horizontal) 0 0 (gutters.vertical) */ 113 | padding: 0 0 0 4em; 114 | } 115 | 116 | .row.\32 00\25 { 117 | /* margin: -(gutters.horizontal) 0 -1px -(gutters.vertical) */ 118 | margin: 0 0 -1px -4em; 119 | } 120 | 121 | .row.uniform.\32 00\25 > * { 122 | /* padding: (gutters.vertical) 0 0 (gutters.vertical) */ 123 | padding: 4em 0 0 4em; 124 | } 125 | 126 | .row.uniform.\32 00\25 { 127 | /* margin: -(gutters.vertical) 0 -1px -(gutters.vertical) */ 128 | margin: -4em 0 -1px -4em; 129 | } 130 | 131 | /* 150% */ 132 | 133 | .row.\31 50\25 > * { 134 | /* padding: (gutters.horizontal) 0 0 (gutters.vertical) */ 135 | padding: 0 0 0 1.5em; 136 | } 137 | 138 | .row.\31 50\25 { 139 | /* margin: -(gutters.horizontal) 0 -1px -(gutters.vertical) */ 140 | margin: 0 0 -1px -1.5em; 141 | } 142 | 143 | .row.uniform.\31 50\25 > * { 144 | /* padding: (gutters.vertical) 0 0 (gutters.vertical) */ 145 | padding: 1.5em 0 0 1.5em; 146 | } 147 | 148 | .row.uniform.\31 50\25 { 149 | /* margin: -(gutters.vertical) 0 -1px -(gutters.vertical) */ 150 | margin: -1.5em 0 -1px -1.5em; 151 | } 152 | 153 | /* 50% */ 154 | 155 | .row.\35 0\25 > * { 156 | /* padding: (gutters.horizontal) 0 0 (gutters.vertical) */ 157 | padding: 0 0 0 1em; 158 | } 159 | 160 | .row.\35 0\25 { 161 | /* margin: -(gutters.horizontal) 0 -1px -(gutters.vertical) */ 162 | margin: 0 0 -1px -1em; 163 | } 164 | 165 | .row.uniform.\35 0\25 > * { 166 | /* padding: (gutters.vertical) 0 0 (gutters.vertical) */ 167 | padding: 1em 0 0 1em; 168 | } 169 | 170 | .row.uniform.\35 0\25 { 171 | /* margin: -(gutters.vertical) 0 -1px -(gutters.vertical) */ 172 | margin: -1em 0 -1px -1em; 173 | } 174 | 175 | /* 25% */ 176 | 177 | .row.\32 5\25 > * { 178 | /* padding: (gutters.horizontal) 0 0 (gutters.vertical) */ 179 | padding: 0 0 0 0.5em; 180 | } 181 | 182 | .row.\32 5\25 { 183 | /* margin: -(gutters.horizontal) 0 -1px -(gutters.vertical) */ 184 | margin: 0 0 -1px -0.5em; 185 | } 186 | 187 | .row.uniform.\32 5\25 > * { 188 | /* padding: (gutters.vertical) 0 0 (gutters.vertical) */ 189 | padding: 0.5em 0 0 0.5em; 190 | } 191 | 192 | .row.uniform.\32 5\25 { 193 | /* margin: -(gutters.vertical) 0 -1px -(gutters.vertical) */ 194 | margin: -0.5em 0 -1px -0.5em; 195 | } 196 | 197 | /* 0% */ 198 | 199 | .row.\30 \25 > * { 200 | padding: 0; 201 | } 202 | 203 | .row.\30 \25 { 204 | margin: 0 0 -1px 0; 205 | } 206 | 207 | /* Cells */ 208 | 209 | .\31 2u, .\31 2u\24 { width: 100%; clear: none; margin-left: 0; } 210 | .\31 1u, .\31 1u\24 { width: 91.6666666667%; clear: none; margin-left: 0; } 211 | .\31 0u, .\31 0u\24 { width: 83.3333333333%; clear: none; margin-left: 0; } 212 | .\39 u, .\39 u\24 { width: 75%; clear: none; margin-left: 0; } 213 | .\38 u, .\38 u\24 { width: 66.6666666667%; clear: none; margin-left: 0; } 214 | .\37 u, .\37 u\24 { width: 58.3333333333%; clear: none; margin-left: 0; } 215 | .\36 u, .\36 u\24 { width: 50%; clear: none; margin-left: 0; } 216 | .\35 u, .\35 u\24 { width: 41.6666666667%; clear: none; margin-left: 0; } 217 | .\34 u, .\34 u\24 { width: 33.3333333333%; clear: none; margin-left: 0; } 218 | .\33 u, .\33 u\24 { width: 25%; clear: none; margin-left: 0; } 219 | .\32 u, .\32 u\24 { width: 16.6666666667%; clear: none; margin-left: 0; } 220 | .\31 u, .\31 u\24 { width: 8.3333333333%; clear: none; margin-left: 0; } 221 | 222 | .\31 2u\24 + *, 223 | .\31 1u\24 + *, 224 | .\31 0u\24 + *, 225 | .\39 u\24 + *, 226 | .\38 u\24 + *, 227 | .\37 u\24 + *, 228 | .\36 u\24 + *, 229 | .\35 u\24 + *, 230 | .\34 u\24 + *, 231 | .\33 u\24 + *, 232 | .\32 u\24 + *, 233 | .\31 u\24 + * { 234 | clear: left; 235 | } 236 | 237 | .\-11u { margin-left: 91.6666666667% } 238 | .\-10u { margin-left: 83.3333333333% } 239 | .\-9u { margin-left: 75% } 240 | .\-8u { margin-left: 66.6666666667% } 241 | .\-7u { margin-left: 58.3333333333% } 242 | .\-6u { margin-left: 50% } 243 | .\-5u { margin-left: 41.6666666667% } 244 | .\-4u { margin-left: 33.3333333333% } 245 | .\-3u { margin-left: 25% } 246 | .\-2u { margin-left: 16.6666666667% } 247 | .\-1u { margin-left: 8.3333333333% } -------------------------------------------------------------------------------- /template/css/style-large.css: -------------------------------------------------------------------------------- 1 | /* 2 | Transit by TEMPLATED 3 | templated.co @templatedco 4 | Released for free under the Creative Commons Attribution 3.0 license (templated.co/license) 5 | */ -------------------------------------------------------------------------------- /template/css/style-medium.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | 3 | /* 4 | Transit by TEMPLATED 5 | templated.co @templatedco 6 | Released for free under the Creative Commons Attribution 3.0 license (templated.co/license) 7 | */ 8 | 9 | /* Basic */ 10 | 11 | body, input, select, textarea { 12 | font-size: 12pt; 13 | } 14 | 15 | header.major h2 { 16 | font-size: 2.25em; 17 | } 18 | 19 | header.major p { 20 | font-size: 1.25em; 21 | } 22 | 23 | /* Header */ 24 | 25 | #skel-layers-wrapper { 26 | padding-top: 0; 27 | } 28 | 29 | #header { 30 | display: none; 31 | } 32 | 33 | /* Banner */ 34 | 35 | #banner { 36 | padding: 6em 0em 6em; 37 | } 38 | 39 | #banner h2 { 40 | font-size: 2.25em; 41 | } 42 | 43 | #banner p { 44 | font-size: 1.25em; 45 | } 46 | 47 | /* Layers */ 48 | 49 | #navButton .toggle { 50 | text-decoration: none; 51 | height: 100%; 52 | left: 0; 53 | position: absolute; 54 | top: 0; 55 | width: 100%; 56 | } 57 | 58 | #navButton .toggle:before { 59 | content: ""; 60 | -moz-osx-font-smoothing: grayscale; 61 | -webkit-font-smoothing: antialiased; 62 | font-family: FontAwesome; 63 | font-style: normal; 64 | font-weight: normal; 65 | text-transform: none !important; 66 | } 67 | 68 | #navButton .toggle:before { 69 | background: rgba(144, 144, 144, 0.65); 70 | border-radius: 4px; 71 | color: #fff; 72 | display: block; 73 | font-size: 16px; 74 | height: 2.25em; 75 | left: 0.5em; 76 | line-height: 2.25em; 77 | position: absolute; 78 | text-align: center; 79 | top: 0.5em; 80 | width: 3.5em; 81 | } 82 | 83 | #navPanel { 84 | background: rgba(255, 255, 255, 0.975); 85 | color: #444; 86 | border-right: solid 1px rgba(144, 144, 144, 0.25); 87 | box-shadow: 0.5em 0 2em 0 rgba(0, 0, 0, 0.125); 88 | } 89 | 90 | #navPanel nav { 91 | padding: 0.5em 1.25em; 92 | } 93 | 94 | #navPanel nav ul { 95 | list-style: none; 96 | margin: 0; 97 | padding: 0; 98 | } 99 | 100 | #navPanel nav ul li { 101 | padding: 0; 102 | } 103 | 104 | #navPanel nav ul li:first-child a:not(.button), #navPanel nav ul li:first-child span:not(.button) { 105 | border-top: 0; 106 | } 107 | 108 | #navPanel nav ul li a.button, #navPanel nav ul li span.button { 109 | margin-top: 0.5em; 110 | } 111 | 112 | #navPanel nav ul li a:not(.button), #navPanel nav ul li span:not(.button) { 113 | border-top: 1px solid rgba(0, 0, 0, 0.125); 114 | display: block; 115 | padding: 0.75em 0; 116 | text-decoration: none; 117 | } 118 | 119 | #navPanel nav .button { 120 | width: 100%; 121 | } 122 | 123 | /* Footer */ 124 | 125 | #footer .copyright { 126 | margin-top: 0; 127 | text-align: center; 128 | } 129 | 130 | #footer .icons { 131 | text-align: center; 132 | } -------------------------------------------------------------------------------- /template/css/style-small.css: -------------------------------------------------------------------------------- 1 | /* 2 | Transit by TEMPLATED 3 | templated.co @templatedco 4 | Released for free under the Creative Commons Attribution 3.0 license (templated.co/license) 5 | */ 6 | 7 | /* Basic */ 8 | 9 | body, input, select, textarea { 10 | font-size: 12pt; 11 | } 12 | 13 | /* Banner */ 14 | 15 | #banner { 16 | padding: 8em 2em 8em; 17 | } 18 | 19 | /* Wrapper */ 20 | 21 | .wrapper { 22 | padding: 4em 0em 2em; 23 | /* Style 2 Wrapper */ 24 | } 25 | 26 | .wrapper.style2 footer { 27 | width: 85%; 28 | } 29 | 30 | /* Footer */ 31 | 32 | #footer { 33 | padding: 4em 0em 2em; 34 | } 35 | 36 | #footer .copyright li { 37 | border-left: 0; 38 | margin-left: 0; 39 | padding-left: 0; 40 | display: block; 41 | } -------------------------------------------------------------------------------- /template/css/style-xlarge.css: -------------------------------------------------------------------------------- 1 | /* 2 | Transit by TEMPLATED 3 | templated.co @templatedco 4 | Released for free under the Creative Commons Attribution 3.0 license (templated.co/license) 5 | */ 6 | 7 | /* Basic */ 8 | 9 | body, input, select, textarea { 10 | font-size: 11pt; 11 | } -------------------------------------------------------------------------------- /template/css/style-xsmall.css: -------------------------------------------------------------------------------- 1 | /* 2 | Transit by TEMPLATED 3 | templated.co @templatedco 4 | Released for free under the Creative Commons Attribution 3.0 license (templated.co/license) 5 | */ 6 | 7 | /* Basic */ 8 | 9 | html, body { 10 | min-width: 320px; 11 | } 12 | 13 | body, input, select, textarea { 14 | font-size: 12pt; 15 | } 16 | 17 | header.major h2 { 18 | font-size: 2em; 19 | margin-bottom: 1em; 20 | } 21 | 22 | /* List */ 23 | 24 | ul.actions { 25 | margin: 0 0 2em 0; 26 | } 27 | 28 | ul.actions li { 29 | padding: 1em 0 0 0; 30 | display: block; 31 | text-align: center; 32 | width: 100%; 33 | } 34 | 35 | ul.actions li:first-child { 36 | padding-top: 0; 37 | } 38 | 39 | ul.actions li > * { 40 | width: 100%; 41 | margin: 0 !important; 42 | } 43 | 44 | ul.actions li > *.icon:before { 45 | margin-left: -2em; 46 | } 47 | 48 | ul.actions.small li { 49 | padding: 0.5em 0 0 0; 50 | } 51 | 52 | ul.actions.small li:first-child { 53 | padding-top: 0; 54 | } 55 | 56 | /* Button */ 57 | 58 | input[type="submit"], 59 | input[type="reset"], 60 | input[type="button"], 61 | .button { 62 | padding: 0; 63 | } 64 | 65 | /* Banner */ 66 | 67 | #banner { 68 | padding: 8em 2em 8em; 69 | } -------------------------------------------------------------------------------- /template/css/style.css: -------------------------------------------------------------------------------- 1 | @charset "UTF-8"; 2 | @import url(font-awesome.min.css); 3 | @import url(http://fonts.googleapis.com/css?family=Raleway:700,400); 4 | 5 | /* 6 | Transit by TEMPLATED 7 | templated.co @templatedco 8 | Released for free under the Creative Commons Attribution 3.0 license (templated.co/license) 9 | */ 10 | 11 | /* Basic */ 12 | 13 | body { 14 | background: #fff; 15 | } 16 | 17 | body.is-loading *, body.is-loading *:before, body.is-loading *:after { 18 | -moz-animation: none !important; 19 | -webkit-animation: none !important; 20 | -o-animation: none !important; 21 | -ms-animation: none !important; 22 | animation: none !important; 23 | -moz-transition: none !important; 24 | -webkit-transition: none !important; 25 | -o-transition: none !important; 26 | -ms-transition: none !important; 27 | transition: none !important; 28 | } 29 | 30 | body, input, select, textarea { 31 | color: #444; 32 | font-family: "Raleway", Helvetica, sans-serif; 33 | font-size: 13pt; 34 | font-weight: 400; 35 | line-height: 1.65em; 36 | } 37 | 38 | a { 39 | color: #383b43; 40 | text-decoration: none; 41 | } 42 | 43 | a:active, a:hover { 44 | text-decoration: underline; 45 | } 46 | 47 | strong, b { 48 | color: #474747; 49 | font-weight: 700; 50 | } 51 | 52 | em, i { 53 | font-style: italic; 54 | } 55 | 56 | p { 57 | margin: 0 0 2em 0; 58 | } 59 | 60 | h1, h2, h3, h4, h5, h6 { 61 | color: #474747; 62 | font-weight: 700; 63 | line-height: 1em; 64 | margin: 0 0 1em 0; 65 | } 66 | 67 | h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { 68 | color: inherit; 69 | text-decoration: none; 70 | } 71 | 72 | h2 { 73 | font-size: 1.75em; 74 | line-height: 1.5em; 75 | } 76 | 77 | h3 { 78 | font-size: 1.35em; 79 | line-height: 1.5em; 80 | } 81 | 82 | h4 { 83 | font-size: 1.1em; 84 | line-height: 1.5em; 85 | } 86 | 87 | h5 { 88 | font-size: 0.9em; 89 | line-height: 1.5em; 90 | } 91 | 92 | h6 { 93 | font-size: 0.7em; 94 | line-height: 1.5em; 95 | } 96 | 97 | sub { 98 | font-size: 0.8em; 99 | position: relative; 100 | top: 0.5em; 101 | } 102 | 103 | sup { 104 | font-size: 0.8em; 105 | position: relative; 106 | top: -0.5em; 107 | } 108 | 109 | hr { 110 | border: 0; 111 | border-bottom: solid 1px rgba(144, 144, 144, 0.25); 112 | margin: 2em 0; 113 | } 114 | 115 | hr.major { 116 | margin: 3em 0; 117 | } 118 | 119 | blockquote { 120 | border-left: solid 4px rgba(144, 144, 144, 0.25); 121 | font-style: italic; 122 | margin: 0 0 2em 0; 123 | padding: 0.5em 0 0.5em 2em; 124 | } 125 | 126 | code { 127 | background: rgba(144, 144, 144, 0.075); 128 | border-radius: 4px; 129 | border: solid 1px rgba(144, 144, 144, 0.25); 130 | font-family: "Courier New", monospace; 131 | font-size: 0.9em; 132 | margin: 0 0.25em; 133 | padding: 0.25em 0.65em; 134 | } 135 | 136 | pre { 137 | -webkit-overflow-scrolling: touch; 138 | font-family: "Courier New", monospace; 139 | font-size: 0.9em; 140 | margin: 0 0 2em 0; 141 | } 142 | 143 | pre code { 144 | display: block; 145 | line-height: 1.75em; 146 | padding: 1em 1.5em; 147 | overflow-x: auto; 148 | } 149 | 150 | .align-left { 151 | text-align: left; 152 | } 153 | 154 | .align-center { 155 | text-align: center; 156 | } 157 | 158 | .align-right { 159 | text-align: right; 160 | } 161 | 162 | /* Section/Article */ 163 | 164 | section.special, article.special { 165 | text-align: center; 166 | } 167 | 168 | header p { 169 | color: #858585; 170 | position: relative; 171 | margin: 0 0 1.5em 0; 172 | } 173 | 174 | header h2 + p { 175 | font-size: 1.25em; 176 | margin-top: -1em; 177 | line-height: 1.5em; 178 | } 179 | 180 | header h3 + p { 181 | font-size: 1.1em; 182 | margin-top: -0.8em; 183 | line-height: 1.5em; 184 | } 185 | 186 | header h4 + p, 187 | header h5 + p, 188 | header h6 + p { 189 | font-size: 0.9em; 190 | margin-top: -0.6em; 191 | line-height: 1.5em; 192 | } 193 | 194 | header.major { 195 | text-align: center; 196 | margin-bottom: 4em; 197 | } 198 | 199 | header.major h2 { 200 | font-size: 3em; 201 | margin-bottom: 0.5em; 202 | } 203 | 204 | header.major p { 205 | font-size: 1.5em; 206 | } 207 | 208 | /* Form */ 209 | 210 | form { 211 | margin: 0 0 2em 0; 212 | } 213 | 214 | label { 215 | color: #474747; 216 | display: block; 217 | font-size: 0.9em; 218 | font-weight: 700; 219 | margin: 0 0 1em 0; 220 | } 221 | 222 | input[type="text"], 223 | input[type="password"], 224 | input[type="email"], 225 | select, 226 | textarea { 227 | -moz-appearance: none; 228 | -webkit-appearance: none; 229 | -o-appearance: none; 230 | -ms-appearance: none; 231 | appearance: none; 232 | background: rgba(144, 144, 144, 0.075); 233 | border-radius: 4px; 234 | border: none; 235 | color: inherit; 236 | display: block; 237 | outline: 0; 238 | padding: 0 1em; 239 | text-decoration: none; 240 | width: 100%; 241 | } 242 | 243 | input[type="text"]:invalid, 244 | input[type="password"]:invalid, 245 | input[type="email"]:invalid, 246 | select:invalid, 247 | textarea:invalid { 248 | box-shadow: none; 249 | } 250 | 251 | input[type="text"]:focus, 252 | input[type="password"]:focus, 253 | input[type="email"]:focus, 254 | select:focus, 255 | textarea:focus { 256 | border-color: #383b43; 257 | box-shadow: 0 0 0 1px #383b43; 258 | } 259 | 260 | .select-wrapper { 261 | text-decoration: none; 262 | display: block; 263 | position: relative; 264 | } 265 | 266 | .select-wrapper:before { 267 | content: ""; 268 | -moz-osx-font-smoothing: grayscale; 269 | -webkit-font-smoothing: antialiased; 270 | font-family: FontAwesome; 271 | font-style: normal; 272 | font-weight: normal; 273 | text-transform: none !important; 274 | } 275 | 276 | .select-wrapper:before { 277 | color: rgba(144, 144, 144, 0.25); 278 | display: block; 279 | height: 2.75em; 280 | line-height: 2.75em; 281 | pointer-events: none; 282 | position: absolute; 283 | right: 0; 284 | text-align: center; 285 | top: 0; 286 | width: 2.75em; 287 | } 288 | 289 | .select-wrapper select::-ms-expand { 290 | display: none; 291 | } 292 | 293 | input[type="text"], 294 | input[type="password"], 295 | input[type="email"], 296 | select { 297 | height: 2.75em; 298 | } 299 | 300 | textarea { 301 | padding: 0.75em 1em; 302 | } 303 | 304 | input[type="checkbox"], 305 | input[type="radio"] { 306 | -moz-appearance: none; 307 | -webkit-appearance: none; 308 | -o-appearance: none; 309 | -ms-appearance: none; 310 | appearance: none; 311 | display: block; 312 | float: left; 313 | margin-right: -2em; 314 | opacity: 0; 315 | width: 1em; 316 | z-index: -1; 317 | } 318 | 319 | input[type="checkbox"] + label, 320 | input[type="radio"] + label { 321 | text-decoration: none; 322 | color: #444; 323 | cursor: pointer; 324 | display: inline-block; 325 | font-size: 1em; 326 | font-weight: 400; 327 | padding-left: 2.4em; 328 | padding-right: 0.75em; 329 | position: relative; 330 | } 331 | 332 | input[type="checkbox"] + label:before, 333 | input[type="radio"] + label:before { 334 | -moz-osx-font-smoothing: grayscale; 335 | -webkit-font-smoothing: antialiased; 336 | font-family: FontAwesome; 337 | font-style: normal; 338 | font-weight: normal; 339 | text-transform: none !important; 340 | } 341 | 342 | input[type="checkbox"] + label:before, 343 | input[type="radio"] + label:before { 344 | background: rgba(144, 144, 144, 0.075); 345 | border-radius: 4px; 346 | border: solid 1px rgba(144, 144, 144, 0.25); 347 | content: ''; 348 | display: inline-block; 349 | height: 1.65em; 350 | left: 0; 351 | line-height: 1.58125em; 352 | position: absolute; 353 | text-align: center; 354 | top: 0; 355 | width: 1.65em; 356 | } 357 | 358 | input[type="checkbox"]:checked + label:before, 359 | input[type="radio"]:checked + label:before { 360 | background: #3cadd4; 361 | border-color: #3cadd4; 362 | color: #ffffff; 363 | content: '\f00c'; 364 | } 365 | 366 | input[type="checkbox"]:focus + label:before, 367 | input[type="radio"]:focus + label:before { 368 | border-color: #383b43; 369 | box-shadow: 0 0 0 1px #383b43; 370 | } 371 | 372 | input[type="checkbox"] + label:before { 373 | border-radius: 4px; 374 | } 375 | 376 | input[type="radio"] + label:before { 377 | border-radius: 100%; 378 | } 379 | 380 | ::-webkit-input-placeholder { 381 | color: #858585 !important; 382 | opacity: 1.0; 383 | } 384 | 385 | :-moz-placeholder { 386 | color: #858585 !important; 387 | opacity: 1.0; 388 | } 389 | 390 | ::-moz-placeholder { 391 | color: #858585 !important; 392 | opacity: 1.0; 393 | } 394 | 395 | :-ms-input-placeholder { 396 | color: #858585 !important; 397 | opacity: 1.0; 398 | } 399 | 400 | .formerize-placeholder { 401 | color: #858585 !important; 402 | opacity: 1.0; 403 | } 404 | 405 | /* Box */ 406 | 407 | .box { 408 | border-radius: 4px; 409 | border: solid 1px rgba(144, 144, 144, 0.25); 410 | margin-bottom: 2em; 411 | padding: 1.5em; 412 | } 413 | 414 | .box > :last-child, 415 | .box > :last-child > :last-child, 416 | .box > :last-child > :last-child > :last-child { 417 | margin-bottom: 0; 418 | } 419 | 420 | .box.alt { 421 | border: 0; 422 | border-radius: 0; 423 | padding: 0; 424 | } 425 | 426 | /* Icon */ 427 | 428 | .icon { 429 | text-decoration: none; 430 | border-bottom: none; 431 | position: relative; 432 | } 433 | 434 | .icon:before { 435 | -moz-osx-font-smoothing: grayscale; 436 | -webkit-font-smoothing: antialiased; 437 | font-family: FontAwesome; 438 | font-style: normal; 439 | font-weight: normal; 440 | text-transform: none !important; 441 | } 442 | 443 | .icon:active, .icon:hover { 444 | text-decoration: none; 445 | } 446 | 447 | .icon > .label { 448 | display: none; 449 | } 450 | 451 | .icon.rounded { 452 | background-color: #383b43; 453 | border-radius: 100%; 454 | color: #ffffff; 455 | display: inline-block; 456 | height: 3.25em; 457 | line-height: 3.25em; 458 | text-align: center; 459 | width: 3.25em; 460 | } 461 | 462 | .icon.rounded.big { 463 | font-size: 2.5em; 464 | margin-bottom: 0.5em; 465 | } 466 | 467 | .icon.rounded.color1 { 468 | background-color: #3cadd4; 469 | } 470 | 471 | .icon.rounded.color2 { 472 | background-color: #3c61d4; 473 | } 474 | 475 | .icon.rounded.color3 { 476 | background-color: #633cd4; 477 | } 478 | 479 | .icon.rounded.color4 { 480 | background-color: #af3cd4; 481 | } 482 | 483 | .icon.rounded.color5 { 484 | background-color: #d43cad; 485 | } 486 | 487 | .icon.rounded.color6 { 488 | background-color: #d43c61; 489 | } 490 | 491 | .icon.rounded.color7 { 492 | background-color: #d4633c; 493 | } 494 | 495 | .icon.rounded.color8 { 496 | background-color: #d4af3c; 497 | } 498 | 499 | .icon.rounded.color9 { 500 | background-color: #add43c; 501 | } 502 | 503 | .icon.rounded.color10 { 504 | background-color: #61d43c; 505 | } 506 | 507 | .icon.rounded.fa-twitter { 508 | background-color: #2daae4; 509 | } 510 | 511 | .icon.rounded.fa-facebook { 512 | background-color: #39599f; 513 | } 514 | 515 | .icon.rounded.fa-google-plus { 516 | background-color: #c91e1f; 517 | } 518 | 519 | .icon.rounded.fa-dribbble { 520 | background-color: #c4376b; 521 | } 522 | 523 | .icon.rounded.fa-tumblr, .icon.rounded.fa-linkedin { 524 | background-color: #31516a; 525 | } 526 | 527 | .icon.rounded.fa-rss { 528 | background-color: #f2600b; 529 | } 530 | 531 | /* Image */ 532 | 533 | .image { 534 | border-radius: 4px; 535 | border: 0; 536 | display: inline-block; 537 | position: relative; 538 | } 539 | 540 | .image img { 541 | border-radius: 20px; 542 | display: block; 543 | } 544 | 545 | .image.left { 546 | float: left; 547 | padding: 0 1.5em 1em 0; 548 | top: 0.25em; 549 | } 550 | 551 | .image.right { 552 | float: right; 553 | padding: 0 0 1em 1.5em; 554 | top: 0.25em; 555 | } 556 | 557 | .image.left, .image.right { 558 | max-width: 40%; 559 | } 560 | 561 | .image.left img, .image.right img { 562 | width: 100%; 563 | } 564 | 565 | .image.fit { 566 | display: block; 567 | margin: 0 0 2em 0; 568 | width: 100%; 569 | } 570 | 571 | .image.fit img { 572 | width: 100%; 573 | } 574 | 575 | /* List */ 576 | 577 | ol { 578 | list-style: decimal; 579 | margin: 0 0 2em 0; 580 | padding-left: 1.25em; 581 | } 582 | 583 | ol li { 584 | padding-left: 0.25em; 585 | } 586 | 587 | ul { 588 | list-style: disc; 589 | margin: 0 0 2em 0; 590 | padding-left: 1em; 591 | } 592 | 593 | ul li { 594 | padding-left: 0.5em; 595 | } 596 | 597 | ul.alt { 598 | list-style: none; 599 | padding-left: 0; 600 | } 601 | 602 | ul.alt li { 603 | border-top: solid 1px rgba(144, 144, 144, 0.25); 604 | padding: 0.5em 0; 605 | } 606 | 607 | ul.alt li:first-child { 608 | border-top: 0; 609 | padding-top: 0; 610 | } 611 | 612 | ul.unstyled { 613 | list-style: none; 614 | padding-left: 0; 615 | } 616 | 617 | ul.unstyled li { 618 | padding: 0.4em 0; 619 | } 620 | 621 | ul.icons { 622 | cursor: default; 623 | list-style: none; 624 | padding-left: 0; 625 | } 626 | 627 | ul.icons li { 628 | display: inline-block; 629 | padding: 0 1em 0 0; 630 | } 631 | 632 | ul.icons li:last-child { 633 | padding-right: 0; 634 | } 635 | 636 | ul.icons li .icon:before { 637 | font-size: 2em; 638 | } 639 | 640 | ul.actions { 641 | cursor: default; 642 | list-style: none; 643 | padding-left: 0; 644 | } 645 | 646 | ul.actions li { 647 | display: inline-block; 648 | padding: 0 1em 0 0; 649 | vertical-align: middle; 650 | } 651 | 652 | ul.actions li:last-child { 653 | padding-right: 0; 654 | } 655 | 656 | ul.actions.small li { 657 | padding: 0 0.5em 0 0; 658 | } 659 | 660 | ul.actions.vertical li { 661 | display: block; 662 | padding: 1em 0 0 0; 663 | } 664 | 665 | ul.actions.vertical li:first-child { 666 | padding-top: 0; 667 | } 668 | 669 | ul.actions.vertical li > * { 670 | margin-bottom: 0; 671 | } 672 | 673 | ul.actions.vertical.small li { 674 | padding: 0.5em 0 0 0; 675 | } 676 | 677 | ul.actions.vertical.small li:first-child { 678 | padding-top: 0; 679 | } 680 | 681 | ul.actions.fit { 682 | display: table; 683 | margin-left: -1em; 684 | padding: 0; 685 | table-layout: fixed; 686 | width: calc(100% + 1em); 687 | } 688 | 689 | ul.actions.fit li { 690 | display: table-cell; 691 | padding: 0 0 0 1em; 692 | } 693 | 694 | ul.actions.fit li > * { 695 | margin-bottom: 0; 696 | } 697 | 698 | ul.actions.fit.small { 699 | margin-left: -0.5em; 700 | width: calc(100% + 0.5em); 701 | } 702 | 703 | ul.actions.fit.small li { 704 | padding: 0 0 0 0.5em; 705 | } 706 | 707 | dl { 708 | margin: 0 0 2em 0; 709 | } 710 | 711 | /* Table */ 712 | 713 | .table-wrapper { 714 | -webkit-overflow-scrolling: touch; 715 | overflow-x: auto; 716 | } 717 | 718 | table { 719 | margin: 0 0 2em 0; 720 | width: 100%; 721 | } 722 | 723 | table tbody tr { 724 | border: solid 1px rgba(144, 144, 144, 0.25); 725 | border-left: 0; 726 | border-right: 0; 727 | } 728 | 729 | table tbody tr:nth-child(2n + 1) { 730 | background-color: rgba(144, 144, 144, 0.075); 731 | } 732 | 733 | table td { 734 | padding: 0.75em 0.75em; 735 | } 736 | 737 | table th { 738 | color: #474747; 739 | font-size: 0.9em; 740 | font-weight: 700; 741 | padding: 0 0.75em 0.75em 0.75em; 742 | text-align: left; 743 | } 744 | 745 | table thead { 746 | border-bottom: solid 2px rgba(144, 144, 144, 0.25); 747 | } 748 | 749 | table tfoot { 750 | border-top: solid 2px rgba(144, 144, 144, 0.25); 751 | } 752 | 753 | table.alt { 754 | border-collapse: separate; 755 | } 756 | 757 | table.alt tbody tr td { 758 | border: solid 1px rgba(144, 144, 144, 0.25); 759 | border-left-width: 0; 760 | border-top-width: 0; 761 | } 762 | 763 | table.alt tbody tr td:first-child { 764 | border-left-width: 1px; 765 | } 766 | 767 | table.alt tbody tr:first-child td { 768 | border-top-width: 1px; 769 | } 770 | 771 | table.alt thead { 772 | border-bottom: 0; 773 | } 774 | 775 | table.alt tfoot { 776 | border-top: 0; 777 | } 778 | 779 | /* Button */ 780 | 781 | input[type="submit"], 782 | input[type="reset"], 783 | input[type="button"], 784 | .button { 785 | -moz-appearance: none; 786 | -webkit-appearance: none; 787 | -o-appearance: none; 788 | -ms-appearance: none; 789 | appearance: none; 790 | -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; 791 | -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; 792 | -o-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; 793 | -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; 794 | transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; 795 | background-color: #3cadd4; 796 | border-radius: 30px; 797 | border: 0; 798 | color: #ffffff !important; 799 | cursor: pointer; 800 | display: inline-block; 801 | font-weight: 400; 802 | height: 2.85em; 803 | line-height: 2.95em; 804 | padding: 0 2em; 805 | text-align: center; 806 | text-decoration: none; 807 | white-space: nowrap; 808 | } 809 | 810 | input[type="submit"]:hover, 811 | input[type="reset"]:hover, 812 | input[type="button"]:hover, 813 | .button:hover { 814 | background-color: #51b6d9; 815 | text-decoration: none; 816 | } 817 | 818 | input[type="submit"]:active, 819 | input[type="reset"]:active, 820 | input[type="button"]:active, 821 | .button:active { 822 | background-color: #2da2ca; 823 | text-decoration: none; 824 | } 825 | 826 | input[type="submit"].icon, 827 | input[type="reset"].icon, 828 | input[type="button"].icon, 829 | .button.icon { 830 | padding-left: 1.35em; 831 | } 832 | 833 | input[type="submit"].icon:before, 834 | input[type="reset"].icon:before, 835 | input[type="button"].icon:before, 836 | .button.icon:before { 837 | margin-right: 0.5em; 838 | } 839 | 840 | input[type="submit"].fit, 841 | input[type="reset"].fit, 842 | input[type="button"].fit, 843 | .button.fit { 844 | display: block; 845 | margin: 0 0 1em 0; 846 | width: 100%; 847 | } 848 | 849 | input[type="submit"].small, 850 | input[type="reset"].small, 851 | input[type="button"].small, 852 | .button.small { 853 | font-size: 0.8em; 854 | } 855 | 856 | input[type="submit"].big, 857 | input[type="reset"].big, 858 | input[type="button"].big, 859 | .button.big { 860 | font-size: 1.35em; 861 | } 862 | 863 | input[type="submit"].alt, 864 | input[type="reset"].alt, 865 | input[type="button"].alt, 866 | .button.alt { 867 | background-color: transparent; 868 | box-shadow: inset 0 0 0 2px rgba(144, 144, 144, 0.25); 869 | color: #474747 !important; 870 | } 871 | 872 | input[type="submit"].alt:hover, 873 | input[type="reset"].alt:hover, 874 | input[type="button"].alt:hover, 875 | .button.alt:hover { 876 | background-color: rgba(144, 144, 144, 0.075); 877 | } 878 | 879 | input[type="submit"].alt:active, 880 | input[type="reset"].alt:active, 881 | input[type="button"].alt:active, 882 | .button.alt:active { 883 | background-color: rgba(144, 144, 144, 0.2); 884 | } 885 | 886 | input[type="submit"].alt.icon:before, 887 | input[type="reset"].alt.icon:before, 888 | input[type="button"].alt.icon:before, 889 | .button.alt.icon:before { 890 | color: #858585; 891 | } 892 | 893 | input[type="submit"].special, 894 | input[type="reset"].special, 895 | input[type="button"].special, 896 | .button.special { 897 | background-color: #383b43; 898 | color: #ffffff !important; 899 | } 900 | 901 | input[type="submit"].special:hover, 902 | input[type="reset"].special:hover, 903 | input[type="button"].special:hover, 904 | .button.special:hover { 905 | background-color: #444751; 906 | } 907 | 908 | input[type="submit"].special:active, 909 | input[type="reset"].special:active, 910 | input[type="button"].special:active, 911 | .button.special:active { 912 | background-color: #2c2f35; 913 | } 914 | 915 | input[type="submit"].disabled, input[type="submit"]:disabled, 916 | input[type="reset"].disabled, 917 | input[type="reset"]:disabled, 918 | input[type="button"].disabled, 919 | input[type="button"]:disabled, 920 | .button.disabled, 921 | .button:disabled { 922 | background-color: #444 !important; 923 | box-shadow: inset 0 -0.15em 0 0 rgba(0, 0, 0, 0.15); 924 | color: #fff !important; 925 | cursor: default; 926 | opacity: 0.25; 927 | } 928 | 929 | /* Header */ 930 | 931 | body.landing #header { 932 | background-color: transparent; 933 | left: 0; 934 | position: absolute; 935 | top: 0; 936 | } 937 | 938 | body.landing #header nav a { 939 | color: rgba(255, 255, 255, 0.5); 940 | } 941 | 942 | #header { 943 | background-color: #383b43; 944 | color: #ffffff; 945 | cursor: default; 946 | font-size: 1.1em; 947 | height: 6em; 948 | line-height: 6em; 949 | width: 100%; 950 | z-index: 10000; 951 | } 952 | 953 | #header h1 { 954 | color: #ffffff; 955 | height: inherit; 956 | left: 3em; 957 | line-height: inherit; 958 | margin: 0; 959 | padding: 0; 960 | position: absolute; 961 | } 962 | 963 | #header h1 a { 964 | font-size: 1.25em; 965 | } 966 | 967 | #header nav { 968 | height: inherit; 969 | line-height: inherit; 970 | position: absolute; 971 | right: 3em; 972 | vertical-align: middle; 973 | } 974 | 975 | #header nav > ul { 976 | list-style: none; 977 | margin: 0; 978 | padding-left: 0; 979 | } 980 | 981 | #header nav > ul > li { 982 | border-radius: 4px; 983 | display: inline-block; 984 | margin-left: 2em; 985 | padding-left: 0; 986 | } 987 | 988 | #header nav > ul > li a { 989 | -moz-transition: color 0.2s ease-in-out; 990 | -webkit-transition: color 0.2s ease-in-out; 991 | -o-transition: color 0.2s ease-in-out; 992 | -ms-transition: color 0.2s ease-in-out; 993 | transition: color 0.2s ease-in-out; 994 | color: #cdced0; 995 | display: inline-block; 996 | text-decoration: none; 997 | } 998 | 999 | #header nav > ul > li a:active, #header nav > ul > li a:hover { 1000 | color: #ffffff; 1001 | } 1002 | 1003 | #header nav > ul > li:first-child { 1004 | margin-left: 0; 1005 | } 1006 | 1007 | #header nav > ul > li .button { 1008 | background-color: #fff; 1009 | color: #444 !important; 1010 | height: 2.25em; 1011 | line-height: 2.25em; 1012 | margin-bottom: 0; 1013 | padding: 0 1em; 1014 | position: relative; 1015 | top: -0.075em; 1016 | vertical-align: middle; 1017 | } 1018 | 1019 | #header .container { 1020 | position: relative; 1021 | } 1022 | 1023 | #header .container h1 { 1024 | left: 0; 1025 | } 1026 | 1027 | #header .container nav { 1028 | right: 0; 1029 | } 1030 | 1031 | /* Banner */ 1032 | 1033 | #banner { 1034 | background-image: url(../images/dark_tint.png), url(../images/bokeh_car_lights_bg.jpg); 1035 | background-position: center center; 1036 | background-size: cover; 1037 | color: #ffffff; 1038 | padding: 14em 0em 14em; 1039 | text-align: center; 1040 | } 1041 | 1042 | #banner :last-child { 1043 | margin-bottom: 0; 1044 | } 1045 | 1046 | #banner h2 { 1047 | color: #ffffff; 1048 | font-size: 4em; 1049 | line-height: 1.25em; 1050 | margin: 0 0 0.5em 0; 1051 | padding: 0; 1052 | } 1053 | 1054 | #banner p { 1055 | font-size: 1.5em; 1056 | margin-bottom: 1.75em; 1057 | } 1058 | 1059 | /* Wrapper */ 1060 | 1061 | .wrapper { 1062 | padding: 6em 0em 4em; 1063 | /* Style 1 Wrapper */ 1064 | /* Style 2 Wrapper */ 1065 | /* Style 3 Wrapper */ 1066 | } 1067 | 1068 | .wrapper.style1 { 1069 | background-color: #F5F5F5; 1070 | border-bottom: 1px solid rgba(144, 144, 144, 0.25); 1071 | border-top: 1px solid rgba(144, 144, 144, 0.25); 1072 | } 1073 | 1074 | .wrapper.style1 .box { 1075 | background-color: #fff; 1076 | padding: 3em 2.5em; 1077 | } 1078 | 1079 | .wrapper.style1 .box h2, .wrapper.style1 .box h3, .wrapper.style1 .box h4, .wrapper.style1 .box h5, .wrapper.style1 .box h6 { 1080 | color: #858585; 1081 | } 1082 | 1083 | .wrapper.style2 .profiles { 1084 | border-bottom: 1px solid rgba(144, 144, 144, 0.25); 1085 | border-top: 1px solid rgba(144, 144, 144, 0.25); 1086 | margin-bottom: 4em; 1087 | padding-top: 4em; 1088 | } 1089 | 1090 | .wrapper.style2 .profile { 1091 | margin-bottom: 2em; 1092 | text-align: left; 1093 | } 1094 | 1095 | .wrapper.style2 .profile img { 1096 | border-radius: 50%; 1097 | float: left; 1098 | margin-bottom: 1em; 1099 | margin-right: 1em; 1100 | } 1101 | 1102 | .wrapper.style2 .profile h4 { 1103 | margin-bottom: 0; 1104 | margin-top: 1em; 1105 | } 1106 | 1107 | .wrapper.style2 footer { 1108 | margin-left: auto; 1109 | margin-right: auto; 1110 | width: 70%; 1111 | } 1112 | 1113 | .wrapper.style2 footer p { 1114 | margin-bottom: 3em; 1115 | } 1116 | 1117 | .wrapper.style3 { 1118 | background-color: #3cadd4; 1119 | color: #ffffff; 1120 | } 1121 | 1122 | .wrapper.style3 h2, .wrapper.style3 h3, .wrapper.style3 p { 1123 | color: #ffffff; 1124 | } 1125 | 1126 | .wrapper.style3 input[type="text"], 1127 | .wrapper.style3 input[type="password"], 1128 | .wrapper.style3 input[type="email"], 1129 | .wrapper.style3 select, 1130 | .wrapper.style3 textarea { 1131 | background-color: #fff; 1132 | color: #444; 1133 | } 1134 | 1135 | /* Footer */ 1136 | 1137 | #footer { 1138 | background: #383b43; 1139 | padding: 6em 0em 4em; 1140 | } 1141 | 1142 | #footer h2, #footer h3, #footer h4 { 1143 | color: #ffffff; 1144 | } 1145 | 1146 | #footer p, #footer a, #footer li { 1147 | color: #cdced0; 1148 | } 1149 | 1150 | #footer .links { 1151 | border-bottom: 1px solid rgba(144, 144, 144, 0.25); 1152 | margin-bottom: 4em; 1153 | padding-bottom: 1em; 1154 | } 1155 | 1156 | #footer .copyright { 1157 | margin-top: 0.65em; 1158 | padding: 0; 1159 | } 1160 | 1161 | #footer .copyright li { 1162 | color: #858585; 1163 | display: inline-block; 1164 | list-style: none; 1165 | margin-left: 0.5em; 1166 | padding-left: 0.5em; 1167 | } 1168 | 1169 | #footer .copyright li:first-child { 1170 | margin-left: 0; 1171 | padding-left: 0; 1172 | } 1173 | 1174 | #footer .copyright a { 1175 | color: #858585; 1176 | } 1177 | 1178 | #footer .icons { 1179 | text-align: right; 1180 | } 1181 | 1182 | #footer a.icon { 1183 | color: #ffffff; 1184 | font-size: 0.65em; 1185 | height: 4em; 1186 | line-height: 4em; 1187 | width: 4em; 1188 | cursor: pointer; 1189 | } 1190 | 1191 | /* Grid Demo */ 1192 | 1193 | .grid-demo { 1194 | display: block; 1195 | margin: 0 0 2em 0; 1196 | } 1197 | 1198 | .grid-demo span { 1199 | background: #8d93a0; 1200 | border-radius: 4px; 1201 | color: rgba(0, 0, 0, 0.25); 1202 | display: block; 1203 | font-weight: 700; 1204 | height: 2.75em; 1205 | line-height: 2.75em; 1206 | text-align: center; 1207 | } 1208 | 1209 | .grid-demo .row.flush > div span { 1210 | border-radius: 0; 1211 | } 1212 | 1213 | .grid-demo .row.flush > div:first-child span { 1214 | border-radius: 4px 0 0 4px; 1215 | } 1216 | 1217 | .grid-demo .row.flush > div:last-child span { 1218 | border-radius: 0 4px 4px 0; 1219 | } -------------------------------------------------------------------------------- /template/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/favicon.ico -------------------------------------------------------------------------------- /template/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /template/fonts/fontawesome-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/fonts/fontawesome-webfont.eot -------------------------------------------------------------------------------- /template/fonts/fontawesome-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/fonts/fontawesome-webfont.ttf -------------------------------------------------------------------------------- /template/fonts/fontawesome-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/fonts/fontawesome-webfont.woff -------------------------------------------------------------------------------- /template/images/bokeh_car_lights_bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/bokeh_car_lights_bg.jpg -------------------------------------------------------------------------------- /template/images/dark_tint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/dark_tint.png -------------------------------------------------------------------------------- /template/images/gurpal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/gurpal.jpg -------------------------------------------------------------------------------- /template/images/mathly.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/mathly.png -------------------------------------------------------------------------------- /template/images/pic02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/pic02.jpg -------------------------------------------------------------------------------- /template/images/pic03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/pic03.jpg -------------------------------------------------------------------------------- /template/images/pic04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/pic04.jpg -------------------------------------------------------------------------------- /template/images/pic07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/pic07.jpg -------------------------------------------------------------------------------- /template/images/pic08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/pic08.jpg -------------------------------------------------------------------------------- /template/images/profile_placeholder.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/profile_placeholder.gif -------------------------------------------------------------------------------- /template/images/purvanshi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/purvanshi.jpg -------------------------------------------------------------------------------- /template/images/shreyas.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/shreyas.jpg -------------------------------------------------------------------------------- /template/images/siddhartha.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/template/images/siddhartha.jpg -------------------------------------------------------------------------------- /template/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | iSolveMath 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 30 | 137 | 163 | 168 | 169 | 170 | 171 | 172 | 180 | 181 | 191 | 192 |
193 |
194 |
195 |

Enter the question.

196 |

Limit yourself to sixth/seventh grade problems, please.

197 |
198 |
199 |
200 |
201 |
202 |
203 | 204 |
205 |
206 |
    207 |
  • 208 |
    209 |
    210 |
    211 |
    212 |
    213 |
    214 |
    215 |
    216 | 217 |
  • 218 |
219 |

220 |
221 |
222 |
223 |
224 |
225 | 226 |
227 |
228 |
229 |

About us

230 |

We are undergrad engineering students from India, harbouring a passion for all things tech.

231 |
232 |
233 |
234 |
235 | 236 |

Purvanshi Mehta

237 |

Python Scripting and Linking

238 |
239 |
240 | 241 |

Siddhartha Khanooja

242 |

Frontend and Documentation

243 |
244 |
245 | 246 |

Shreyas Kapoor

247 |

Backend, Documentation and Data Handling

248 |
249 |
250 | 251 |

Gurpal Singh Chhabra

252 |

Mentor

253 |
254 |
255 |
256 |
257 |
258 | 259 |
260 |
261 |
262 |
263 | 266 |
267 |
268 | 282 |
283 |
284 |
285 |
286 | 287 | 288 | 289 | -------------------------------------------------------------------------------- /template/js/autosize.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Autosize 3.0.20 3 | license: MIT 4 | http://www.jacklmoore.com/autosize 5 | */ 6 | (function (global, factory) { 7 | if (typeof define === 'function' && define.amd) { 8 | define(['exports', 'module'], factory); 9 | } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') { 10 | factory(exports, module); 11 | } else { 12 | var mod = { 13 | exports: {} 14 | }; 15 | factory(mod.exports, mod); 16 | global.autosize = mod.exports; 17 | } 18 | })(this, function (exports, module) { 19 | 'use strict'; 20 | 21 | var map = typeof Map === "function" ? new Map() : (function () { 22 | var keys = []; 23 | var values = []; 24 | 25 | return { 26 | has: function has(key) { 27 | return keys.indexOf(key) > -1; 28 | }, 29 | get: function get(key) { 30 | return values[keys.indexOf(key)]; 31 | }, 32 | set: function set(key, value) { 33 | if (keys.indexOf(key) === -1) { 34 | keys.push(key); 35 | values.push(value); 36 | } 37 | }, 38 | 'delete': function _delete(key) { 39 | var index = keys.indexOf(key); 40 | if (index > -1) { 41 | keys.splice(index, 1); 42 | values.splice(index, 1); 43 | } 44 | } 45 | }; 46 | })(); 47 | 48 | var createEvent = function createEvent(name) { 49 | return new Event(name, { bubbles: true }); 50 | }; 51 | try { 52 | new Event('test'); 53 | } catch (e) { 54 | // IE does not support `new Event()` 55 | createEvent = function (name) { 56 | var evt = document.createEvent('Event'); 57 | evt.initEvent(name, true, false); 58 | return evt; 59 | }; 60 | } 61 | 62 | function assign(ta) { 63 | if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return; 64 | 65 | var heightOffset = null; 66 | var clientWidth = ta.clientWidth; 67 | var cachedHeight = null; 68 | 69 | function init() { 70 | var style = window.getComputedStyle(ta, null); 71 | 72 | if (style.resize === 'vertical') { 73 | ta.style.resize = 'none'; 74 | } else if (style.resize === 'both') { 75 | ta.style.resize = 'horizontal'; 76 | } 77 | 78 | if (style.boxSizing === 'content-box') { 79 | heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); 80 | } else { 81 | heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); 82 | } 83 | // Fix when a textarea is not on document body and heightOffset is Not a Number 84 | if (isNaN(heightOffset)) { 85 | heightOffset = 0; 86 | } 87 | 88 | update(); 89 | } 90 | 91 | function changeOverflow(value) { 92 | { 93 | // Chrome/Safari-specific fix: 94 | // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space 95 | // made available by removing the scrollbar. The following forces the necessary text reflow. 96 | var width = ta.style.width; 97 | ta.style.width = '0px'; 98 | // Force reflow: 99 | /* jshint ignore:start */ 100 | ta.offsetWidth; 101 | /* jshint ignore:end */ 102 | ta.style.width = width; 103 | } 104 | 105 | ta.style.overflowY = value; 106 | } 107 | 108 | function getParentOverflows(el) { 109 | var arr = []; 110 | 111 | while (el && el.parentNode && el.parentNode instanceof Element) { 112 | if (el.parentNode.scrollTop) { 113 | arr.push({ 114 | node: el.parentNode, 115 | scrollTop: el.parentNode.scrollTop 116 | }); 117 | } 118 | el = el.parentNode; 119 | } 120 | 121 | return arr; 122 | } 123 | 124 | function resize() { 125 | var originalHeight = ta.style.height; 126 | var overflows = getParentOverflows(ta); 127 | var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240) 128 | 129 | ta.style.height = 'auto'; 130 | 131 | var endHeight = ta.scrollHeight + heightOffset; 132 | 133 | if (ta.scrollHeight === 0) { 134 | // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. 135 | ta.style.height = originalHeight; 136 | return; 137 | } 138 | 139 | ta.style.height = endHeight + 'px'; 140 | 141 | // used to check if an update is actually necessary on window.resize 142 | clientWidth = ta.clientWidth; 143 | 144 | // prevents scroll-position jumping 145 | overflows.forEach(function (el) { 146 | el.node.scrollTop = el.scrollTop; 147 | }); 148 | 149 | if (docTop) { 150 | document.documentElement.scrollTop = docTop; 151 | } 152 | } 153 | 154 | function update() { 155 | resize(); 156 | 157 | var styleHeight = Math.round(parseFloat(ta.style.height)); 158 | var computed = window.getComputedStyle(ta, null); 159 | var actualHeight = Math.round(parseFloat(computed.height)); 160 | 161 | // The actual height not matching the style height (set via the resize method) indicates that 162 | // the max-height has been exceeded, in which case the overflow should be set to visible. 163 | if (actualHeight !== styleHeight) { 164 | if (computed.overflowY !== 'visible') { 165 | changeOverflow('visible'); 166 | resize(); 167 | actualHeight = Math.round(parseFloat(window.getComputedStyle(ta, null).height)); 168 | } 169 | } else { 170 | // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands. 171 | if (computed.overflowY !== 'hidden') { 172 | changeOverflow('hidden'); 173 | resize(); 174 | actualHeight = Math.round(parseFloat(window.getComputedStyle(ta, null).height)); 175 | } 176 | } 177 | 178 | if (cachedHeight !== actualHeight) { 179 | cachedHeight = actualHeight; 180 | var evt = createEvent('autosize:resized'); 181 | try { 182 | ta.dispatchEvent(evt); 183 | } catch (err) { 184 | // Firefox will throw an error on dispatchEvent for a detached element 185 | // https://bugzilla.mozilla.org/show_bug.cgi?id=889376 186 | } 187 | } 188 | } 189 | 190 | var pageResize = function pageResize() { 191 | if (ta.clientWidth !== clientWidth) { 192 | update(); 193 | } 194 | }; 195 | 196 | var destroy = (function (style) { 197 | window.removeEventListener('resize', pageResize, false); 198 | ta.removeEventListener('input', update, false); 199 | ta.removeEventListener('keyup', update, false); 200 | ta.removeEventListener('autosize:destroy', destroy, false); 201 | ta.removeEventListener('autosize:update', update, false); 202 | 203 | Object.keys(style).forEach(function (key) { 204 | ta.style[key] = style[key]; 205 | }); 206 | 207 | map['delete'](ta); 208 | }).bind(ta, { 209 | height: ta.style.height, 210 | resize: ta.style.resize, 211 | overflowY: ta.style.overflowY, 212 | overflowX: ta.style.overflowX, 213 | wordWrap: ta.style.wordWrap 214 | }); 215 | 216 | ta.addEventListener('autosize:destroy', destroy, false); 217 | 218 | // IE9 does not fire onpropertychange or oninput for deletions, 219 | // so binding to onkeyup to catch most of those events. 220 | // There is no way that I know of to detect something like 'cut' in IE9. 221 | if ('onpropertychange' in ta && 'oninput' in ta) { 222 | ta.addEventListener('keyup', update, false); 223 | } 224 | 225 | window.addEventListener('resize', pageResize, false); 226 | ta.addEventListener('input', update, false); 227 | ta.addEventListener('autosize:update', update, false); 228 | ta.style.overflowX = 'hidden'; 229 | ta.style.wordWrap = 'break-word'; 230 | 231 | map.set(ta, { 232 | destroy: destroy, 233 | update: update 234 | }); 235 | 236 | init(); 237 | } 238 | 239 | function destroy(ta) { 240 | var methods = map.get(ta); 241 | if (methods) { 242 | methods.destroy(); 243 | } 244 | } 245 | 246 | function update(ta) { 247 | var methods = map.get(ta); 248 | if (methods) { 249 | methods.update(); 250 | } 251 | } 252 | 253 | var autosize = null; 254 | 255 | // Do nothing in Node.js environment and IE8 (or lower) 256 | if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') { 257 | autosize = function (el) { 258 | return el; 259 | }; 260 | autosize.destroy = function (el) { 261 | return el; 262 | }; 263 | autosize.update = function (el) { 264 | return el; 265 | }; 266 | } else { 267 | autosize = function (el, options) { 268 | if (el) { 269 | Array.prototype.forEach.call(el.length ? el : [el], function (x) { 270 | return assign(x, options); 271 | }); 272 | } 273 | return el; 274 | }; 275 | autosize.destroy = function (el) { 276 | if (el) { 277 | Array.prototype.forEach.call(el.length ? el : [el], destroy); 278 | } 279 | return el; 280 | }; 281 | autosize.update = function (el) { 282 | if (el) { 283 | Array.prototype.forEach.call(el.length ? el : [el], update); 284 | } 285 | return el; 286 | }; 287 | } 288 | 289 | module.exports = autosize; 290 | }); -------------------------------------------------------------------------------- /template/js/html5shiv.js: -------------------------------------------------------------------------------- 1 | /* 2 | HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); 5 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x"; 6 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| 7 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment(); 8 | for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d', 54 | position: 'top-left', 55 | side: 'top', 56 | width: '6em' 57 | }, 58 | navPanel: { 59 | animation: 'overlayX', 60 | breakpoints: 'medium', 61 | clickToHide: true, 62 | height: '100%', 63 | hidden: true, 64 | html: '
', 65 | orientation: 'vertical', 66 | position: 'top-left', 67 | side: 'left', 68 | width: 250 69 | } 70 | } 71 | } 72 | }); 73 | 74 | $(function() { 75 | 76 | var $window = $(window), 77 | $body = $('body'); 78 | 79 | // Disable animations/transitions until the page has loaded. 80 | $body.addClass('is-loading'); 81 | 82 | $window.on('load', function() { 83 | $body.removeClass('is-loading'); 84 | }); 85 | 86 | }); 87 | 88 | })(jQuery); -------------------------------------------------------------------------------- /template/js/jquery.easing.1.3.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ 3 | * 4 | * Uses the built in easing capabilities added In jQuery 1.1 5 | * to offer multiple easing options 6 | * 7 | * TERMS OF USE - jQuery Easing 8 | * 9 | * Open source under the BSD License. 10 | * 11 | * Copyright © 2008 George McGinley Smith 12 | * All rights reserved. 13 | * 14 | * Redistribution and use in source and binary forms, with or without modification, 15 | * are permitted provided that the following conditions are met: 16 | * 17 | * Redistributions of source code must retain the above copyright notice, this list of 18 | * conditions and the following disclaimer. 19 | * Redistributions in binary form must reproduce the above copyright notice, this list 20 | * of conditions and the following disclaimer in the documentation and/or other materials 21 | * provided with the distribution. 22 | * 23 | * Neither the name of the author nor the names of contributors may be used to endorse 24 | * or promote products derived from this software without specific prior written permission. 25 | * 26 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 27 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 28 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 29 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 30 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 31 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 32 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 33 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 34 | * OF THE POSSIBILITY OF SUCH DAMAGE. 35 | * 36 | */ 37 | 38 | // t: current time, b: begInnIng value, c: change In value, d: duration 39 | jQuery.easing['jswing'] = jQuery.easing['swing']; 40 | 41 | jQuery.extend( jQuery.easing, 42 | { 43 | def: 'easeOutQuad', 44 | swing: function (x, t, b, c, d) { 45 | //alert(jQuery.easing.default); 46 | return jQuery.easing[jQuery.easing.def](x, t, b, c, d); 47 | }, 48 | easeInQuad: function (x, t, b, c, d) { 49 | return c*(t/=d)*t + b; 50 | }, 51 | easeOutQuad: function (x, t, b, c, d) { 52 | return -c *(t/=d)*(t-2) + b; 53 | }, 54 | easeInOutQuad: function (x, t, b, c, d) { 55 | if ((t/=d/2) < 1) return c/2*t*t + b; 56 | return -c/2 * ((--t)*(t-2) - 1) + b; 57 | }, 58 | easeInCubic: function (x, t, b, c, d) { 59 | return c*(t/=d)*t*t + b; 60 | }, 61 | easeOutCubic: function (x, t, b, c, d) { 62 | return c*((t=t/d-1)*t*t + 1) + b; 63 | }, 64 | easeInOutCubic: function (x, t, b, c, d) { 65 | if ((t/=d/2) < 1) return c/2*t*t*t + b; 66 | return c/2*((t-=2)*t*t + 2) + b; 67 | }, 68 | easeInQuart: function (x, t, b, c, d) { 69 | return c*(t/=d)*t*t*t + b; 70 | }, 71 | easeOutQuart: function (x, t, b, c, d) { 72 | return -c * ((t=t/d-1)*t*t*t - 1) + b; 73 | }, 74 | easeInOutQuart: function (x, t, b, c, d) { 75 | if ((t/=d/2) < 1) return c/2*t*t*t*t + b; 76 | return -c/2 * ((t-=2)*t*t*t - 2) + b; 77 | }, 78 | easeInQuint: function (x, t, b, c, d) { 79 | return c*(t/=d)*t*t*t*t + b; 80 | }, 81 | easeOutQuint: function (x, t, b, c, d) { 82 | return c*((t=t/d-1)*t*t*t*t + 1) + b; 83 | }, 84 | easeInOutQuint: function (x, t, b, c, d) { 85 | if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; 86 | return c/2*((t-=2)*t*t*t*t + 2) + b; 87 | }, 88 | easeInSine: function (x, t, b, c, d) { 89 | return -c * Math.cos(t/d * (Math.PI/2)) + c + b; 90 | }, 91 | easeOutSine: function (x, t, b, c, d) { 92 | return c * Math.sin(t/d * (Math.PI/2)) + b; 93 | }, 94 | easeInOutSine: function (x, t, b, c, d) { 95 | return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; 96 | }, 97 | easeInExpo: function (x, t, b, c, d) { 98 | return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; 99 | }, 100 | easeOutExpo: function (x, t, b, c, d) { 101 | return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; 102 | }, 103 | easeInOutExpo: function (x, t, b, c, d) { 104 | if (t==0) return b; 105 | if (t==d) return b+c; 106 | if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; 107 | return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; 108 | }, 109 | easeInCirc: function (x, t, b, c, d) { 110 | return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; 111 | }, 112 | easeOutCirc: function (x, t, b, c, d) { 113 | return c * Math.sqrt(1 - (t=t/d-1)*t) + b; 114 | }, 115 | easeInOutCirc: function (x, t, b, c, d) { 116 | if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; 117 | return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; 118 | }, 119 | easeInElastic: function (x, t, b, c, d) { 120 | var s=1.70158;var p=0;var a=c; 121 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 122 | if (a < Math.abs(c)) { a=c; var s=p/4; } 123 | else var s = p/(2*Math.PI) * Math.asin (c/a); 124 | return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 125 | }, 126 | easeOutElastic: function (x, t, b, c, d) { 127 | var s=1.70158;var p=0;var a=c; 128 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 129 | if (a < Math.abs(c)) { a=c; var s=p/4; } 130 | else var s = p/(2*Math.PI) * Math.asin (c/a); 131 | return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; 132 | }, 133 | easeInOutElastic: function (x, t, b, c, d) { 134 | var s=1.70158;var p=0;var a=c; 135 | if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); 136 | if (a < Math.abs(c)) { a=c; var s=p/4; } 137 | else var s = p/(2*Math.PI) * Math.asin (c/a); 138 | if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 139 | return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; 140 | }, 141 | easeInBack: function (x, t, b, c, d, s) { 142 | if (s == undefined) s = 1.70158; 143 | return c*(t/=d)*t*((s+1)*t - s) + b; 144 | }, 145 | easeOutBack: function (x, t, b, c, d, s) { 146 | if (s == undefined) s = 1.70158; 147 | return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; 148 | }, 149 | easeInOutBack: function (x, t, b, c, d, s) { 150 | if (s == undefined) s = 1.70158; 151 | if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; 152 | return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; 153 | }, 154 | easeInBounce: function (x, t, b, c, d) { 155 | return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; 156 | }, 157 | easeOutBounce: function (x, t, b, c, d) { 158 | if ((t/=d) < (1/2.75)) { 159 | return c*(7.5625*t*t) + b; 160 | } else if (t < (2/2.75)) { 161 | return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; 162 | } else if (t < (2.5/2.75)) { 163 | return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; 164 | } else { 165 | return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; 166 | } 167 | }, 168 | easeInOutBounce: function (x, t, b, c, d) { 169 | if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; 170 | return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; 171 | } 172 | }); 173 | 174 | /* 175 | * 176 | * TERMS OF USE - EASING EQUATIONS 177 | * 178 | * Open source under the BSD License. 179 | * 180 | * Copyright © 2001 Robert Penner 181 | * All rights reserved. 182 | * 183 | * Redistribution and use in source and binary forms, with or without modification, 184 | * are permitted provided that the following conditions are met: 185 | * 186 | * Redistributions of source code must retain the above copyright notice, this list of 187 | * conditions and the following disclaimer. 188 | * Redistributions in binary form must reproduce the above copyright notice, this list 189 | * of conditions and the following disclaimer in the documentation and/or other materials 190 | * provided with the distribution. 191 | * 192 | * Neither the name of the author nor the names of contributors may be used to endorse 193 | * or promote products derived from this software without specific prior written permission. 194 | * 195 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 196 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 197 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 198 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 199 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 200 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 201 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 202 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 203 | * OF THE POSSIBILITY OF SUCH DAMAGE. 204 | * 205 | */ -------------------------------------------------------------------------------- /template/js/skel-layers.min.js: -------------------------------------------------------------------------------- 1 | /* skel-layers.js v2.0.2-dev | (c) n33 | getskel.com | MIT licensed */ 2 | (function(e){typeof define=="function"&&define.amd?define(["jquery","skel"],e):e(jQuery,skel)})(function(e,t){var n="config",r="cache",i="setTimeout",s="trigger",o="_skel_layers_translateOrigin",u="position",f="_skel_layers_resetForms",l="$element",c="visibleWrapper",h="_skel_layers_translate",p="skel-layers-moved",d="moveToVisibleWrapper",v="_skel_layers_promote",m="exclusiveLayer",g="_skel_layers_resume",y="_skel_layers_demote",b="exclusive",w="moveToHiddenWrapper",E="center",S="right",x="_skel_layers_cssNumericValue",T="bottom",N="prototype",C="speed",k="css",L="left",A="wrapper",O="_skel_layers_init",M="_skel_layers_suspend",_="skel-layers-css-values",D="overflow-x",P="width",H="_skel_layers_doTranslate",B="transform",j="hidestart",F="layers",I="showstart",q="skel-layers-layer-z-index",R="_height",U="transition",z=null,W="hiddenWrapper",X="scrollTop",V="skel-layers-css",$="children",J="height",K="showend",Q="hideend",G=".skel-layers-fixed:not(.skel-layers-moved)",Y="iterate",Z="auto",et="deviceType",tt="resetForms",nt="unlockView",rt="top",it="touchstart.lock click.lock scroll.lock",st="recalcW",ot="element",ut="hidden",at="_width",ft=!0,lt='
1){for(t=0;t0&&(t[Ut](),t[k](P,(t[pn](Hn)+r)/12*100+"%"))},e.fn[an]=function(){return e(this).parents()[dt]>0},e.fn[Ut]=function(){var t=e(this);t[$n]("class").match(/(\s+|^)([0-9]+)u(\s+|$)/)&&t[pn](Hn,parseInt(RegExp.$2))},e.fn[v]=function(t){var r,i,s;if(this[dt]>1){for(r=0;r-1*f&&n>l;break;case S:a=i-1*f&&n<-1*l;break;case rt:a=n-1*f&&i>l;break;case T:a=n-1*f&&i<-1*l}if(a)return s[Vt]=z,s[$t]=z,s[Jt](),pt}if(r[X]()==0&&i<0||u>o-2&&u0)return pt}),this[l]=r},lr[N][Tt]=function(){return this[l]!==z},lr[N][In]=function(){return this[l].is(":visible")},lr[N][d]=function(){fr[r][c][Ht](this[l])},lr[N][w]=function(){if(!this[l][an]())return;fr[r][W][Ht](this[l])},lr[N].resume=function(t){if(!this[Tt]())return;this[l][qn](Rn).each(function(){fr.parseResume(e(this))}),this[n][ut]||this[gn](t)},lr[N].suspend=function(){if(!this[Tt]())return;this[l][o](),this[l][qn](Rn).each(function(){fr.parseSuspend(e(this))}),this[on]&&this[Jt]()},fr={cache:{visibleWrapper:z,body:z,exclusiveLayer:z,document:z,html:z,htmlbody:z,hiddenWrapper:z,layers:{},parent:z,window:z,wrapper:z},config:{baseZIndex:1e4,layers:{},mode:u,speed:500,easing:"ease",wrap:ft},layerIndex:1,create:function(t,i,s){var o,a;if(t in fr[r][F])return;if(u in i){if(!i[Jn]&&(o=e(Vn+t))[dt]==0)return;return fr[n].wrap||(fr[n].wrap=ft,fr.initWrappers()),a=new lr(t,i,fr.layerIndex++),fr[r][F][t]=a,o&&(o[$]()[wn](a[ot]),o.remove()),s||fr._.updateState(),a}return},destroy:function(i){if(i in fr[r][F]){var s=fr[r][F][i];return s.suspend(),s[n][Tn]&&s[n][Tn]!=fr._.sd&&(a=fr._[Sn](s[n][Tn]),fr._[Y](a,function(e){fr._.removeCachedElementFromState(a[e],i)})),s[n][zt]&&(a=fr._[Sn](s[n][zt]),fr._[Y](a,function(e){fr._.removeCachedElementFromBreakpoint(a[e],i)})),e(s[ot]).remove(),delete fr[r][F][i],t.uncacheElement(i),ft}return},get:function(e){if(e in fr[r][F])return fr[r][F][e];return},hide:function(e){fr[r][F][e][Jt]()},show:function(e){fr[r][F][e][gn]()},toggle:function(e){var t=fr[r][F][e];t[In]()?t[Jt]():t[gn]()},getBaseFontSize:function(){return fr._.vars.IEVersion<9?16.5:parseFloat(getComputedStyle(fr[r][zn].get(0)).fontSize)},getHalf:function(e){var t=parseInt(e);return typeof e=="string"&&e.charAt(e[dt]-1)=="%"?Math.floor(t/2)+"%":Math.floor(t/2)+Dn},lockView:function(e){e==An&&fr[r][Xn][k](D,ut),fr[n][On]!=B&&t.vars[et]==Nn&&fr[r][ht][k](J,fr[r].document[J]()),fr[r][A].on(it,function(e){e[Kt](),e[Xt](),fr[r][m]&&fr[r][m][Jt]()}),fr[r][tn].on(It,function(e){fr[r][m]&&fr[r][m][Jt]()}),fr._.vars.isMobile||window[i](function(){fr[r][tn].on(Ft,function(e){fr[r][m]&&fr[r][m][Jt]()})},fr[n][C]+50)},parseInit:function(t){var n,s,o=t.get(0),u=t[$n]("data-action"),a=t[$n]("data-args"),f,l;u&&a&&(a=a.split(","));switch(u){case"toggleLayer":case"layerToggle":t[k](Lt,mn)[k]("cursor","pointer"),n=function(t){var n=e(this);t[Kt](),t[Xt]();if(n[pn](hn)===ft)return;n[pn](hn,ft),window[i](function(){n.removeData(hn)},500);if(fr[r][m])return fr[r][m][Jt](),pt;var s=fr[r][F][a[0]];s[In]()?s[Jt]():s[gn]()},t.on("touchend click",n);break;case"navList":f=e(Vn+a[0]),n=f[qn]("a"),s=[],n.each(function(){var t=e(this),n,r;n=Math.max(0,t.parents("li")[dt]-1),r=t[$n]("href"),s.push(''+t.text()+"")}),s[dt]>0&&t[Jn]("");break;case"copyText":f=e(Vn+a[0]),t[Jn](f.text());break;case"copyHTML":f=e(Vn+a[0]),t[Jn](f[Jn]());break;case"moveElementContents":f=e(Vn+a[0]),o[g]=function(){f[$]().each(function(){var n=e(this);if(n[qt](p))return;t[Ht](n),n[sn](p),n[Et]()})},o[M]=function(){t[$]().each(function(){var t=e(this);if(!t[qt](p))return;f[Ht](t),t[yn](p),fr.refresh(t),t[St]()})},o[g]();break;case"moveElement":f=e(Vn+a[0]),o[g]=function(){if(f[qt](p))return;e(lt+f[$n]("id")+'" />').insertBefore(f),t[Ht](f),f[sn](p),f[Et]()},o[M]=function(){if(!f[qt](p))return;e(Ot+f[$n]("id")).replaceWith(f),f[yn](p),fr.refresh(f),f[St]()},o[g]();break;case"moveCell":f=e(Vn+a[0]),l=e(Vn+a[1]),o[g]=function(){e(lt+f[$n]("id")+'" />').insertBefore(f),t[Ht](f),f[k](P,Z),l&&l[nn]()},o[M]=function(){e(Ot+f[$n]("id")).replaceWith(f),f[k](P,""),l&&l[k](P,"")},o[g]();break;default:}},parseResume:function(e){var t=e.get(0);t[g]&&t[g]()},parseSuspend:function(e){var t=e.get(0);t[M]&&t[M]()},recalc:function(e,t){var n=fr._.parseMeasurement(e),r;switch(n[1]){case"%":r=Math.floor(t*(n[0]/100));break;case"em":r=fr.getBaseFontSize()*n[0];break;default:case Dn:r=n[0]}return r},recalcH:function(t){return fr.recalc(t,e(window)[J]())},recalcW:function(t){return fr.recalc(t,e(window)[P]())},refresh:function(t){var n;t?n=t.filter(G):n=e(G),n[O](ft)[wn](fr[r][c])},unlockView:function(e){e==An&&fr[r][Xn][k](D,""),fr[n][On]!=B&&t.vars[et]==Nn&&fr[r][ht][k](J,""),fr[r][A].off(it),fr[r][tn].off(It),fr._.vars.isMobile||fr[r][tn].off(Ft)},init:function(){n in fr[n]&&(fr._.extend(fr[n],fr[n][n]),delete fr[n][n]),fr._[Y](fr[n],function(e){fr[n][e]&&typeof fr[n][e]==Cn&&u in fr[n][e]&&(fr[n][F][e]=fr[n][e],delete fr[n][e])}),typeof fr[n][On]=="function"&&(fr[n][On]=fr[n][On]()),fr[n][On]==B&&(!fr._[Qt](B)||!fr._[Qt](U))&&(fr[n][On]=u),fr[n][On]==u&&!fr._[Qt](U)&&(fr[n][On]=Dt),fr._.vars[et]=="wp"&&(fr[n][On]=Dt),fr[r][tn]=e(window),e(function(){fr.initAnimation(),fr.initObjects(),fr[n].wrap&&fr.initWrappers(),fr.initLayers(),fr.initIncludes(),fr._.updateState()})},initIncludes:function(){e(".skel-layers-include").each(function(){fr.parseInit(e(this))})},initLayers:function(){fr._[Y](fr[n][F],function(e){fr.create(e,fr[n][F][e],ft)})},initObjects:function(){fr[r].document=e(document),fr[r][Jn]=e(Jn),fr[r][zn]=e(zn),fr[r][Xn]=e("html,body")},initAnimation:function(){fr[n][On]==Dt?(e.fn[vt]=function(t){e(this).fadeTo(fr[n][C],1,t)},e.fn[ct]=function(t){e(this).fadeTo(fr[n][C],0,t)}):(e.fn[vt]=function(t){e(this)[k](vn,1),t&&window[i](t,fr[n][C]+50)},e.fn[ct]=function(t){e(this)[k](vn,0),t&&window[i](t,fr[n][C]+50)});if(fr[n][On]==B)e.fn[o]=function(){return e(this)[h](0,0)},e.fn[h]=function(t,n){return e(this)[k](B,"translate("+t+"px, "+n+"px)")},e.fn[O]=function(){return e(this)[k](Gt,ut)[k](Ln,"500")[kn](U,"transform "+fr[n][C]/1e3+xn+fr[n][xt]+","+Wn+fr[n][C]/1e3+xn+fr[n][xt])[pn](V,[Gt,Ln,cn,Zt,bn,dn,U])};else{var s=[];fr[n][On]==Dt?(fr[r][tn].resize(function(){if(fr[n][C]!=0){var e=fr[n][C];fr[n][C]=0,window[i](function(){fr[n][C]=e,s=[]},0)}}),fr[n][xt].substr(0,4)=="ease"?(fr[n][xt]="swing",fr[n][C]=fr[n][C]*.65):fr[n][xt]="linear",e.fn[H]=function(t,r){e(this)[Dt](t,fr[n][C],fr[n][xt],r)},e.fn[O]=function(t){return e(this)[k](u,t?Mn:fn)[pn](V,[u])}):(fr[r][tn].resize(function(){window[i](function(){s=[]},0)}),e.fn[H]=function(t,r){var s=e(this);fr._[Y](t,function(e){s[k](e,t[e])}),window[i](r,fr[n][C])},e.fn[O]=function(t){return e(this)[k](U,"top "+fr[n][C]/1e3+xn+fr[n][xt]+","+"right "+fr[n][C]/1e3+xn+fr[n][xt]+","+"bottom "+fr[n][C]/1e3+xn+fr[n][xt]+","+"left "+fr[n][C]/1e3+xn+fr[n][xt]+","+Wn+fr[n][C]/1e3+xn+fr[n][xt])[k](u,t?Mn:fn)[pn](V,[cn,Zt,bn,dn,U,u])}),e[x]=function(e){return e&&e.slice(-1)=="%"?e:parseInt(e)},e.fn[o]=function(){for(var t=0;t'),fr[r][ht]=e("#skel-layers-parent"),fr[r][ht][k](u,fn)[k](L,0)[k](rt,0)[k]("min-height",mt)[k](P,mt)):fr[r][ht]=fr[r][zn],fr[r][ht].wrapInner('
'),fr[r][A]=e("#skel-layers-wrapper"),fr[r][A][k](u,Un)[k](L,0)[k](S,0)[k](rt,0)[O](),fr[r][W]=e('
')[wn](fr[r][ht]),fr[r][W][k](J,mt),fr[r][c]=e('
')[wn](fr[r][ht]),fr[r][c][k](u,Un),fr._[Bt](Mt,fr[r][W][0]),fr._[Bt]("skel_layers_visibleWrapper",fr[r][c][0]),fr._[Bt]("skel_layers_wrapper",fr[r][A][0]),e("[autofocus]").focus(),fr.refresh()}},fr)}(jQuery))}); -------------------------------------------------------------------------------- /template/js/skel.min.js: -------------------------------------------------------------------------------- 1 | /* skel.js v2.2.1 | (c) n33 | getskel.com | MIT licensed */ 2 | var skel=function(){var e="breakpoints",t="config",n="iterate",r="elements",i="stateId",s="stateElements",o="getElementsByClassName",u=!1,a="getElementsByTagName",f="length",l="gridLevelMax",c=null,h="getCachedElement",p="viewport",d=" 0 -1px ",v="cacheNewElement",m="config_breakpoint",g="createElement",y=!0,b="gutters",w="vars",E="insertBefore",S="newInline",x="substring",T="}",N="parentNode",C="cache",k="locations",L="gridLevelMap",A="orientationChange",O="deviceType",M="className",_=" 0 0 ",D="object",P="isArray",H="match",B="grid",j="+*,",F="replace",I="head",q="newElement",R="canUseProperty_element",U="indexOf",z="_skel_isReversed",W="push",X="extend",V="matchesMedia",$="DOMReady",J="containers",K="onorientationchange",Q="defaults",G="lock",Y="getComputedStyle",Z="addEventListener",et="^head",tt="{display:none!important}",nt="parseMeasurement",rt="isActive",it="charAt",st="registerLocation",ot="trigger",ut="IEVersion",at="documentElement",ft="events",lt="placeholder",ct="level",ht="attachElements",pt="isStatic",dt="attachElement",vt="plugins",mt="DOMContentLoaded",gt="text/css",yt="device-width",bt="states",wt="initial-scale=1",Et="_skel_attach",St="removeEventListener",xt="split",Tt="resize",Nt="attached",Ct="location",kt="change",Lt="normalize",At="collapse",Ot="applyRowTransforms",Mt="media",_t="previousSibling",Dt="(min-width: ",Pt="html",Ht="style",Bt="firstChild",jt="forceDefaultState",Ft="_skel_placeholder",It="querySelectorAll",qt="min-height",Rt="max-height",Ut="min-width",zt="innerHTML",Wt="prototype",Xt="max-width",Vt="nextSibling",$t="hasOwnProperty",Jt="domready",Kt="onresize",Qt="priority",Gt="href",Yt=".\\3$1 ",Zt="android",en="readyState",tn="height=",nn={breakpoints:[],breakpointList:[],cache:{elements:{},states:{},stateElements:{}},config:{breakpoints:{"*":{href:u,media:""}},containers:1140,defaultState:c,events:{},grid:{level:1,collapse:u,gutters:[40,0]},lock:{path:u,permanent:y},plugins:{},pollOnce:u,preload:u,reset:Lt,RTL:u,viewport:{width:yt,height:"",scalable:y}},css:{bm:"*,*:before,*:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}",n:"html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}",r:"html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}table{border-collapse:collapse;border-spacing:0}body{-webkit-text-size-adjust:none}",gc:function(e){return".\\31 2u"+e+",.\\31 2u\\24"+e+"{width:100%;clear:none;margin-left:0}"+".\\31 1u"+e+",.\\31 1u\\24"+e+"{width:91.6666666667%;clear:none;margin-left:0}"+".\\31 0u"+e+",.\\31 0u\\24"+e+"{width:83.3333333333%;clear:none;margin-left:0}"+".\\39 u"+e+",.\\39 u\\24"+e+"{width:75%;clear:none;margin-left:0}"+".\\38 u"+e+",.\\38 u\\24"+e+"{width:66.6666666667%;clear:none;margin-left:0}"+".\\37 u"+e+",.\\37 u\\24"+e+"{width:58.3333333333%;clear:none;margin-left:0}"+".\\36 u"+e+",.\\36 u\\24"+e+"{width:50%;clear:none;margin-left:0}"+".\\35 u"+e+",.\\35 u\\24"+e+"{width:41.6666666667%;clear:none;margin-left:0}"+".\\34 u"+e+",.\\34 u\\24"+e+"{width:33.3333333333%;clear:none;margin-left:0}"+".\\33 u"+e+",.\\33 u\\24"+e+"{width:25%;clear:none;margin-left:0}"+".\\32 u"+e+",.\\32 u\\24"+e+"{width:16.6666666667%;clear:none;margin-left:0}"+".\\31 u"+e+",.\\31 u\\24"+e+"{width:8.3333333333%;clear:none;margin-left:0}"+".\\31 2u\\24"+e+j+".\\31 1u\\24"+e+j+".\\31 0u\\24"+e+j+".\\39 u\\24"+e+j+".\\38 u\\24"+e+j+".\\37 u\\24"+e+j+".\\36 u\\24"+e+j+".\\35 u\\24"+e+j+".\\34 u\\24"+e+j+".\\33 u\\24"+e+j+".\\32 u\\24"+e+j+".\\31 u\\24"+e+"+*{"+"clear:left;"+T+".\\-11u"+e+"{margin-left:91.6666666667%}"+".\\-10u"+e+"{margin-left:83.3333333333%}"+".\\-9u"+e+"{margin-left:75%}"+".\\-8u"+e+"{margin-left:66.6666666667%}"+".\\-7u"+e+"{margin-left:58.3333333333%}"+".\\-6u"+e+"{margin-left:50%}"+".\\-5u"+e+"{margin-left:41.6666666667%}"+".\\-4u"+e+"{margin-left:33.3333333333%}"+".\\-3u"+e+"{margin-left:25%}"+".\\-2u"+e+"{margin-left:16.6666666667%}"+".\\-1u"+e+"{margin-left:8.3333333333%}"}},defaults:{breakpoint:{config:c,elements:c,test:c},config_breakpoint:{containers:"100%",grid:{},href:u,media:"",viewport:{}}},events:[],forceDefaultState:u,gridLevelMap:{k:{},v:{}},gridLevelMax:1,isInit:u,isStatic:u,locations:{body:c,head:c,html:c},lcn:"_skel_lock",me:c,plugins:{},sd:"/",stateId:"",vars:{},DOMReady:c,getElementsByClassName:c,indexOf:c,isArray:c,iterate:c,matchesMedia:c,extend:function(e,t){var r;nn[n](t,function(n){nn[P](t[n])?(nn[P](e[n])||(e[n]=[]),nn[X](e[n],t[n])):typeof t[n]==D?(typeof e[n]!=D&&(e[n]={}),nn[X](e[n],t[n])):e[n]=t[n]})},getArray:function(e){return nn[P](e)?e:[e]},parseMeasurement:function(e){var t,n;if(typeof e!="string")t=[e,"px"];else if(e=="fluid")t=[100,"%"];else{var n;n=e[H](/([0-9\.]+)([^\s]*)/),n[f]<3||!n[2]?t=[parseFloat(e),"px"]:t=[parseFloat(n[1]),n[2]]}return t},canUseProperty_element:c,canUse:function(t){return nn[e][t]&&nn[e][t].test()},canUseProperty:function(e){nn[R]||(nn[R]=document[g]("div"));var t=nn[R][Ht],n=e[it](0).toUpperCase()+e.slice(1);return e in t||"Moz"+n in t||"Webkit"+n in t||"O"+n in t||"ms"+n in t},hasActive:function(e){var t=u;return nn[n](e,function(n){t=t||nn[rt](e[n])}),t},isActive:function(e){return nn[U](nn[i],nn.sd+e)!==-1},isLocked:function(){return!!nn[w][G]&&nn[P](nn[w][G])},lock:function(e,n){nn[w][G]=[e,n],document.cookie=nn.lcn+"="+nn[w][G].join("_")+(nn[t][G].path?";path="+nn[t][G].path:"")+(nn[t][G].permanent?";expires=Tue, 19 Jan 2038 03:14:07 GMT":""),window[Ct].reload()},unlock:function(){nn[w][G]=c,document.cookie=nn.lcn+"="+(nn[t][G].path?";path="+nn[t][G].path:"")+";expires=Thu, 01 Jan 1970 01:02:03 GMT",window[Ct].reload()},useActive:function(e){if(typeof e!==D)return e;var t=c;return nn[n](e,function(n){if(t!==c)return;nn[rt](n)&&(t=e[n])}),t},wasActive:function(e){return nn[U](nn[w].lastStateId,nn.sd+e)!==-1},applyRowTransforms:function(e){nn[t].RTL&&(nn.unreverseRows(),e[t][B][At]&&nn.reverseRows());var r="_skel_important",i=[],s,a;for(s=1;s<=nn[l];s++)a=nn[o]("important("+nn[L].k[s]+")"),nn[n](a,function(e){i[W](a[e])});a=nn[o]("important(collapse)"),nn[n](a,function(e){i[W](a[e])}),nn[n](i,function(n){if(n===f)return;var s=i[n],o=s[N],a,l=u,c,h;if(!o)return;if(!s[$t](r)||s[r]===u){e[t][B][At]&&s[M][H](/important\(collapse\)/)?l="c":s[M][H](/important\((.+)\)/)&&(h=parseInt(nn[L].v[RegExp.$1]))<=e[t][B][ct]&&(l="l");if(!l)return;c=nn[t].RTL?Vt:_t,a=s[c];while(a&&a.nodeName=="#text")a=a[c];if(!a)return;o[E](s,nn[t].RTL&&l=="l"?o.lastChild:o[Bt]),s[r]={placeholder:a,mode:l,level:h}}else{a=s[r][lt],l=s[r].mode;if(l=="c"&&e[t][B][At]||l=="l"&&s[r][ct]<=e[t][B][ct])return;o[E](s,nn[t].RTL&&l=="l"?a[_t]:a[Vt]),s[r]=u}})},reverseRows:function(){var e=nn[o]("row");nn[n](e,function(t){if(t===f)return;var n=e[t];if(n[z])return;var r=n.children,i;for(i=1;i0&&nn[$](function(){nn[n](r,function(e){nn[dt](r[e])})})},cacheElement:function(e){return nn[C][r][e.id]=e,e},cacheNewElement:function(e,t,n,r){var i;return t[N]&&t[N].removeChild(t),i=nn[q](e,t,n,r),nn.cacheElement(i)},detachAllElements:function(e){var t,i,s={};nn[n](e,function(t){s[e[t].id]=y}),nn[n](nn[C][r],function(e){if(e in s)return;nn.detachElement(e)})},detachElement:function(e){var t=nn[C][r][e],n;if(!t[Nt])return;n=t[D];if(!n[N]||n[N]&&!n[N].tagName)return;n[N].removeChild(n),t[Nt]=u,t.onDetach&&t.onDetach()},getCachedElement:function(e){return nn[C][r][e]?nn[C][r][e]:c},newElement:function(e,t,n,r){return{id:e,object:t,location:n,priority:r,attached:u}},removeCachedElementFromBreakpoint:function(t,i){return nn[n](nn[e][t][r],function(n){nn[e][t][r][n].id==i&&delete nn[e][t][r][n]}),y},removeCachedElementFromState:function(e,t){return nn[n](nn[C][s][e],function(n){nn[C][s][e][n].id==t&&delete nn[C][s][e][n]}),y},uncacheElement:function(e){return e in nn[C][r]?(delete nn[C][r][e],y):u},changeState:function(o){var a,l,c,g,E,N,k,A,O;nn[w].lastStateId=nn[i],nn[i]=o;if(!nn[C][bt][nn[i]]){nn[C][bt][nn[i]]={config:{},elements:[],values:{}},c=nn[C][bt][nn[i]],nn[i]===nn.sd?a=[]:a=nn[i][x](1)[xt](nn.sd),nn[X](c[t],nn[Q][m]),nn[n](a,function(n){nn[X](c[t],nn[e][a[n]][t])}),k="mV"+nn[i],c[t][p].content?A=c[t][p].content:nn.isLocked()?(g=[],g[W]("user-scalable=yes"),nn[w][G][0]&&g[W]("width="+nn[w][G][0]),nn[w][G][1]&&g[W](tn+nn[w][G][1]),A=g.join(","),window.setTimeout(function(){nn.poll()},0)):(g=[],g[W]("user-scalable="+(c[t][p].scalable?"yes":"no")),c[t][p].width&&g[W]("width="+c[t][p].width),c[t][p].height&&g[W](tn+c[t][p].height),c[t][p].width==yt&&g[W](wt),A=g.join(",")),(E=nn[h](k))||(E=nn[v](k,nn.newMeta(p,A),et,4)),c[r][W](E);var M,D,P=u;g=nn[nt](c[t][J]),M=g[0],D=g[1],c.values[J]=M+D,k="iC"+c.values[J],D.substr(-1)=="!"&&(P=y,D=D.substr(0,D[f]-1)),(E=nn[h](k))||(E=nn[v](k,nn[S](".container{margin-left:auto;margin-right:auto;width:"+M*1+D+(P?"!important;max-width:none!important;min-width:0!important"+T:T+".container.\\31 25\\25{width:100%;max-width:"+M*1.25+D+";min-width:"+M+D+T+".container.\\37 5\\25{width:"+M*.75+D+T+".container.\\35 0\\25{width:"+M*.5+D+T+".container.\\32 5\\25{width:"+M*.25+D+T)),I,3)),c[r][W](E),k="iGG"+c[t][B][b][0]+"_"+c[t][B][b][1];if(!(E=nn[h](k))){var H,j;g=nn[nt](c[t][B][b][0]),H=g[0],j=g[1];var q,R;g=nn[nt](c[t][B][b][1]),q=g[0],R=g[1],E=nn[v]("iGG"+c[t][B][b][0]+"_"+c[t][B][b][1],nn[S](".row>*{padding:"+q*1+R+_+H*1+j+T+".row{margin:"+q*-1+R+d+H*-1+j+T+".row.uniform>*{padding:"+H*1+j+_+H*1+j+T+".row.uniform{margin:"+H*-1+j+d+H*-1+j+T+".row.\\32 00\\25>*{padding:"+q*2+R+_+H*2+j+T+".row.\\32 00\\25{margin:"+q*-2+R+d+H*-2+j+T+".row.uniform.\\32 00\\25>*{padding:"+H*2+j+_+H*2+j+T+".row.uniform.\\32 00\\25{margin:"+H*-2+j+d+H*-2+j+T+".row.\\31 50\\25>*{padding:"+q*1.5+R+_+H*1.5+j+T+".row.\\31 50\\25{margin:"+q*-1.5+R+d+H*-1.5+j+T+".row.uniform.\\31 50\\25>*{padding:"+H*1.5+j+_+H*1.5+j+T+".row.uniform.\\31 50\\25{margin:"+H*-1.5+j+d+H*-1.5+j+T+".row.\\35 0\\25>*{padding:"+q*.5+R+_+H*.5+j+T+".row.\\35 0\\25{margin:"+q*-0.5+R+d+H*-0.5+j+T+".row.uniform.\\35 0\\25>*{padding:"+H*.5+j+_+H*.5+j+T+".row.uniform.\\35 0\\25{margin:"+H*-0.5+j+d+H*-0.5+j+T+".row.\\32 5\\25>*{padding:"+q*.25+R+_+H*.25+j+T+".row.\\32 5\\25{margin:"+q*-0.25+R+d+H*-0.25+j+T+".row.uniform.\\32 5\\25>*{padding:"+H*.25+j+_+H*.25+j+T+".row.uniform.\\32 5\\25{margin:"+H*-0.25+j+d+H*-0.25+j+T+".row.\\30 \\25>*{padding:0}"+".row.\\30 \\25{margin:0 0 -1px 0}"),I,3)}c[r][W](E);if(c[t][B][ct]>1){k="igZ"+c[t][B][ct];if(!(E=nn[h](k))){A="";for(N=2;N<=c[t][B][ct];N++)A+=nn.css.gc("\\28 "+nn[L].k[N]+"\\29");E=nn[v](k,nn[S](A),I,3)}c[r][W](E)}c[t][B][At]&&(k="igC"+c[t][J],(E=nn[h](k))||(E=nn[v](k,nn[S](".row:not(.no-collapse)>*{width:100%!important;margin-left:0!important"+T),I,3)),c[r][W](E));if(!nn[pt]){k="iCd"+nn[i];if(!(E=nn[h](k))){A=[],O=[],nn[n](nn[e],function(e){nn[U](a,e)!==-1?A[W](".not-"+e):O[W](".only-"+e)});var z=(A[f]>0?A.join(",")+tt:"")+(O[f]>0?O.join(",")+tt:"");E=nn[v](k,nn[S](z[F](/\.([0-9])/,Yt)),I,3),c[r][W](E)}}nn[n](a,function(i){nn[e][a[i]][t][Gt]&&(k="ss"+a[i],(E=nn[h](k))||(E=nn[v](k,nn.newStyleSheet(nn[e][a[i]][t][Gt]),I,5)),c[r][W](E)),nn[e][a[i]][r][f]>0&&nn[n](nn[e][a[i]][r],function(t){c[r][W](nn[e][a[i]][r][t])})}),nn[C][s][nn[i]]&&(nn[n](nn[C][s][nn[i]],function(e){c[r][W](nn[C][s][nn[i]][e])}),nn[C][s][nn[i]]=[])}else c=nn[C][bt][nn[i]];nn.detachAllElements(c[r]),nn[ht](c[r]),nn[$](function(){nn[Ot](c)}),nn[w].state=nn[C][bt][nn[i]],nn[w][i]=nn[i],nn[ot](kt),nn[n](nn[e],function(e){nn[rt](e)?nn.wasActive(e)||nn[ot]("+"+e):nn.wasActive(e)&&nn[ot]("-"+e)})},getStateId:function(){if(nn[jt]&&nn[t].defaultState)return nn[t].defaultState;var r="";return nn[n](nn[e],function(t){nn[e][t].test()&&(r+=nn.sd+t)}),r},poll:function(){var e="";e=nn.getStateId(),e===""&&(e=nn.sd),e!==nn[i]&&(nn[pt]?nn.changeState(e):(nn[k][Pt][M]=nn[k][Pt][M][F](nn[i][x](1)[F](new RegExp(nn.sd,"g")," "),""),nn.changeState(e),nn[k][Pt][M]=nn[k][Pt][M]+" "+nn[i][x](1)[F](new RegExp(nn.sd,"g")," "),nn[k][Pt][M][it](0)==" "&&(nn[k][Pt][M]=nn[k][Pt][M][x](1))))},updateState:function(){var t,o,u,a,l=[];if(nn[i]==nn.sd)return;t=nn[i][x](1)[xt](nn.sd),nn[n](t,function(s){o=nn[e][t[s]];if(o[r][f]==0)return;nn[n](o[r],function(e){nn[C][bt][nn[i]][r][W](o[r][e]),l[W](o[r][e])})}),nn[C][s][nn[i]]&&(nn[n](nn[C][s][nn[i]],function(e){nn[C][bt][nn[i]][r][W](nn[C][s][nn[i]][e]),l[W](nn[C][s][nn[i]][e])}),nn[C][s][nn[i]]=[]),l[f]>0&&nn[ht](l)},newDiv:function(e){var t=document[g]("div");return t[zt]=e,t},newInline:function(e){var t;return t=document[g](Ht),t.type=gt,t[zt]=e,t},newMeta:function(e,t){var n=document[g]("meta");return n.name=e,n.content=t,n},newStyleSheet:function(e){var t=document[g]("link");return t.rel="stylesheet",t.type=gt,t[Gt]=e,t},initPlugin:function(e,n){typeof n==D&&nn[X](e[t],n),e.init&&e.init()},registerPlugin:function(e,t){if(!t)return u;nn[vt][e]=t,t._=this,t.register&&t.register()},init:function(e,r){nn.initConfig(e),nn.initElements(),nn.initEvents(),nn.poll(),r&&typeof r==D&&(nn[t][vt]=r),nn[n](nn[vt],function(e){nn.initPlugin(nn[vt][e],e in nn[t][vt]?nn[t][vt][e]:c)}),nn.isInit=y,nn[ot]("init")},initAPI:function(){var e,t,r=navigator.userAgent;nn[w][ut]=99,e="other",r[H](/Firefox/)?e="firefox":r[H](/Chrome/)?e="chrome":r[H](/Safari/)&&!r[H](/Chrome/)?e="safari":r[H](/(OPR|Opera)/)?e="opera":r[H](/MSIE ([0-9]+)/)?(e="ie",nn[w][ut]=RegExp.$1):r[H](/Trident\/.+rv:([0-9]+)/)&&(e="ie",nn[w][ut]=RegExp.$1),nn[w].browser=e,nn[w][O]="other",t={ios:"(iPad|iPhone|iPod)",android:"Android",mac:"Macintosh",wp:"Windows Phone",windows:"Windows NT"},nn[n](t,function(e){r[H](new RegExp(t[e],"g"))&&(nn[w][O]=e)});switch(nn[w][O]){case"ios":r[H](/([0-9_]+) like Mac OS X/),e=parseFloat(RegExp.$1[F]("_",".")[F]("_",""));break;case Zt:r[H](/Android ([0-9\.]+)/),e=parseFloat(RegExp.$1);break;case"mac":r[H](/Mac OS X ([0-9_]+)/),e=parseFloat(RegExp.$1[F]("_",".")[F]("_",""));break;case"wp":r[H](/IEMobile\/([0-9\.]+)/),e=parseFloat(RegExp.$1);break;case"windows":r[H](/Windows NT ([0-9\.]+)/),e=parseFloat(RegExp.$1);break;default:e=99}nn[w].deviceVersion=e,nn[w].isTouch=nn[w][O]=="wp"?navigator.msMaxTouchPoints>0:"ontouchstart"in window,nn[w].isMobile=nn[w][O]=="wp"||nn[w][O]==Zt||nn[w][O]=="ios",e=document.cookie[xt](";"),nn[n](e,function(t){var n=e[t][xt]("=");if(n[0][F](/^\s+|\s+$/g,"")==nn.lcn&&n[1][f]>0){nn[w][G]=n[1][xt]("_");return}})},initConfig:function(i){var s=[],o=[],c;if(!i||!(e in i))nn[pt]=y,nn[t][p].width="",nn[t][p].height="",nn[t][p].scalable=y;typeof i==D&&(i[e]&&(nn[t][e]={}),nn[X](nn[t],i)),B in nn[t]&&b in nn[t][B]&&!nn[P](nn[t][B][b])&&(nn[t][B][b]=[nn[t][B][b],nn[t][B][b]]),nn[X](nn[Q][m][B],nn[t][B]),nn[l]=Math.max(nn[l],nn[t][B][ct]),nn[X](nn[Q][m][p],nn[t][p]),nn[Q][m][J]=nn[t][J],nn[n](nn[t][e],function(n){var i,s={},u,a;nn[X](s,nn[t][e][n]),Gt in s||(s[Gt]=nn[Q][m][Gt]),Mt in s||(s[Mt]=nn[Q][m][Mt]),"range"in s&&(u=s.range,u=="*"?a="":u[it](0)=="-"?a="(max-width: "+parseInt(u[x](1))+"px)":u[it](u[f]-1)=="-"?a=Dt+parseInt(u[x](0,u[f]-1))+"px)":nn[U](u,"-")!=-1&&(u=u[xt]("-"),a=Dt+parseInt(u[0])+"px) and (max-width: "+parseInt(u[1])+"px)"),s[Mt]=a),B in s&&(b in s[B]&&!nn[P](s[B][b])&&(s[B][b]=[s[B][b],s[B][b]]),"zoom"in s[B]&&(s[B][ct]=s[B].zoom),ct in s[B]&&(nn[l]=Math.max(nn[l],s[B][ct]))),nn[t][e][n]=s,i={},nn[X](i,nn[Q].breakpoint),i[t]=nn[t][e][n],i.test=function(){return nn[V](s[Mt])},i[r]=[],nn[t].preload&&i[t][Gt]&&o[W](i[t][Gt]),nn[e][n]=i,nn.breakpointList[W](n)});if(nn[l]>1||nn[pt])for(c=2;c<=nn[l];c++)nn[L].k[c]=nn[L].v[c]=c;else nn[n](nn[t][e],function(n){var r=nn[t][e][n];nn[l]++,B in r||(r[B]={}),r[B][ct]=nn[l],nn[L].k[nn[l]]=n,nn[L].v[n]=nn[l]});nn[n](nn[t][ft],function(e){nn.on(e,nn[t][ft][e])}),o[f]>0&&window[Ct].protocol!="file:"&&nn[$](function(){var e,t=document[a](I)[0],r=new XMLHttpRequest;nn[n](o,function(e){r.open("GET",o[e],u),r.send("")})})},initElements:function(){var e=[];e[W](nn[q]("mV",nn.newMeta(p,wt),et,1));switch(nn[t].reset){case"full":e[W](nn[q]("iR",nn[S](nn.css.r),et,2));break;case Lt:e[W](nn[q]("iN",nn[S](nn.css.n),et,2))}e[W](nn[q]("iBM",nn[S](nn.css.bm),et,1)),e[W](nn[q]("iG",nn[S]('.row{border-bottom:solid 1px transparent}.row>*{float:left}.row:after,.row:before{content:"";display:block;clear:both;height:0}.row.uniform>*>:first-child{margin-top:0}.row.uniform>*>:last-child{margin-bottom:0}'+nn.css.gc("")),I,3)),nn[ht](e)},initEvents:function(){var e;!nn[t].pollOnce&&!nn[pt]&&(nn.on(Tt,function(){nn.poll()}),nn.on(A,function(){nn.poll()})),nn[w][O]=="ios"&&nn[$](function(){nn.on(A,function(){var e=document[a]("input");nn[n](e,function(t){e[t][Ft]=e[t][lt],e[t][lt]=""}),window.setTimeout(function(){nn[n](e,function(t){e[t][lt]=e[t][Ft]})},100)})}),nn[$](function(){nn[ot]("ready")}),window[Kt]&&nn.on(Tt,window[Kt]),window[Kt]=function(){nn[ot](Tt)},window[K]&&nn.on(A,window[K]),window[K]=function(){nn[ot](A)}},initUtilityMethods:function(){document[Z]?!function(e,t){nn[$]=t()}(Jt,function(){function e(e){s=1;while(e=t.shift())e()}var t=[],n,r=document,i=mt,s=/^loaded|^c/.test(r[en]);return r[Z](i,n=function(){r[St](i,n),e()}),function(e){s?e():t[W](e)}}):!function(e,t){nn[$]=t()}(Jt,function(e){function t(e){p=1;while(e=n.shift())e()}var n=[],r,i=!1,s=document,o=s[at],u=o.doScroll,a=mt,f=Z,l="onreadystatechange",c=en,h=u?/^loaded|^c/:/^loaded|c/,p=h.test(s[c]);return s[f]&&s[f](a,r=function(){s[St](a,r,i),t()},i),u&&s.attachEvent(l,r=function(){/^c/.test(s[c])&&(s.detachEvent(l,r),t())}),e=u?function(t){self!=top?p?t():n[W](t):function(){try{o.doScroll("left")}catch(n){return setTimeout(function(){e(t)},50)}t()}()}:function(e){p?e():n[W](e)}}),document[o]?nn[o]=function(e){return document[o](e)}:nn[o]=function(e){var t=document;return t[It]?t[It](("."+e[F](" "," ."))[F](/\.([0-9])/,Yt)):[]},Array[Wt][U]?nn[U]=function(e,t){return e[U](t)}:nn[U]=function(e,t){if(typeof e=="string")return e[U](t);var n,r=t?t:0,i;if(!this)throw new TypeError;i=this[f];if(i===0||r>=i)return-1;r<0&&(r=i-Math.abs(r));for(n=r;ns[Xt]||s[qt]!==c&&ls[Rt]?u:y})},preInit:function(){var e=document[a]("script");nn.me=e[e[f]-1],nn.initUtilityMethods(),nn.initAPI(),nn[st](Pt,document[a](Pt)[0]),nn[st](I,document[a](I)[0]),nn[$](function(){nn[st]("body",document[a]("body")[0])}),nn[w].browser=="ie"&&nn[w][ut]>=10&&nn[dt](nn[q]("msie-viewport-fix",nn[S]("@-ms-viewport{width:device-width}"),et,1))}};return nn.preInit(),nn[w][ut]<9&&(nn[Ot]=function(e){},nn[S]=function(e){var t;return t=document[g]("span"),t[zt]=' ",t}),nn}();(function(e,t){typeof define=="function"&&define.amd?define([],t):typeof exports=="object"?module.exports=t():e.skel=t()})(this,function(){return skel}); -------------------------------------------------------------------------------- /working.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/purvanshi/isolvemath/5ad77287f938f7f4fe8a804473a04a9555aff00f/working.png --------------------------------------------------------------------------------