diff --git a/dashboard-ui/autoorganizetv.html b/dashboard-ui/autoorganizetv.html index 121c006686..3a7103b57f 100644 --- a/dashboard-ui/autoorganizetv.html +++ b/dashboard-ui/autoorganizetv.html @@ -1,4 +1,4 @@ -
+
@@ -33,98 +33,101 @@
- -
-
- -
-
-
-
- -
-
+
+
+
+
+ +
+
+
+
+ +
+
-
-

${HeaderSupportedPatterns}

+
+

${HeaderSupportedPatterns}

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
${HeaderTerm}${HeaderPattern}${HeaderResult}
${LabelSeriesNamePlain}%sn${LabelSeriesNamePlain}
${LabelSeriesNamePlain}%s.n${ValueSeriesNamePeriod}
${LabelSeriesNamePlain}%s_n${ValueSeriesNameUnderscore}
${LabelSeasonNumberPlain}%s1
${LabelSeasonNumberPlain}%0s01
${LabelEpisodeNumberPlain}%e4
${LabelEpisodeNumberPlain}%0e04
${LabelEndingEpisodeNumberPlain}%ed5
${LabelEndingEpisodeNumberPlain}%0ed05
${LabelEpisodeNamePlain}%en${LabelEpisodeNamePlain}
${LabelEpisodeNamePlain}%e.n${ValueEpisodeNamePeriod}
${LabelEpisodeNamePlain}%e_n${ValueEpisodeNameUnderscore}
${FileExtension}%extmkv
+
+
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
${HeaderTerm}${HeaderPattern}${HeaderResult}
${LabelSeriesNamePlain}%sn${LabelSeriesNamePlain}
${LabelSeriesNamePlain}%s.n${ValueSeriesNamePeriod}
${LabelSeriesNamePlain}%s_n${ValueSeriesNameUnderscore}
${LabelSeasonNumberPlain}%s1
${LabelSeasonNumberPlain}%0s01
${LabelEpisodeNumberPlain}%e4
${LabelEpisodeNumberPlain}%0e04
${LabelEndingEpisodeNumberPlain}%ed5
${LabelEndingEpisodeNumberPlain}%0ed05
${LabelEpisodeNamePlain}%en${LabelEpisodeNamePlain}
${LabelEpisodeNamePlain}%e.n${ValueEpisodeNamePeriod}
${LabelEpisodeNamePlain}%e_n${ValueEpisodeNameUnderscore}
${FileExtension}%extmkv
-


  • diff --git a/dashboard-ui/bower_components/emby-collapsible/emby-collapsible.html b/dashboard-ui/bower_components/emby-collapsible/emby-collapsible.html deleted file mode 100644 index 270c398409..0000000000 --- a/dashboard-ui/bower_components/emby-collapsible/emby-collapsible.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.js b/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.js index b0294ce015..f9683cdf4f 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.js +++ b/dashboard-ui/bower_components/emby-webcomponents/emby-collapse/emby-collapse.js @@ -82,7 +82,13 @@ this.insertAdjacentHTML('afterbegin', html); - this.querySelector('.emby-collapsible-button').addEventListener('click', onButtonClick); + var button = this.querySelector('.emby-collapsible-button'); + + button.addEventListener('click', onButtonClick); + + if (this.getAttribute('data-expanded') == 'true') { + onButtonClick.call(button); + } }; document.registerElement('emby-collapse', { diff --git a/dashboard-ui/bower_components/emby-webcomponents/voice/voicedialog.js b/dashboard-ui/bower_components/emby-webcomponents/voice/voicedialog.js index 40909adb5a..76ce4c31e4 100644 --- a/dashboard-ui/bower_components/emby-webcomponents/voice/voicedialog.js +++ b/dashboard-ui/bower_components/emby-webcomponents/voice/voicedialog.js @@ -166,11 +166,11 @@ define(['dialogHelper', './voicereceiver', './voiceprocessor', 'globalize', 'emb currentDialog = dlg; dlg.addEventListener('close', function () { + voicereceiver.cancel(); currentDialog = null; }); function onCancelClick() { - voicereceiver.cancel(); dialogHelper.close(dlg); } diff --git a/dashboard-ui/bower_components/fetch/.bower.json b/dashboard-ui/bower_components/fetch/.bower.json index 4a0490aa1c..36c9a6fdea 100644 --- a/dashboard-ui/bower_components/fetch/.bower.json +++ b/dashboard-ui/bower_components/fetch/.bower.json @@ -14,14 +14,15 @@ "test/" ], "homepage": "https://github.com/github/fetch", - "version": "0.11.1", - "_release": "0.11.1", + "version": "1.0.0", + "_release": "1.0.0", "_resolution": { "type": "version", - "tag": "v0.11.1", - "commit": "7d9a11deec5c0ea2d453390be647ba52695166f8" + "tag": "v1.0.0", + "commit": "f054e7b5ce2bf7f86c8d7212c2de026800725b84" }, "_source": "https://github.com/github/fetch.git", - "_target": "^0.11.0", - "_originalSource": "fetch" + "_target": "^1.0.0", + "_originalSource": "fetch", + "_direct": true } \ No newline at end of file diff --git a/dashboard-ui/bower_components/fetch/fetch.js b/dashboard-ui/bower_components/fetch/fetch.js index 01aa5d0639..d0652dea62 100644 --- a/dashboard-ui/bower_components/fetch/fetch.js +++ b/dashboard-ui/bower_components/fetch/fetch.js @@ -5,6 +5,21 @@ return } + var support = { + searchParams: 'URLSearchParams' in self, + iterable: 'Symbol' in self && 'iterator' in Symbol, + blob: 'FileReader' in self && 'Blob' in self && (function() { + try { + new Blob() + return true + } catch(e) { + return false + } + })(), + formData: 'FormData' in self, + arrayBuffer: 'ArrayBuffer' in self + } + function normalizeName(name) { if (typeof name !== 'string') { name = String(name) @@ -22,6 +37,24 @@ return value } + // Build a destructive iterator for the value list + function iteratorFor(items) { + var iterator = { + next: function() { + var value = items.shift() + return {done: value === undefined, value: value} + } + } + + if (support.iterable) { + iterator[Symbol.iterator] = function() { + return iterator + } + } + + return iterator + } + function Headers(headers) { this.map = {} @@ -77,6 +110,28 @@ }, this) } + Headers.prototype.keys = function() { + var items = [] + this.forEach(function(value, name) { items.push(name) }) + return iteratorFor(items) + } + + Headers.prototype.values = function() { + var items = [] + this.forEach(function(value) { items.push(value) }) + return iteratorFor(items) + } + + Headers.prototype.entries = function() { + var items = [] + this.forEach(function(value, name) { items.push([name, value]) }) + return iteratorFor(items) + } + + if (support.iterable) { + Headers.prototype[Symbol.iterator] = Headers.prototype.entries + } + function consumed(body) { if (body.bodyUsed) { return Promise.reject(new TypeError('Already read')) @@ -107,23 +162,9 @@ return fileReaderReady(reader) } - var support = { - blob: 'FileReader' in self && 'Blob' in self && (function() { - try { - new Blob() - return true - } catch(e) { - return false - } - })(), - formData: 'FormData' in self, - arrayBuffer: 'ArrayBuffer' in self - } - function Body() { this.bodyUsed = false - this._initBody = function(body) { this._bodyInit = body if (typeof body === 'string') { @@ -132,6 +173,8 @@ this._bodyBlob = body } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { this._bodyFormData = body + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this._bodyText = body.toString() } else if (!body) { this._bodyText = '' } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) { @@ -146,6 +189,8 @@ this.headers.set('content-type', 'text/plain;charset=UTF-8') } else if (this._bodyBlob && this._bodyBlob.type) { this.headers.set('content-type', this._bodyBlob.type) + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8') } } } @@ -349,13 +394,8 @@ } xhr.onload = function() { - var status = (xhr.status === 1223) ? 204 : xhr.status - if (status < 100 || status > 599) { - reject(new TypeError('Network request failed')) - return - } var options = { - status: status, + status: xhr.status, statusText: xhr.statusText, headers: headers(xhr), url: responseURL() diff --git a/dashboard-ui/bower_components/fingerprintjs2/.bower.json b/dashboard-ui/bower_components/fingerprintjs2/.bower.json index 4ac6387177..e0b82179fc 100644 --- a/dashboard-ui/bower_components/fingerprintjs2/.bower.json +++ b/dashboard-ui/bower_components/fingerprintjs2/.bower.json @@ -23,14 +23,15 @@ "spec" ], "homepage": "https://github.com/Valve/fingerprintjs2", - "version": "1.1.4", - "_release": "1.1.4", + "version": "1.4.0", + "_release": "1.4.0", "_resolution": { "type": "version", - "tag": "1.1.4", - "commit": "ae5719db3d942a1a84ab43b707d4d1c34138934e" + "tag": "1.4.0", + "commit": "75cbd474158f8ecce43e00f198c76e486b896937" }, "_source": "https://github.com/Valve/fingerprintjs2.git", - "_target": "~1.1.2", - "_originalSource": "fingerprintjs2" + "_target": "^1.4.0", + "_originalSource": "fingerprintjs2", + "_direct": true } \ No newline at end of file diff --git a/dashboard-ui/bower_components/fingerprintjs2/CONTRIBUTING.md b/dashboard-ui/bower_components/fingerprintjs2/CONTRIBUTING.md index 33049a1650..7b48355048 100644 --- a/dashboard-ui/bower_components/fingerprintjs2/CONTRIBUTING.md +++ b/dashboard-ui/bower_components/fingerprintjs2/CONTRIBUTING.md @@ -13,7 +13,7 @@ Include in the issue: * Include library call code (I need all options you used when calling the library function) ## Want to add a feature / contribute? - +* Make sure the issue/suggestion does not exist by searching existing issues * Fork the project and make the required changes in it (don't forget to add specs) * PRs w/out specs will not be accepted * Run `gulp` to catch stylistic errors and produce the minified version. diff --git a/dashboard-ui/bower_components/fingerprintjs2/dist/fingerprint2.min.js b/dashboard-ui/bower_components/fingerprintjs2/dist/fingerprint2.min.js index c2a5d2c020..3d5aafd2e6 100644 --- a/dashboard-ui/bower_components/fingerprintjs2/dist/fingerprint2.min.js +++ b/dashboard-ui/bower_components/fingerprintjs2/dist/fingerprint2.min.js @@ -1,2 +1,2 @@ -!function(e,t,i){"use strict";"undefined"!=typeof module&&module.exports?module.exports=i():"function"==typeof define&&define.amd?define(i):t[e]=i()}("Fingerprint2",this,function(){"use strict";Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var i;if(null==this)throw new TypeError("'this' is null or undefined");var a=Object(this),r=a.length>>>0;if(0===r)return-1;var n=+t||0;if(Math.abs(n)===1/0&&(n=0),n>=r)return-1;for(i=Math.max(n>=0?n:r-Math.abs(n),0);r>i;){if(i in a&&a[i]===e)return i;i++}return-1});var e=function(e){var t={swfContainerId:"fingerprintjs2",swfPath:"flash/compiled/FontList.swf",detectScreenOrientation:!0,sortPluginsFor:[/palemoon/i]};this.options=this.extend(e,t),this.nativeForEach=Array.prototype.forEach,this.nativeMap=Array.prototype.map};return e.prototype={extend:function(e,t){if(null==e)return t;for(var i in e)null!=e[i]&&t[i]!==e[i]&&(t[i]=e[i]);return t},log:function(e){window.console&&console.log(e)},get:function(e){var t=[];t=this.userAgentKey(t),t=this.languageKey(t),t=this.colorDepthKey(t),t=this.screenResolutionKey(t),t=this.availableScreenResolutionKey(t),t=this.timezoneOffsetKey(t),t=this.sessionStorageKey(t),t=this.localStorageKey(t),t=this.indexedDbKey(t),t=this.addBehaviorKey(t),t=this.openDatabaseKey(t),t=this.cpuClassKey(t),t=this.platformKey(t),t=this.doNotTrackKey(t),t=this.pluginsKey(t),t=this.canvasKey(t),t=this.webglKey(t),t=this.adBlockKey(t),t=this.hasLiedLanguagesKey(t),t=this.hasLiedResolutionKey(t),t=this.hasLiedOsKey(t),t=this.hasLiedBrowserKey(t),t=this.touchSupportKey(t);var i=this;this.fontsKey(t,function(t){var a=[];i.each(t,function(e){var t=e.value;"undefined"!=typeof e.value.join&&(t=e.value.join(";")),a.push(t)});var r=i.x64hash128(a.join("~~~"),31);return e(r,t)})},userAgentKey:function(e){return this.options.excludeUserAgent||e.push({key:"user_agent",value:this.getUserAgent()}),e},getUserAgent:function(){return navigator.userAgent},languageKey:function(e){return this.options.excludeLanguage||e.push({key:"language",value:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||""}),e},colorDepthKey:function(e){return this.options.excludeColorDepth||e.push({key:"color_depth",value:screen.colorDepth}),e},screenResolutionKey:function(e){return this.options.excludeScreenResolution?e:this.getScreenResolution(e)},getScreenResolution:function(e){var t;return t=this.options.detectScreenOrientation&&screen.height>screen.width?[screen.height,screen.width]:[screen.width,screen.height],"undefined"!=typeof t&&e.push({key:"resolution",value:t}),e},availableScreenResolutionKey:function(e){return this.options.excludeAvailableScreenResolution?e:this.getAvailableScreenResolution(e)},getAvailableScreenResolution:function(e){var t;return screen.availWidth&&screen.availHeight&&(t=this.options.detectScreenOrientation?screen.availHeight>screen.availWidth?[screen.availHeight,screen.availWidth]:[screen.availWidth,screen.availHeight]:[screen.availHeight,screen.availWidth]),"undefined"!=typeof t&&e.push({key:"available_resolution",value:t}),e},timezoneOffsetKey:function(e){return this.options.excludeTimezoneOffset||e.push({key:"timezone_offset",value:(new Date).getTimezoneOffset()}),e},sessionStorageKey:function(e){return!this.options.excludeSessionStorage&&this.hasSessionStorage()&&e.push({key:"session_storage",value:1}),e},localStorageKey:function(e){return!this.options.excludeSessionStorage&&this.hasLocalStorage()&&e.push({key:"local_storage",value:1}),e},indexedDbKey:function(e){return!this.options.excludeIndexedDB&&this.hasIndexedDB()&&e.push({key:"indexed_db",value:1}),e},addBehaviorKey:function(e){return document.body&&!this.options.excludeAddBehavior&&document.body.addBehavior&&e.push({key:"add_behavior",value:1}),e},openDatabaseKey:function(e){return!this.options.excludeOpenDatabase&&window.openDatabase&&e.push({key:"open_database",value:1}),e},cpuClassKey:function(e){return this.options.excludeCpuClass||e.push({key:"cpu_class",value:this.getNavigatorCpuClass()}),e},platformKey:function(e){return this.options.excludePlatform||e.push({key:"navigator_platform",value:this.getNavigatorPlatform()}),e},doNotTrackKey:function(e){return this.options.excludeDoNotTrack||e.push({key:"do_not_track",value:this.getDoNotTrack()}),e},canvasKey:function(e){return!this.options.excludeCanvas&&this.isCanvasSupported()&&e.push({key:"canvas",value:this.getCanvasFp()}),e},webglKey:function(e){return this.options.excludeWebGL?e:this.isWebGlSupported()?(e.push({key:"webgl",value:this.getWebglFp()}),e):e},adBlockKey:function(e){return this.options.excludeAdBlock||e.push({key:"adblock",value:this.getAdBlock()}),e},hasLiedLanguagesKey:function(e){return this.options.excludeHasLiedLanguages||e.push({key:"has_lied_languages",value:this.getHasLiedLanguages()}),e},hasLiedResolutionKey:function(e){return this.options.excludeHasLiedResolution||e.push({key:"has_lied_resolution",value:this.getHasLiedResolution()}),e},hasLiedOsKey:function(e){return this.options.excludeHasLiedOs||e.push({key:"has_lied_os",value:this.getHasLiedOs()}),e},hasLiedBrowserKey:function(e){return this.options.excludeHasLiedBrowser||e.push({key:"has_lied_browser",value:this.getHasLiedBrowser()}),e},fontsKey:function(e,t){return this.options.excludeJsFonts?this.flashFontsKey(e,t):this.jsFontsKey(e,t)},flashFontsKey:function(e,t){return this.options.excludeFlashFonts?t(e):this.hasSwfObjectLoaded()&&this.hasMinFlashInstalled()?"undefined"==typeof this.options.swfPath?t(e):void this.loadSwfAndDetectFonts(function(i){e.push({key:"swf_fonts",value:i.join(";")}),t(e)}):t(e)},jsFontsKey:function(e,t){var i=this;return setTimeout(function(){var a=["monospace","sans-serif","serif"],r="mmmmmmmmmmlli",n="72px",o=document.getElementsByTagName("body")[0],s=document.createElement("span");s.style.position="absolute",s.style.left="-9999px",s.style.fontSize=n,s.innerHTML=r;for(var l={},h={},u=0,d=a.length;d>u;u++)s.style.fontFamily=a[u],o.appendChild(s),l[a[u]]=s.offsetWidth,h[a[u]]=s.offsetHeight,o.removeChild(s);var c=function(e){for(var t=!1,i=0,r=a.length;r>i;i++){s.style.fontFamily=e+","+a[i],o.appendChild(s);var n=s.offsetWidth!==l[a[i]]||s.offsetHeight!==h[a[i]];o.removeChild(s),t=t||n}return t},g=["Andale Mono","Arial","Arial Black","Arial Hebrew","Arial MT","Arial Narrow","Arial Rounded MT Bold","Arial Unicode MS","Bitstream Vera Sans Mono","Book Antiqua","Bookman Old Style","Calibri","Cambria","Cambria Math","Century","Century Gothic","Century Schoolbook","Comic Sans","Comic Sans MS","Consolas","Courier","Courier New","Garamond","Geneva","Georgia","Helvetica","Helvetica Neue","Impact","Lucida Bright","Lucida Calligraphy","Lucida Console","Lucida Fax","LUCIDA GRANDE","Lucida Handwriting","Lucida Sans","Lucida Sans Typewriter","Lucida Sans Unicode","Microsoft Sans Serif","Monaco","Monotype Corsiva","MS Gothic","MS Outlook","MS PGothic","MS Reference Sans Serif","MS Sans Serif","MS Serif","MYRIAD","MYRIAD PRO","Palatino","Palatino Linotype","Segoe Print","Segoe Script","Segoe UI","Segoe UI Light","Segoe UI Semibold","Segoe UI Symbol","Tahoma","Times","Times New Roman","Times New Roman PS","Trebuchet MS","Verdana","Wingdings","Wingdings 2","Wingdings 3"],p=["Abadi MT Condensed Light","Academy Engraved LET","ADOBE CASLON PRO","Adobe Garamond","ADOBE GARAMOND PRO","Agency FB","Aharoni","Albertus Extra Bold","Albertus Medium","Algerian","Amazone BT","American Typewriter","American Typewriter Condensed","AmerType Md BT","Andalus","Angsana New","AngsanaUPC","Antique Olive","Aparajita","Apple Chancery","Apple Color Emoji","Apple SD Gothic Neo","Arabic Typesetting","ARCHER","ARNO PRO","Arrus BT","Aurora Cn BT","AvantGarde Bk BT","AvantGarde Md BT","AVENIR","Ayuthaya","Bandy","Bangla Sangam MN","Bank Gothic","BankGothic Md BT","Baskerville","Baskerville Old Face","Batang","BatangChe","Bauer Bodoni","Bauhaus 93","Bazooka","Bell MT","Bembo","Benguiat Bk BT","Berlin Sans FB","Berlin Sans FB Demi","Bernard MT Condensed","BernhardFashion BT","BernhardMod BT","Big Caslon","BinnerD","Blackadder ITC","BlairMdITC TT","Bodoni 72","Bodoni 72 Oldstyle","Bodoni 72 Smallcaps","Bodoni MT","Bodoni MT Black","Bodoni MT Condensed","Bodoni MT Poster Compressed","Bookshelf Symbol 7","Boulder","Bradley Hand","Bradley Hand ITC","Bremen Bd BT","Britannic Bold","Broadway","Browallia New","BrowalliaUPC","Brush Script MT","Californian FB","Calisto MT","Calligrapher","Candara","CaslonOpnface BT","Castellar","Centaur","Cezanne","CG Omega","CG Times","Chalkboard","Chalkboard SE","Chalkduster","Charlesworth","Charter Bd BT","Charter BT","Chaucer","ChelthmITC Bk BT","Chiller","Clarendon","Clarendon Condensed","CloisterBlack BT","Cochin","Colonna MT","Constantia","Cooper Black","Copperplate","Copperplate Gothic","Copperplate Gothic Bold","Copperplate Gothic Light","CopperplGoth Bd BT","Corbel","Cordia New","CordiaUPC","Cornerstone","Coronet","Cuckoo","Curlz MT","DaunPenh","Dauphin","David","DB LCD Temp","DELICIOUS","Denmark","DFKai-SB","Didot","DilleniaUPC","DIN","DokChampa","Dotum","DotumChe","Ebrima","Edwardian Script ITC","Elephant","English 111 Vivace BT","Engravers MT","EngraversGothic BT","Eras Bold ITC","Eras Demi ITC","Eras Light ITC","Eras Medium ITC","EucrosiaUPC","Euphemia","Euphemia UCAS","EUROSTILE","Exotc350 Bd BT","FangSong","Felix Titling","Fixedsys","FONTIN","Footlight MT Light","Forte","FrankRuehl","Fransiscan","Freefrm721 Blk BT","FreesiaUPC","Freestyle Script","French Script MT","FrnkGothITC Bk BT","Fruitger","FRUTIGER","Futura","Futura Bk BT","Futura Lt BT","Futura Md BT","Futura ZBlk BT","FuturaBlack BT","Gabriola","Galliard BT","Gautami","Geeza Pro","Geometr231 BT","Geometr231 Hv BT","Geometr231 Lt BT","GeoSlab 703 Lt BT","GeoSlab 703 XBd BT","Gigi","Gill Sans","Gill Sans MT","Gill Sans MT Condensed","Gill Sans MT Ext Condensed Bold","Gill Sans Ultra Bold","Gill Sans Ultra Bold Condensed","Gisha","Gloucester MT Extra Condensed","GOTHAM","GOTHAM BOLD","Goudy Old Style","Goudy Stout","GoudyHandtooled BT","GoudyOLSt BT","Gujarati Sangam MN","Gulim","GulimChe","Gungsuh","GungsuhChe","Gurmukhi MN","Haettenschweiler","Harlow Solid Italic","Harrington","Heather","Heiti SC","Heiti TC","HELV","Herald","High Tower Text","Hiragino Kaku Gothic ProN","Hiragino Mincho ProN","Hoefler Text","Humanst 521 Cn BT","Humanst521 BT","Humanst521 Lt BT","Imprint MT Shadow","Incised901 Bd BT","Incised901 BT","Incised901 Lt BT","INCONSOLATA","Informal Roman","Informal011 BT","INTERSTATE","IrisUPC","Iskoola Pota","JasmineUPC","Jazz LET","Jenson","Jester","Jokerman","Juice ITC","Kabel Bk BT","Kabel Ult BT","Kailasa","KaiTi","Kalinga","Kannada Sangam MN","Kartika","Kaufmann Bd BT","Kaufmann BT","Khmer UI","KodchiangUPC","Kokila","Korinna BT","Kristen ITC","Krungthep","Kunstler Script","Lao UI","Latha","Leelawadee","Letter Gothic","Levenim MT","LilyUPC","Lithograph","Lithograph Light","Long Island","Lydian BT","Magneto","Maiandra GD","Malayalam Sangam MN","Malgun Gothic","Mangal","Marigold","Marion","Marker Felt","Market","Marlett","Matisse ITC","Matura MT Script Capitals","Meiryo","Meiryo UI","Microsoft Himalaya","Microsoft JhengHei","Microsoft New Tai Lue","Microsoft PhagsPa","Microsoft Tai Le","Microsoft Uighur","Microsoft YaHei","Microsoft Yi Baiti","MingLiU","MingLiU_HKSCS","MingLiU_HKSCS-ExtB","MingLiU-ExtB","Minion","Minion Pro","Miriam","Miriam Fixed","Mistral","Modern","Modern No. 20","Mona Lisa Solid ITC TT","Mongolian Baiti","MONO","MoolBoran","Mrs Eaves","MS LineDraw","MS Mincho","MS PMincho","MS Reference Specialty","MS UI Gothic","MT Extra","MUSEO","MV Boli","Nadeem","Narkisim","NEVIS","News Gothic","News GothicMT","NewsGoth BT","Niagara Engraved","Niagara Solid","Noteworthy","NSimSun","Nyala","OCR A Extended","Old Century","Old English Text MT","Onyx","Onyx BT","OPTIMA","Oriya Sangam MN","OSAKA","OzHandicraft BT","Palace Script MT","Papyrus","Parchment","Party LET","Pegasus","Perpetua","Perpetua Titling MT","PetitaBold","Pickwick","Plantagenet Cherokee","Playbill","PMingLiU","PMingLiU-ExtB","Poor Richard","Poster","PosterBodoni BT","PRINCETOWN LET","Pristina","PTBarnum BT","Pythagoras","Raavi","Rage Italic","Ravie","Ribbon131 Bd BT","Rockwell","Rockwell Condensed","Rockwell Extra Bold","Rod","Roman","Sakkal Majalla","Santa Fe LET","Savoye LET","Sceptre","Script","Script MT Bold","SCRIPTINA","Serifa","Serifa BT","Serifa Th BT","ShelleyVolante BT","Sherwood","Shonar Bangla","Showcard Gothic","Shruti","Signboard","SILKSCREEN","SimHei","Simplified Arabic","Simplified Arabic Fixed","SimSun","SimSun-ExtB","Sinhala Sangam MN","Sketch Rockwell","Skia","Small Fonts","Snap ITC","Snell Roundhand","Socket","Souvenir Lt BT","Staccato222 BT","Steamer","Stencil","Storybook","Styllo","Subway","Swis721 BlkEx BT","Swiss911 XCm BT","Sylfaen","Synchro LET","System","Tamil Sangam MN","Technical","Teletype","Telugu Sangam MN","Tempus Sans ITC","Terminal","Thonburi","Traditional Arabic","Trajan","TRAJAN PRO","Tristan","Tubular","Tunga","Tw Cen MT","Tw Cen MT Condensed","Tw Cen MT Condensed Extra Bold","TypoUpright BT","Unicorn","Univers","Univers CE 55 Medium","Univers Condensed","Utsaah","Vagabond","Vani","Vijaya","Viner Hand ITC","VisualUI","Vivaldi","Vladimir Script","Vrinda","Westminster","WHITNEY","Wide Latin","ZapfEllipt BT","ZapfHumnst BT","ZapfHumnst Dm BT","Zapfino","Zurich BlkEx BT","Zurich Ex BT","ZWAdobeF"];i.options.extendedJsFonts&&(g=g.concat(p));for(var f=[],m=0,S=g.length;S>m;m++)c(g[m])&&f.push(g[m]);e.push({key:"js_fonts",value:f}),t(e)},1)},pluginsKey:function(e){return this.options.excludePlugins||(this.isIE()?this.options.excludeIEPlugins||e.push({key:"ie_plugins",value:this.getIEPlugins()}):e.push({key:"regular_plugins",value:this.getRegularPlugins()})),e},getRegularPlugins:function(){for(var e=[],t=0,i=navigator.plugins.length;i>t;t++)e.push(navigator.plugins[t]);return this.pluginsShouldBeSorted()&&(e=e.sort(function(e,t){return e.name>t.name?1:e.namet;t++){var a=this.options.sortPluginsFor[t];if(navigator.userAgent.match(a)){e=!0;break}}return e},touchSupportKey:function(e){return this.options.excludeTouchSupport||e.push({key:"touch_support",value:this.getTouchSupport()}),e},hasSessionStorage:function(){try{return!!window.sessionStorage}catch(e){return!0}},hasLocalStorage:function(){try{return!!window.localStorage}catch(e){return!0}},hasIndexedDB:function(){return!!window.indexedDB},getNavigatorCpuClass:function(){return navigator.cpuClass?navigator.cpuClass:"unknown"},getNavigatorPlatform:function(){return navigator.platform?navigator.platform:"unknown"},getDoNotTrack:function(){return navigator.doNotTrack?navigator.doNotTrack:"unknown"},getTouchSupport:function(){var e=0,t=!1;"undefined"!=typeof navigator.maxTouchPoints?e=navigator.maxTouchPoints:"undefined"!=typeof navigator.msMaxTouchPoints&&(e=navigator.msMaxTouchPoints);try{document.createEvent("TouchEvent"),t=!0}catch(i){}var a="ontouchstart"in window;return[e,t,a]},getCanvasFp:function(){var e=[],t=document.createElement("canvas");t.width=2e3,t.height=200,t.style.display="inline";var i=t.getContext("2d");return i.rect(0,0,10,10),i.rect(2,2,6,6),e.push("canvas winding:"+(i.isPointInPath(5,5,"evenodd")===!1?"yes":"no")),i.textBaseline="alphabetic",i.fillStyle="#f60",i.fillRect(125,1,62,20),i.fillStyle="#069",this.options.dontUseFakeFontInCanvas?i.font="11pt Arial":i.font="11pt no-real-font-123",i.fillText("Cwm fjordbank glyphs vext quiz, 😃",2,15),i.fillStyle="rgba(102, 204, 0, 0.7)",i.font="18pt Arial",i.fillText("Cwm fjordbank glyphs vext quiz, 😃",4,45),i.globalCompositeOperation="multiply",i.fillStyle="rgb(255,0,255)",i.beginPath(),i.arc(50,50,50,0,2*Math.PI,!0),i.closePath(),i.fill(),i.fillStyle="rgb(0,255,255)",i.beginPath(),i.arc(100,50,50,0,2*Math.PI,!0),i.closePath(),i.fill(),i.fillStyle="rgb(255,255,0)",i.beginPath(),i.arc(75,100,50,0,2*Math.PI,!0),i.closePath(),i.fill(),i.fillStyle="rgb(255,0,255)",i.arc(75,75,75,0,2*Math.PI,!0),i.arc(75,75,25,0,2*Math.PI,!0),i.fill("evenodd"),e.push("canvas fp:"+t.toDataURL()),e.join("~")},getWebglFp:function(){var e,t=function(t){return e.clearColor(0,0,0,1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),"["+t[0]+", "+t[1]+"]"},i=function(e){var t,i=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic");return i?(t=e.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT),0===t&&(t=2),t):null};if(e=this.getWebglCanvas(),!e)return null;var a=[],r="attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}",n="precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}",o=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,o);var s=new Float32Array([-.2,-.9,0,.4,-.26,0,0,.732134444,0]);e.bufferData(e.ARRAY_BUFFER,s,e.STATIC_DRAW),o.itemSize=3,o.numItems=3;var l=e.createProgram(),h=e.createShader(e.VERTEX_SHADER);e.shaderSource(h,r),e.compileShader(h);var u=e.createShader(e.FRAGMENT_SHADER);return e.shaderSource(u,n),e.compileShader(u),e.attachShader(l,h),e.attachShader(l,u),e.linkProgram(l),e.useProgram(l),l.vertexPosAttrib=e.getAttribLocation(l,"attrVertex"),l.offsetUniform=e.getUniformLocation(l,"uniformOffset"),e.enableVertexAttribArray(l.vertexPosArray),e.vertexAttribPointer(l.vertexPosAttrib,o.itemSize,e.FLOAT,!1,0,0),e.uniform2f(l.offsetUniform,1,1),e.drawArrays(e.TRIANGLE_STRIP,0,o.numItems),null!=e.canvas&&a.push(e.canvas.toDataURL()),a.push("extensions:"+e.getSupportedExtensions().join(";")),a.push("webgl aliased line width range:"+t(e.getParameter(e.ALIASED_LINE_WIDTH_RANGE))),a.push("webgl aliased point size range:"+t(e.getParameter(e.ALIASED_POINT_SIZE_RANGE))),a.push("webgl alpha bits:"+e.getParameter(e.ALPHA_BITS)),a.push("webgl antialiasing:"+(e.getContextAttributes().antialias?"yes":"no")),a.push("webgl blue bits:"+e.getParameter(e.BLUE_BITS)),a.push("webgl depth bits:"+e.getParameter(e.DEPTH_BITS)),a.push("webgl green bits:"+e.getParameter(e.GREEN_BITS)),a.push("webgl max anisotropy:"+i(e)),a.push("webgl max combined texture image units:"+e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS)),a.push("webgl max cube map texture size:"+e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE)),a.push("webgl max fragment uniform vectors:"+e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS)),a.push("webgl max render buffer size:"+e.getParameter(e.MAX_RENDERBUFFER_SIZE)),a.push("webgl max texture image units:"+e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS)),a.push("webgl max texture size:"+e.getParameter(e.MAX_TEXTURE_SIZE)),a.push("webgl max varying vectors:"+e.getParameter(e.MAX_VARYING_VECTORS)),a.push("webgl max vertex attribs:"+e.getParameter(e.MAX_VERTEX_ATTRIBS)),a.push("webgl max vertex texture image units:"+e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS)),a.push("webgl max vertex uniform vectors:"+e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS)),a.push("webgl max viewport dims:"+t(e.getParameter(e.MAX_VIEWPORT_DIMS))),a.push("webgl red bits:"+e.getParameter(e.RED_BITS)),a.push("webgl renderer:"+e.getParameter(e.RENDERER)),a.push("webgl shading language version:"+e.getParameter(e.SHADING_LANGUAGE_VERSION)),a.push("webgl stencil bits:"+e.getParameter(e.STENCIL_BITS)),a.push("webgl vendor:"+e.getParameter(e.VENDOR)),a.push("webgl version:"+e.getParameter(e.VERSION)),e.getShaderPrecisionFormat?(a.push("webgl vertex shader high float precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT).precision),a.push("webgl vertex shader high float precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT).rangeMin),a.push("webgl vertex shader high float precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT).rangeMax),a.push("webgl vertex shader medium float precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision),a.push("webgl vertex shader medium float precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).rangeMin),a.push("webgl vertex shader medium float precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).rangeMax),a.push("webgl vertex shader low float precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_FLOAT).precision),a.push("webgl vertex shader low float precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_FLOAT).rangeMin),a.push("webgl vertex shader low float precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_FLOAT).rangeMax),a.push("webgl fragment shader high float precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision),a.push("webgl fragment shader high float precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).rangeMin),a.push("webgl fragment shader high float precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).rangeMax),a.push("webgl fragment shader medium float precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision),a.push("webgl fragment shader medium float precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).rangeMin),a.push("webgl fragment shader medium float precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).rangeMax),a.push("webgl fragment shader low float precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_FLOAT).precision),a.push("webgl fragment shader low float precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_FLOAT).rangeMin),a.push("webgl fragment shader low float precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_FLOAT).rangeMax),a.push("webgl vertex shader high int precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_INT).precision),a.push("webgl vertex shader high int precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_INT).rangeMin),a.push("webgl vertex shader high int precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_INT).rangeMax),a.push("webgl vertex shader medium int precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_INT).precision),a.push("webgl vertex shader medium int precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_INT).rangeMin),a.push("webgl vertex shader medium int precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_INT).rangeMax),a.push("webgl vertex shader low int precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_INT).precision),a.push("webgl vertex shader low int precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_INT).rangeMin),a.push("webgl vertex shader low int precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_INT).rangeMax),a.push("webgl fragment shader high int precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_INT).precision),a.push("webgl fragment shader high int precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_INT).rangeMin),a.push("webgl fragment shader high int precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_INT).rangeMax),a.push("webgl fragment shader medium int precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_INT).precision),a.push("webgl fragment shader medium int precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_INT).rangeMin),a.push("webgl fragment shader medium int precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_INT).rangeMax),a.push("webgl fragment shader low int precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_INT).precision),a.push("webgl fragment shader low int precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_INT).rangeMin),a.push("webgl fragment shader low int precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_INT).rangeMax),a.join("~")):a.join("~")},getAdBlock:function(){var e=document.createElement("div");e.setAttribute("id","ads");try{return document.body.appendChild(e),!document.getElementById("ads")}catch(t){return!1}},getHasLiedLanguages:function(){if("undefined"!=typeof navigator.languages)try{var e=navigator.languages[0].substr(0,2);if(e!==navigator.language.substr(0,2))return!0}catch(t){return!0}return!1},getHasLiedResolution:function(){return screen.width=0?"Windows Phone":t.indexOf("win")>=0?"Windows":t.indexOf("android")>=0?"Android":t.indexOf("linux")>=0?"Linux":t.indexOf("iphone")>=0||t.indexOf("ipad")>=0?"iOS":t.indexOf("mac")>=0?"Mac":"Other";var r;if(r="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0,r&&"Windows Phone"!==e&&"Android"!==e&&"iOS"!==e&&"Other"!==e)return!0;if("undefined"!=typeof i){if(i=i.toLowerCase(),i.indexOf("win")>=0&&"Windows"!==e&&"Windows Phone"!==e)return!0;if(i.indexOf("linux")>=0&&"Linux"!==e&&"Android"!==e)return!0;if(i.indexOf("mac")>=0&&"Mac"!==e&&"iOS"!==e)return!0;if(0===i.indexOf("win")&&0===i.indexOf("linux")&&i.indexOf("mac")>=0&&"other"!==e)return!0}return a.indexOf("win")>=0&&"Windows"!==e&&"Windows Phone"!==e?!0:(a.indexOf("linux")>=0||a.indexOf("android")>=0||a.indexOf("pike")>=0)&&"Linux"!==e&&"Android"!==e?!0:(a.indexOf("mac")>=0||a.indexOf("ipad")>=0||a.indexOf("ipod")>=0||a.indexOf("iphone")>=0)&&"Mac"!==e&&"iOS"!==e?!0:0===a.indexOf("win")&&0===a.indexOf("linux")&&a.indexOf("mac")>=0&&"other"!==e?!0:"undefined"==typeof navigator.plugins&&"Windows"!==e&&"Windows Phone"!==e},getHasLiedBrowser:function(){var e,t=navigator.userAgent.toLowerCase(),i=navigator.productSub;if(e=t.indexOf("firefox")>=0?"Firefox":t.indexOf("opera")>=0||t.indexOf("opr")>=0?"Opera":t.indexOf("chrome")>=0?"Chrome":t.indexOf("safari")>=0?"Safari":t.indexOf("trident")>=0?"Internet Explorer":"Other",("Chrome"===e||"Safari"===e||"Opera"===e)&&"20030107"!==i)return!0;var a=eval.toString().length;if(37===a&&"Safari"!==e&&"Firefox"!==e&&"Other"!==e)return!0;if(39===a&&"Internet Explorer"!==e&&"Other"!==e)return!0;if(33===a&&"Chrome"!==e&&"Opera"!==e&&"Other"!==e)return!0;var r;try{throw"a"}catch(n){try{n.toSource(),r=!0}catch(o){r=!1}}return!(!r||"Firefox"===e||"Other"===e)},isCanvasSupported:function(){var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))},isWebGlSupported:function(){if(!this.isCanvasSupported())return!1;var e,t=document.createElement("canvas");try{e=t.getContext&&(t.getContext("webgl")||t.getContext("experimental-webgl"))}catch(i){e=!1}return!!window.WebGLRenderingContext&&!!e},isIE:function(){return"Microsoft Internet Explorer"===navigator.appName?!0:!("Netscape"!==navigator.appName||!/Trident/.test(navigator.userAgent))},hasSwfObjectLoaded:function(){return"undefined"!=typeof window.swfobject},hasMinFlashInstalled:function(){return swfobject.hasFlashPlayerVersion("9.0.0")},addFlashDivNode:function(){var e=document.createElement("div");e.setAttribute("id",this.options.swfContainerId),document.body.appendChild(e)},loadSwfAndDetectFonts:function(e){var t="___fp_swf_loaded";window[t]=function(t){e(t)};var i=this.options.swfContainerId;this.addFlashDivNode();var a={onReady:t},r={allowScriptAccess:"always",menu:"false"};swfobject.embedSWF(this.options.swfPath,i,"1","1","9.0.0",!1,a,r,{})},getWebglCanvas:function(){var e=document.createElement("canvas"),t=null;try{t=e.getContext("webgl")||e.getContext("experimental-webgl")}catch(i){}return t||(t=null),t},each:function(e,t,i){if(null!==e)if(this.nativeForEach&&e.forEach===this.nativeForEach)e.forEach(t,i);else if(e.length===+e.length){for(var a=0,r=e.length;r>a;a++)if(t.call(i,e[a],a,e)==={})return}else for(var n in e)if(e.hasOwnProperty(n)&&t.call(i,e[n],n,e)==={})return},map:function(e,t,i){var a=[];return null==e?a:this.nativeMap&&e.map===this.nativeMap?e.map(t,i):(this.each(e,function(e,r,n){a[a.length]=t.call(i,e,r,n)}),a)},x64Add:function(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var i=[0,0,0,0];return i[3]+=e[3]+t[3],i[2]+=i[3]>>>16,i[3]&=65535,i[2]+=e[2]+t[2],i[1]+=i[2]>>>16,i[2]&=65535,i[1]+=e[1]+t[1],i[0]+=i[1]>>>16,i[1]&=65535,i[0]+=e[0]+t[0],i[0]&=65535,[i[0]<<16|i[1],i[2]<<16|i[3]]},x64Multiply:function(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var i=[0,0,0,0];return i[3]+=e[3]*t[3],i[2]+=i[3]>>>16,i[3]&=65535,i[2]+=e[2]*t[3],i[1]+=i[2]>>>16,i[2]&=65535,i[2]+=e[3]*t[2],i[1]+=i[2]>>>16,i[2]&=65535,i[1]+=e[1]*t[3],i[0]+=i[1]>>>16,i[1]&=65535,i[1]+=e[2]*t[2],i[0]+=i[1]>>>16,i[1]&=65535,i[1]+=e[3]*t[1],i[0]+=i[1]>>>16,i[1]&=65535,i[0]+=e[0]*t[3]+e[1]*t[2]+e[2]*t[1]+e[3]*t[0],i[0]&=65535,[i[0]<<16|i[1],i[2]<<16|i[3]]},x64Rotl:function(e,t){return t%=64,32===t?[e[1],e[0]]:32>t?[e[0]<>>32-t,e[1]<>>32-t]:(t-=32,[e[1]<>>32-t,e[0]<>>32-t])},x64LeftShift:function(e,t){return t%=64,0===t?e:32>t?[e[0]<>>32-t,e[1]<>>1]),e=this.x64Multiply(e,[4283543511,3981806797]),e=this.x64Xor(e,[0,e[0]>>>1]),e=this.x64Multiply(e,[3301882366,444984403]),e=this.x64Xor(e,[0,e[0]>>>1])},x64hash128:function(e,t){e=e||"",t=t||0;for(var i=e.length%16,a=e.length-i,r=[0,t],n=[0,t],o=[0,0],s=[0,0],l=[2277735313,289559509],h=[1291169091,658871167],u=0;a>u;u+=16)o=[255&e.charCodeAt(u+4)|(255&e.charCodeAt(u+5))<<8|(255&e.charCodeAt(u+6))<<16|(255&e.charCodeAt(u+7))<<24,255&e.charCodeAt(u)|(255&e.charCodeAt(u+1))<<8|(255&e.charCodeAt(u+2))<<16|(255&e.charCodeAt(u+3))<<24],s=[255&e.charCodeAt(u+12)|(255&e.charCodeAt(u+13))<<8|(255&e.charCodeAt(u+14))<<16|(255&e.charCodeAt(u+15))<<24,255&e.charCodeAt(u+8)|(255&e.charCodeAt(u+9))<<8|(255&e.charCodeAt(u+10))<<16|(255&e.charCodeAt(u+11))<<24],o=this.x64Multiply(o,l),o=this.x64Rotl(o,31),o=this.x64Multiply(o,h),r=this.x64Xor(r,o),r=this.x64Rotl(r,27),r=this.x64Add(r,n),r=this.x64Add(this.x64Multiply(r,[0,5]),[0,1390208809]),s=this.x64Multiply(s,h),s=this.x64Rotl(s,33),s=this.x64Multiply(s,l),n=this.x64Xor(n,s),n=this.x64Rotl(n,31),n=this.x64Add(n,r),n=this.x64Add(this.x64Multiply(n,[0,5]),[0,944331445]);switch(o=[0,0],s=[0,0],i){case 15:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+14)],48));case 14:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+13)],40));case 13:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+12)],32));case 12:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+11)],24));case 11:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+10)],16));case 10:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+9)],8));case 9:s=this.x64Xor(s,[0,e.charCodeAt(u+8)]),s=this.x64Multiply(s,h), -s=this.x64Rotl(s,33),s=this.x64Multiply(s,l),n=this.x64Xor(n,s);case 8:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+7)],56));case 7:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+6)],48));case 6:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+5)],40));case 5:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+4)],32));case 4:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+3)],24));case 3:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+2)],16));case 2:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+1)],8));case 1:o=this.x64Xor(o,[0,e.charCodeAt(u)]),o=this.x64Multiply(o,l),o=this.x64Rotl(o,31),o=this.x64Multiply(o,h),r=this.x64Xor(r,o)}return r=this.x64Xor(r,[0,e.length]),n=this.x64Xor(n,[0,e.length]),r=this.x64Add(r,n),n=this.x64Add(n,r),r=this.x64Fmix(r),n=this.x64Fmix(n),r=this.x64Add(r,n),n=this.x64Add(n,r),("00000000"+(r[0]>>>0).toString(16)).slice(-8)+("00000000"+(r[1]>>>0).toString(16)).slice(-8)+("00000000"+(n[0]>>>0).toString(16)).slice(-8)+("00000000"+(n[1]>>>0).toString(16)).slice(-8)}},e.VERSION="1.1.4",e}); \ No newline at end of file +!function(e,t,i){"use strict";"undefined"!=typeof module&&module.exports?module.exports=i():"function"==typeof define&&define.amd?define(i):t[e]=i()}("Fingerprint2",this,function(){"use strict";Array.prototype.indexOf||(Array.prototype.indexOf=function(e,t){var i;if(null==this)throw new TypeError("'this' is null or undefined");var a=Object(this),r=a.length>>>0;if(0===r)return-1;var n=+t||0;if(Math.abs(n)===1/0&&(n=0),n>=r)return-1;for(i=Math.max(n>=0?n:r-Math.abs(n),0);r>i;){if(i in a&&a[i]===e)return i;i++}return-1});var e=function(e){var t={swfContainerId:"fingerprintjs2",swfPath:"flash/compiled/FontList.swf",detectScreenOrientation:!0,sortPluginsFor:[/palemoon/i]};this.options=this.extend(e,t),this.nativeForEach=Array.prototype.forEach,this.nativeMap=Array.prototype.map};return e.prototype={extend:function(e,t){if(null==e)return t;for(var i in e)null!=e[i]&&t[i]!==e[i]&&(t[i]=e[i]);return t},log:function(e){window.console&&console.log(e)},get:function(e){var t=[];t=this.userAgentKey(t),t=this.languageKey(t),t=this.colorDepthKey(t),t=this.pixelRatioKey(t),t=this.screenResolutionKey(t),t=this.availableScreenResolutionKey(t),t=this.timezoneOffsetKey(t),t=this.sessionStorageKey(t),t=this.localStorageKey(t),t=this.indexedDbKey(t),t=this.addBehaviorKey(t),t=this.openDatabaseKey(t),t=this.cpuClassKey(t),t=this.platformKey(t),t=this.doNotTrackKey(t),t=this.pluginsKey(t),t=this.canvasKey(t),t=this.webglKey(t),t=this.adBlockKey(t),t=this.hasLiedLanguagesKey(t),t=this.hasLiedResolutionKey(t),t=this.hasLiedOsKey(t),t=this.hasLiedBrowserKey(t),t=this.touchSupportKey(t);var i=this;this.fontsKey(t,function(t){var a=[];i.each(t,function(e){var t=e.value;"undefined"!=typeof e.value.join&&(t=e.value.join(";")),a.push(t)});var r=i.x64hash128(a.join("~~~"),31);return e(r,t)})},userAgentKey:function(e){return this.options.excludeUserAgent||e.push({key:"user_agent",value:this.getUserAgent()}),e},getUserAgent:function(){return navigator.userAgent},languageKey:function(e){return this.options.excludeLanguage||e.push({key:"language",value:navigator.language||navigator.userLanguage||navigator.browserLanguage||navigator.systemLanguage||""}),e},colorDepthKey:function(e){return this.options.excludeColorDepth||e.push({key:"color_depth",value:screen.colorDepth}),e},pixelRatioKey:function(e){return this.options.excludePixelRatio||e.push({key:"pixel_ratio",value:this.getPixelRatio()}),e},getPixelRatio:function(){return window.devicePixelRatio||""},screenResolutionKey:function(e){return this.options.excludeScreenResolution?e:this.getScreenResolution(e)},getScreenResolution:function(e){var t;return t=this.options.detectScreenOrientation&&screen.height>screen.width?[screen.height,screen.width]:[screen.width,screen.height],"undefined"!=typeof t&&e.push({key:"resolution",value:t}),e},availableScreenResolutionKey:function(e){return this.options.excludeAvailableScreenResolution?e:this.getAvailableScreenResolution(e)},getAvailableScreenResolution:function(e){var t;return screen.availWidth&&screen.availHeight&&(t=this.options.detectScreenOrientation?screen.availHeight>screen.availWidth?[screen.availHeight,screen.availWidth]:[screen.availWidth,screen.availHeight]:[screen.availHeight,screen.availWidth]),"undefined"!=typeof t&&e.push({key:"available_resolution",value:t}),e},timezoneOffsetKey:function(e){return this.options.excludeTimezoneOffset||e.push({key:"timezone_offset",value:(new Date).getTimezoneOffset()}),e},sessionStorageKey:function(e){return!this.options.excludeSessionStorage&&this.hasSessionStorage()&&e.push({key:"session_storage",value:1}),e},localStorageKey:function(e){return!this.options.excludeSessionStorage&&this.hasLocalStorage()&&e.push({key:"local_storage",value:1}),e},indexedDbKey:function(e){return!this.options.excludeIndexedDB&&this.hasIndexedDB()&&e.push({key:"indexed_db",value:1}),e},addBehaviorKey:function(e){return document.body&&!this.options.excludeAddBehavior&&document.body.addBehavior&&e.push({key:"add_behavior",value:1}),e},openDatabaseKey:function(e){return!this.options.excludeOpenDatabase&&window.openDatabase&&e.push({key:"open_database",value:1}),e},cpuClassKey:function(e){return this.options.excludeCpuClass||e.push({key:"cpu_class",value:this.getNavigatorCpuClass()}),e},platformKey:function(e){return this.options.excludePlatform||e.push({key:"navigator_platform",value:this.getNavigatorPlatform()}),e},doNotTrackKey:function(e){return this.options.excludeDoNotTrack||e.push({key:"do_not_track",value:this.getDoNotTrack()}),e},canvasKey:function(e){return!this.options.excludeCanvas&&this.isCanvasSupported()&&e.push({key:"canvas",value:this.getCanvasFp()}),e},webglKey:function(e){return this.options.excludeWebGL?e:this.isWebGlSupported()?(e.push({key:"webgl",value:this.getWebglFp()}),e):e},adBlockKey:function(e){return this.options.excludeAdBlock||e.push({key:"adblock",value:this.getAdBlock()}),e},hasLiedLanguagesKey:function(e){return this.options.excludeHasLiedLanguages||e.push({key:"has_lied_languages",value:this.getHasLiedLanguages()}),e},hasLiedResolutionKey:function(e){return this.options.excludeHasLiedResolution||e.push({key:"has_lied_resolution",value:this.getHasLiedResolution()}),e},hasLiedOsKey:function(e){return this.options.excludeHasLiedOs||e.push({key:"has_lied_os",value:this.getHasLiedOs()}),e},hasLiedBrowserKey:function(e){return this.options.excludeHasLiedBrowser||e.push({key:"has_lied_browser",value:this.getHasLiedBrowser()}),e},fontsKey:function(e,t){return this.options.excludeJsFonts?this.flashFontsKey(e,t):this.jsFontsKey(e,t)},flashFontsKey:function(e,t){return this.options.excludeFlashFonts?t(e):this.hasSwfObjectLoaded()&&this.hasMinFlashInstalled()?"undefined"==typeof this.options.swfPath?t(e):void this.loadSwfAndDetectFonts(function(i){e.push({key:"swf_fonts",value:i.join(";")}),t(e)}):t(e)},jsFontsKey:function(e,t){var i=this;return setTimeout(function(){var a=["monospace","sans-serif","serif"],r=["Andale Mono","Arial","Arial Black","Arial Hebrew","Arial MT","Arial Narrow","Arial Rounded MT Bold","Arial Unicode MS","Bitstream Vera Sans Mono","Book Antiqua","Bookman Old Style","Calibri","Cambria","Cambria Math","Century","Century Gothic","Century Schoolbook","Comic Sans","Comic Sans MS","Consolas","Courier","Courier New","Garamond","Geneva","Georgia","Helvetica","Helvetica Neue","Impact","Lucida Bright","Lucida Calligraphy","Lucida Console","Lucida Fax","LUCIDA GRANDE","Lucida Handwriting","Lucida Sans","Lucida Sans Typewriter","Lucida Sans Unicode","Microsoft Sans Serif","Monaco","Monotype Corsiva","MS Gothic","MS Outlook","MS PGothic","MS Reference Sans Serif","MS Sans Serif","MS Serif","MYRIAD","MYRIAD PRO","Palatino","Palatino Linotype","Segoe Print","Segoe Script","Segoe UI","Segoe UI Light","Segoe UI Semibold","Segoe UI Symbol","Tahoma","Times","Times New Roman","Times New Roman PS","Trebuchet MS","Verdana","Wingdings","Wingdings 2","Wingdings 3"],n=["Abadi MT Condensed Light","Academy Engraved LET","ADOBE CASLON PRO","Adobe Garamond","ADOBE GARAMOND PRO","Agency FB","Aharoni","Albertus Extra Bold","Albertus Medium","Algerian","Amazone BT","American Typewriter","American Typewriter Condensed","AmerType Md BT","Andalus","Angsana New","AngsanaUPC","Antique Olive","Aparajita","Apple Chancery","Apple Color Emoji","Apple SD Gothic Neo","Arabic Typesetting","ARCHER","ARNO PRO","Arrus BT","Aurora Cn BT","AvantGarde Bk BT","AvantGarde Md BT","AVENIR","Ayuthaya","Bandy","Bangla Sangam MN","Bank Gothic","BankGothic Md BT","Baskerville","Baskerville Old Face","Batang","BatangChe","Bauer Bodoni","Bauhaus 93","Bazooka","Bell MT","Bembo","Benguiat Bk BT","Berlin Sans FB","Berlin Sans FB Demi","Bernard MT Condensed","BernhardFashion BT","BernhardMod BT","Big Caslon","BinnerD","Blackadder ITC","BlairMdITC TT","Bodoni 72","Bodoni 72 Oldstyle","Bodoni 72 Smallcaps","Bodoni MT","Bodoni MT Black","Bodoni MT Condensed","Bodoni MT Poster Compressed","Bookshelf Symbol 7","Boulder","Bradley Hand","Bradley Hand ITC","Bremen Bd BT","Britannic Bold","Broadway","Browallia New","BrowalliaUPC","Brush Script MT","Californian FB","Calisto MT","Calligrapher","Candara","CaslonOpnface BT","Castellar","Centaur","Cezanne","CG Omega","CG Times","Chalkboard","Chalkboard SE","Chalkduster","Charlesworth","Charter Bd BT","Charter BT","Chaucer","ChelthmITC Bk BT","Chiller","Clarendon","Clarendon Condensed","CloisterBlack BT","Cochin","Colonna MT","Constantia","Cooper Black","Copperplate","Copperplate Gothic","Copperplate Gothic Bold","Copperplate Gothic Light","CopperplGoth Bd BT","Corbel","Cordia New","CordiaUPC","Cornerstone","Coronet","Cuckoo","Curlz MT","DaunPenh","Dauphin","David","DB LCD Temp","DELICIOUS","Denmark","DFKai-SB","Didot","DilleniaUPC","DIN","DokChampa","Dotum","DotumChe","Ebrima","Edwardian Script ITC","Elephant","English 111 Vivace BT","Engravers MT","EngraversGothic BT","Eras Bold ITC","Eras Demi ITC","Eras Light ITC","Eras Medium ITC","EucrosiaUPC","Euphemia","Euphemia UCAS","EUROSTILE","Exotc350 Bd BT","FangSong","Felix Titling","Fixedsys","FONTIN","Footlight MT Light","Forte","FrankRuehl","Fransiscan","Freefrm721 Blk BT","FreesiaUPC","Freestyle Script","French Script MT","FrnkGothITC Bk BT","Fruitger","FRUTIGER","Futura","Futura Bk BT","Futura Lt BT","Futura Md BT","Futura ZBlk BT","FuturaBlack BT","Gabriola","Galliard BT","Gautami","Geeza Pro","Geometr231 BT","Geometr231 Hv BT","Geometr231 Lt BT","GeoSlab 703 Lt BT","GeoSlab 703 XBd BT","Gigi","Gill Sans","Gill Sans MT","Gill Sans MT Condensed","Gill Sans MT Ext Condensed Bold","Gill Sans Ultra Bold","Gill Sans Ultra Bold Condensed","Gisha","Gloucester MT Extra Condensed","GOTHAM","GOTHAM BOLD","Goudy Old Style","Goudy Stout","GoudyHandtooled BT","GoudyOLSt BT","Gujarati Sangam MN","Gulim","GulimChe","Gungsuh","GungsuhChe","Gurmukhi MN","Haettenschweiler","Harlow Solid Italic","Harrington","Heather","Heiti SC","Heiti TC","HELV","Herald","High Tower Text","Hiragino Kaku Gothic ProN","Hiragino Mincho ProN","Hoefler Text","Humanst 521 Cn BT","Humanst521 BT","Humanst521 Lt BT","Imprint MT Shadow","Incised901 Bd BT","Incised901 BT","Incised901 Lt BT","INCONSOLATA","Informal Roman","Informal011 BT","INTERSTATE","IrisUPC","Iskoola Pota","JasmineUPC","Jazz LET","Jenson","Jester","Jokerman","Juice ITC","Kabel Bk BT","Kabel Ult BT","Kailasa","KaiTi","Kalinga","Kannada Sangam MN","Kartika","Kaufmann Bd BT","Kaufmann BT","Khmer UI","KodchiangUPC","Kokila","Korinna BT","Kristen ITC","Krungthep","Kunstler Script","Lao UI","Latha","Leelawadee","Letter Gothic","Levenim MT","LilyUPC","Lithograph","Lithograph Light","Long Island","Lydian BT","Magneto","Maiandra GD","Malayalam Sangam MN","Malgun Gothic","Mangal","Marigold","Marion","Marker Felt","Market","Marlett","Matisse ITC","Matura MT Script Capitals","Meiryo","Meiryo UI","Microsoft Himalaya","Microsoft JhengHei","Microsoft New Tai Lue","Microsoft PhagsPa","Microsoft Tai Le","Microsoft Uighur","Microsoft YaHei","Microsoft Yi Baiti","MingLiU","MingLiU_HKSCS","MingLiU_HKSCS-ExtB","MingLiU-ExtB","Minion","Minion Pro","Miriam","Miriam Fixed","Mistral","Modern","Modern No. 20","Mona Lisa Solid ITC TT","Mongolian Baiti","MONO","MoolBoran","Mrs Eaves","MS LineDraw","MS Mincho","MS PMincho","MS Reference Specialty","MS UI Gothic","MT Extra","MUSEO","MV Boli","Nadeem","Narkisim","NEVIS","News Gothic","News GothicMT","NewsGoth BT","Niagara Engraved","Niagara Solid","Noteworthy","NSimSun","Nyala","OCR A Extended","Old Century","Old English Text MT","Onyx","Onyx BT","OPTIMA","Oriya Sangam MN","OSAKA","OzHandicraft BT","Palace Script MT","Papyrus","Parchment","Party LET","Pegasus","Perpetua","Perpetua Titling MT","PetitaBold","Pickwick","Plantagenet Cherokee","Playbill","PMingLiU","PMingLiU-ExtB","Poor Richard","Poster","PosterBodoni BT","PRINCETOWN LET","Pristina","PTBarnum BT","Pythagoras","Raavi","Rage Italic","Ravie","Ribbon131 Bd BT","Rockwell","Rockwell Condensed","Rockwell Extra Bold","Rod","Roman","Sakkal Majalla","Santa Fe LET","Savoye LET","Sceptre","Script","Script MT Bold","SCRIPTINA","Serifa","Serifa BT","Serifa Th BT","ShelleyVolante BT","Sherwood","Shonar Bangla","Showcard Gothic","Shruti","Signboard","SILKSCREEN","SimHei","Simplified Arabic","Simplified Arabic Fixed","SimSun","SimSun-ExtB","Sinhala Sangam MN","Sketch Rockwell","Skia","Small Fonts","Snap ITC","Snell Roundhand","Socket","Souvenir Lt BT","Staccato222 BT","Steamer","Stencil","Storybook","Styllo","Subway","Swis721 BlkEx BT","Swiss911 XCm BT","Sylfaen","Synchro LET","System","Tamil Sangam MN","Technical","Teletype","Telugu Sangam MN","Tempus Sans ITC","Terminal","Thonburi","Traditional Arabic","Trajan","TRAJAN PRO","Tristan","Tubular","Tunga","Tw Cen MT","Tw Cen MT Condensed","Tw Cen MT Condensed Extra Bold","TypoUpright BT","Unicorn","Univers","Univers CE 55 Medium","Univers Condensed","Utsaah","Vagabond","Vani","Vijaya","Viner Hand ITC","VisualUI","Vivaldi","Vladimir Script","Vrinda","Westminster","WHITNEY","Wide Latin","ZapfEllipt BT","ZapfHumnst BT","ZapfHumnst Dm BT","Zapfino","Zurich BlkEx BT","Zurich Ex BT","ZWAdobeF"];i.options.extendedJsFonts&&(r=r.concat(n));var o="mmmmmmmmmmlli",s="72px",l=document.getElementsByTagName("body")[0],h=document.createElement("div"),u=document.createElement("div"),d={},c={},g=function(){var e=document.createElement("span");return e.style.position="absolute",e.style.left="-9999px",e.style.fontSize=s,e.innerHTML=o,e},p=function(e,t){var i=g();return i.style.fontFamily="'"+e+"',"+t,i},f=function(){for(var e=[],t=0,i=a.length;i>t;t++){var r=g();r.style.fontFamily=a[t],h.appendChild(r),e.push(r)}return e},m=function(){for(var e={},t=0,i=r.length;i>t;t++){for(var n=[],o=0,s=a.length;s>o;o++){var l=p(r[t],a[o]);u.appendChild(l),n.push(l)}e[r[t]]=n}return e},S=function(e){for(var t=!1,i=0;ix;x++)d[a[x]]=T[x].offsetWidth,c[a[x]]=T[x].offsetHeight;var M=m();l.appendChild(u);for(var A=[],E=0,y=r.length;y>E;E++)S(M[r[E]])&&A.push(r[E]);l.removeChild(u),l.removeChild(h),e.push({key:"js_fonts",value:A}),t(e)},1)},pluginsKey:function(e){return this.options.excludePlugins||(this.isIE()?this.options.excludeIEPlugins||e.push({key:"ie_plugins",value:this.getIEPlugins()}):e.push({key:"regular_plugins",value:this.getRegularPlugins()})),e},getRegularPlugins:function(){for(var e=[],t=0,i=navigator.plugins.length;i>t;t++)e.push(navigator.plugins[t]);return this.pluginsShouldBeSorted()&&(e=e.sort(function(e,t){return e.name>t.name?1:e.namet;t++){var a=this.options.sortPluginsFor[t];if(navigator.userAgent.match(a)){e=!0;break}}return e},touchSupportKey:function(e){return this.options.excludeTouchSupport||e.push({key:"touch_support",value:this.getTouchSupport()}),e},hasSessionStorage:function(){try{return!!window.sessionStorage}catch(e){return!0}},hasLocalStorage:function(){try{return!!window.localStorage}catch(e){return!0}},hasIndexedDB:function(){return!!window.indexedDB},getNavigatorCpuClass:function(){return navigator.cpuClass?navigator.cpuClass:"unknown"},getNavigatorPlatform:function(){return navigator.platform?navigator.platform:"unknown"},getDoNotTrack:function(){return navigator.doNotTrack?navigator.doNotTrack:"unknown"},getTouchSupport:function(){var e=0,t=!1;"undefined"!=typeof navigator.maxTouchPoints?e=navigator.maxTouchPoints:"undefined"!=typeof navigator.msMaxTouchPoints&&(e=navigator.msMaxTouchPoints);try{document.createEvent("TouchEvent"),t=!0}catch(i){}var a="ontouchstart"in window;return[e,t,a]},getCanvasFp:function(){var e=[],t=document.createElement("canvas");t.width=2e3,t.height=200,t.style.display="inline";var i=t.getContext("2d");return i.rect(0,0,10,10),i.rect(2,2,6,6),e.push("canvas winding:"+(i.isPointInPath(5,5,"evenodd")===!1?"yes":"no")),i.textBaseline="alphabetic",i.fillStyle="#f60",i.fillRect(125,1,62,20),i.fillStyle="#069",this.options.dontUseFakeFontInCanvas?i.font="11pt Arial":i.font="11pt no-real-font-123",i.fillText("Cwm fjordbank glyphs vext quiz, 😃",2,15),i.fillStyle="rgba(102, 204, 0, 0.2)",i.font="18pt Arial",i.fillText("Cwm fjordbank glyphs vext quiz, 😃",4,45),i.globalCompositeOperation="multiply",i.fillStyle="rgb(255,0,255)",i.beginPath(),i.arc(50,50,50,0,2*Math.PI,!0),i.closePath(),i.fill(),i.fillStyle="rgb(0,255,255)",i.beginPath(),i.arc(100,50,50,0,2*Math.PI,!0),i.closePath(),i.fill(),i.fillStyle="rgb(255,255,0)",i.beginPath(),i.arc(75,100,50,0,2*Math.PI,!0),i.closePath(),i.fill(),i.fillStyle="rgb(255,0,255)",i.arc(75,75,75,0,2*Math.PI,!0),i.arc(75,75,25,0,2*Math.PI,!0),i.fill("evenodd"),e.push("canvas fp:"+t.toDataURL()),e.join("~")},getWebglFp:function(){var e,t=function(t){return e.clearColor(0,0,0,1),e.enable(e.DEPTH_TEST),e.depthFunc(e.LEQUAL),e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT),"["+t[0]+", "+t[1]+"]"},i=function(e){var t,i=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic");return i?(t=e.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT),0===t&&(t=2),t):null};if(e=this.getWebglCanvas(),!e)return null;var a=[],r="attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}",n="precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}",o=e.createBuffer();e.bindBuffer(e.ARRAY_BUFFER,o);var s=new Float32Array([-.2,-.9,0,.4,-.26,0,0,.732134444,0]);e.bufferData(e.ARRAY_BUFFER,s,e.STATIC_DRAW),o.itemSize=3,o.numItems=3;var l=e.createProgram(),h=e.createShader(e.VERTEX_SHADER);e.shaderSource(h,r),e.compileShader(h);var u=e.createShader(e.FRAGMENT_SHADER);return e.shaderSource(u,n),e.compileShader(u),e.attachShader(l,h),e.attachShader(l,u),e.linkProgram(l),e.useProgram(l),l.vertexPosAttrib=e.getAttribLocation(l,"attrVertex"),l.offsetUniform=e.getUniformLocation(l,"uniformOffset"),e.enableVertexAttribArray(l.vertexPosArray),e.vertexAttribPointer(l.vertexPosAttrib,o.itemSize,e.FLOAT,!1,0,0),e.uniform2f(l.offsetUniform,1,1),e.drawArrays(e.TRIANGLE_STRIP,0,o.numItems),null!=e.canvas&&a.push(e.canvas.toDataURL()),a.push("extensions:"+e.getSupportedExtensions().join(";")),a.push("webgl aliased line width range:"+t(e.getParameter(e.ALIASED_LINE_WIDTH_RANGE))),a.push("webgl aliased point size range:"+t(e.getParameter(e.ALIASED_POINT_SIZE_RANGE))),a.push("webgl alpha bits:"+e.getParameter(e.ALPHA_BITS)),a.push("webgl antialiasing:"+(e.getContextAttributes().antialias?"yes":"no")),a.push("webgl blue bits:"+e.getParameter(e.BLUE_BITS)),a.push("webgl depth bits:"+e.getParameter(e.DEPTH_BITS)),a.push("webgl green bits:"+e.getParameter(e.GREEN_BITS)),a.push("webgl max anisotropy:"+i(e)),a.push("webgl max combined texture image units:"+e.getParameter(e.MAX_COMBINED_TEXTURE_IMAGE_UNITS)),a.push("webgl max cube map texture size:"+e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE)),a.push("webgl max fragment uniform vectors:"+e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS)),a.push("webgl max render buffer size:"+e.getParameter(e.MAX_RENDERBUFFER_SIZE)),a.push("webgl max texture image units:"+e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS)),a.push("webgl max texture size:"+e.getParameter(e.MAX_TEXTURE_SIZE)),a.push("webgl max varying vectors:"+e.getParameter(e.MAX_VARYING_VECTORS)),a.push("webgl max vertex attribs:"+e.getParameter(e.MAX_VERTEX_ATTRIBS)),a.push("webgl max vertex texture image units:"+e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS)),a.push("webgl max vertex uniform vectors:"+e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS)),a.push("webgl max viewport dims:"+t(e.getParameter(e.MAX_VIEWPORT_DIMS))),a.push("webgl red bits:"+e.getParameter(e.RED_BITS)),a.push("webgl renderer:"+e.getParameter(e.RENDERER)),a.push("webgl shading language version:"+e.getParameter(e.SHADING_LANGUAGE_VERSION)),a.push("webgl stencil bits:"+e.getParameter(e.STENCIL_BITS)),a.push("webgl vendor:"+e.getParameter(e.VENDOR)),a.push("webgl version:"+e.getParameter(e.VERSION)),e.getShaderPrecisionFormat?(a.push("webgl vertex shader high float precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT).precision),a.push("webgl vertex shader high float precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT).rangeMin),a.push("webgl vertex shader high float precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_FLOAT).rangeMax),a.push("webgl vertex shader medium float precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision),a.push("webgl vertex shader medium float precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).rangeMin),a.push("webgl vertex shader medium float precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).rangeMax),a.push("webgl vertex shader low float precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_FLOAT).precision),a.push("webgl vertex shader low float precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_FLOAT).rangeMin),a.push("webgl vertex shader low float precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_FLOAT).rangeMax),a.push("webgl fragment shader high float precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision),a.push("webgl fragment shader high float precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).rangeMin),a.push("webgl fragment shader high float precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).rangeMax),a.push("webgl fragment shader medium float precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision),a.push("webgl fragment shader medium float precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).rangeMin),a.push("webgl fragment shader medium float precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).rangeMax),a.push("webgl fragment shader low float precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_FLOAT).precision),a.push("webgl fragment shader low float precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_FLOAT).rangeMin),a.push("webgl fragment shader low float precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_FLOAT).rangeMax),a.push("webgl vertex shader high int precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_INT).precision),a.push("webgl vertex shader high int precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_INT).rangeMin),a.push("webgl vertex shader high int precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.HIGH_INT).rangeMax),a.push("webgl vertex shader medium int precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_INT).precision),a.push("webgl vertex shader medium int precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_INT).rangeMin),a.push("webgl vertex shader medium int precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_INT).rangeMax),a.push("webgl vertex shader low int precision:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_INT).precision),a.push("webgl vertex shader low int precision rangeMin:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_INT).rangeMin),a.push("webgl vertex shader low int precision rangeMax:"+e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.LOW_INT).rangeMax),a.push("webgl fragment shader high int precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_INT).precision),a.push("webgl fragment shader high int precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_INT).rangeMin),a.push("webgl fragment shader high int precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_INT).rangeMax),a.push("webgl fragment shader medium int precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_INT).precision),a.push("webgl fragment shader medium int precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_INT).rangeMin),a.push("webgl fragment shader medium int precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_INT).rangeMax),a.push("webgl fragment shader low int precision:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_INT).precision),a.push("webgl fragment shader low int precision rangeMin:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_INT).rangeMin),a.push("webgl fragment shader low int precision rangeMax:"+e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.LOW_INT).rangeMax),a.join("~")):a.join("~")},getAdBlock:function(){var e=document.createElement("div");e.innerHTML=" ",e.className="adsbox";var t=!1;try{document.body.appendChild(e),t=0===document.getElementsByClassName("adsbox")[0].offsetHeight,document.body.removeChild(e)}catch(i){t=!1}return t},getHasLiedLanguages:function(){if("undefined"!=typeof navigator.languages)try{var e=navigator.languages[0].substr(0,2);if(e!==navigator.language.substr(0,2))return!0}catch(t){return!0}return!1},getHasLiedResolution:function(){return screen.width=0?"Windows Phone":t.indexOf("win")>=0?"Windows":t.indexOf("android")>=0?"Android":t.indexOf("linux")>=0?"Linux":t.indexOf("iphone")>=0||t.indexOf("ipad")>=0?"iOS":t.indexOf("mac")>=0?"Mac":"Other";var r;if(r="ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0,r&&"Windows Phone"!==e&&"Android"!==e&&"iOS"!==e&&"Other"!==e)return!0;if("undefined"!=typeof i){if(i=i.toLowerCase(),i.indexOf("win")>=0&&"Windows"!==e&&"Windows Phone"!==e)return!0;if(i.indexOf("linux")>=0&&"Linux"!==e&&"Android"!==e)return!0;if(i.indexOf("mac")>=0&&"Mac"!==e&&"iOS"!==e)return!0;if(0===i.indexOf("win")&&0===i.indexOf("linux")&&i.indexOf("mac")>=0&&"other"!==e)return!0}return a.indexOf("win")>=0&&"Windows"!==e&&"Windows Phone"!==e?!0:(a.indexOf("linux")>=0||a.indexOf("android")>=0||a.indexOf("pike")>=0)&&"Linux"!==e&&"Android"!==e?!0:(a.indexOf("mac")>=0||a.indexOf("ipad")>=0||a.indexOf("ipod")>=0||a.indexOf("iphone")>=0)&&"Mac"!==e&&"iOS"!==e?!0:0===a.indexOf("win")&&0===a.indexOf("linux")&&a.indexOf("mac")>=0&&"other"!==e?!0:"undefined"==typeof navigator.plugins&&"Windows"!==e&&"Windows Phone"!==e},getHasLiedBrowser:function(){var e,t=navigator.userAgent.toLowerCase(),i=navigator.productSub;if(e=t.indexOf("firefox")>=0?"Firefox":t.indexOf("opera")>=0||t.indexOf("opr")>=0?"Opera":t.indexOf("chrome")>=0?"Chrome":t.indexOf("safari")>=0?"Safari":t.indexOf("trident")>=0?"Internet Explorer":"Other",("Chrome"===e||"Safari"===e||"Opera"===e)&&"20030107"!==i)return!0;var a=eval.toString().length;if(37===a&&"Safari"!==e&&"Firefox"!==e&&"Other"!==e)return!0;if(39===a&&"Internet Explorer"!==e&&"Other"!==e)return!0;if(33===a&&"Chrome"!==e&&"Opera"!==e&&"Other"!==e)return!0;var r;try{throw"a"}catch(n){try{n.toSource(),r=!0}catch(o){r=!1}}return!(!r||"Firefox"===e||"Other"===e)},isCanvasSupported:function(){var e=document.createElement("canvas");return!(!e.getContext||!e.getContext("2d"))},isWebGlSupported:function(){if(!this.isCanvasSupported())return!1;var e,t=document.createElement("canvas");try{e=t.getContext&&(t.getContext("webgl")||t.getContext("experimental-webgl"))}catch(i){e=!1}return!!window.WebGLRenderingContext&&!!e},isIE:function(){return"Microsoft Internet Explorer"===navigator.appName?!0:!("Netscape"!==navigator.appName||!/Trident/.test(navigator.userAgent))},hasSwfObjectLoaded:function(){return"undefined"!=typeof window.swfobject},hasMinFlashInstalled:function(){return swfobject.hasFlashPlayerVersion("9.0.0")},addFlashDivNode:function(){var e=document.createElement("div");e.setAttribute("id",this.options.swfContainerId),document.body.appendChild(e)},loadSwfAndDetectFonts:function(e){var t="___fp_swf_loaded";window[t]=function(t){e(t)};var i=this.options.swfContainerId;this.addFlashDivNode();var a={onReady:t},r={allowScriptAccess:"always",menu:"false"};swfobject.embedSWF(this.options.swfPath,i,"1","1","9.0.0",!1,a,r,{})},getWebglCanvas:function(){var e=document.createElement("canvas"),t=null;try{t=e.getContext("webgl")||e.getContext("experimental-webgl")}catch(i){}return t||(t=null),t},each:function(e,t,i){if(null!==e)if(this.nativeForEach&&e.forEach===this.nativeForEach)e.forEach(t,i);else if(e.length===+e.length){for(var a=0,r=e.length;r>a;a++)if(t.call(i,e[a],a,e)==={})return}else for(var n in e)if(e.hasOwnProperty(n)&&t.call(i,e[n],n,e)==={})return},map:function(e,t,i){var a=[];return null==e?a:this.nativeMap&&e.map===this.nativeMap?e.map(t,i):(this.each(e,function(e,r,n){a[a.length]=t.call(i,e,r,n)}),a)},x64Add:function(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var i=[0,0,0,0];return i[3]+=e[3]+t[3],i[2]+=i[3]>>>16,i[3]&=65535,i[2]+=e[2]+t[2],i[1]+=i[2]>>>16,i[2]&=65535,i[1]+=e[1]+t[1],i[0]+=i[1]>>>16,i[1]&=65535,i[0]+=e[0]+t[0],i[0]&=65535,[i[0]<<16|i[1],i[2]<<16|i[3]]},x64Multiply:function(e,t){e=[e[0]>>>16,65535&e[0],e[1]>>>16,65535&e[1]],t=[t[0]>>>16,65535&t[0],t[1]>>>16,65535&t[1]];var i=[0,0,0,0];return i[3]+=e[3]*t[3],i[2]+=i[3]>>>16,i[3]&=65535,i[2]+=e[2]*t[3],i[1]+=i[2]>>>16,i[2]&=65535,i[2]+=e[3]*t[2],i[1]+=i[2]>>>16,i[2]&=65535,i[1]+=e[1]*t[3],i[0]+=i[1]>>>16,i[1]&=65535,i[1]+=e[2]*t[2],i[0]+=i[1]>>>16,i[1]&=65535,i[1]+=e[3]*t[1],i[0]+=i[1]>>>16,i[1]&=65535,i[0]+=e[0]*t[3]+e[1]*t[2]+e[2]*t[1]+e[3]*t[0],i[0]&=65535,[i[0]<<16|i[1],i[2]<<16|i[3]]},x64Rotl:function(e,t){return t%=64,32===t?[e[1],e[0]]:32>t?[e[0]<>>32-t,e[1]<>>32-t]:(t-=32,[e[1]<>>32-t,e[0]<>>32-t])},x64LeftShift:function(e,t){return t%=64,0===t?e:32>t?[e[0]<>>32-t,e[1]<>>1]),e=this.x64Multiply(e,[4283543511,3981806797]),e=this.x64Xor(e,[0,e[0]>>>1]),e=this.x64Multiply(e,[3301882366,444984403]),e=this.x64Xor(e,[0,e[0]>>>1])},x64hash128:function(e,t){e=e||"",t=t||0;for(var i=e.length%16,a=e.length-i,r=[0,t],n=[0,t],o=[0,0],s=[0,0],l=[2277735313,289559509],h=[1291169091,658871167],u=0;a>u;u+=16)o=[255&e.charCodeAt(u+4)|(255&e.charCodeAt(u+5))<<8|(255&e.charCodeAt(u+6))<<16|(255&e.charCodeAt(u+7))<<24,255&e.charCodeAt(u)|(255&e.charCodeAt(u+1))<<8|(255&e.charCodeAt(u+2))<<16|(255&e.charCodeAt(u+3))<<24],s=[255&e.charCodeAt(u+12)|(255&e.charCodeAt(u+13))<<8|(255&e.charCodeAt(u+14))<<16|(255&e.charCodeAt(u+15))<<24,255&e.charCodeAt(u+8)|(255&e.charCodeAt(u+9))<<8|(255&e.charCodeAt(u+10))<<16|(255&e.charCodeAt(u+11))<<24],o=this.x64Multiply(o,l),o=this.x64Rotl(o,31),o=this.x64Multiply(o,h),r=this.x64Xor(r,o),r=this.x64Rotl(r,27),r=this.x64Add(r,n),r=this.x64Add(this.x64Multiply(r,[0,5]),[0,1390208809]), +s=this.x64Multiply(s,h),s=this.x64Rotl(s,33),s=this.x64Multiply(s,l),n=this.x64Xor(n,s),n=this.x64Rotl(n,31),n=this.x64Add(n,r),n=this.x64Add(this.x64Multiply(n,[0,5]),[0,944331445]);switch(o=[0,0],s=[0,0],i){case 15:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+14)],48));case 14:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+13)],40));case 13:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+12)],32));case 12:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+11)],24));case 11:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+10)],16));case 10:s=this.x64Xor(s,this.x64LeftShift([0,e.charCodeAt(u+9)],8));case 9:s=this.x64Xor(s,[0,e.charCodeAt(u+8)]),s=this.x64Multiply(s,h),s=this.x64Rotl(s,33),s=this.x64Multiply(s,l),n=this.x64Xor(n,s);case 8:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+7)],56));case 7:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+6)],48));case 6:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+5)],40));case 5:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+4)],32));case 4:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+3)],24));case 3:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+2)],16));case 2:o=this.x64Xor(o,this.x64LeftShift([0,e.charCodeAt(u+1)],8));case 1:o=this.x64Xor(o,[0,e.charCodeAt(u)]),o=this.x64Multiply(o,l),o=this.x64Rotl(o,31),o=this.x64Multiply(o,h),r=this.x64Xor(r,o)}return r=this.x64Xor(r,[0,e.length]),n=this.x64Xor(n,[0,e.length]),r=this.x64Add(r,n),n=this.x64Add(n,r),r=this.x64Fmix(r),n=this.x64Fmix(n),r=this.x64Add(r,n),n=this.x64Add(n,r),("00000000"+(r[0]>>>0).toString(16)).slice(-8)+("00000000"+(r[1]>>>0).toString(16)).slice(-8)+("00000000"+(n[0]>>>0).toString(16)).slice(-8)+("00000000"+(n[1]>>>0).toString(16)).slice(-8)}},e.VERSION="1.4.0",e}); \ No newline at end of file diff --git a/dashboard-ui/bower_components/fingerprintjs2/fingerprint2.js b/dashboard-ui/bower_components/fingerprintjs2/fingerprint2.js index e622ba930e..37a73ee7ba 100644 --- a/dashboard-ui/bower_components/fingerprintjs2/fingerprint2.js +++ b/dashboard-ui/bower_components/fingerprintjs2/fingerprint2.js @@ -1,5 +1,5 @@ /* -* Fingerprintjs2 1.1.4 - Modern & flexible browser fingerprint library v2 +* Fingerprintjs2 1.4.0 - Modern & flexible browser fingerprint library v2 * https://github.com/Valve/fingerprintjs2 * Copyright (c) 2015 Valentin Vasilyev (valentin.vasilyev@outlook.com) * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license. @@ -84,6 +84,7 @@ keys = this.userAgentKey(keys); keys = this.languageKey(keys); keys = this.colorDepthKey(keys); + keys = this.pixelRatioKey(keys); keys = this.screenResolutionKey(keys); keys = this.availableScreenResolutionKey(keys); keys = this.timezoneOffsetKey(keys); @@ -141,6 +142,15 @@ } return keys; }, + pixelRatioKey: function(keys) { + if(!this.options.excludePixelRatio) { + keys.push({key: "pixel_ratio", value: this.getPixelRatio()}); + } + return keys; + }, + getPixelRatio: function() { + return window.devicePixelRatio || ""; + }, screenResolutionKey: function(keys) { if(!this.options.excludeScreenResolution) { return this.getScreenResolution(keys); @@ -334,6 +344,57 @@ // and if it doesn't match all 3 then that font is not available. var baseFonts = ["monospace", "sans-serif", "serif"]; + var fontList = [ + "Andale Mono", "Arial", "Arial Black", "Arial Hebrew", "Arial MT", "Arial Narrow", "Arial Rounded MT Bold", "Arial Unicode MS", + "Bitstream Vera Sans Mono", "Book Antiqua", "Bookman Old Style", + "Calibri", "Cambria", "Cambria Math", "Century", "Century Gothic", "Century Schoolbook", "Comic Sans", "Comic Sans MS", "Consolas", "Courier", "Courier New", + "Garamond", "Geneva", "Georgia", + "Helvetica", "Helvetica Neue", + "Impact", + "Lucida Bright", "Lucida Calligraphy", "Lucida Console", "Lucida Fax", "LUCIDA GRANDE", "Lucida Handwriting", "Lucida Sans", "Lucida Sans Typewriter", "Lucida Sans Unicode", + "Microsoft Sans Serif", "Monaco", "Monotype Corsiva", "MS Gothic", "MS Outlook", "MS PGothic", "MS Reference Sans Serif", "MS Sans Serif", "MS Serif", "MYRIAD", "MYRIAD PRO", + "Palatino", "Palatino Linotype", + "Segoe Print", "Segoe Script", "Segoe UI", "Segoe UI Light", "Segoe UI Semibold", "Segoe UI Symbol", + "Tahoma", "Times", "Times New Roman", "Times New Roman PS", "Trebuchet MS", + "Verdana", "Wingdings", "Wingdings 2", "Wingdings 3" + ]; + var extendedFontList = [ + "Abadi MT Condensed Light", "Academy Engraved LET", "ADOBE CASLON PRO", "Adobe Garamond", "ADOBE GARAMOND PRO", "Agency FB", "Aharoni", "Albertus Extra Bold", "Albertus Medium", "Algerian", "Amazone BT", "American Typewriter", + "American Typewriter Condensed", "AmerType Md BT", "Andalus", "Angsana New", "AngsanaUPC", "Antique Olive", "Aparajita", "Apple Chancery", "Apple Color Emoji", "Apple SD Gothic Neo", "Arabic Typesetting", "ARCHER", + "ARNO PRO", "Arrus BT", "Aurora Cn BT", "AvantGarde Bk BT", "AvantGarde Md BT", "AVENIR", "Ayuthaya", "Bandy", "Bangla Sangam MN", "Bank Gothic", "BankGothic Md BT", "Baskerville", + "Baskerville Old Face", "Batang", "BatangChe", "Bauer Bodoni", "Bauhaus 93", "Bazooka", "Bell MT", "Bembo", "Benguiat Bk BT", "Berlin Sans FB", "Berlin Sans FB Demi", "Bernard MT Condensed", "BernhardFashion BT", "BernhardMod BT", "Big Caslon", "BinnerD", + "Blackadder ITC", "BlairMdITC TT", "Bodoni 72", "Bodoni 72 Oldstyle", "Bodoni 72 Smallcaps", "Bodoni MT", "Bodoni MT Black", "Bodoni MT Condensed", "Bodoni MT Poster Compressed", + "Bookshelf Symbol 7", "Boulder", "Bradley Hand", "Bradley Hand ITC", "Bremen Bd BT", "Britannic Bold", "Broadway", "Browallia New", "BrowalliaUPC", "Brush Script MT", "Californian FB", "Calisto MT", "Calligrapher", "Candara", + "CaslonOpnface BT", "Castellar", "Centaur", "Cezanne", "CG Omega", "CG Times", "Chalkboard", "Chalkboard SE", "Chalkduster", "Charlesworth", "Charter Bd BT", "Charter BT", "Chaucer", + "ChelthmITC Bk BT", "Chiller", "Clarendon", "Clarendon Condensed", "CloisterBlack BT", "Cochin", "Colonna MT", "Constantia", "Cooper Black", "Copperplate", "Copperplate Gothic", "Copperplate Gothic Bold", + "Copperplate Gothic Light", "CopperplGoth Bd BT", "Corbel", "Cordia New", "CordiaUPC", "Cornerstone", "Coronet", "Cuckoo", "Curlz MT", "DaunPenh", "Dauphin", "David", "DB LCD Temp", "DELICIOUS", "Denmark", + "DFKai-SB", "Didot", "DilleniaUPC", "DIN", "DokChampa", "Dotum", "DotumChe", "Ebrima", "Edwardian Script ITC", "Elephant", "English 111 Vivace BT", "Engravers MT", "EngraversGothic BT", "Eras Bold ITC", "Eras Demi ITC", "Eras Light ITC", "Eras Medium ITC", + "EucrosiaUPC", "Euphemia", "Euphemia UCAS", "EUROSTILE", "Exotc350 Bd BT", "FangSong", "Felix Titling", "Fixedsys", "FONTIN", "Footlight MT Light", "Forte", + "FrankRuehl", "Fransiscan", "Freefrm721 Blk BT", "FreesiaUPC", "Freestyle Script", "French Script MT", "FrnkGothITC Bk BT", "Fruitger", "FRUTIGER", + "Futura", "Futura Bk BT", "Futura Lt BT", "Futura Md BT", "Futura ZBlk BT", "FuturaBlack BT", "Gabriola", "Galliard BT", "Gautami", "Geeza Pro", "Geometr231 BT", "Geometr231 Hv BT", "Geometr231 Lt BT", "GeoSlab 703 Lt BT", + "GeoSlab 703 XBd BT", "Gigi", "Gill Sans", "Gill Sans MT", "Gill Sans MT Condensed", "Gill Sans MT Ext Condensed Bold", "Gill Sans Ultra Bold", "Gill Sans Ultra Bold Condensed", "Gisha", "Gloucester MT Extra Condensed", "GOTHAM", "GOTHAM BOLD", + "Goudy Old Style", "Goudy Stout", "GoudyHandtooled BT", "GoudyOLSt BT", "Gujarati Sangam MN", "Gulim", "GulimChe", "Gungsuh", "GungsuhChe", "Gurmukhi MN", "Haettenschweiler", "Harlow Solid Italic", "Harrington", "Heather", "Heiti SC", "Heiti TC", "HELV", + "Herald", "High Tower Text", "Hiragino Kaku Gothic ProN", "Hiragino Mincho ProN", "Hoefler Text", "Humanst 521 Cn BT", "Humanst521 BT", "Humanst521 Lt BT", "Imprint MT Shadow", "Incised901 Bd BT", "Incised901 BT", + "Incised901 Lt BT", "INCONSOLATA", "Informal Roman", "Informal011 BT", "INTERSTATE", "IrisUPC", "Iskoola Pota", "JasmineUPC", "Jazz LET", "Jenson", "Jester", "Jokerman", "Juice ITC", "Kabel Bk BT", "Kabel Ult BT", "Kailasa", "KaiTi", "Kalinga", "Kannada Sangam MN", + "Kartika", "Kaufmann Bd BT", "Kaufmann BT", "Khmer UI", "KodchiangUPC", "Kokila", "Korinna BT", "Kristen ITC", "Krungthep", "Kunstler Script", "Lao UI", "Latha", "Leelawadee", "Letter Gothic", "Levenim MT", "LilyUPC", "Lithograph", "Lithograph Light", "Long Island", + "Lydian BT", "Magneto", "Maiandra GD", "Malayalam Sangam MN", "Malgun Gothic", + "Mangal", "Marigold", "Marion", "Marker Felt", "Market", "Marlett", "Matisse ITC", "Matura MT Script Capitals", "Meiryo", "Meiryo UI", "Microsoft Himalaya", "Microsoft JhengHei", "Microsoft New Tai Lue", "Microsoft PhagsPa", "Microsoft Tai Le", + "Microsoft Uighur", "Microsoft YaHei", "Microsoft Yi Baiti", "MingLiU", "MingLiU_HKSCS", "MingLiU_HKSCS-ExtB", "MingLiU-ExtB", "Minion", "Minion Pro", "Miriam", "Miriam Fixed", "Mistral", "Modern", "Modern No. 20", "Mona Lisa Solid ITC TT", "Mongolian Baiti", + "MONO", "MoolBoran", "Mrs Eaves", "MS LineDraw", "MS Mincho", "MS PMincho", "MS Reference Specialty", "MS UI Gothic", "MT Extra", "MUSEO", "MV Boli", + "Nadeem", "Narkisim", "NEVIS", "News Gothic", "News GothicMT", "NewsGoth BT", "Niagara Engraved", "Niagara Solid", "Noteworthy", "NSimSun", "Nyala", "OCR A Extended", "Old Century", "Old English Text MT", "Onyx", "Onyx BT", "OPTIMA", "Oriya Sangam MN", + "OSAKA", "OzHandicraft BT", "Palace Script MT", "Papyrus", "Parchment", "Party LET", "Pegasus", "Perpetua", "Perpetua Titling MT", "PetitaBold", "Pickwick", "Plantagenet Cherokee", "Playbill", "PMingLiU", "PMingLiU-ExtB", + "Poor Richard", "Poster", "PosterBodoni BT", "PRINCETOWN LET", "Pristina", "PTBarnum BT", "Pythagoras", "Raavi", "Rage Italic", "Ravie", "Ribbon131 Bd BT", "Rockwell", "Rockwell Condensed", "Rockwell Extra Bold", "Rod", "Roman", "Sakkal Majalla", + "Santa Fe LET", "Savoye LET", "Sceptre", "Script", "Script MT Bold", "SCRIPTINA", "Serifa", "Serifa BT", "Serifa Th BT", "ShelleyVolante BT", "Sherwood", + "Shonar Bangla", "Showcard Gothic", "Shruti", "Signboard", "SILKSCREEN", "SimHei", "Simplified Arabic", "Simplified Arabic Fixed", "SimSun", "SimSun-ExtB", "Sinhala Sangam MN", "Sketch Rockwell", "Skia", "Small Fonts", "Snap ITC", "Snell Roundhand", "Socket", + "Souvenir Lt BT", "Staccato222 BT", "Steamer", "Stencil", "Storybook", "Styllo", "Subway", "Swis721 BlkEx BT", "Swiss911 XCm BT", "Sylfaen", "Synchro LET", "System", "Tamil Sangam MN", "Technical", "Teletype", "Telugu Sangam MN", "Tempus Sans ITC", + "Terminal", "Thonburi", "Traditional Arabic", "Trajan", "TRAJAN PRO", "Tristan", "Tubular", "Tunga", "Tw Cen MT", "Tw Cen MT Condensed", "Tw Cen MT Condensed Extra Bold", + "TypoUpright BT", "Unicorn", "Univers", "Univers CE 55 Medium", "Univers Condensed", "Utsaah", "Vagabond", "Vani", "Vijaya", "Viner Hand ITC", "VisualUI", "Vivaldi", "Vladimir Script", "Vrinda", "Westminster", "WHITNEY", "Wide Latin", + "ZapfEllipt BT", "ZapfHumnst BT", "ZapfHumnst Dm BT", "Zapfino", "Zurich BlkEx BT", "Zurich Ex BT", "ZWAdobeF"]; + + if(that.options.extendedJsFonts) { + fontList = fontList.concat(extendedFontList); + } + //we use m or w because these two characters take up the maximum width. // And we use a LLi so that the same matching fonts can get separated var testString = "mmmmmmmmmmlli"; @@ -343,94 +404,106 @@ var h = document.getElementsByTagName("body")[0]; - // create a SPAN in the document to get the width of the text we use to test - var s = document.createElement("span"); - /* - * We need this css as in some weird browser this - * span elements shows up for a microSec which creates a - * bad user experience - */ - s.style.position = "absolute"; - s.style.left = "-9999px"; - s.style.fontSize = testSize; - s.innerHTML = testString; + // div to load spans for the base fonts + var baseFontsDiv = document.createElement("div"); + + // div to load spans for the fonts to detect + var fontsDiv = document.createElement("div"); + var defaultWidth = {}; var defaultHeight = {}; - for (var index = 0, length = baseFonts.length; index < length; index++) { - //get the default width for the three base fonts - s.style.fontFamily = baseFonts[index]; - h.appendChild(s); - defaultWidth[baseFonts[index]] = s.offsetWidth; //width for the default font - defaultHeight[baseFonts[index]] = s.offsetHeight; //height for the defualt font - h.removeChild(s); - } - var detect = function (font) { + + // creates a span where the fonts will be loaded + var createSpan = function() { + var s = document.createElement("span"); + /* + * We need this css as in some weird browser this + * span elements shows up for a microSec which creates a + * bad user experience + */ + s.style.position = "absolute"; + s.style.left = "-9999px"; + s.style.fontSize = testSize; + s.innerHTML = testString; + return s; + }; + + // creates a span and load the font to detect and a base font for fallback + var createSpanWithFonts = function(fontToDetect, baseFont) { + var s = createSpan(); + s.style.fontFamily = "'" + fontToDetect + "'," + baseFont; + return s; + }; + + // creates spans for the base fonts and adds them to baseFontsDiv + var initializeBaseFontsSpans = function() { + var spans = []; + for (var index = 0, length = baseFonts.length; index < length; index++) { + var s = createSpan(); + s.style.fontFamily = baseFonts[index]; + baseFontsDiv.appendChild(s); + spans.push(s); + } + return spans; + }; + + // creates spans for the fonts to detect and adds them to fontsDiv + var initializeFontsSpans = function() { + var spans = {}; + for(var i = 0, l = fontList.length; i < l; i++) { + var fontSpans = []; + for(var j = 0, numDefaultFonts = baseFonts.length; j < numDefaultFonts; j++) { + var s = createSpanWithFonts(fontList[i], baseFonts[j]); + fontsDiv.appendChild(s); + fontSpans.push(s); + } + spans[fontList[i]] = fontSpans; // Stores {fontName : [spans for that font]} + } + return spans; + }; + + // checks if a font is available + var isFontAvailable = function(fontSpans) { var detected = false; - for (var index = 0, l = baseFonts.length; index < l; index++) { - s.style.fontFamily = font + "," + baseFonts[index]; // name of the font along with the base font for fallback. - h.appendChild(s); - var matched = (s.offsetWidth !== defaultWidth[baseFonts[index]] || s.offsetHeight !== defaultHeight[baseFonts[index]]); - h.removeChild(s); - detected = detected || matched; + for(var i = 0; i < baseFonts.length; i++) { + detected = (fontSpans[i].offsetWidth !== defaultWidth[baseFonts[i]] || fontSpans[i].offsetHeight !== defaultHeight[baseFonts[i]]); + if(detected) { + return detected; + } } return detected; }; - var fontList = [ - "Andale Mono", "Arial", "Arial Black", "Arial Hebrew", "Arial MT", "Arial Narrow", "Arial Rounded MT Bold", "Arial Unicode MS", - "Bitstream Vera Sans Mono", "Book Antiqua", "Bookman Old Style", - "Calibri", "Cambria", "Cambria Math", "Century", "Century Gothic", "Century Schoolbook", "Comic Sans", "Comic Sans MS", "Consolas", "Courier", "Courier New", - "Garamond", "Geneva", "Georgia", - "Helvetica", "Helvetica Neue", - "Impact", - "Lucida Bright", "Lucida Calligraphy", "Lucida Console", "Lucida Fax", "LUCIDA GRANDE", "Lucida Handwriting", "Lucida Sans", "Lucida Sans Typewriter", "Lucida Sans Unicode", - "Microsoft Sans Serif", "Monaco", "Monotype Corsiva", "MS Gothic", "MS Outlook", "MS PGothic", "MS Reference Sans Serif", "MS Sans Serif", "MS Serif", "MYRIAD", "MYRIAD PRO", - "Palatino", "Palatino Linotype", - "Segoe Print", "Segoe Script", "Segoe UI", "Segoe UI Light", "Segoe UI Semibold", "Segoe UI Symbol", - "Tahoma", "Times", "Times New Roman", "Times New Roman PS", "Trebuchet MS", - "Verdana", "Wingdings", "Wingdings 2", "Wingdings 3" - ]; - var extendedFontList = [ - "Abadi MT Condensed Light", "Academy Engraved LET", "ADOBE CASLON PRO", "Adobe Garamond", "ADOBE GARAMOND PRO", "Agency FB", "Aharoni", "Albertus Extra Bold", "Albertus Medium", "Algerian", "Amazone BT", "American Typewriter", - "American Typewriter Condensed", "AmerType Md BT", "Andalus", "Angsana New", "AngsanaUPC", "Antique Olive", "Aparajita", "Apple Chancery", "Apple Color Emoji", "Apple SD Gothic Neo", "Arabic Typesetting", "ARCHER", - "ARNO PRO", "Arrus BT", "Aurora Cn BT", "AvantGarde Bk BT", "AvantGarde Md BT", "AVENIR", "Ayuthaya", "Bandy", "Bangla Sangam MN", "Bank Gothic", "BankGothic Md BT", "Baskerville", - "Baskerville Old Face", "Batang", "BatangChe", "Bauer Bodoni", "Bauhaus 93", "Bazooka", "Bell MT", "Bembo", "Benguiat Bk BT", "Berlin Sans FB", "Berlin Sans FB Demi", "Bernard MT Condensed", "BernhardFashion BT", "BernhardMod BT", "Big Caslon", "BinnerD", - "Blackadder ITC", "BlairMdITC TT", "Bodoni 72", "Bodoni 72 Oldstyle", "Bodoni 72 Smallcaps", "Bodoni MT", "Bodoni MT Black", "Bodoni MT Condensed", "Bodoni MT Poster Compressed", - "Bookshelf Symbol 7", "Boulder", "Bradley Hand", "Bradley Hand ITC", "Bremen Bd BT", "Britannic Bold", "Broadway", "Browallia New", "BrowalliaUPC", "Brush Script MT", "Californian FB", "Calisto MT", "Calligrapher", "Candara", - "CaslonOpnface BT", "Castellar", "Centaur", "Cezanne", "CG Omega", "CG Times", "Chalkboard", "Chalkboard SE", "Chalkduster", "Charlesworth", "Charter Bd BT", "Charter BT", "Chaucer", - "ChelthmITC Bk BT", "Chiller", "Clarendon", "Clarendon Condensed", "CloisterBlack BT", "Cochin", "Colonna MT", "Constantia", "Cooper Black", "Copperplate", "Copperplate Gothic", "Copperplate Gothic Bold", - "Copperplate Gothic Light", "CopperplGoth Bd BT", "Corbel", "Cordia New", "CordiaUPC", "Cornerstone", "Coronet", "Cuckoo", "Curlz MT", "DaunPenh", "Dauphin", "David", "DB LCD Temp", "DELICIOUS", "Denmark", - "DFKai-SB", "Didot", "DilleniaUPC", "DIN", "DokChampa", "Dotum", "DotumChe", "Ebrima", "Edwardian Script ITC", "Elephant", "English 111 Vivace BT", "Engravers MT", "EngraversGothic BT", "Eras Bold ITC", "Eras Demi ITC", "Eras Light ITC", "Eras Medium ITC", - "EucrosiaUPC", "Euphemia", "Euphemia UCAS", "EUROSTILE", "Exotc350 Bd BT", "FangSong", "Felix Titling", "Fixedsys", "FONTIN", "Footlight MT Light", "Forte", - "FrankRuehl", "Fransiscan", "Freefrm721 Blk BT", "FreesiaUPC", "Freestyle Script", "French Script MT", "FrnkGothITC Bk BT", "Fruitger", "FRUTIGER", - "Futura", "Futura Bk BT", "Futura Lt BT", "Futura Md BT", "Futura ZBlk BT", "FuturaBlack BT", "Gabriola", "Galliard BT", "Gautami", "Geeza Pro", "Geometr231 BT", "Geometr231 Hv BT", "Geometr231 Lt BT", "GeoSlab 703 Lt BT", - "GeoSlab 703 XBd BT", "Gigi", "Gill Sans", "Gill Sans MT", "Gill Sans MT Condensed", "Gill Sans MT Ext Condensed Bold", "Gill Sans Ultra Bold", "Gill Sans Ultra Bold Condensed", "Gisha", "Gloucester MT Extra Condensed", "GOTHAM", "GOTHAM BOLD", - "Goudy Old Style", "Goudy Stout", "GoudyHandtooled BT", "GoudyOLSt BT", "Gujarati Sangam MN", "Gulim", "GulimChe", "Gungsuh", "GungsuhChe", "Gurmukhi MN", "Haettenschweiler", "Harlow Solid Italic", "Harrington", "Heather", "Heiti SC", "Heiti TC", "HELV", - "Herald", "High Tower Text", "Hiragino Kaku Gothic ProN", "Hiragino Mincho ProN", "Hoefler Text", "Humanst 521 Cn BT", "Humanst521 BT", "Humanst521 Lt BT", "Imprint MT Shadow", "Incised901 Bd BT", "Incised901 BT", - "Incised901 Lt BT", "INCONSOLATA", "Informal Roman", "Informal011 BT", "INTERSTATE", "IrisUPC", "Iskoola Pota", "JasmineUPC", "Jazz LET", "Jenson", "Jester", "Jokerman", "Juice ITC", "Kabel Bk BT", "Kabel Ult BT", "Kailasa", "KaiTi", "Kalinga", "Kannada Sangam MN", - "Kartika", "Kaufmann Bd BT", "Kaufmann BT", "Khmer UI", "KodchiangUPC", "Kokila", "Korinna BT", "Kristen ITC", "Krungthep", "Kunstler Script", "Lao UI", "Latha", "Leelawadee", "Letter Gothic", "Levenim MT", "LilyUPC", "Lithograph", "Lithograph Light", "Long Island", - "Lydian BT", "Magneto", "Maiandra GD", "Malayalam Sangam MN", "Malgun Gothic", - "Mangal", "Marigold", "Marion", "Marker Felt", "Market", "Marlett", "Matisse ITC", "Matura MT Script Capitals", "Meiryo", "Meiryo UI", "Microsoft Himalaya", "Microsoft JhengHei", "Microsoft New Tai Lue", "Microsoft PhagsPa", "Microsoft Tai Le", - "Microsoft Uighur", "Microsoft YaHei", "Microsoft Yi Baiti", "MingLiU", "MingLiU_HKSCS", "MingLiU_HKSCS-ExtB", "MingLiU-ExtB", "Minion", "Minion Pro", "Miriam", "Miriam Fixed", "Mistral", "Modern", "Modern No. 20", "Mona Lisa Solid ITC TT", "Mongolian Baiti", - "MONO", "MoolBoran", "Mrs Eaves", "MS LineDraw", "MS Mincho", "MS PMincho", "MS Reference Specialty", "MS UI Gothic", "MT Extra", "MUSEO", "MV Boli", - "Nadeem", "Narkisim", "NEVIS", "News Gothic", "News GothicMT", "NewsGoth BT", "Niagara Engraved", "Niagara Solid", "Noteworthy", "NSimSun", "Nyala", "OCR A Extended", "Old Century", "Old English Text MT", "Onyx", "Onyx BT", "OPTIMA", "Oriya Sangam MN", - "OSAKA", "OzHandicraft BT", "Palace Script MT", "Papyrus", "Parchment", "Party LET", "Pegasus", "Perpetua", "Perpetua Titling MT", "PetitaBold", "Pickwick", "Plantagenet Cherokee", "Playbill", "PMingLiU", "PMingLiU-ExtB", - "Poor Richard", "Poster", "PosterBodoni BT", "PRINCETOWN LET", "Pristina", "PTBarnum BT", "Pythagoras", "Raavi", "Rage Italic", "Ravie", "Ribbon131 Bd BT", "Rockwell", "Rockwell Condensed", "Rockwell Extra Bold", "Rod", "Roman", "Sakkal Majalla", - "Santa Fe LET", "Savoye LET", "Sceptre", "Script", "Script MT Bold", "SCRIPTINA", "Serifa", "Serifa BT", "Serifa Th BT", "ShelleyVolante BT", "Sherwood", - "Shonar Bangla", "Showcard Gothic", "Shruti", "Signboard", "SILKSCREEN", "SimHei", "Simplified Arabic", "Simplified Arabic Fixed", "SimSun", "SimSun-ExtB", "Sinhala Sangam MN", "Sketch Rockwell", "Skia", "Small Fonts", "Snap ITC", "Snell Roundhand", "Socket", - "Souvenir Lt BT", "Staccato222 BT", "Steamer", "Stencil", "Storybook", "Styllo", "Subway", "Swis721 BlkEx BT", "Swiss911 XCm BT", "Sylfaen", "Synchro LET", "System", "Tamil Sangam MN", "Technical", "Teletype", "Telugu Sangam MN", "Tempus Sans ITC", - "Terminal", "Thonburi", "Traditional Arabic", "Trajan", "TRAJAN PRO", "Tristan", "Tubular", "Tunga", "Tw Cen MT", "Tw Cen MT Condensed", "Tw Cen MT Condensed Extra Bold", - "TypoUpright BT", "Unicorn", "Univers", "Univers CE 55 Medium", "Univers Condensed", "Utsaah", "Vagabond", "Vani", "Vijaya", "Viner Hand ITC", "VisualUI", "Vivaldi", "Vladimir Script", "Vrinda", "Westminster", "WHITNEY", "Wide Latin", - "ZapfEllipt BT", "ZapfHumnst BT", "ZapfHumnst Dm BT", "Zapfino", "Zurich BlkEx BT", "Zurich Ex BT", "ZWAdobeF"]; - if(that.options.extendedJsFonts) { - fontList = fontList.concat(extendedFontList); + // create spans for base fonts + var baseFontsSpans = initializeBaseFontsSpans(); + + // add the spans to the DOM + h.appendChild(baseFontsDiv); + + // get the default width for the three base fonts + for (var index = 0, length = baseFonts.length; index < length; index++) { + defaultWidth[baseFonts[index]] = baseFontsSpans[index].offsetWidth; // width for the default font + defaultHeight[baseFonts[index]] = baseFontsSpans[index].offsetHeight; // height for the default font } + + // create spans for fonts to detect + var fontsSpans = initializeFontsSpans(); + + // add all the spans to the DOM + h.appendChild(fontsDiv); + + // check available fonts var available = []; - for (var i = 0, l = fontList.length; i < l; i++) { - if(detect(fontList[i])) { - available.push(fontList[i]); - } + for(var i = 0, l = fontList.length; i < l; i++) { + if(isFontAvailable(fontsSpans[fontList[i]])) { + available.push(fontList[i]); + } } + + // remove spans from DOM + h.removeChild(fontsDiv); + h.removeChild(baseFontsDiv); + keys.push({key: "js_fonts", value: available}); done(keys); }, 1); @@ -616,7 +689,7 @@ ctx.font = "11pt no-real-font-123"; } ctx.fillText("Cwm fjordbank glyphs vext quiz, \ud83d\ude03", 2, 15); - ctx.fillStyle = "rgba(102, 204, 0, 0.7)"; + ctx.fillStyle = "rgba(102, 204, 0, 0.2)"; ctx.font = "18pt Arial"; ctx.fillText("Cwm fjordbank glyphs vext quiz, \ud83d\ude03", 4, 45); @@ -770,14 +843,18 @@ }, getAdBlock: function(){ var ads = document.createElement("div"); - ads.setAttribute("id", "ads"); + ads.innerHTML = " "; + ads.className = "adsbox"; + var result = false; try { // body may not exist, that's why we need try/catch document.body.appendChild(ads); - return document.getElementById("ads") ? false : true; + result = document.getElementsByClassName("adsbox")[0].offsetHeight === 0; + document.body.removeChild(ads); } catch (e) { - return false; + result = false; } + return result; }, getHasLiedLanguages: function(){ //We check if navigator.language is equal to the first language of navigator.languages @@ -787,7 +864,7 @@ if(firstLanguages !== navigator.language.substr(0, 2)){ return true; } - } catch(err){ + } catch(err) { return true; } } @@ -1206,6 +1283,6 @@ return ("00000000" + (h1[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h1[1] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[0] >>> 0).toString(16)).slice(-8) + ("00000000" + (h2[1] >>> 0).toString(16)).slice(-8); } }; - Fingerprint2.VERSION = "1.1.4"; + Fingerprint2.VERSION = "1.4.0"; return Fingerprint2; }); diff --git a/dashboard-ui/bower_components/fingerprintjs2/package.json b/dashboard-ui/bower_components/fingerprintjs2/package.json index b7d16a8b49..d1acaecab4 100644 --- a/dashboard-ui/bower_components/fingerprintjs2/package.json +++ b/dashboard-ui/bower_components/fingerprintjs2/package.json @@ -1,6 +1,6 @@ { "name": "fingerprintjs2", - "version": "1.1.4", + "version": "1.4.0", "description": "Modern & flexible browser fingerprinting library", "main": "dist/fingerprint2.min.js", "devDependencies": { diff --git a/dashboard-ui/bower_components/neon-animation/.bower.json b/dashboard-ui/bower_components/neon-animation/.bower.json deleted file mode 100644 index 822971a867..0000000000 --- a/dashboard-ui/bower_components/neon-animation/.bower.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "neon-animation", - "description": "A system for animating Polymer-based web components", - "version": "1.2.3", - "authors": [ - "The Polymer Authors" - ], - "keywords": [ - "web-components", - "web-component", - "polymer", - "web-animations" - ], - "main": [ - "neon-animated-pages.html", - "neon-animatable-behavior.html", - "neon-animation-behavior.html", - "neon-animation-runner-behavior.html", - "neon-shared-element-animatable-behavior.html", - "neon-shared-element-animation-behavior.html", - "neon-animatable.html", - "neon-animations.html" - ], - "private": true, - "repository": { - "type": "git", - "url": "git://github.com/PolymerElements/neon-animation" - }, - "license": "http://polymer.github.io/LICENSE.txt", - "homepage": "https://github.com/PolymerElements/neon-animation", - "ignore": [], - "dependencies": { - "polymer": "Polymer/polymer#^1.1.0", - "iron-meta": "PolymerElements/iron-meta#^1.0.0", - "iron-resizable-behavior": "PolymerElements/iron-resizable-behavior#^1.0.0", - "iron-selector": "PolymerElements/iron-selector#^1.0.0", - "web-animations-js": "web-animations/web-animations-js#^2.2.0" - }, - "devDependencies": { - "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0", - "paper-toolbar": "PolymerElements/paper-toolbar#^1.0.0", - "iron-component-page": "PolymerElements/iron-component-page#^1.0.0", - "test-fixture": "PolymerElements/test-fixture#^1.0.0", - "web-component-tester": "^4.0.0", - "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0", - "paper-item": "PolymerElements/paper-item#^1.0.0", - "paper-styles": "PolymerElements/paper-styles#^1.0.0", - "iron-icon": "PolymerElements/iron-icon#^1.0.0", - "iron-icons": "PolymerElements/iron-icons#^1.0.0", - "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0" - }, - "_release": "1.2.3", - "_resolution": { - "type": "version", - "tag": "v1.2.3", - "commit": "c50d51e62825f4aa53f10e93f746796a174af232" - }, - "_source": "git://github.com/PolymerElements/neon-animation.git", - "_target": "^1.2.2", - "_originalSource": "PolymerElements/neon-animation" -} \ No newline at end of file diff --git a/dashboard-ui/bower_components/neon-animation/.github/ISSUE_TEMPLATE.md b/dashboard-ui/bower_components/neon-animation/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index 08943a1e15..0000000000 --- a/dashboard-ui/bower_components/neon-animation/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,33 +0,0 @@ - -### Description - - -### Expected outcome - - - -### Actual outcome - - - -### Live Demo - - -### Steps to reproduce - - - -### Browsers Affected - -- [ ] Chrome -- [ ] Firefox -- [ ] Safari 9 -- [ ] Safari 8 -- [ ] Safari 7 -- [ ] Edge -- [ ] IE 11 -- [ ] IE 10 diff --git a/dashboard-ui/bower_components/neon-animation/.gitignore b/dashboard-ui/bower_components/neon-animation/.gitignore deleted file mode 100644 index 8d4ae2536a..0000000000 --- a/dashboard-ui/bower_components/neon-animation/.gitignore +++ /dev/null @@ -1 +0,0 @@ -bower_components diff --git a/dashboard-ui/bower_components/neon-animation/.travis.yml b/dashboard-ui/bower_components/neon-animation/.travis.yml deleted file mode 100644 index dd1a81e710..0000000000 --- a/dashboard-ui/bower_components/neon-animation/.travis.yml +++ /dev/null @@ -1,23 +0,0 @@ -language: node_js -sudo: required -node_js: stable -addons: - firefox: latest - apt: - sources: - - google-chrome - packages: - - google-chrome-stable - sauce_connect: true -before_script: - - npm install -g bower polylint web-component-tester - - bower install - - polylint -script: - - xvfb-run wct - - "if [ \"${TRAVIS_PULL_REQUEST}\" = \"false\" ]; then wct -s 'default'; fi" -env: - global: - - secure: AnPpB3uzTWU0hmrDmPyOb/3mJZRv4BgPFJrpaT/mQ/9979IBeFfFHJX6MqQlgo894lJWvKSvAjEutgK5Z3LQh6cLB3JuhPBInwKgFPUx/V14VIju+Z7jwx6RycE3flb2f9Y6y5My13ovswsTNnhJEkpDGlbRnJlh5c+HeP+6D0oFPFaGWvULZsAHQnEykir1TMPL2TD8SfuYWifmBj7QYQ2vsYnqZoAkPNedv/OtdoA3rziFXSG3GqXX2NJVnYqlaLj/HiHK7xLlZu/ODfo6En12DMtqJajBP7NfJkEUAF72ScOsYxlwiI1aYcVSUy6upkxxPwkBj5x7wDZ0tRFmlautyq2skDAh/fgIfRw9AMe8kj/YLef+T8bmZNT9IIelNaNcpfTQHpYWcOpPk2uBT3iIOcmp+Ys8RZKqzYmekBtHTwCGmQcfQrjBXjrjz5xlUaoMH7vauh7Ct7SkD7Fu87XSUvks4v2yypxxmHXO8jUilKuUdtAzb3dtOboO0ptsoLuBm/qSeURco4be6KPyVnDxdWdbYOxIZtE8JeY2DbonS45OgFtL1NKeEIhiTQIcOuSs0qwJFFzaBBAfek1tkTvBhMJP3JPWpIbNJhdZWzSd0LUSe892sbiZJY67FA4xcY8vK5JZNWnxFyKX1+A8ljPEd1yBImxMzUDMNS9t0G0= - - secure: jdh0G/FDRghnjasav0/8nOZsYgXUd5DLKgD5XrDCVrBvPwXly+AnMXE+Hr/bztEXylcEmcqrWUUfB1ODUdVn1EGk8CJaYpHyKcoMcpJiEjHYS/3i1rXRsnHs2o3dcRO69rA8A5LZeG3yYfiPVUiKlyl7MWOal3pNohDGi8dZcT0CoWnA8UaV//0uXG3GGG3X8KcbVfB2hQvG1mK6wM6W4eHVOplcBaE2xnnFDMxfU2KnRgjLSPw66PeJGczWOBR9fZql9p6kV38ZM2s4qnUsMlTZkNqn0f6CuEPqcG6+S6Tk9+0dvAHet+Ky9fgiyJPq+p6sDGfdm1ZJwOjz5MoyudzGSuHAJHH2nscQf8pUBQ1gxKaGg7GV9LUj0cjLDAFWA2KpxTlabDZhZPIMoMKFpqpvJG49gDVga5gGabom21nd/+E1i/2vvoP16kY9rjf+Gd5+tIzajXCu8Tq06Xz63idZDJbt38GjArfFFqe5k7CqE+m2vpWx/iTwe+cT70wnIq/xigvaNq6CgUuNdzkVnVBj/C7yVqwwZkfbBC7HhRna9Nyzts/j2M2vwy0oYB73WzuhpYSweaAOZq2kcUIQ5ZMGO3UkZRjwWnHxAi5mrvZhRcRIqkvJJhoMQnjwJSTah/3cz0cJh19DL+Ozde24/tuY+vOnhFb+ddo1OKD6FtM= -dist: trusty diff --git a/dashboard-ui/bower_components/neon-animation/CONTRIBUTING.md b/dashboard-ui/bower_components/neon-animation/CONTRIBUTING.md deleted file mode 100644 index f147978a3e..0000000000 --- a/dashboard-ui/bower_components/neon-animation/CONTRIBUTING.md +++ /dev/null @@ -1,77 +0,0 @@ - - -# Polymer Elements -## Guide for Contributors - -Polymer Elements are built in the open, and the Polymer authors eagerly encourage any and all forms of community contribution. When contributing, please follow these guidelines: - -### Filing Issues - -**If you are filing an issue to request a feature**, please provide a clear description of the feature. It can be helpful to describe answers to the following questions: - - 1. **Who will use the feature?** _“As someone filling out a form…”_ - 2. **When will they use the feature?** _“When I enter an invalid value…”_ - 3. **What is the user’s goal?** _“I want to be visually notified that the value needs to be corrected…”_ - -**If you are filing an issue to report a bug**, please provide: - - 1. **A clear description of the bug and related expectations.** Consider using the following example template for reporting a bug: - - ```markdown - The `paper-foo` element causes the page to turn pink when clicked. - - ## Expected outcome - - The page stays the same color. - - ## Actual outcome - - The page turns pink. - - ## Steps to reproduce - - 1. Put a `paper-foo` element in the page. - 2. Open the page in a web browser. - 3. Click the `paper-foo` element. - ``` - - 2. **A reduced test case that demonstrates the problem.** If possible, please include the test case as a JSBin. Start with this template to easily import and use relevant Polymer Elements: [https://jsbin.com/cagaye/edit?html,output](https://jsbin.com/cagaye/edit?html,output). - - 3. **A list of browsers where the problem occurs.** This can be skipped if the problem is the same across all browsers. - -### Submitting Pull Requests - -**Before creating a pull request**, please ensure that an issue exists for the corresponding change in the pull request that you intend to make. **If an issue does not exist, please create one per the guidelines above**. The goal is to discuss the design and necessity of the proposed change with Polymer authors and community before diving into a pull request. - -When submitting pull requests, please provide: - - 1. **A reference to the corresponding issue** or issues that will be closed by the pull request. Please refer to these issues in the pull request description using the following syntax: - - ```markdown - (For a single issue) - Fixes #20 - - (For multiple issues) - Fixes #32, fixes #40 - ``` - - 2. **A succinct description of the design** used to fix any related issues. For example: - - ```markdown - This fixes #20 by removing styles that leaked which would cause the page to turn pink whenever `paper-foo` is clicked. - ``` - - 3. **At least one test for each bug fixed or feature added** as part of the pull request. Pull requests that fix bugs or add features without accompanying tests will not be considered. - -If a proposed change contains multiple commits, please [squash commits](https://www.google.com/url?q=http://blog.steveklabnik.com/posts/2012-11-08-how-to-squash-commits-in-a-github-pull-request) to as few as is necessary to succinctly express the change. A Polymer author can help you squash commits, so don’t be afraid to ask us if you need help with that! diff --git a/dashboard-ui/bower_components/neon-animation/animations/cascaded-animation.html b/dashboard-ui/bower_components/neon-animation/animations/cascaded-animation.html deleted file mode 100644 index 539975333d..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/cascaded-animation.html +++ /dev/null @@ -1,95 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/fade-in-animation.html b/dashboard-ui/bower_components/neon-animation/animations/fade-in-animation.html deleted file mode 100644 index cdb74e3095..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/fade-in-animation.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/fade-out-animation.html b/dashboard-ui/bower_components/neon-animation/animations/fade-out-animation.html deleted file mode 100644 index 82cc3997cf..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/fade-out-animation.html +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/hero-animation.html b/dashboard-ui/bower_components/neon-animation/animations/hero-animation.html deleted file mode 100644 index 176bee789e..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/hero-animation.html +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/opaque-animation.html b/dashboard-ui/bower_components/neon-animation/animations/opaque-animation.html deleted file mode 100644 index e3a007258c..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/opaque-animation.html +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/reverse-ripple-animation.html b/dashboard-ui/bower_components/neon-animation/animations/reverse-ripple-animation.html deleted file mode 100644 index f1f9de96f8..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/reverse-ripple-animation.html +++ /dev/null @@ -1,87 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/ripple-animation.html b/dashboard-ui/bower_components/neon-animation/animations/ripple-animation.html deleted file mode 100644 index d97186c377..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/ripple-animation.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/scale-down-animation.html b/dashboard-ui/bower_components/neon-animation/animations/scale-down-animation.html deleted file mode 100644 index 1dcb1713ae..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/scale-down-animation.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/scale-up-animation.html b/dashboard-ui/bower_components/neon-animation/animations/scale-up-animation.html deleted file mode 100644 index 42ec3f3228..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/scale-up-animation.html +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/slide-down-animation.html b/dashboard-ui/bower_components/neon-animation/animations/slide-down-animation.html deleted file mode 100644 index 9db28dd17e..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/slide-down-animation.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/slide-from-bottom-animation.html b/dashboard-ui/bower_components/neon-animation/animations/slide-from-bottom-animation.html deleted file mode 100644 index d1156e9353..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/slide-from-bottom-animation.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/slide-from-left-animation.html b/dashboard-ui/bower_components/neon-animation/animations/slide-from-left-animation.html deleted file mode 100644 index 5386c9b04f..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/slide-from-left-animation.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/slide-from-right-animation.html b/dashboard-ui/bower_components/neon-animation/animations/slide-from-right-animation.html deleted file mode 100644 index 2afb591f15..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/slide-from-right-animation.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/slide-from-top-animation.html b/dashboard-ui/bower_components/neon-animation/animations/slide-from-top-animation.html deleted file mode 100644 index c0a4881128..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/slide-from-top-animation.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/slide-left-animation.html b/dashboard-ui/bower_components/neon-animation/animations/slide-left-animation.html deleted file mode 100644 index da80a6bd7d..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/slide-left-animation.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/slide-right-animation.html b/dashboard-ui/bower_components/neon-animation/animations/slide-right-animation.html deleted file mode 100644 index 99b5794e49..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/slide-right-animation.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/slide-up-animation.html b/dashboard-ui/bower_components/neon-animation/animations/slide-up-animation.html deleted file mode 100644 index 6464e78ed3..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/slide-up-animation.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/animations/transform-animation.html b/dashboard-ui/bower_components/neon-animation/animations/transform-animation.html deleted file mode 100644 index 2e5044422e..0000000000 --- a/dashboard-ui/bower_components/neon-animation/animations/transform-animation.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/bower.json b/dashboard-ui/bower_components/neon-animation/bower.json deleted file mode 100644 index 29499b822e..0000000000 --- a/dashboard-ui/bower_components/neon-animation/bower.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "neon-animation", - "description": "A system for animating Polymer-based web components", - "version": "1.2.3", - "authors": [ - "The Polymer Authors" - ], - "keywords": [ - "web-components", - "web-component", - "polymer", - "web-animations" - ], - "main": [ - "neon-animated-pages.html", - "neon-animatable-behavior.html", - "neon-animation-behavior.html", - "neon-animation-runner-behavior.html", - "neon-shared-element-animatable-behavior.html", - "neon-shared-element-animation-behavior.html", - "neon-animatable.html", - "neon-animations.html" - ], - "private": true, - "repository": { - "type": "git", - "url": "git://github.com/PolymerElements/neon-animation" - }, - "license": "http://polymer.github.io/LICENSE.txt", - "homepage": "https://github.com/PolymerElements/neon-animation", - "ignore": [], - "dependencies": { - "polymer": "Polymer/polymer#^1.1.0", - "iron-meta": "PolymerElements/iron-meta#^1.0.0", - "iron-resizable-behavior": "PolymerElements/iron-resizable-behavior#^1.0.0", - "iron-selector": "PolymerElements/iron-selector#^1.0.0", - "web-animations-js": "web-animations/web-animations-js#^2.2.0" - }, - "devDependencies": { - "iron-flex-layout": "PolymerElements/iron-flex-layout#^1.0.0", - "paper-toolbar": "PolymerElements/paper-toolbar#^1.0.0", - "iron-component-page": "PolymerElements/iron-component-page#^1.0.0", - "test-fixture": "PolymerElements/test-fixture#^1.0.0", - "web-component-tester": "^4.0.0", - "webcomponentsjs": "webcomponents/webcomponentsjs#^0.7.0", - "paper-item": "PolymerElements/paper-item#^1.0.0", - "paper-styles": "PolymerElements/paper-styles#^1.0.0", - "iron-icon": "PolymerElements/iron-icon#^1.0.0", - "iron-icons": "PolymerElements/iron-icons#^1.0.0", - "paper-icon-button": "PolymerElements/paper-icon-button#^1.0.0" - } -} diff --git a/dashboard-ui/bower_components/neon-animation/demo/card/index.html b/dashboard-ui/bower_components/neon-animation/demo/card/index.html deleted file mode 100644 index 44993465fc..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/card/index.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - - neon-animated-pages demo: card - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/card/x-card.html b/dashboard-ui/bower_components/neon-animation/demo/card/x-card.html deleted file mode 100644 index 92885d29c8..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/card/x-card.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/card/x-cards-list.html b/dashboard-ui/bower_components/neon-animation/demo/card/x-cards-list.html deleted file mode 100644 index b817698fb5..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/card/x-cards-list.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/declarative/index.html b/dashboard-ui/bower_components/neon-animation/demo/declarative/index.html deleted file mode 100644 index 26ba53ff9b..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/declarative/index.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - - neon-animated-pages demo: declarative - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/doc/index.html b/dashboard-ui/bower_components/neon-animation/demo/doc/index.html deleted file mode 100644 index 8b3875e7ec..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/doc/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - neon-animation demo: basic - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/doc/my-animatable.html b/dashboard-ui/bower_components/neon-animation/demo/doc/my-animatable.html deleted file mode 100644 index 5063f74ba6..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/doc/my-animatable.html +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/doc/my-dialog.html b/dashboard-ui/bower_components/neon-animation/demo/doc/my-dialog.html deleted file mode 100644 index bd3344c0ea..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/doc/my-dialog.html +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/dropdown/animated-dropdown.html b/dashboard-ui/bower_components/neon-animation/demo/dropdown/animated-dropdown.html deleted file mode 100644 index 9a61530fb7..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/dropdown/animated-dropdown.html +++ /dev/null @@ -1,90 +0,0 @@ - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/dropdown/index.html b/dashboard-ui/bower_components/neon-animation/demo/dropdown/index.html deleted file mode 100644 index b238474cbf..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/dropdown/index.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - neon-animated-pages demo: dropdown - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/grid/animated-grid.html b/dashboard-ui/bower_components/neon-animation/demo/grid/animated-grid.html deleted file mode 100644 index a268936416..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/grid/animated-grid.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/grid/fullsize-page-with-card.html b/dashboard-ui/bower_components/neon-animation/demo/grid/fullsize-page-with-card.html deleted file mode 100644 index 63d35bbf68..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/grid/fullsize-page-with-card.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/grid/index.html b/dashboard-ui/bower_components/neon-animation/demo/grid/index.html deleted file mode 100644 index b102dba40b..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/grid/index.html +++ /dev/null @@ -1,64 +0,0 @@ - - - - - neon-animated-pages demo: grid - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/index.html b/dashboard-ui/bower_components/neon-animation/demo/index.html deleted file mode 100644 index 1e4e1204a8..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/index.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - neon-animated pages demo - - - - - - - - - - -
    -
    -

    Sample demos

    - -
    -
    - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/list/full-view.html b/dashboard-ui/bower_components/neon-animation/demo/list/full-view.html deleted file mode 100644 index 565618c218..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/list/full-view.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/list/index.html b/dashboard-ui/bower_components/neon-animation/demo/list/index.html deleted file mode 100644 index eabb02e5b6..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/list/index.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - neon-animated-pages demo: list - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/list/list-demo.html b/dashboard-ui/bower_components/neon-animation/demo/list/list-demo.html deleted file mode 100644 index 45808c8cae..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/list/list-demo.html +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/list/list-view.html b/dashboard-ui/bower_components/neon-animation/demo/list/list-view.html deleted file mode 100644 index ddb05502ca..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/list/list-view.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/load/animated-grid.html b/dashboard-ui/bower_components/neon-animation/demo/load/animated-grid.html deleted file mode 100644 index c1d52c1a5e..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/load/animated-grid.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/load/full-page.html b/dashboard-ui/bower_components/neon-animation/demo/load/full-page.html deleted file mode 100644 index 61a11bd7ba..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/load/full-page.html +++ /dev/null @@ -1,82 +0,0 @@ - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/load/index.html b/dashboard-ui/bower_components/neon-animation/demo/load/index.html deleted file mode 100644 index 54c8d68a5a..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/load/index.html +++ /dev/null @@ -1,48 +0,0 @@ - - - - - neon-animated-pages demo: load - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/reprojection/animated-grid.html b/dashboard-ui/bower_components/neon-animation/demo/reprojection/animated-grid.html deleted file mode 100644 index f1244b442c..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/reprojection/animated-grid.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/reprojection/fullsize-page-with-card.html b/dashboard-ui/bower_components/neon-animation/demo/reprojection/fullsize-page-with-card.html deleted file mode 100644 index 83b8a9170c..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/reprojection/fullsize-page-with-card.html +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/reprojection/index.html b/dashboard-ui/bower_components/neon-animation/demo/reprojection/index.html deleted file mode 100644 index 591d63c698..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/reprojection/index.html +++ /dev/null @@ -1,63 +0,0 @@ - - - - - neon-animated-pages demo: grid - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/reprojection/reprojected-pages.html b/dashboard-ui/bower_components/neon-animation/demo/reprojection/reprojected-pages.html deleted file mode 100644 index e71f2e055d..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/reprojection/reprojected-pages.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/shared-styles.html b/dashboard-ui/bower_components/neon-animation/demo/shared-styles.html deleted file mode 100644 index 4e48c8c406..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/shared-styles.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/tiles/circles-page.html b/dashboard-ui/bower_components/neon-animation/demo/tiles/circles-page.html deleted file mode 100644 index 70a4a75210..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/tiles/circles-page.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/tiles/index.html b/dashboard-ui/bower_components/neon-animation/demo/tiles/index.html deleted file mode 100644 index f509f0b5e6..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/tiles/index.html +++ /dev/null @@ -1,70 +0,0 @@ - - - - - neon-animated-pages demo: tiles - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/demo/tiles/squares-page.html b/dashboard-ui/bower_components/neon-animation/demo/tiles/squares-page.html deleted file mode 100644 index 52fe7e1880..0000000000 --- a/dashboard-ui/bower_components/neon-animation/demo/tiles/squares-page.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/guides/neon-animation.md b/dashboard-ui/bower_components/neon-animation/guides/neon-animation.md deleted file mode 100644 index 69727b864f..0000000000 --- a/dashboard-ui/bower_components/neon-animation/guides/neon-animation.md +++ /dev/null @@ -1,314 +0,0 @@ ---- -title: neon-animation -summary: "A short guide to neon-animation and neon-animated-pages" -tags: ['animation','core-animated-pages'] -elements: ['neon-animation','neon-animated-pages'] -updated: 2015-05-26 ---- - -# neon-animation - -`neon-animation` is a suite of elements and behaviors to implement pluggable animated transitions for Polymer Elements using [Web Animations](https://w3c.github.io/web-animations/). - -*Warning: The API may change.* - -* [A basic animatable element](#basic) -* [Animation configuration](#configuration) - * [Animation types](#configuration-types) - * [Configuration properties](#configuration-properties) - * [Using multiple animations](#configuration-multiple) - * [Running animations encapsulated in children nodes](#configuration-encapsulation) -* [Page transitions](#page-transitions) - * [Shared element animations](#shared-element) - * [Declarative page transitions](#declarative-page) -* [Included animations](#animations) -* [Demos](#demos) - - -## A basic animatable element - -Elements that can be animated should implement the `Polymer.NeonAnimatableBehavior` behavior, or `Polymer.NeonAnimationRunnerBehavior` if they're also responsible for running an animation. - -```js -Polymer({ - is: 'my-animatable', - behaviors: [ - Polymer.NeonAnimationRunnerBehavior - ], - properties: { - animationConfig: { - value: function() { - return { - // provided by neon-animation/animations/scale-down-animation.html - name: 'scale-down-animation', - node: this - } - } - } - }, - listeners: { - // this event is fired when the animation finishes - 'neon-animation-finish': '_onNeonAnimationFinish' - }, - animate: function() { - // run scale-down-animation - this.playAnimation(); - }, - _onNeonAnimationFinish: function() { - console.log('animation done!'); - } -}); -``` - -[Live demo](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/doc/basic.html) - - -## Animation configuration - - -### Animation types - -An element might run different animations, for example it might do something different when it enters the view and when it exits from view. You can set the `animationConfig` property to a map from an animation type to configuration. - -```js -Polymer({ - is: 'my-dialog', - behaviors: [ - Polymer.NeonAnimationRunnerBehavior - ], - properties: { - opened: { - type: Boolean - }, - animationConfig: { - value: function() { - return { - 'entry': { - // provided by neon-animation/animations/scale-up-animation.html - name: 'scale-up-animation', - node: this - }, - 'exit': { - // provided by neon-animation-animations/fade-out-animation.html - name: 'fade-out-animation', - node: this - } - } - } - } - }, - listeners: { - 'neon-animation-finish': '_onNeonAnimationFinish' - }, - show: function() { - this.opened = true; - this.style.display = 'inline-block'; - // run scale-up-animation - this.playAnimation('entry'); - }, - hide: function() { - this.opened = false; - // run fade-out-animation - this.playAnimation('exit'); - }, - _onNeonAnimationFinish: function() { - if (!this.opened) { - this.style.display = 'none'; - } - } -}); -``` - -[Live demo](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/doc/types.html) - -You can also use the convenience properties `entryAnimation` and `exitAnimation` to set `entry` and `exit` animations: - -```js -properties: { - entryAnimation: { - value: 'scale-up-animation' - }, - exitAnimation: { - value: 'fade-out-animation' - } -} -``` - - -### Configuration properties - -You can pass additional parameters to configure an animation in the animation configuration object. -All animations should accept the following properties: - - * `name`: The name of an animation, ie. an element implementing `Polymer.NeonAnimationBehavior`. - * `node`: The target node to apply the animation to. Defaults to `this`. - * `timing`: Timing properties to use in this animation. They match the [Web Animations Animation Effect Timing interface](https://w3c.github.io/web-animations/#the-animationeffecttiming-interface). The - properties include the following: - * `duration`: The duration of the animation in milliseconds. - * `delay`: The delay before the start of the animation in milliseconds. - * `easing`: A timing function for the animation. Matches the CSS timing function values. - -Animations may define additional configuration properties and they are listed in their documentation. - - -### Using multiple animations - -Set the animation configuration to an array to combine animations, like this: - -```js -animationConfig: { - value: function() { - return { - // fade-in-animation is run with a 50ms delay from slide-down-animation - 'entry': [{ - name: 'slide-down-animation', - node: this - }, { - name: 'fade-in-animation', - node: this, - timing: {delay: 50} - }] - } - } -} -``` - - -### Running animations encapsulated in children nodes - -You can include animations in the configuration that are encapsulated in a child element that implement `Polymer.NeonAnimatableBehavior` with the `animatable` property. - -```js -animationConfig: { - value: function() { - return { - // run fade-in-animation on this, and the entry animation on this.$.myAnimatable - 'entry': [ - {name: 'fade-in-animation', node: this}, - {animatable: this.$.myAnimatable, type: 'entry'} - ] - } - } -} -``` - - -## Page transitions - -*The artist formerly known as ``* - -The `neon-animated-pages` element manages a set of pages to switch between, and runs animations between the page transitions. It implements the `Polymer.IronSelectableBehavior` behavior. Each child node should implement `Polymer.NeonAnimatableBehavior` and define the `entry` and `exit` animations. During a page transition, the `entry` animation is run on the new page and the `exit` animation is run on the old page. - - -### Shared element animations - -Shared element animations work on multiple nodes. For example, a "hero" animation is used during a page transition to make two elements from separate pages appear to animate as a single element. Shared element animation configurations have an `id` property that identify they belong in the same animation. Elements containing shared elements also have a `sharedElements` property defines a map from `id` to element, the element involved with the animation. - -In the incoming page: - -```js -properties: { - animationConfig: { - value: function() { - return { - // the incoming page defines the 'entry' animation - 'entry': { - name: 'hero-animation', - id: 'hero', - toPage: this - } - } - } - }, - sharedElements: { - value: function() { - return { - 'hero': this.$.hero - } - } - } -} -``` - -In the outgoing page: - -```js -properties: { - animationConfig: { - value: function() { - return { - // the outgoing page defines the 'exit' animation - 'exit': { - name: 'hero-animation', - id: 'hero', - fromPage: this - } - } - } - }, - sharedElements: { - value: function() { - return { - 'hero': this.$.otherHero - } - } - } -} -``` - - -### Declarative page transitions - -For convenience, if you define the `entry-animation` and `exit-animation` attributes on ``, those animations will apply for all page transitions. - -For example: - -```js - - 1 - 2 - 3 - 4 - 5 - -``` - -The new page will slide in from the right, and the old page slide away to the left. - - -## Included animations - -Single element animations: - - * `fade-in-animation` Animates opacity from `0` to `1`; - * `fade-out-animation` Animates opacity from `1` to `0`; - * `scale-down-animation` Animates transform from `scale(1)` to `scale(0)`; - * `scale-up-animation` Animates transform from `scale(0)` to `scale(1)`; - * `slide-down-animation` Animates transform from `none` to `translateY(100%)`; - * `slide-up-animation` Animates transform from `none` to `translateY(-100%)`; - * `slide-from-top-animation` Animates transform from `translateY(-100%)` to `none`; - * `slide-from-bottom-animation` Animates transform from `translateY(100%)` to `none`; - * `slide-left-animation` Animates transform from `none` to `translateX(-100%)`; - * `slide-right-animation` Animates transform from `none` to `translateX(100%)`; - * `slide-from-left-animation` Animates transform from `translateX(-100%)` to `none`; - * `slide-from-right-animation` Animates transform from `translateX(100%)` to `none`; - * `transform-animation` Animates a custom transform. - -Note that there is a restriction that only one transform animation can be applied on the same element at a time. Use the custom `transform-animation` to combine transform properties. - -Shared element animations - - * `hero-animation` Animates an element such that it looks like it scales and transforms from another element. - * `ripple-animation` Animates an element to full screen such that it looks like it ripples from another element. - -Group animations - * `cascaded-animation` Applys an animation to an array of elements with a delay between each. - - -## Demos - - * [Grid to full screen](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/grid/index.html) - * [Animation on load](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/load/index.html) - * [List item to detail](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/list/index.html) (For narrow width) - * [Dots to squares](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/tiles/index.html) - * [Declarative](http://morethanreal.github.io/neon-animation-demo/bower_components/neon-animation/demo/declarative/index.html) diff --git a/dashboard-ui/bower_components/neon-animation/index.html b/dashboard-ui/bower_components/neon-animation/index.html deleted file mode 100644 index 6f5feedf45..0000000000 --- a/dashboard-ui/bower_components/neon-animation/index.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - neon-animation - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/neon-animatable-behavior.html b/dashboard-ui/bower_components/neon-animation/neon-animatable-behavior.html deleted file mode 100644 index dd58a6cfba..0000000000 --- a/dashboard-ui/bower_components/neon-animation/neon-animatable-behavior.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/neon-animatable.html b/dashboard-ui/bower_components/neon-animation/neon-animatable.html deleted file mode 100644 index 82deb610b6..0000000000 --- a/dashboard-ui/bower_components/neon-animation/neon-animatable.html +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/neon-animated-pages.html b/dashboard-ui/bower_components/neon-animation/neon-animated-pages.html deleted file mode 100644 index 4cc94c72b6..0000000000 --- a/dashboard-ui/bower_components/neon-animation/neon-animated-pages.html +++ /dev/null @@ -1,224 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/neon-animation-behavior.html b/dashboard-ui/bower_components/neon-animation/neon-animation-behavior.html deleted file mode 100644 index 6939d3428a..0000000000 --- a/dashboard-ui/bower_components/neon-animation/neon-animation-behavior.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/neon-animation-runner-behavior.html b/dashboard-ui/bower_components/neon-animation/neon-animation-runner-behavior.html deleted file mode 100644 index 2b414e2577..0000000000 --- a/dashboard-ui/bower_components/neon-animation/neon-animation-runner-behavior.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/neon-animation.html b/dashboard-ui/bower_components/neon-animation/neon-animation.html deleted file mode 100644 index da64504859..0000000000 --- a/dashboard-ui/bower_components/neon-animation/neon-animation.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/neon-animations.html b/dashboard-ui/bower_components/neon-animation/neon-animations.html deleted file mode 100644 index 67c4df4c76..0000000000 --- a/dashboard-ui/bower_components/neon-animation/neon-animations.html +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/neon-shared-element-animatable-behavior.html b/dashboard-ui/bower_components/neon-animation/neon-shared-element-animatable-behavior.html deleted file mode 100644 index e63173d368..0000000000 --- a/dashboard-ui/bower_components/neon-animation/neon-shared-element-animatable-behavior.html +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/neon-shared-element-animation-behavior.html b/dashboard-ui/bower_components/neon-animation/neon-shared-element-animation-behavior.html deleted file mode 100644 index 7787615b03..0000000000 --- a/dashboard-ui/bower_components/neon-animation/neon-shared-element-animation-behavior.html +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/test/index.html b/dashboard-ui/bower_components/neon-animation/test/index.html deleted file mode 100644 index 81555a2b5d..0000000000 --- a/dashboard-ui/bower_components/neon-animation/test/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - neon-animation tests - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/test/neon-animated-pages-descendant-selection.html b/dashboard-ui/bower_components/neon-animation/test/neon-animated-pages-descendant-selection.html deleted file mode 100644 index 0904a39582..0000000000 --- a/dashboard-ui/bower_components/neon-animation/test/neon-animated-pages-descendant-selection.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/test/neon-animated-pages-lazy.html b/dashboard-ui/bower_components/neon-animation/test/neon-animated-pages-lazy.html deleted file mode 100644 index 3f873b5373..0000000000 --- a/dashboard-ui/bower_components/neon-animation/test/neon-animated-pages-lazy.html +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - neon-animated-pages tests - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/test/neon-animated-pages.html b/dashboard-ui/bower_components/neon-animation/test/neon-animated-pages.html deleted file mode 100644 index 98220b67ed..0000000000 --- a/dashboard-ui/bower_components/neon-animation/test/neon-animated-pages.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - - - neon-animated-pages tests - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/test/test-resizable-pages.html b/dashboard-ui/bower_components/neon-animation/test/test-resizable-pages.html deleted file mode 100644 index 7330a1ffd1..0000000000 --- a/dashboard-ui/bower_components/neon-animation/test/test-resizable-pages.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/dashboard-ui/bower_components/neon-animation/web-animations.html b/dashboard-ui/bower_components/neon-animation/web-animations.html deleted file mode 100644 index e8d6421e3b..0000000000 --- a/dashboard-ui/bower_components/neon-animation/web-animations.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - \ No newline at end of file diff --git a/dashboard-ui/components/guestinviter/guestinviter.js b/dashboard-ui/components/guestinviter/guestinviter.js index d00e91d9d5..f7ed117eb5 100644 --- a/dashboard-ui/components/guestinviter/guestinviter.js +++ b/dashboard-ui/components/guestinviter/guestinviter.js @@ -1,4 +1,4 @@ -define(['dialogHelper', 'jQuery', 'emby-input', 'emby-button', 'emby-collapsible', 'paper-checkbox', 'paper-icon-button-light'], function (dialogHelper, $) { +define(['dialogHelper', 'jQuery', 'emby-input', 'emby-button', 'emby-collapse', 'paper-checkbox', 'paper-icon-button-light'], function (dialogHelper, $) { function renderLibrarySharingList(context, result) { diff --git a/dashboard-ui/components/guestinviter/guestinviter.template.html b/dashboard-ui/components/guestinviter/guestinviter.template.html index af9c824911..7ebba789af 100644 --- a/dashboard-ui/components/guestinviter/guestinviter.template.html +++ b/dashboard-ui/components/guestinviter/guestinviter.template.html @@ -17,13 +17,13 @@
-
- - -
+
+
+
+
- +

${MessageGuestSharingPermissionsHelp}


+
-

${MessagePleaseRestartServerToFinishUpdating}

-
- -
- +
@@ -78,31 +80,35 @@
diff --git a/dashboard-ui/dashboardgeneral.html b/dashboard-ui/dashboardgeneral.html index d129c89d11..9d81f683eb 100644 --- a/dashboard-ui/dashboardgeneral.html +++ b/dashboard-ui/dashboardgeneral.html @@ -42,83 +42,92 @@

- -
- -
- - -
- -
- - -

${HeaderBrandingHelp}

-
- - -
- - -
-
- ${OptionEnableWebClientResponseCache} +
+
+
    +
  • + + +
    ${LabelCachePathHelp}
    +
  • +
-
-
- ${OptionEnableWebClientResourceMinification} +
+ +
+
+
+
    +
  • +
    + + +
    +
  • +
  • + + + +
  • + +
-
- ${OptionDisableForDevelopmentHelp} +
+ +
+
+

${HeaderBrandingHelp}

+
+ +
    +
  • + +
    ${LabelLoginDisclaimerHelp}
    +
  • +
  • + +
    ${LabelCustomCssHelp}
    +
  • +
-

-
    -
  • - - -
    ${LabelDashboardSourcePathHelp}
    -
  • -
- +
+ +
+
+
+
+ ${OptionEnableWebClientResponseCache} +
+
+
+ ${OptionEnableWebClientResourceMinification} +
+
+ ${OptionDisableForDevelopmentHelp} +
+

+
    +
  • + + +
    ${LabelDashboardSourcePathHelp}
    +
  • +
+
+

  • diff --git a/dashboard-ui/librarysettings.html b/dashboard-ui/librarysettings.html index b21e4e4b56..b153783542 100644 --- a/dashboard-ui/librarysettings.html +++ b/dashboard-ui/librarysettings.html @@ -36,90 +36,99 @@
- -
-
- ${OptionDetectArchiveFilesAsMedia} -
${OptionDetectArchiveFilesAsMediaHelp}
+
+
+
+
+ ${OptionDetectArchiveFilesAsMedia} +
${OptionDetectArchiveFilesAsMediaHelp}
+
+
-
- +
- -
-
- ${OptionDetectArchiveFilesAsMedia} -
${OptionDetectArchiveFilesAsMediaHelp}
+
+
+
+
+ ${OptionDetectArchiveFilesAsMedia} +
${OptionDetectArchiveFilesAsMediaHelp}
+
+
-
- +
- -
-
    -
  • -
    ${HeaderExtractChapterImagesFor}
    -
    - ${OptionMovies} +
    +
    +
    +
      +
    • +
      ${HeaderExtractChapterImagesFor}
      +
      + ${OptionMovies} - ${OptionEpisodes} + ${OptionEpisodes} - ${OptionOtherVideos} -
      -
      ${ExtractChapterImagesHelp}
      -
    • -
    -
    -
    - ${LabelExtractChaptersDuringLibraryScan} -
    ${LabelExtractChaptersDuringLibraryScanHelp}
    + ${OptionOtherVideos} +
    +
    ${ExtractChapterImagesHelp}
    +
  • +
+
+
+ ${LabelExtractChaptersDuringLibraryScan} +
${LabelExtractChaptersDuringLibraryScanHelp}
+
+
-
-
+
- -
-
    -
  • -
    ${HeaderDownloadPeopleMetadataFor}
    -
    - ${OptionActors} +
    +
    +
    +
      +
    • +
      ${HeaderDownloadPeopleMetadataFor}
      +
      + ${OptionActors} - ${OptionComposers} + ${OptionComposers} - ${OptionDirectors} + ${OptionDirectors} - ${OptionGuestStars} + ${OptionGuestStars} - ${OptionProducers} + ${OptionProducers} - ${OptionWriters} + ${OptionWriters} - ${OptionOthers} -
      -
      ${HeaderDownloadPeopleMetadataForHelp}
      -
    • -
    - - - -
    -
    - - + ${OptionOthers} +
    +
    ${HeaderDownloadPeopleMetadataForHelp}
    +
  • +
-
- +
- - - +
+
+
+ +
+
+
+ +
+
+ +
+


diff --git a/dashboard-ui/metadataimages.html b/dashboard-ui/metadataimages.html index 0c7e1387be..473eeea010 100644 --- a/dashboard-ui/metadataimages.html +++ b/dashboard-ui/metadataimages.html @@ -1,4 +1,4 @@ -
+
@@ -21,43 +21,44 @@
- -
-