{"mappings":"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","sources":["","node_modules/material-design-lite/material.min.js","node_modules/material-design-lite/tabs.js","node_modules/material-design-lite/layout.js","node_modules/material-design-lite/mdlComponentHandler.js","node_modules/material-design-lite/rAF.js","node_modules/material-design-lite/button.js","node_modules/material-design-lite/checkbox.js","node_modules/material-design-lite/icon-toggle.js","node_modules/material-design-lite/menu.js","node_modules/material-design-lite/progress.js","node_modules/material-design-lite/radio.js","node_modules/material-design-lite/slider.js","node_modules/material-design-lite/snackbar.js","node_modules/material-design-lite/spinner.js","node_modules/material-design-lite/switch.js","node_modules/material-design-lite/textfield.js","node_modules/material-design-lite/tooltip.js","node_modules/material-design-lite/data-table.js","node_modules/material-design-lite/ripple.js"],"sourcesContent":["var $92b120829398a6d9$exports = {};\n/**\n * material-design-lite - Material Design Components in CSS, JS and HTML\n * @version v1.3.0\n * @license Apache-2.0\n * @copyright 2015 Google, Inc.\n * @link https://github.com/google/material-design-lite\n */ !function() {\n \"use strict\";\n function e(e, t) {\n if (e) {\n if (t.element_.classList.contains(t.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n var s = document.createElement(\"span\");\n s.classList.add(t.CssClasses_.MDL_RIPPLE_CONTAINER), s.classList.add(t.CssClasses_.MDL_JS_RIPPLE_EFFECT);\n var i = document.createElement(\"span\");\n i.classList.add(t.CssClasses_.MDL_RIPPLE), s.appendChild(i), e.appendChild(s);\n }\n e.addEventListener(\"click\", function(s) {\n if (\"#\" === e.getAttribute(\"href\").charAt(0)) {\n s.preventDefault();\n var i = e.href.split(\"#\")[1], n = t.element_.querySelector(\"#\" + i);\n t.resetTabState_(), t.resetPanelState_(), e.classList.add(t.CssClasses_.ACTIVE_CLASS), n.classList.add(t.CssClasses_.ACTIVE_CLASS);\n }\n });\n }\n }\n function t(e, t, s, i) {\n function n() {\n var n = e.href.split(\"#\")[1], a = i.content_.querySelector(\"#\" + n);\n i.resetTabState_(t), i.resetPanelState_(s), e.classList.add(i.CssClasses_.IS_ACTIVE), a.classList.add(i.CssClasses_.IS_ACTIVE);\n }\n if (i.tabBar_.classList.contains(i.CssClasses_.JS_RIPPLE_EFFECT)) {\n var a = document.createElement(\"span\");\n a.classList.add(i.CssClasses_.RIPPLE_CONTAINER), a.classList.add(i.CssClasses_.JS_RIPPLE_EFFECT);\n var l = document.createElement(\"span\");\n l.classList.add(i.CssClasses_.RIPPLE), a.appendChild(l), e.appendChild(a);\n }\n i.tabBar_.classList.contains(i.CssClasses_.TAB_MANUAL_SWITCH) || e.addEventListener(\"click\", function(t) {\n \"#\" === e.getAttribute(\"href\").charAt(0) && (t.preventDefault(), n());\n }), e.show = n;\n }\n var s = {\n upgradeDom: function(e, t) {},\n upgradeElement: function(e, t) {},\n upgradeElements: function(e) {},\n upgradeAllRegistered: function() {},\n registerUpgradedCallback: function(e, t) {},\n register: function(e) {},\n downgradeElements: function(e) {}\n };\n s = function() {\n function e(e, t) {\n for(var s = 0; s < c.length; s++)if (c[s].className === e) return \"undefined\" != typeof t && (c[s] = t), c[s];\n return !1;\n }\n function t(e) {\n var t = e.getAttribute(\"data-upgraded\");\n return null === t ? [\n \"\"\n ] : t.split(\",\");\n }\n function s(e, s) {\n var i = t(e);\n return i.indexOf(s) !== -1;\n }\n function i(e, t, s) {\n if (\"CustomEvent\" in window && \"function\" == typeof window.CustomEvent) return new CustomEvent(e, {\n bubbles: t,\n cancelable: s\n });\n var i = document.createEvent(\"Events\");\n return i.initEvent(e, t, s), i;\n }\n function n(t, s) {\n if (\"undefined\" == typeof t && \"undefined\" == typeof s) for(var i = 0; i < c.length; i++)n(c[i].className, c[i].cssClass);\n else {\n var l = t;\n if (\"undefined\" == typeof s) {\n var o = e(l);\n o && (s = o.cssClass);\n }\n for(var r = document.querySelectorAll(\".\" + s), _ = 0; _ < r.length; _++)a(r[_], l);\n }\n }\n function a(n, a) {\n if (!(\"object\" == typeof n && n instanceof Element)) throw new Error(\"Invalid argument provided to upgrade MDL element.\");\n var l = i(\"mdl-componentupgrading\", !0, !0);\n if (n.dispatchEvent(l), !l.defaultPrevented) {\n var o = t(n), r = [];\n if (a) s(n, a) || r.push(e(a));\n else {\n var _ = n.classList;\n c.forEach(function(e) {\n _.contains(e.cssClass) && r.indexOf(e) === -1 && !s(n, e.className) && r.push(e);\n });\n }\n for(var d, h = 0, u = r.length; h < u; h++){\n if (d = r[h], !d) throw new Error(\"Unable to find a registered component for the given class.\");\n o.push(d.className), n.setAttribute(\"data-upgraded\", o.join(\",\"));\n var E = new d.classConstructor(n);\n E[C] = d, p.push(E);\n for(var m = 0, L = d.callbacks.length; m < L; m++)d.callbacks[m](n);\n d.widget && (n[d.className] = E);\n var I = i(\"mdl-componentupgraded\", !0, !1);\n n.dispatchEvent(I);\n }\n }\n }\n function l(e) {\n Array.isArray(e) || (e = e instanceof Element ? [\n e\n ] : Array.prototype.slice.call(e));\n for(var t, s = 0, i = e.length; s < i; s++)t = e[s], t instanceof HTMLElement && (a(t), t.children.length > 0 && l(t.children));\n }\n function o(t) {\n var s = \"undefined\" == typeof t.widget && \"undefined\" == typeof t.widget, i = !0;\n s || (i = t.widget || t.widget);\n var n = {\n classConstructor: t.constructor || t.constructor,\n className: t.classAsString || t.classAsString,\n cssClass: t.cssClass || t.cssClass,\n widget: i,\n callbacks: []\n };\n if (c.forEach(function(e) {\n if (e.cssClass === n.cssClass) throw new Error(\"The provided cssClass has already been registered: \" + e.cssClass);\n if (e.className === n.className) throw new Error(\"The provided className has already been registered\");\n }), t.constructor.prototype.hasOwnProperty(C)) throw new Error(\"MDL component classes must not have \" + C + \" defined as a property.\");\n var a = e(t.classAsString, n);\n a || c.push(n);\n }\n function r(t, s) {\n var i = e(t);\n i && i.callbacks.push(s);\n }\n function _() {\n for(var e = 0; e < c.length; e++)n(c[e].className);\n }\n function d(e) {\n if (e) {\n var t = p.indexOf(e);\n p.splice(t, 1);\n var s = e.element_.getAttribute(\"data-upgraded\").split(\",\"), n = s.indexOf(e[C].classAsString);\n s.splice(n, 1), e.element_.setAttribute(\"data-upgraded\", s.join(\",\"));\n var a = i(\"mdl-componentdowngraded\", !0, !1);\n e.element_.dispatchEvent(a);\n }\n }\n function h(e) {\n var t = function(e) {\n p.filter(function(t) {\n return t.element_ === e;\n }).forEach(d);\n };\n if (e instanceof Array || e instanceof NodeList) for(var s = 0; s < e.length; s++)t(e[s]);\n else {\n if (!(e instanceof Node)) throw new Error(\"Invalid argument provided to downgrade MDL nodes.\");\n t(e);\n }\n }\n var c = [], p = [], C = \"mdlComponentConfigInternal_\";\n return {\n upgradeDom: n,\n upgradeElement: a,\n upgradeElements: l,\n upgradeAllRegistered: _,\n registerUpgradedCallback: r,\n register: o,\n downgradeElements: h\n };\n }(), s.ComponentConfigPublic, s.ComponentConfig, s.Component, s.upgradeDom = s.upgradeDom, s.upgradeElement = s.upgradeElement, s.upgradeElements = s.upgradeElements, s.upgradeAllRegistered = s.upgradeAllRegistered, s.registerUpgradedCallback = s.registerUpgradedCallback, s.register = s.register, s.downgradeElements = s.downgradeElements, window.componentHandler = s, window.componentHandler = s, window.addEventListener(\"load\", function() {\n \"classList\" in document.createElement(\"div\") && \"querySelector\" in document && \"addEventListener\" in window && Array.prototype.forEach ? (document.documentElement.classList.add(\"mdl-js\"), s.upgradeAllRegistered()) : (s.upgradeElement = function() {}, s.register = function() {});\n }), Date.now || (Date.now = function() {\n return (new Date).getTime();\n }, Date.now = Date.now);\n for(var i = [\n \"webkit\",\n \"moz\"\n ], n = 0; n < i.length && !window.requestAnimationFrame; ++n){\n var a = i[n];\n window.requestAnimationFrame = window[a + \"RequestAnimationFrame\"], window.cancelAnimationFrame = window[a + \"CancelAnimationFrame\"] || window[a + \"CancelRequestAnimationFrame\"], window.requestAnimationFrame = window.requestAnimationFrame, window.cancelAnimationFrame = window.cancelAnimationFrame;\n }\n if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var l = 0;\n window.requestAnimationFrame = function(e) {\n var t = Date.now(), s = Math.max(l + 16, t);\n return setTimeout(function() {\n e(l = s);\n }, s - t);\n }, window.cancelAnimationFrame = clearTimeout, window.requestAnimationFrame = window.requestAnimationFrame, window.cancelAnimationFrame = window.cancelAnimationFrame;\n }\n var o = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialButton = o, o.prototype.Constant_ = {}, o.prototype.CssClasses_ = {\n RIPPLE_EFFECT: \"mdl-js-ripple-effect\",\n RIPPLE_CONTAINER: \"mdl-button__ripple-container\",\n RIPPLE: \"mdl-ripple\"\n }, o.prototype.blurHandler_ = function(e) {\n e && this.element_.blur();\n }, o.prototype.disable = function() {\n this.element_.disabled = !0;\n }, o.prototype.disable = o.prototype.disable, o.prototype.enable = function() {\n this.element_.disabled = !1;\n }, o.prototype.enable = o.prototype.enable, o.prototype.init = function() {\n if (this.element_) {\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n var e = document.createElement(\"span\");\n e.classList.add(this.CssClasses_.RIPPLE_CONTAINER), this.rippleElement_ = document.createElement(\"span\"), this.rippleElement_.classList.add(this.CssClasses_.RIPPLE), e.appendChild(this.rippleElement_), this.boundRippleBlurHandler = this.blurHandler_.bind(this), this.rippleElement_.addEventListener(\"mouseup\", this.boundRippleBlurHandler), this.element_.appendChild(e);\n }\n this.boundButtonBlurHandler = this.blurHandler_.bind(this), this.element_.addEventListener(\"mouseup\", this.boundButtonBlurHandler), this.element_.addEventListener(\"mouseleave\", this.boundButtonBlurHandler);\n }\n }, s.register({\n constructor: o,\n classAsString: \"MaterialButton\",\n cssClass: \"mdl-js-button\",\n widget: !0\n });\n var r = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialCheckbox = r, r.prototype.Constant_ = {\n TINY_TIMEOUT: .001\n }, r.prototype.CssClasses_ = {\n INPUT: \"mdl-checkbox__input\",\n BOX_OUTLINE: \"mdl-checkbox__box-outline\",\n FOCUS_HELPER: \"mdl-checkbox__focus-helper\",\n TICK_OUTLINE: \"mdl-checkbox__tick-outline\",\n RIPPLE_EFFECT: \"mdl-js-ripple-effect\",\n RIPPLE_IGNORE_EVENTS: \"mdl-js-ripple-effect--ignore-events\",\n RIPPLE_CONTAINER: \"mdl-checkbox__ripple-container\",\n RIPPLE_CENTER: \"mdl-ripple--center\",\n RIPPLE: \"mdl-ripple\",\n IS_FOCUSED: \"is-focused\",\n IS_DISABLED: \"is-disabled\",\n IS_CHECKED: \"is-checked\",\n IS_UPGRADED: \"is-upgraded\"\n }, r.prototype.onChange_ = function(e) {\n this.updateClasses_();\n }, r.prototype.onFocus_ = function(e) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n }, r.prototype.onBlur_ = function(e) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n }, r.prototype.onMouseUp_ = function(e) {\n this.blur_();\n }, r.prototype.updateClasses_ = function() {\n this.checkDisabled(), this.checkToggleState();\n }, r.prototype.blur_ = function() {\n window.setTimeout((function() {\n this.inputElement_.blur();\n }).bind(this), this.Constant_.TINY_TIMEOUT);\n }, r.prototype.checkToggleState = function() {\n this.inputElement_.checked ? this.element_.classList.add(this.CssClasses_.IS_CHECKED) : this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }, r.prototype.checkToggleState = r.prototype.checkToggleState, r.prototype.checkDisabled = function() {\n this.inputElement_.disabled ? this.element_.classList.add(this.CssClasses_.IS_DISABLED) : this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }, r.prototype.checkDisabled = r.prototype.checkDisabled, r.prototype.disable = function() {\n this.inputElement_.disabled = !0, this.updateClasses_();\n }, r.prototype.disable = r.prototype.disable, r.prototype.enable = function() {\n this.inputElement_.disabled = !1, this.updateClasses_();\n }, r.prototype.enable = r.prototype.enable, r.prototype.check = function() {\n this.inputElement_.checked = !0, this.updateClasses_();\n }, r.prototype.check = r.prototype.check, r.prototype.uncheck = function() {\n this.inputElement_.checked = !1, this.updateClasses_();\n }, r.prototype.uncheck = r.prototype.uncheck, r.prototype.init = function() {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector(\".\" + this.CssClasses_.INPUT);\n var e = document.createElement(\"span\");\n e.classList.add(this.CssClasses_.BOX_OUTLINE);\n var t = document.createElement(\"span\");\n t.classList.add(this.CssClasses_.FOCUS_HELPER);\n var s = document.createElement(\"span\");\n if (s.classList.add(this.CssClasses_.TICK_OUTLINE), e.appendChild(s), this.element_.appendChild(t), this.element_.appendChild(e), this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS), this.rippleContainerElement_ = document.createElement(\"span\"), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER), this.boundRippleMouseUp = this.onMouseUp_.bind(this), this.rippleContainerElement_.addEventListener(\"mouseup\", this.boundRippleMouseUp);\n var i = document.createElement(\"span\");\n i.classList.add(this.CssClasses_.RIPPLE), this.rippleContainerElement_.appendChild(i), this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this), this.boundInputOnFocus = this.onFocus_.bind(this), this.boundInputOnBlur = this.onBlur_.bind(this), this.boundElementMouseUp = this.onMouseUp_.bind(this), this.inputElement_.addEventListener(\"change\", this.boundInputOnChange), this.inputElement_.addEventListener(\"focus\", this.boundInputOnFocus), this.inputElement_.addEventListener(\"blur\", this.boundInputOnBlur), this.element_.addEventListener(\"mouseup\", this.boundElementMouseUp), this.updateClasses_(), this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }, s.register({\n constructor: r,\n classAsString: \"MaterialCheckbox\",\n cssClass: \"mdl-js-checkbox\",\n widget: !0\n });\n var _ = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialIconToggle = _, _.prototype.Constant_ = {\n TINY_TIMEOUT: .001\n }, _.prototype.CssClasses_ = {\n INPUT: \"mdl-icon-toggle__input\",\n JS_RIPPLE_EFFECT: \"mdl-js-ripple-effect\",\n RIPPLE_IGNORE_EVENTS: \"mdl-js-ripple-effect--ignore-events\",\n RIPPLE_CONTAINER: \"mdl-icon-toggle__ripple-container\",\n RIPPLE_CENTER: \"mdl-ripple--center\",\n RIPPLE: \"mdl-ripple\",\n IS_FOCUSED: \"is-focused\",\n IS_DISABLED: \"is-disabled\",\n IS_CHECKED: \"is-checked\"\n }, _.prototype.onChange_ = function(e) {\n this.updateClasses_();\n }, _.prototype.onFocus_ = function(e) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n }, _.prototype.onBlur_ = function(e) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n }, _.prototype.onMouseUp_ = function(e) {\n this.blur_();\n }, _.prototype.updateClasses_ = function() {\n this.checkDisabled(), this.checkToggleState();\n }, _.prototype.blur_ = function() {\n window.setTimeout((function() {\n this.inputElement_.blur();\n }).bind(this), this.Constant_.TINY_TIMEOUT);\n }, _.prototype.checkToggleState = function() {\n this.inputElement_.checked ? this.element_.classList.add(this.CssClasses_.IS_CHECKED) : this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }, _.prototype.checkToggleState = _.prototype.checkToggleState, _.prototype.checkDisabled = function() {\n this.inputElement_.disabled ? this.element_.classList.add(this.CssClasses_.IS_DISABLED) : this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }, _.prototype.checkDisabled = _.prototype.checkDisabled, _.prototype.disable = function() {\n this.inputElement_.disabled = !0, this.updateClasses_();\n }, _.prototype.disable = _.prototype.disable, _.prototype.enable = function() {\n this.inputElement_.disabled = !1, this.updateClasses_();\n }, _.prototype.enable = _.prototype.enable, _.prototype.check = function() {\n this.inputElement_.checked = !0, this.updateClasses_();\n }, _.prototype.check = _.prototype.check, _.prototype.uncheck = function() {\n this.inputElement_.checked = !1, this.updateClasses_();\n }, _.prototype.uncheck = _.prototype.uncheck, _.prototype.init = function() {\n if (this.element_) {\n if (this.inputElement_ = this.element_.querySelector(\".\" + this.CssClasses_.INPUT), this.element_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS), this.rippleContainerElement_ = document.createElement(\"span\"), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER), this.rippleContainerElement_.classList.add(this.CssClasses_.JS_RIPPLE_EFFECT), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER), this.boundRippleMouseUp = this.onMouseUp_.bind(this), this.rippleContainerElement_.addEventListener(\"mouseup\", this.boundRippleMouseUp);\n var e = document.createElement(\"span\");\n e.classList.add(this.CssClasses_.RIPPLE), this.rippleContainerElement_.appendChild(e), this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this), this.boundInputOnFocus = this.onFocus_.bind(this), this.boundInputOnBlur = this.onBlur_.bind(this), this.boundElementOnMouseUp = this.onMouseUp_.bind(this), this.inputElement_.addEventListener(\"change\", this.boundInputOnChange), this.inputElement_.addEventListener(\"focus\", this.boundInputOnFocus), this.inputElement_.addEventListener(\"blur\", this.boundInputOnBlur), this.element_.addEventListener(\"mouseup\", this.boundElementOnMouseUp), this.updateClasses_(), this.element_.classList.add(\"is-upgraded\");\n }\n }, s.register({\n constructor: _,\n classAsString: \"MaterialIconToggle\",\n cssClass: \"mdl-js-icon-toggle\",\n widget: !0\n });\n var d = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialMenu = d, d.prototype.Constant_ = {\n TRANSITION_DURATION_SECONDS: .3,\n TRANSITION_DURATION_FRACTION: .8,\n CLOSE_TIMEOUT: 150\n }, d.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n UP_ARROW: 38,\n DOWN_ARROW: 40\n }, d.prototype.CssClasses_ = {\n CONTAINER: \"mdl-menu__container\",\n OUTLINE: \"mdl-menu__outline\",\n ITEM: \"mdl-menu__item\",\n ITEM_RIPPLE_CONTAINER: \"mdl-menu__item-ripple-container\",\n RIPPLE_EFFECT: \"mdl-js-ripple-effect\",\n RIPPLE_IGNORE_EVENTS: \"mdl-js-ripple-effect--ignore-events\",\n RIPPLE: \"mdl-ripple\",\n IS_UPGRADED: \"is-upgraded\",\n IS_VISIBLE: \"is-visible\",\n IS_ANIMATING: \"is-animating\",\n BOTTOM_LEFT: \"mdl-menu--bottom-left\",\n BOTTOM_RIGHT: \"mdl-menu--bottom-right\",\n TOP_LEFT: \"mdl-menu--top-left\",\n TOP_RIGHT: \"mdl-menu--top-right\",\n UNALIGNED: \"mdl-menu--unaligned\"\n }, d.prototype.init = function() {\n if (this.element_) {\n var e = document.createElement(\"div\");\n e.classList.add(this.CssClasses_.CONTAINER), this.element_.parentElement.insertBefore(e, this.element_), this.element_.parentElement.removeChild(this.element_), e.appendChild(this.element_), this.container_ = e;\n var t = document.createElement(\"div\");\n t.classList.add(this.CssClasses_.OUTLINE), this.outline_ = t, e.insertBefore(t, this.element_);\n var s = this.element_.getAttribute(\"for\") || this.element_.getAttribute(\"data-mdl-for\"), i = null;\n s && (i = document.getElementById(s), i && (this.forElement_ = i, i.addEventListener(\"click\", this.handleForClick_.bind(this)), i.addEventListener(\"keydown\", this.handleForKeyboardEvent_.bind(this))));\n var n = this.element_.querySelectorAll(\".\" + this.CssClasses_.ITEM);\n this.boundItemKeydown_ = this.handleItemKeyboardEvent_.bind(this), this.boundItemClick_ = this.handleItemClick_.bind(this);\n for(var a = 0; a < n.length; a++)n[a].addEventListener(\"click\", this.boundItemClick_), n[a].tabIndex = \"-1\", n[a].addEventListener(\"keydown\", this.boundItemKeydown_);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) for(this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS), a = 0; a < n.length; a++){\n var l = n[a], o = document.createElement(\"span\");\n o.classList.add(this.CssClasses_.ITEM_RIPPLE_CONTAINER);\n var r = document.createElement(\"span\");\n r.classList.add(this.CssClasses_.RIPPLE), o.appendChild(r), l.appendChild(o), l.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n }\n this.element_.classList.contains(this.CssClasses_.BOTTOM_LEFT) && this.outline_.classList.add(this.CssClasses_.BOTTOM_LEFT), this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT) && this.outline_.classList.add(this.CssClasses_.BOTTOM_RIGHT), this.element_.classList.contains(this.CssClasses_.TOP_LEFT) && this.outline_.classList.add(this.CssClasses_.TOP_LEFT), this.element_.classList.contains(this.CssClasses_.TOP_RIGHT) && this.outline_.classList.add(this.CssClasses_.TOP_RIGHT), this.element_.classList.contains(this.CssClasses_.UNALIGNED) && this.outline_.classList.add(this.CssClasses_.UNALIGNED), e.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }, d.prototype.handleForClick_ = function(e) {\n if (this.element_ && this.forElement_) {\n var t = this.forElement_.getBoundingClientRect(), s = this.forElement_.parentElement.getBoundingClientRect();\n this.element_.classList.contains(this.CssClasses_.UNALIGNED) || (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT) ? (this.container_.style.right = s.right - t.right + \"px\", this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + \"px\") : this.element_.classList.contains(this.CssClasses_.TOP_LEFT) ? (this.container_.style.left = this.forElement_.offsetLeft + \"px\", this.container_.style.bottom = s.bottom - t.top + \"px\") : this.element_.classList.contains(this.CssClasses_.TOP_RIGHT) ? (this.container_.style.right = s.right - t.right + \"px\", this.container_.style.bottom = s.bottom - t.top + \"px\") : (this.container_.style.left = this.forElement_.offsetLeft + \"px\", this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + \"px\"));\n }\n this.toggle(e);\n }, d.prototype.handleForKeyboardEvent_ = function(e) {\n if (this.element_ && this.container_ && this.forElement_) {\n var t = this.element_.querySelectorAll(\".\" + this.CssClasses_.ITEM + \":not([disabled])\");\n t && t.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE) && (e.keyCode === this.Keycodes_.UP_ARROW ? (e.preventDefault(), t[t.length - 1].focus()) : e.keyCode === this.Keycodes_.DOWN_ARROW && (e.preventDefault(), t[0].focus()));\n }\n }, d.prototype.handleItemKeyboardEvent_ = function(e) {\n if (this.element_ && this.container_) {\n var t = this.element_.querySelectorAll(\".\" + this.CssClasses_.ITEM + \":not([disabled])\");\n if (t && t.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n var s = Array.prototype.slice.call(t).indexOf(e.target);\n if (e.keyCode === this.Keycodes_.UP_ARROW) e.preventDefault(), s > 0 ? t[s - 1].focus() : t[t.length - 1].focus();\n else if (e.keyCode === this.Keycodes_.DOWN_ARROW) e.preventDefault(), t.length > s + 1 ? t[s + 1].focus() : t[0].focus();\n else if (e.keyCode === this.Keycodes_.SPACE || e.keyCode === this.Keycodes_.ENTER) {\n e.preventDefault();\n var i = new MouseEvent(\"mousedown\");\n e.target.dispatchEvent(i), i = new MouseEvent(\"mouseup\"), e.target.dispatchEvent(i), e.target.click();\n } else e.keyCode === this.Keycodes_.ESCAPE && (e.preventDefault(), this.hide());\n }\n }\n }, d.prototype.handleItemClick_ = function(e) {\n e.target.hasAttribute(\"disabled\") ? e.stopPropagation() : (this.closing_ = !0, window.setTimeout((function(e) {\n this.hide(), this.closing_ = !1;\n }).bind(this), this.Constant_.CLOSE_TIMEOUT));\n }, d.prototype.applyClip_ = function(e, t) {\n this.element_.classList.contains(this.CssClasses_.UNALIGNED) ? this.element_.style.clip = \"\" : this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT) ? this.element_.style.clip = \"rect(0 \" + t + \"px 0 \" + t + \"px)\" : this.element_.classList.contains(this.CssClasses_.TOP_LEFT) ? this.element_.style.clip = \"rect(\" + e + \"px 0 \" + e + \"px 0)\" : this.element_.classList.contains(this.CssClasses_.TOP_RIGHT) ? this.element_.style.clip = \"rect(\" + e + \"px \" + t + \"px \" + e + \"px \" + t + \"px)\" : this.element_.style.clip = \"\";\n }, d.prototype.removeAnimationEndListener_ = function(e) {\n e.target.classList.remove(d.prototype.CssClasses_.IS_ANIMATING);\n }, d.prototype.addAnimationEndListener_ = function() {\n this.element_.addEventListener(\"transitionend\", this.removeAnimationEndListener_), this.element_.addEventListener(\"webkitTransitionEnd\", this.removeAnimationEndListener_);\n }, d.prototype.show = function(e) {\n if (this.element_ && this.container_ && this.outline_) {\n var t = this.element_.getBoundingClientRect().height, s = this.element_.getBoundingClientRect().width;\n this.container_.style.width = s + \"px\", this.container_.style.height = t + \"px\", this.outline_.style.width = s + \"px\", this.outline_.style.height = t + \"px\";\n for(var i = this.Constant_.TRANSITION_DURATION_SECONDS * this.Constant_.TRANSITION_DURATION_FRACTION, n = this.element_.querySelectorAll(\".\" + this.CssClasses_.ITEM), a = 0; a < n.length; a++){\n var l = null;\n l = this.element_.classList.contains(this.CssClasses_.TOP_LEFT) || this.element_.classList.contains(this.CssClasses_.TOP_RIGHT) ? (t - n[a].offsetTop - n[a].offsetHeight) / t * i + \"s\" : n[a].offsetTop / t * i + \"s\", n[a].style.transitionDelay = l;\n }\n this.applyClip_(t, s), window.requestAnimationFrame((function() {\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING), this.element_.style.clip = \"rect(0 \" + s + \"px \" + t + \"px 0)\", this.container_.classList.add(this.CssClasses_.IS_VISIBLE);\n }).bind(this)), this.addAnimationEndListener_();\n var o = (function(t) {\n t === e || this.closing_ || t.target.parentNode === this.element_ || (document.removeEventListener(\"click\", o), this.hide());\n }).bind(this);\n document.addEventListener(\"click\", o);\n }\n }, d.prototype.show = d.prototype.show, d.prototype.hide = function() {\n if (this.element_ && this.container_ && this.outline_) {\n for(var e = this.element_.querySelectorAll(\".\" + this.CssClasses_.ITEM), t = 0; t < e.length; t++)e[t].style.removeProperty(\"transition-delay\");\n var s = this.element_.getBoundingClientRect(), i = s.height, n = s.width;\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING), this.applyClip_(i, n), this.container_.classList.remove(this.CssClasses_.IS_VISIBLE), this.addAnimationEndListener_();\n }\n }, d.prototype.hide = d.prototype.hide, d.prototype.toggle = function(e) {\n this.container_.classList.contains(this.CssClasses_.IS_VISIBLE) ? this.hide() : this.show(e);\n }, d.prototype.toggle = d.prototype.toggle, s.register({\n constructor: d,\n classAsString: \"MaterialMenu\",\n cssClass: \"mdl-js-menu\",\n widget: !0\n });\n var h = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialProgress = h, h.prototype.Constant_ = {}, h.prototype.CssClasses_ = {\n INDETERMINATE_CLASS: \"mdl-progress__indeterminate\"\n }, h.prototype.setProgress = function(e) {\n this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS) || (this.progressbar_.style.width = e + \"%\");\n }, h.prototype.setProgress = h.prototype.setProgress, h.prototype.setBuffer = function(e) {\n this.bufferbar_.style.width = e + \"%\", this.auxbar_.style.width = 100 - e + \"%\";\n }, h.prototype.setBuffer = h.prototype.setBuffer, h.prototype.init = function() {\n if (this.element_) {\n var e = document.createElement(\"div\");\n e.className = \"progressbar bar bar1\", this.element_.appendChild(e), this.progressbar_ = e, e = document.createElement(\"div\"), e.className = \"bufferbar bar bar2\", this.element_.appendChild(e), this.bufferbar_ = e, e = document.createElement(\"div\"), e.className = \"auxbar bar bar3\", this.element_.appendChild(e), this.auxbar_ = e, this.progressbar_.style.width = \"0%\", this.bufferbar_.style.width = \"100%\", this.auxbar_.style.width = \"0%\", this.element_.classList.add(\"is-upgraded\");\n }\n }, s.register({\n constructor: h,\n classAsString: \"MaterialProgress\",\n cssClass: \"mdl-js-progress\",\n widget: !0\n });\n var c = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialRadio = c, c.prototype.Constant_ = {\n TINY_TIMEOUT: .001\n }, c.prototype.CssClasses_ = {\n IS_FOCUSED: \"is-focused\",\n IS_DISABLED: \"is-disabled\",\n IS_CHECKED: \"is-checked\",\n IS_UPGRADED: \"is-upgraded\",\n JS_RADIO: \"mdl-js-radio\",\n RADIO_BTN: \"mdl-radio__button\",\n RADIO_OUTER_CIRCLE: \"mdl-radio__outer-circle\",\n RADIO_INNER_CIRCLE: \"mdl-radio__inner-circle\",\n RIPPLE_EFFECT: \"mdl-js-ripple-effect\",\n RIPPLE_IGNORE_EVENTS: \"mdl-js-ripple-effect--ignore-events\",\n RIPPLE_CONTAINER: \"mdl-radio__ripple-container\",\n RIPPLE_CENTER: \"mdl-ripple--center\",\n RIPPLE: \"mdl-ripple\"\n }, c.prototype.onChange_ = function(e) {\n for(var t = document.getElementsByClassName(this.CssClasses_.JS_RADIO), s = 0; s < t.length; s++){\n var i = t[s].querySelector(\".\" + this.CssClasses_.RADIO_BTN);\n i.getAttribute(\"name\") === this.btnElement_.getAttribute(\"name\") && \"undefined\" != typeof t[s].MaterialRadio && t[s].MaterialRadio.updateClasses_();\n }\n }, c.prototype.onFocus_ = function(e) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n }, c.prototype.onBlur_ = function(e) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n }, c.prototype.onMouseup_ = function(e) {\n this.blur_();\n }, c.prototype.updateClasses_ = function() {\n this.checkDisabled(), this.checkToggleState();\n }, c.prototype.blur_ = function() {\n window.setTimeout((function() {\n this.btnElement_.blur();\n }).bind(this), this.Constant_.TINY_TIMEOUT);\n }, c.prototype.checkDisabled = function() {\n this.btnElement_.disabled ? this.element_.classList.add(this.CssClasses_.IS_DISABLED) : this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }, c.prototype.checkDisabled = c.prototype.checkDisabled, c.prototype.checkToggleState = function() {\n this.btnElement_.checked ? this.element_.classList.add(this.CssClasses_.IS_CHECKED) : this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }, c.prototype.checkToggleState = c.prototype.checkToggleState, c.prototype.disable = function() {\n this.btnElement_.disabled = !0, this.updateClasses_();\n }, c.prototype.disable = c.prototype.disable, c.prototype.enable = function() {\n this.btnElement_.disabled = !1, this.updateClasses_();\n }, c.prototype.enable = c.prototype.enable, c.prototype.check = function() {\n this.btnElement_.checked = !0, this.onChange_(null);\n }, c.prototype.check = c.prototype.check, c.prototype.uncheck = function() {\n this.btnElement_.checked = !1, this.onChange_(null);\n }, c.prototype.uncheck = c.prototype.uncheck, c.prototype.init = function() {\n if (this.element_) {\n this.btnElement_ = this.element_.querySelector(\".\" + this.CssClasses_.RADIO_BTN), this.boundChangeHandler_ = this.onChange_.bind(this), this.boundFocusHandler_ = this.onChange_.bind(this), this.boundBlurHandler_ = this.onBlur_.bind(this), this.boundMouseUpHandler_ = this.onMouseup_.bind(this);\n var e = document.createElement(\"span\");\n e.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE);\n var t = document.createElement(\"span\");\n t.classList.add(this.CssClasses_.RADIO_INNER_CIRCLE), this.element_.appendChild(e), this.element_.appendChild(t);\n var s;\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS), s = document.createElement(\"span\"), s.classList.add(this.CssClasses_.RIPPLE_CONTAINER), s.classList.add(this.CssClasses_.RIPPLE_EFFECT), s.classList.add(this.CssClasses_.RIPPLE_CENTER), s.addEventListener(\"mouseup\", this.boundMouseUpHandler_);\n var i = document.createElement(\"span\");\n i.classList.add(this.CssClasses_.RIPPLE), s.appendChild(i), this.element_.appendChild(s);\n }\n this.btnElement_.addEventListener(\"change\", this.boundChangeHandler_), this.btnElement_.addEventListener(\"focus\", this.boundFocusHandler_), this.btnElement_.addEventListener(\"blur\", this.boundBlurHandler_), this.element_.addEventListener(\"mouseup\", this.boundMouseUpHandler_), this.updateClasses_(), this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }, s.register({\n constructor: c,\n classAsString: \"MaterialRadio\",\n cssClass: \"mdl-js-radio\",\n widget: !0\n });\n var p = function(e) {\n this.element_ = e, this.isIE_ = window.navigator.msPointerEnabled, this.init();\n };\n window.MaterialSlider = p, p.prototype.Constant_ = {}, p.prototype.CssClasses_ = {\n IE_CONTAINER: \"mdl-slider__ie-container\",\n SLIDER_CONTAINER: \"mdl-slider__container\",\n BACKGROUND_FLEX: \"mdl-slider__background-flex\",\n BACKGROUND_LOWER: \"mdl-slider__background-lower\",\n BACKGROUND_UPPER: \"mdl-slider__background-upper\",\n IS_LOWEST_VALUE: \"is-lowest-value\",\n IS_UPGRADED: \"is-upgraded\"\n }, p.prototype.onInput_ = function(e) {\n this.updateValueStyles_();\n }, p.prototype.onChange_ = function(e) {\n this.updateValueStyles_();\n }, p.prototype.onMouseUp_ = function(e) {\n e.target.blur();\n }, p.prototype.onContainerMouseDown_ = function(e) {\n if (e.target === this.element_.parentElement) {\n e.preventDefault();\n var t = new MouseEvent(\"mousedown\", {\n target: e.target,\n buttons: e.buttons,\n clientX: e.clientX,\n clientY: this.element_.getBoundingClientRect().y\n });\n this.element_.dispatchEvent(t);\n }\n }, p.prototype.updateValueStyles_ = function() {\n var e = (this.element_.value - this.element_.min) / (this.element_.max - this.element_.min);\n 0 === e ? this.element_.classList.add(this.CssClasses_.IS_LOWEST_VALUE) : this.element_.classList.remove(this.CssClasses_.IS_LOWEST_VALUE), this.isIE_ || (this.backgroundLower_.style.flex = e, this.backgroundLower_.style.webkitFlex = e, this.backgroundUpper_.style.flex = 1 - e, this.backgroundUpper_.style.webkitFlex = 1 - e);\n }, p.prototype.disable = function() {\n this.element_.disabled = !0;\n }, p.prototype.disable = p.prototype.disable, p.prototype.enable = function() {\n this.element_.disabled = !1;\n }, p.prototype.enable = p.prototype.enable, p.prototype.change = function(e) {\n \"undefined\" != typeof e && (this.element_.value = e), this.updateValueStyles_();\n }, p.prototype.change = p.prototype.change, p.prototype.init = function() {\n if (this.element_) {\n if (this.isIE_) {\n var e = document.createElement(\"div\");\n e.classList.add(this.CssClasses_.IE_CONTAINER), this.element_.parentElement.insertBefore(e, this.element_), this.element_.parentElement.removeChild(this.element_), e.appendChild(this.element_);\n } else {\n var t = document.createElement(\"div\");\n t.classList.add(this.CssClasses_.SLIDER_CONTAINER), this.element_.parentElement.insertBefore(t, this.element_), this.element_.parentElement.removeChild(this.element_), t.appendChild(this.element_);\n var s = document.createElement(\"div\");\n s.classList.add(this.CssClasses_.BACKGROUND_FLEX), t.appendChild(s), this.backgroundLower_ = document.createElement(\"div\"), this.backgroundLower_.classList.add(this.CssClasses_.BACKGROUND_LOWER), s.appendChild(this.backgroundLower_), this.backgroundUpper_ = document.createElement(\"div\"), this.backgroundUpper_.classList.add(this.CssClasses_.BACKGROUND_UPPER), s.appendChild(this.backgroundUpper_);\n }\n this.boundInputHandler = this.onInput_.bind(this), this.boundChangeHandler = this.onChange_.bind(this), this.boundMouseUpHandler = this.onMouseUp_.bind(this), this.boundContainerMouseDownHandler = this.onContainerMouseDown_.bind(this), this.element_.addEventListener(\"input\", this.boundInputHandler), this.element_.addEventListener(\"change\", this.boundChangeHandler), this.element_.addEventListener(\"mouseup\", this.boundMouseUpHandler), this.element_.parentElement.addEventListener(\"mousedown\", this.boundContainerMouseDownHandler), this.updateValueStyles_(), this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }, s.register({\n constructor: p,\n classAsString: \"MaterialSlider\",\n cssClass: \"mdl-js-slider\",\n widget: !0\n });\n var C = function(e) {\n if (this.element_ = e, this.textElement_ = this.element_.querySelector(\".\" + this.cssClasses_.MESSAGE), this.actionElement_ = this.element_.querySelector(\".\" + this.cssClasses_.ACTION), !this.textElement_) throw new Error(\"There must be a message element for a snackbar.\");\n if (!this.actionElement_) throw new Error(\"There must be an action element for a snackbar.\");\n this.active = !1, this.actionHandler_ = void 0, this.message_ = void 0, this.actionText_ = void 0, this.queuedNotifications_ = [], this.setActionHidden_(!0);\n };\n window.MaterialSnackbar = C, C.prototype.Constant_ = {\n ANIMATION_LENGTH: 250\n }, C.prototype.cssClasses_ = {\n SNACKBAR: \"mdl-snackbar\",\n MESSAGE: \"mdl-snackbar__text\",\n ACTION: \"mdl-snackbar__action\",\n ACTIVE: \"mdl-snackbar--active\"\n }, C.prototype.displaySnackbar_ = function() {\n this.element_.setAttribute(\"aria-hidden\", \"true\"), this.actionHandler_ && (this.actionElement_.textContent = this.actionText_, this.actionElement_.addEventListener(\"click\", this.actionHandler_), this.setActionHidden_(!1)), this.textElement_.textContent = this.message_, this.element_.classList.add(this.cssClasses_.ACTIVE), this.element_.setAttribute(\"aria-hidden\", \"false\"), setTimeout(this.cleanup_.bind(this), this.timeout_);\n }, C.prototype.showSnackbar = function(e) {\n if (void 0 === e) throw new Error(\"Please provide a data object with at least a message to display.\");\n if (void 0 === e.message) throw new Error(\"Please provide a message to be displayed.\");\n if (e.actionHandler && !e.actionText) throw new Error(\"Please provide action text with the handler.\");\n this.active ? this.queuedNotifications_.push(e) : (this.active = !0, this.message_ = e.message, e.timeout ? this.timeout_ = e.timeout : this.timeout_ = 2750, e.actionHandler && (this.actionHandler_ = e.actionHandler), e.actionText && (this.actionText_ = e.actionText), this.displaySnackbar_());\n }, C.prototype.showSnackbar = C.prototype.showSnackbar, C.prototype.checkQueue_ = function() {\n this.queuedNotifications_.length > 0 && this.showSnackbar(this.queuedNotifications_.shift());\n }, C.prototype.cleanup_ = function() {\n this.element_.classList.remove(this.cssClasses_.ACTIVE), setTimeout((function() {\n this.element_.setAttribute(\"aria-hidden\", \"true\"), this.textElement_.textContent = \"\", Boolean(this.actionElement_.getAttribute(\"aria-hidden\")) || (this.setActionHidden_(!0), this.actionElement_.textContent = \"\", this.actionElement_.removeEventListener(\"click\", this.actionHandler_)), this.actionHandler_ = void 0, this.message_ = void 0, this.actionText_ = void 0, this.active = !1, this.checkQueue_();\n }).bind(this), this.Constant_.ANIMATION_LENGTH);\n }, C.prototype.setActionHidden_ = function(e) {\n e ? this.actionElement_.setAttribute(\"aria-hidden\", \"true\") : this.actionElement_.removeAttribute(\"aria-hidden\");\n }, s.register({\n constructor: C,\n classAsString: \"MaterialSnackbar\",\n cssClass: \"mdl-js-snackbar\",\n widget: !0\n });\n var u = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialSpinner = u, u.prototype.Constant_ = {\n MDL_SPINNER_LAYER_COUNT: 4\n }, u.prototype.CssClasses_ = {\n MDL_SPINNER_LAYER: \"mdl-spinner__layer\",\n MDL_SPINNER_CIRCLE_CLIPPER: \"mdl-spinner__circle-clipper\",\n MDL_SPINNER_CIRCLE: \"mdl-spinner__circle\",\n MDL_SPINNER_GAP_PATCH: \"mdl-spinner__gap-patch\",\n MDL_SPINNER_LEFT: \"mdl-spinner__left\",\n MDL_SPINNER_RIGHT: \"mdl-spinner__right\"\n }, u.prototype.createLayer = function(e) {\n var t = document.createElement(\"div\");\n t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER), t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + \"-\" + e);\n var s = document.createElement(\"div\");\n s.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER), s.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);\n var i = document.createElement(\"div\");\n i.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);\n var n = document.createElement(\"div\");\n n.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER), n.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);\n for(var a = [\n s,\n i,\n n\n ], l = 0; l < a.length; l++){\n var o = document.createElement(\"div\");\n o.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE), a[l].appendChild(o);\n }\n t.appendChild(s), t.appendChild(i), t.appendChild(n), this.element_.appendChild(t);\n }, u.prototype.createLayer = u.prototype.createLayer, u.prototype.stop = function() {\n this.element_.classList.remove(\"is-active\");\n }, u.prototype.stop = u.prototype.stop, u.prototype.start = function() {\n this.element_.classList.add(\"is-active\");\n }, u.prototype.start = u.prototype.start, u.prototype.init = function() {\n if (this.element_) {\n for(var e = 1; e <= this.Constant_.MDL_SPINNER_LAYER_COUNT; e++)this.createLayer(e);\n this.element_.classList.add(\"is-upgraded\");\n }\n }, s.register({\n constructor: u,\n classAsString: \"MaterialSpinner\",\n cssClass: \"mdl-js-spinner\",\n widget: !0\n });\n var E = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialSwitch = E, E.prototype.Constant_ = {\n TINY_TIMEOUT: .001\n }, E.prototype.CssClasses_ = {\n INPUT: \"mdl-switch__input\",\n TRACK: \"mdl-switch__track\",\n THUMB: \"mdl-switch__thumb\",\n FOCUS_HELPER: \"mdl-switch__focus-helper\",\n RIPPLE_EFFECT: \"mdl-js-ripple-effect\",\n RIPPLE_IGNORE_EVENTS: \"mdl-js-ripple-effect--ignore-events\",\n RIPPLE_CONTAINER: \"mdl-switch__ripple-container\",\n RIPPLE_CENTER: \"mdl-ripple--center\",\n RIPPLE: \"mdl-ripple\",\n IS_FOCUSED: \"is-focused\",\n IS_DISABLED: \"is-disabled\",\n IS_CHECKED: \"is-checked\"\n }, E.prototype.onChange_ = function(e) {\n this.updateClasses_();\n }, E.prototype.onFocus_ = function(e) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n }, E.prototype.onBlur_ = function(e) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n }, E.prototype.onMouseUp_ = function(e) {\n this.blur_();\n }, E.prototype.updateClasses_ = function() {\n this.checkDisabled(), this.checkToggleState();\n }, E.prototype.blur_ = function() {\n window.setTimeout((function() {\n this.inputElement_.blur();\n }).bind(this), this.Constant_.TINY_TIMEOUT);\n }, E.prototype.checkDisabled = function() {\n this.inputElement_.disabled ? this.element_.classList.add(this.CssClasses_.IS_DISABLED) : this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }, E.prototype.checkDisabled = E.prototype.checkDisabled, E.prototype.checkToggleState = function() {\n this.inputElement_.checked ? this.element_.classList.add(this.CssClasses_.IS_CHECKED) : this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }, E.prototype.checkToggleState = E.prototype.checkToggleState, E.prototype.disable = function() {\n this.inputElement_.disabled = !0, this.updateClasses_();\n }, E.prototype.disable = E.prototype.disable, E.prototype.enable = function() {\n this.inputElement_.disabled = !1, this.updateClasses_();\n }, E.prototype.enable = E.prototype.enable, E.prototype.on = function() {\n this.inputElement_.checked = !0, this.updateClasses_();\n }, E.prototype.on = E.prototype.on, E.prototype.off = function() {\n this.inputElement_.checked = !1, this.updateClasses_();\n }, E.prototype.off = E.prototype.off, E.prototype.init = function() {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector(\".\" + this.CssClasses_.INPUT);\n var e = document.createElement(\"div\");\n e.classList.add(this.CssClasses_.TRACK);\n var t = document.createElement(\"div\");\n t.classList.add(this.CssClasses_.THUMB);\n var s = document.createElement(\"span\");\n if (s.classList.add(this.CssClasses_.FOCUS_HELPER), t.appendChild(s), this.element_.appendChild(e), this.element_.appendChild(t), this.boundMouseUpHandler = this.onMouseUp_.bind(this), this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS), this.rippleContainerElement_ = document.createElement(\"span\"), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT), this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER), this.rippleContainerElement_.addEventListener(\"mouseup\", this.boundMouseUpHandler);\n var i = document.createElement(\"span\");\n i.classList.add(this.CssClasses_.RIPPLE), this.rippleContainerElement_.appendChild(i), this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundChangeHandler = this.onChange_.bind(this), this.boundFocusHandler = this.onFocus_.bind(this), this.boundBlurHandler = this.onBlur_.bind(this), this.inputElement_.addEventListener(\"change\", this.boundChangeHandler), this.inputElement_.addEventListener(\"focus\", this.boundFocusHandler), this.inputElement_.addEventListener(\"blur\", this.boundBlurHandler), this.element_.addEventListener(\"mouseup\", this.boundMouseUpHandler), this.updateClasses_(), this.element_.classList.add(\"is-upgraded\");\n }\n }, s.register({\n constructor: E,\n classAsString: \"MaterialSwitch\",\n cssClass: \"mdl-js-switch\",\n widget: !0\n });\n var m = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialTabs = m, m.prototype.Constant_ = {}, m.prototype.CssClasses_ = {\n TAB_CLASS: \"mdl-tabs__tab\",\n PANEL_CLASS: \"mdl-tabs__panel\",\n ACTIVE_CLASS: \"is-active\",\n UPGRADED_CLASS: \"is-upgraded\",\n MDL_JS_RIPPLE_EFFECT: \"mdl-js-ripple-effect\",\n MDL_RIPPLE_CONTAINER: \"mdl-tabs__ripple-container\",\n MDL_RIPPLE: \"mdl-ripple\",\n MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS: \"mdl-js-ripple-effect--ignore-events\"\n }, m.prototype.initTabs_ = function() {\n this.element_.classList.contains(this.CssClasses_.MDL_JS_RIPPLE_EFFECT) && this.element_.classList.add(this.CssClasses_.MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS), this.tabs_ = this.element_.querySelectorAll(\".\" + this.CssClasses_.TAB_CLASS), this.panels_ = this.element_.querySelectorAll(\".\" + this.CssClasses_.PANEL_CLASS);\n for(var t = 0; t < this.tabs_.length; t++)new e(this.tabs_[t], this);\n this.element_.classList.add(this.CssClasses_.UPGRADED_CLASS);\n }, m.prototype.resetTabState_ = function() {\n for(var e = 0; e < this.tabs_.length; e++)this.tabs_[e].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }, m.prototype.resetPanelState_ = function() {\n for(var e = 0; e < this.panels_.length; e++)this.panels_[e].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }, m.prototype.init = function() {\n this.element_ && this.initTabs_();\n }, s.register({\n constructor: m,\n classAsString: \"MaterialTabs\",\n cssClass: \"mdl-js-tabs\"\n });\n var L = function(e) {\n this.element_ = e, this.maxRows = this.Constant_.NO_MAX_ROWS, this.init();\n };\n window.MaterialTextfield = L, L.prototype.Constant_ = {\n NO_MAX_ROWS: -1,\n MAX_ROWS_ATTRIBUTE: \"maxrows\"\n }, L.prototype.CssClasses_ = {\n LABEL: \"mdl-textfield__label\",\n INPUT: \"mdl-textfield__input\",\n IS_DIRTY: \"is-dirty\",\n IS_FOCUSED: \"is-focused\",\n IS_DISABLED: \"is-disabled\",\n IS_INVALID: \"is-invalid\",\n IS_UPGRADED: \"is-upgraded\",\n HAS_PLACEHOLDER: \"has-placeholder\"\n }, L.prototype.onKeyDown_ = function(e) {\n var t = e.target.value.split(\"\\n\").length;\n 13 === e.keyCode && t >= this.maxRows && e.preventDefault();\n }, L.prototype.onFocus_ = function(e) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n }, L.prototype.onBlur_ = function(e) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n }, L.prototype.onReset_ = function(e) {\n this.updateClasses_();\n }, L.prototype.updateClasses_ = function() {\n this.checkDisabled(), this.checkValidity(), this.checkDirty(), this.checkFocus();\n }, L.prototype.checkDisabled = function() {\n this.input_.disabled ? this.element_.classList.add(this.CssClasses_.IS_DISABLED) : this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }, L.prototype.checkDisabled = L.prototype.checkDisabled, L.prototype.checkFocus = function() {\n Boolean(this.element_.querySelector(\":focus\")) ? this.element_.classList.add(this.CssClasses_.IS_FOCUSED) : this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n }, L.prototype.checkFocus = L.prototype.checkFocus, L.prototype.checkValidity = function() {\n this.input_.validity && (this.input_.validity.valid ? this.element_.classList.remove(this.CssClasses_.IS_INVALID) : this.element_.classList.add(this.CssClasses_.IS_INVALID));\n }, L.prototype.checkValidity = L.prototype.checkValidity, L.prototype.checkDirty = function() {\n this.input_.value && this.input_.value.length > 0 ? this.element_.classList.add(this.CssClasses_.IS_DIRTY) : this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n }, L.prototype.checkDirty = L.prototype.checkDirty, L.prototype.disable = function() {\n this.input_.disabled = !0, this.updateClasses_();\n }, L.prototype.disable = L.prototype.disable, L.prototype.enable = function() {\n this.input_.disabled = !1, this.updateClasses_();\n }, L.prototype.enable = L.prototype.enable, L.prototype.change = function(e) {\n this.input_.value = e || \"\", this.updateClasses_();\n }, L.prototype.change = L.prototype.change, L.prototype.init = function() {\n if (this.element_ && (this.label_ = this.element_.querySelector(\".\" + this.CssClasses_.LABEL), this.input_ = this.element_.querySelector(\".\" + this.CssClasses_.INPUT), this.input_)) {\n this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE) && (this.maxRows = parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE), 10), isNaN(this.maxRows) && (this.maxRows = this.Constant_.NO_MAX_ROWS)), this.input_.hasAttribute(\"placeholder\") && this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER), this.boundUpdateClassesHandler = this.updateClasses_.bind(this), this.boundFocusHandler = this.onFocus_.bind(this), this.boundBlurHandler = this.onBlur_.bind(this), this.boundResetHandler = this.onReset_.bind(this), this.input_.addEventListener(\"input\", this.boundUpdateClassesHandler), this.input_.addEventListener(\"focus\", this.boundFocusHandler), this.input_.addEventListener(\"blur\", this.boundBlurHandler), this.input_.addEventListener(\"reset\", this.boundResetHandler), this.maxRows !== this.Constant_.NO_MAX_ROWS && (this.boundKeyDownHandler = this.onKeyDown_.bind(this), this.input_.addEventListener(\"keydown\", this.boundKeyDownHandler));\n var e = this.element_.classList.contains(this.CssClasses_.IS_INVALID);\n this.updateClasses_(), this.element_.classList.add(this.CssClasses_.IS_UPGRADED), e && this.element_.classList.add(this.CssClasses_.IS_INVALID), this.input_.hasAttribute(\"autofocus\") && (this.element_.focus(), this.checkFocus());\n }\n }, s.register({\n constructor: L,\n classAsString: \"MaterialTextfield\",\n cssClass: \"mdl-js-textfield\",\n widget: !0\n });\n var I = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialTooltip = I, I.prototype.Constant_ = {}, I.prototype.CssClasses_ = {\n IS_ACTIVE: \"is-active\",\n BOTTOM: \"mdl-tooltip--bottom\",\n LEFT: \"mdl-tooltip--left\",\n RIGHT: \"mdl-tooltip--right\",\n TOP: \"mdl-tooltip--top\"\n }, I.prototype.handleMouseEnter_ = function(e) {\n var t = e.target.getBoundingClientRect(), s = t.left + t.width / 2, i = t.top + t.height / 2, n = -1 * (this.element_.offsetWidth / 2), a = -1 * (this.element_.offsetHeight / 2);\n this.element_.classList.contains(this.CssClasses_.LEFT) || this.element_.classList.contains(this.CssClasses_.RIGHT) ? (s = t.width / 2, i + a < 0 ? (this.element_.style.top = \"0\", this.element_.style.marginTop = \"0\") : (this.element_.style.top = i + \"px\", this.element_.style.marginTop = a + \"px\")) : s + n < 0 ? (this.element_.style.left = \"0\", this.element_.style.marginLeft = \"0\") : (this.element_.style.left = s + \"px\", this.element_.style.marginLeft = n + \"px\"), this.element_.classList.contains(this.CssClasses_.TOP) ? this.element_.style.top = t.top - this.element_.offsetHeight - 10 + \"px\" : this.element_.classList.contains(this.CssClasses_.RIGHT) ? this.element_.style.left = t.left + t.width + 10 + \"px\" : this.element_.classList.contains(this.CssClasses_.LEFT) ? this.element_.style.left = t.left - this.element_.offsetWidth - 10 + \"px\" : this.element_.style.top = t.top + t.height + 10 + \"px\", this.element_.classList.add(this.CssClasses_.IS_ACTIVE);\n }, I.prototype.hideTooltip_ = function() {\n this.element_.classList.remove(this.CssClasses_.IS_ACTIVE);\n }, I.prototype.init = function() {\n if (this.element_) {\n var e = this.element_.getAttribute(\"for\") || this.element_.getAttribute(\"data-mdl-for\");\n e && (this.forElement_ = document.getElementById(e)), this.forElement_ && (this.forElement_.hasAttribute(\"tabindex\") || this.forElement_.setAttribute(\"tabindex\", \"0\"), this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this), this.boundMouseLeaveAndScrollHandler = this.hideTooltip_.bind(this), this.forElement_.addEventListener(\"mouseenter\", this.boundMouseEnterHandler, !1), this.forElement_.addEventListener(\"touchend\", this.boundMouseEnterHandler, !1), this.forElement_.addEventListener(\"mouseleave\", this.boundMouseLeaveAndScrollHandler, !1), window.addEventListener(\"scroll\", this.boundMouseLeaveAndScrollHandler, !0), window.addEventListener(\"touchstart\", this.boundMouseLeaveAndScrollHandler));\n }\n }, s.register({\n constructor: I,\n classAsString: \"MaterialTooltip\",\n cssClass: \"mdl-tooltip\"\n });\n var f = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialLayout = f, f.prototype.Constant_ = {\n MAX_WIDTH: \"(max-width: 1024px)\",\n TAB_SCROLL_PIXELS: 100,\n RESIZE_TIMEOUT: 100,\n MENU_ICON: \"\",\n CHEVRON_LEFT: \"chevron_left\",\n CHEVRON_RIGHT: \"chevron_right\"\n }, f.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32\n }, f.prototype.Mode_ = {\n STANDARD: 0,\n SEAMED: 1,\n WATERFALL: 2,\n SCROLL: 3\n }, f.prototype.CssClasses_ = {\n CONTAINER: \"mdl-layout__container\",\n HEADER: \"mdl-layout__header\",\n DRAWER: \"mdl-layout__drawer\",\n CONTENT: \"mdl-layout__content\",\n DRAWER_BTN: \"mdl-layout__drawer-button\",\n ICON: \"material-icons\",\n JS_RIPPLE_EFFECT: \"mdl-js-ripple-effect\",\n RIPPLE_CONTAINER: \"mdl-layout__tab-ripple-container\",\n RIPPLE: \"mdl-ripple\",\n RIPPLE_IGNORE_EVENTS: \"mdl-js-ripple-effect--ignore-events\",\n HEADER_SEAMED: \"mdl-layout__header--seamed\",\n HEADER_WATERFALL: \"mdl-layout__header--waterfall\",\n HEADER_SCROLL: \"mdl-layout__header--scroll\",\n FIXED_HEADER: \"mdl-layout--fixed-header\",\n OBFUSCATOR: \"mdl-layout__obfuscator\",\n TAB_BAR: \"mdl-layout__tab-bar\",\n TAB_CONTAINER: \"mdl-layout__tab-bar-container\",\n TAB: \"mdl-layout__tab\",\n TAB_BAR_BUTTON: \"mdl-layout__tab-bar-button\",\n TAB_BAR_LEFT_BUTTON: \"mdl-layout__tab-bar-left-button\",\n TAB_BAR_RIGHT_BUTTON: \"mdl-layout__tab-bar-right-button\",\n TAB_MANUAL_SWITCH: \"mdl-layout__tab-manual-switch\",\n PANEL: \"mdl-layout__tab-panel\",\n HAS_DRAWER: \"has-drawer\",\n HAS_TABS: \"has-tabs\",\n HAS_SCROLLING_HEADER: \"has-scrolling-header\",\n CASTING_SHADOW: \"is-casting-shadow\",\n IS_COMPACT: \"is-compact\",\n IS_SMALL_SCREEN: \"is-small-screen\",\n IS_DRAWER_OPEN: \"is-visible\",\n IS_ACTIVE: \"is-active\",\n IS_UPGRADED: \"is-upgraded\",\n IS_ANIMATING: \"is-animating\",\n ON_LARGE_SCREEN: \"mdl-layout--large-screen-only\",\n ON_SMALL_SCREEN: \"mdl-layout--small-screen-only\"\n }, f.prototype.contentScrollHandler_ = function() {\n if (!this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)) {\n var e = !this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN) || this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);\n this.content_.scrollTop > 0 && !this.header_.classList.contains(this.CssClasses_.IS_COMPACT) ? (this.header_.classList.add(this.CssClasses_.CASTING_SHADOW), this.header_.classList.add(this.CssClasses_.IS_COMPACT), e && this.header_.classList.add(this.CssClasses_.IS_ANIMATING)) : this.content_.scrollTop <= 0 && this.header_.classList.contains(this.CssClasses_.IS_COMPACT) && (this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW), this.header_.classList.remove(this.CssClasses_.IS_COMPACT), e && this.header_.classList.add(this.CssClasses_.IS_ANIMATING));\n }\n }, f.prototype.keyboardEventHandler_ = function(e) {\n e.keyCode === this.Keycodes_.ESCAPE && this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN) && this.toggleDrawer();\n }, f.prototype.screenSizeHandler_ = function() {\n this.screenSizeMediaQuery_.matches ? this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN) : (this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN), this.drawer_ && (this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN), this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN)));\n }, f.prototype.drawerToggleHandler_ = function(e) {\n if (e && \"keydown\" === e.type) {\n if (e.keyCode !== this.Keycodes_.SPACE && e.keyCode !== this.Keycodes_.ENTER) return;\n e.preventDefault();\n }\n this.toggleDrawer();\n }, f.prototype.headerTransitionEndHandler_ = function() {\n this.header_.classList.remove(this.CssClasses_.IS_ANIMATING);\n }, f.prototype.headerClickHandler_ = function() {\n this.header_.classList.contains(this.CssClasses_.IS_COMPACT) && (this.header_.classList.remove(this.CssClasses_.IS_COMPACT), this.header_.classList.add(this.CssClasses_.IS_ANIMATING));\n }, f.prototype.resetTabState_ = function(e) {\n for(var t = 0; t < e.length; t++)e[t].classList.remove(this.CssClasses_.IS_ACTIVE);\n }, f.prototype.resetPanelState_ = function(e) {\n for(var t = 0; t < e.length; t++)e[t].classList.remove(this.CssClasses_.IS_ACTIVE);\n }, f.prototype.toggleDrawer = function() {\n var e = this.element_.querySelector(\".\" + this.CssClasses_.DRAWER_BTN);\n this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN), this.obfuscator_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN), this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN) ? (this.drawer_.setAttribute(\"aria-hidden\", \"false\"), e.setAttribute(\"aria-expanded\", \"true\")) : (this.drawer_.setAttribute(\"aria-hidden\", \"true\"), e.setAttribute(\"aria-expanded\", \"false\"));\n }, f.prototype.toggleDrawer = f.prototype.toggleDrawer, f.prototype.init = function() {\n if (this.element_) {\n var e = document.createElement(\"div\");\n e.classList.add(this.CssClasses_.CONTAINER);\n var s = this.element_.querySelector(\":focus\");\n this.element_.parentElement.insertBefore(e, this.element_), this.element_.parentElement.removeChild(this.element_), e.appendChild(this.element_), s && s.focus();\n for(var i = this.element_.childNodes, n = i.length, a = 0; a < n; a++){\n var l = i[a];\n l.classList && l.classList.contains(this.CssClasses_.HEADER) && (this.header_ = l), l.classList && l.classList.contains(this.CssClasses_.DRAWER) && (this.drawer_ = l), l.classList && l.classList.contains(this.CssClasses_.CONTENT) && (this.content_ = l);\n }\n window.addEventListener(\"pageshow\", (function(e) {\n e.persisted && (this.element_.style.overflowY = \"hidden\", requestAnimationFrame((function() {\n this.element_.style.overflowY = \"\";\n }).bind(this)));\n }).bind(this), !1), this.header_ && (this.tabBar_ = this.header_.querySelector(\".\" + this.CssClasses_.TAB_BAR));\n var o = this.Mode_.STANDARD;\n if (this.header_ && (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED) ? o = this.Mode_.SEAMED : this.header_.classList.contains(this.CssClasses_.HEADER_WATERFALL) ? (o = this.Mode_.WATERFALL, this.header_.addEventListener(\"transitionend\", this.headerTransitionEndHandler_.bind(this)), this.header_.addEventListener(\"click\", this.headerClickHandler_.bind(this))) : this.header_.classList.contains(this.CssClasses_.HEADER_SCROLL) && (o = this.Mode_.SCROLL, e.classList.add(this.CssClasses_.HAS_SCROLLING_HEADER)), o === this.Mode_.STANDARD ? (this.header_.classList.add(this.CssClasses_.CASTING_SHADOW), this.tabBar_ && this.tabBar_.classList.add(this.CssClasses_.CASTING_SHADOW)) : o === this.Mode_.SEAMED || o === this.Mode_.SCROLL ? (this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW), this.tabBar_ && this.tabBar_.classList.remove(this.CssClasses_.CASTING_SHADOW)) : o === this.Mode_.WATERFALL && (this.content_.addEventListener(\"scroll\", this.contentScrollHandler_.bind(this)), this.contentScrollHandler_())), this.drawer_) {\n var r = this.element_.querySelector(\".\" + this.CssClasses_.DRAWER_BTN);\n if (!r) {\n r = document.createElement(\"div\"), r.setAttribute(\"aria-expanded\", \"false\"), r.setAttribute(\"role\", \"button\"), r.setAttribute(\"tabindex\", \"0\"), r.classList.add(this.CssClasses_.DRAWER_BTN);\n var _ = document.createElement(\"i\");\n _.classList.add(this.CssClasses_.ICON), _.innerHTML = this.Constant_.MENU_ICON, r.appendChild(_);\n }\n this.drawer_.classList.contains(this.CssClasses_.ON_LARGE_SCREEN) ? r.classList.add(this.CssClasses_.ON_LARGE_SCREEN) : this.drawer_.classList.contains(this.CssClasses_.ON_SMALL_SCREEN) && r.classList.add(this.CssClasses_.ON_SMALL_SCREEN), r.addEventListener(\"click\", this.drawerToggleHandler_.bind(this)), r.addEventListener(\"keydown\", this.drawerToggleHandler_.bind(this)), this.element_.classList.add(this.CssClasses_.HAS_DRAWER), this.element_.classList.contains(this.CssClasses_.FIXED_HEADER) ? this.header_.insertBefore(r, this.header_.firstChild) : this.element_.insertBefore(r, this.content_);\n var d = document.createElement(\"div\");\n d.classList.add(this.CssClasses_.OBFUSCATOR), this.element_.appendChild(d), d.addEventListener(\"click\", this.drawerToggleHandler_.bind(this)), this.obfuscator_ = d, this.drawer_.addEventListener(\"keydown\", this.keyboardEventHandler_.bind(this)), this.drawer_.setAttribute(\"aria-hidden\", \"true\");\n }\n if (this.screenSizeMediaQuery_ = window.matchMedia(this.Constant_.MAX_WIDTH), this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this)), this.screenSizeHandler_(), this.header_ && this.tabBar_) {\n this.element_.classList.add(this.CssClasses_.HAS_TABS);\n var h = document.createElement(\"div\");\n h.classList.add(this.CssClasses_.TAB_CONTAINER), this.header_.insertBefore(h, this.tabBar_), this.header_.removeChild(this.tabBar_);\n var c = document.createElement(\"div\");\n c.classList.add(this.CssClasses_.TAB_BAR_BUTTON), c.classList.add(this.CssClasses_.TAB_BAR_LEFT_BUTTON);\n var p = document.createElement(\"i\");\n p.classList.add(this.CssClasses_.ICON), p.textContent = this.Constant_.CHEVRON_LEFT, c.appendChild(p), c.addEventListener(\"click\", (function() {\n this.tabBar_.scrollLeft -= this.Constant_.TAB_SCROLL_PIXELS;\n }).bind(this));\n var C = document.createElement(\"div\");\n C.classList.add(this.CssClasses_.TAB_BAR_BUTTON), C.classList.add(this.CssClasses_.TAB_BAR_RIGHT_BUTTON);\n var u = document.createElement(\"i\");\n u.classList.add(this.CssClasses_.ICON), u.textContent = this.Constant_.CHEVRON_RIGHT, C.appendChild(u), C.addEventListener(\"click\", (function() {\n this.tabBar_.scrollLeft += this.Constant_.TAB_SCROLL_PIXELS;\n }).bind(this)), h.appendChild(c), h.appendChild(this.tabBar_), h.appendChild(C);\n var E = (function() {\n this.tabBar_.scrollLeft > 0 ? c.classList.add(this.CssClasses_.IS_ACTIVE) : c.classList.remove(this.CssClasses_.IS_ACTIVE), this.tabBar_.scrollLeft < this.tabBar_.scrollWidth - this.tabBar_.offsetWidth ? C.classList.add(this.CssClasses_.IS_ACTIVE) : C.classList.remove(this.CssClasses_.IS_ACTIVE);\n }).bind(this);\n this.tabBar_.addEventListener(\"scroll\", E), E();\n var m = (function() {\n this.resizeTimeoutId_ && clearTimeout(this.resizeTimeoutId_), this.resizeTimeoutId_ = setTimeout((function() {\n E(), this.resizeTimeoutId_ = null;\n }).bind(this), this.Constant_.RESIZE_TIMEOUT);\n }).bind(this);\n window.addEventListener(\"resize\", m), this.tabBar_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT) && this.tabBar_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n for(var L = this.tabBar_.querySelectorAll(\".\" + this.CssClasses_.TAB), I = this.content_.querySelectorAll(\".\" + this.CssClasses_.PANEL), f = 0; f < L.length; f++)new t(L[f], L, I, this);\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }, window.MaterialLayoutTab = t, s.register({\n constructor: f,\n classAsString: \"MaterialLayout\",\n cssClass: \"mdl-js-layout\"\n });\n var b = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialDataTable = b, b.prototype.Constant_ = {}, b.prototype.CssClasses_ = {\n DATA_TABLE: \"mdl-data-table\",\n SELECTABLE: \"mdl-data-table--selectable\",\n SELECT_ELEMENT: \"mdl-data-table__select\",\n IS_SELECTED: \"is-selected\",\n IS_UPGRADED: \"is-upgraded\"\n }, b.prototype.selectRow_ = function(e, t, s) {\n return t ? (function() {\n e.checked ? t.classList.add(this.CssClasses_.IS_SELECTED) : t.classList.remove(this.CssClasses_.IS_SELECTED);\n }).bind(this) : s ? (function() {\n var t, i;\n if (e.checked) for(t = 0; t < s.length; t++)i = s[t].querySelector(\"td\").querySelector(\".mdl-checkbox\"), i.MaterialCheckbox.check(), s[t].classList.add(this.CssClasses_.IS_SELECTED);\n else for(t = 0; t < s.length; t++)i = s[t].querySelector(\"td\").querySelector(\".mdl-checkbox\"), i.MaterialCheckbox.uncheck(), s[t].classList.remove(this.CssClasses_.IS_SELECTED);\n }).bind(this) : void 0;\n }, b.prototype.createCheckbox_ = function(e, t) {\n var i = document.createElement(\"label\"), n = [\n \"mdl-checkbox\",\n \"mdl-js-checkbox\",\n \"mdl-js-ripple-effect\",\n this.CssClasses_.SELECT_ELEMENT\n ];\n i.className = n.join(\" \");\n var a = document.createElement(\"input\");\n return a.type = \"checkbox\", a.classList.add(\"mdl-checkbox__input\"), e ? (a.checked = e.classList.contains(this.CssClasses_.IS_SELECTED), a.addEventListener(\"change\", this.selectRow_(a, e))) : t && a.addEventListener(\"change\", this.selectRow_(a, null, t)), i.appendChild(a), s.upgradeElement(i, \"MaterialCheckbox\"), i;\n }, b.prototype.init = function() {\n if (this.element_) {\n var e = this.element_.querySelector(\"th\"), t = Array.prototype.slice.call(this.element_.querySelectorAll(\"tbody tr\")), s = Array.prototype.slice.call(this.element_.querySelectorAll(\"tfoot tr\")), i = t.concat(s);\n if (this.element_.classList.contains(this.CssClasses_.SELECTABLE)) {\n var n = document.createElement(\"th\"), a = this.createCheckbox_(null, i);\n n.appendChild(a), e.parentElement.insertBefore(n, e);\n for(var l = 0; l < i.length; l++){\n var o = i[l].querySelector(\"td\");\n if (o) {\n var r = document.createElement(\"td\");\n if (\"TBODY\" === i[l].parentNode.nodeName.toUpperCase()) {\n var _ = this.createCheckbox_(i[l]);\n r.appendChild(_);\n }\n i[l].insertBefore(r, o);\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }\n }, s.register({\n constructor: b,\n classAsString: \"MaterialDataTable\",\n cssClass: \"mdl-js-data-table\"\n });\n var S = function(e) {\n this.element_ = e, this.init();\n };\n window.MaterialRipple = S, S.prototype.Constant_ = {\n INITIAL_SCALE: \"scale(0.0001, 0.0001)\",\n INITIAL_SIZE: \"1px\",\n INITIAL_OPACITY: \"0.4\",\n FINAL_OPACITY: \"0\",\n FINAL_SCALE: \"\"\n }, S.prototype.CssClasses_ = {\n RIPPLE_CENTER: \"mdl-ripple--center\",\n RIPPLE_EFFECT_IGNORE_EVENTS: \"mdl-js-ripple-effect--ignore-events\",\n RIPPLE: \"mdl-ripple\",\n IS_ANIMATING: \"is-animating\",\n IS_VISIBLE: \"is-visible\"\n }, S.prototype.downHandler_ = function(e) {\n if (!this.rippleElement_.style.width && !this.rippleElement_.style.height) {\n var t = this.element_.getBoundingClientRect();\n this.boundHeight = t.height, this.boundWidth = t.width, this.rippleSize_ = 2 * Math.sqrt(t.width * t.width + t.height * t.height) + 2, this.rippleElement_.style.width = this.rippleSize_ + \"px\", this.rippleElement_.style.height = this.rippleSize_ + \"px\";\n }\n if (this.rippleElement_.classList.add(this.CssClasses_.IS_VISIBLE), \"mousedown\" === e.type && this.ignoringMouseDown_) this.ignoringMouseDown_ = !1;\n else {\n \"touchstart\" === e.type && (this.ignoringMouseDown_ = !0);\n var s = this.getFrameCount();\n if (s > 0) return;\n this.setFrameCount(1);\n var i, n, a = e.currentTarget.getBoundingClientRect();\n if (0 === e.clientX && 0 === e.clientY) i = Math.round(a.width / 2), n = Math.round(a.height / 2);\n else {\n var l = void 0 !== e.clientX ? e.clientX : e.touches[0].clientX, o = void 0 !== e.clientY ? e.clientY : e.touches[0].clientY;\n i = Math.round(l - a.left), n = Math.round(o - a.top);\n }\n this.setRippleXY(i, n), this.setRippleStyles(!0), window.requestAnimationFrame(this.animFrameHandler.bind(this));\n }\n }, S.prototype.upHandler_ = function(e) {\n e && 2 !== e.detail && window.setTimeout((function() {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);\n }).bind(this), 0);\n }, S.prototype.init = function() {\n if (this.element_) {\n var e = this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);\n this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS) || (this.rippleElement_ = this.element_.querySelector(\".\" + this.CssClasses_.RIPPLE), this.frameCount_ = 0, this.rippleSize_ = 0, this.x_ = 0, this.y_ = 0, this.ignoringMouseDown_ = !1, this.boundDownHandler = this.downHandler_.bind(this), this.element_.addEventListener(\"mousedown\", this.boundDownHandler), this.element_.addEventListener(\"touchstart\", this.boundDownHandler), this.boundUpHandler = this.upHandler_.bind(this), this.element_.addEventListener(\"mouseup\", this.boundUpHandler), this.element_.addEventListener(\"mouseleave\", this.boundUpHandler), this.element_.addEventListener(\"touchend\", this.boundUpHandler), this.element_.addEventListener(\"blur\", this.boundUpHandler), this.getFrameCount = function() {\n return this.frameCount_;\n }, this.setFrameCount = function(e) {\n this.frameCount_ = e;\n }, this.getRippleElement = function() {\n return this.rippleElement_;\n }, this.setRippleXY = function(e, t) {\n this.x_ = e, this.y_ = t;\n }, this.setRippleStyles = function(t) {\n if (null !== this.rippleElement_) {\n var s, i, n, a = \"translate(\" + this.x_ + \"px, \" + this.y_ + \"px)\";\n t ? (i = this.Constant_.INITIAL_SCALE, n = this.Constant_.INITIAL_SIZE) : (i = this.Constant_.FINAL_SCALE, n = this.rippleSize_ + \"px\", e && (a = \"translate(\" + this.boundWidth / 2 + \"px, \" + this.boundHeight / 2 + \"px)\")), s = \"translate(-50%, -50%) \" + a + i, this.rippleElement_.style.webkitTransform = s, this.rippleElement_.style.msTransform = s, this.rippleElement_.style.transform = s, t ? this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING) : this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n }, this.animFrameHandler = function() {\n this.frameCount_-- > 0 ? window.requestAnimationFrame(this.animFrameHandler.bind(this)) : this.setRippleStyles(!1);\n });\n }\n }, s.register({\n constructor: S,\n classAsString: \"MaterialRipple\",\n cssClass: \"mdl-js-ripple-effect\",\n widget: !1\n });\n}();\n\n\n//# sourceMappingURL=index.710ba46f.js.map\n","/**\n * material-design-lite - Material Design Components in CSS, JS and HTML\n * @version v1.3.0\n * @license Apache-2.0\n * @copyright 2015 Google, Inc.\n * @link https://github.com/google/material-design-lite\n */\n!function(){\"use strict\";function e(e,t){if(e){if(t.element_.classList.contains(t.CssClasses_.MDL_JS_RIPPLE_EFFECT)){var s=document.createElement(\"span\");s.classList.add(t.CssClasses_.MDL_RIPPLE_CONTAINER),s.classList.add(t.CssClasses_.MDL_JS_RIPPLE_EFFECT);var i=document.createElement(\"span\");i.classList.add(t.CssClasses_.MDL_RIPPLE),s.appendChild(i),e.appendChild(s)}e.addEventListener(\"click\",function(s){if(\"#\"===e.getAttribute(\"href\").charAt(0)){s.preventDefault();var i=e.href.split(\"#\")[1],n=t.element_.querySelector(\"#\"+i);t.resetTabState_(),t.resetPanelState_(),e.classList.add(t.CssClasses_.ACTIVE_CLASS),n.classList.add(t.CssClasses_.ACTIVE_CLASS)}})}}function t(e,t,s,i){function n(){var n=e.href.split(\"#\")[1],a=i.content_.querySelector(\"#\"+n);i.resetTabState_(t),i.resetPanelState_(s),e.classList.add(i.CssClasses_.IS_ACTIVE),a.classList.add(i.CssClasses_.IS_ACTIVE)}if(i.tabBar_.classList.contains(i.CssClasses_.JS_RIPPLE_EFFECT)){var a=document.createElement(\"span\");a.classList.add(i.CssClasses_.RIPPLE_CONTAINER),a.classList.add(i.CssClasses_.JS_RIPPLE_EFFECT);var l=document.createElement(\"span\");l.classList.add(i.CssClasses_.RIPPLE),a.appendChild(l),e.appendChild(a)}i.tabBar_.classList.contains(i.CssClasses_.TAB_MANUAL_SWITCH)||e.addEventListener(\"click\",function(t){\"#\"===e.getAttribute(\"href\").charAt(0)&&(t.preventDefault(),n())}),e.show=n}var s={upgradeDom:function(e,t){},upgradeElement:function(e,t){},upgradeElements:function(e){},upgradeAllRegistered:function(){},registerUpgradedCallback:function(e,t){},register:function(e){},downgradeElements:function(e){}};s=function(){function e(e,t){for(var s=0;s0&&l(t.children))}function o(t){var s=\"undefined\"==typeof t.widget&&\"undefined\"==typeof t.widget,i=!0;s||(i=t.widget||t.widget);var n={classConstructor:t.constructor||t.constructor,className:t.classAsString||t.classAsString,cssClass:t.cssClass||t.cssClass,widget:i,callbacks:[]};if(c.forEach(function(e){if(e.cssClass===n.cssClass)throw new Error(\"The provided cssClass has already been registered: \"+e.cssClass);if(e.className===n.className)throw new Error(\"The provided className has already been registered\")}),t.constructor.prototype.hasOwnProperty(C))throw new Error(\"MDL component classes must not have \"+C+\" defined as a property.\");var a=e(t.classAsString,n);a||c.push(n)}function r(t,s){var i=e(t);i&&i.callbacks.push(s)}function _(){for(var e=0;e0&&this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)&&(e.keyCode===this.Keycodes_.UP_ARROW?(e.preventDefault(),t[t.length-1].focus()):e.keyCode===this.Keycodes_.DOWN_ARROW&&(e.preventDefault(),t[0].focus()))}},d.prototype.handleItemKeyboardEvent_=function(e){if(this.element_&&this.container_){var t=this.element_.querySelectorAll(\".\"+this.CssClasses_.ITEM+\":not([disabled])\");if(t&&t.length>0&&this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)){var s=Array.prototype.slice.call(t).indexOf(e.target);if(e.keyCode===this.Keycodes_.UP_ARROW)e.preventDefault(),s>0?t[s-1].focus():t[t.length-1].focus();else if(e.keyCode===this.Keycodes_.DOWN_ARROW)e.preventDefault(),t.length>s+1?t[s+1].focus():t[0].focus();else if(e.keyCode===this.Keycodes_.SPACE||e.keyCode===this.Keycodes_.ENTER){e.preventDefault();var i=new MouseEvent(\"mousedown\");e.target.dispatchEvent(i),i=new MouseEvent(\"mouseup\"),e.target.dispatchEvent(i),e.target.click()}else e.keyCode===this.Keycodes_.ESCAPE&&(e.preventDefault(),this.hide())}}},d.prototype.handleItemClick_=function(e){e.target.hasAttribute(\"disabled\")?e.stopPropagation():(this.closing_=!0,window.setTimeout(function(e){this.hide(),this.closing_=!1}.bind(this),this.Constant_.CLOSE_TIMEOUT))},d.prototype.applyClip_=function(e,t){this.element_.classList.contains(this.CssClasses_.UNALIGNED)?this.element_.style.clip=\"\":this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)?this.element_.style.clip=\"rect(0 \"+t+\"px 0 \"+t+\"px)\":this.element_.classList.contains(this.CssClasses_.TOP_LEFT)?this.element_.style.clip=\"rect(\"+e+\"px 0 \"+e+\"px 0)\":this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)?this.element_.style.clip=\"rect(\"+e+\"px \"+t+\"px \"+e+\"px \"+t+\"px)\":this.element_.style.clip=\"\"},d.prototype.removeAnimationEndListener_=function(e){e.target.classList.remove(d.prototype.CssClasses_.IS_ANIMATING)},d.prototype.addAnimationEndListener_=function(){this.element_.addEventListener(\"transitionend\",this.removeAnimationEndListener_),this.element_.addEventListener(\"webkitTransitionEnd\",this.removeAnimationEndListener_)},d.prototype.show=function(e){if(this.element_&&this.container_&&this.outline_){var t=this.element_.getBoundingClientRect().height,s=this.element_.getBoundingClientRect().width;this.container_.style.width=s+\"px\",this.container_.style.height=t+\"px\",this.outline_.style.width=s+\"px\",this.outline_.style.height=t+\"px\";for(var i=this.Constant_.TRANSITION_DURATION_SECONDS*this.Constant_.TRANSITION_DURATION_FRACTION,n=this.element_.querySelectorAll(\".\"+this.CssClasses_.ITEM),a=0;a0&&this.showSnackbar(this.queuedNotifications_.shift())},C.prototype.cleanup_=function(){this.element_.classList.remove(this.cssClasses_.ACTIVE),setTimeout(function(){this.element_.setAttribute(\"aria-hidden\",\"true\"),this.textElement_.textContent=\"\",Boolean(this.actionElement_.getAttribute(\"aria-hidden\"))||(this.setActionHidden_(!0),this.actionElement_.textContent=\"\",this.actionElement_.removeEventListener(\"click\",this.actionHandler_)),this.actionHandler_=void 0,this.message_=void 0,this.actionText_=void 0,this.active=!1,this.checkQueue_()}.bind(this),this.Constant_.ANIMATION_LENGTH)},C.prototype.setActionHidden_=function(e){e?this.actionElement_.setAttribute(\"aria-hidden\",\"true\"):this.actionElement_.removeAttribute(\"aria-hidden\")},s.register({constructor:C,classAsString:\"MaterialSnackbar\",cssClass:\"mdl-js-snackbar\",widget:!0});var u=function(e){this.element_=e,this.init()};window.MaterialSpinner=u,u.prototype.Constant_={MDL_SPINNER_LAYER_COUNT:4},u.prototype.CssClasses_={MDL_SPINNER_LAYER:\"mdl-spinner__layer\",MDL_SPINNER_CIRCLE_CLIPPER:\"mdl-spinner__circle-clipper\",MDL_SPINNER_CIRCLE:\"mdl-spinner__circle\",MDL_SPINNER_GAP_PATCH:\"mdl-spinner__gap-patch\",MDL_SPINNER_LEFT:\"mdl-spinner__left\",MDL_SPINNER_RIGHT:\"mdl-spinner__right\"},u.prototype.createLayer=function(e){var t=document.createElement(\"div\");t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER),t.classList.add(this.CssClasses_.MDL_SPINNER_LAYER+\"-\"+e);var s=document.createElement(\"div\");s.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER),s.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);var i=document.createElement(\"div\");i.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);var n=document.createElement(\"div\");n.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER),n.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);for(var a=[s,i,n],l=0;l=this.maxRows&&e.preventDefault()},L.prototype.onFocus_=function(e){this.element_.classList.add(this.CssClasses_.IS_FOCUSED)},L.prototype.onBlur_=function(e){this.element_.classList.remove(this.CssClasses_.IS_FOCUSED)},L.prototype.onReset_=function(e){this.updateClasses_()},L.prototype.updateClasses_=function(){this.checkDisabled(),this.checkValidity(),this.checkDirty(),this.checkFocus()},L.prototype.checkDisabled=function(){this.input_.disabled?this.element_.classList.add(this.CssClasses_.IS_DISABLED):this.element_.classList.remove(this.CssClasses_.IS_DISABLED)},L.prototype.checkDisabled=L.prototype.checkDisabled,L.prototype.checkFocus=function(){Boolean(this.element_.querySelector(\":focus\"))?this.element_.classList.add(this.CssClasses_.IS_FOCUSED):this.element_.classList.remove(this.CssClasses_.IS_FOCUSED)},L.prototype.checkFocus=L.prototype.checkFocus,L.prototype.checkValidity=function(){this.input_.validity&&(this.input_.validity.valid?this.element_.classList.remove(this.CssClasses_.IS_INVALID):this.element_.classList.add(this.CssClasses_.IS_INVALID))},L.prototype.checkValidity=L.prototype.checkValidity,L.prototype.checkDirty=function(){this.input_.value&&this.input_.value.length>0?this.element_.classList.add(this.CssClasses_.IS_DIRTY):this.element_.classList.remove(this.CssClasses_.IS_DIRTY)},L.prototype.checkDirty=L.prototype.checkDirty,L.prototype.disable=function(){this.input_.disabled=!0,this.updateClasses_()},L.prototype.disable=L.prototype.disable,L.prototype.enable=function(){this.input_.disabled=!1,this.updateClasses_()},L.prototype.enable=L.prototype.enable,L.prototype.change=function(e){this.input_.value=e||\"\",this.updateClasses_()},L.prototype.change=L.prototype.change,L.prototype.init=function(){if(this.element_&&(this.label_=this.element_.querySelector(\".\"+this.CssClasses_.LABEL),this.input_=this.element_.querySelector(\".\"+this.CssClasses_.INPUT),this.input_)){this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)&&(this.maxRows=parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE),10),isNaN(this.maxRows)&&(this.maxRows=this.Constant_.NO_MAX_ROWS)),this.input_.hasAttribute(\"placeholder\")&&this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER),this.boundUpdateClassesHandler=this.updateClasses_.bind(this),this.boundFocusHandler=this.onFocus_.bind(this),this.boundBlurHandler=this.onBlur_.bind(this),this.boundResetHandler=this.onReset_.bind(this),this.input_.addEventListener(\"input\",this.boundUpdateClassesHandler),this.input_.addEventListener(\"focus\",this.boundFocusHandler),this.input_.addEventListener(\"blur\",this.boundBlurHandler),this.input_.addEventListener(\"reset\",this.boundResetHandler),this.maxRows!==this.Constant_.NO_MAX_ROWS&&(this.boundKeyDownHandler=this.onKeyDown_.bind(this),this.input_.addEventListener(\"keydown\",this.boundKeyDownHandler));var e=this.element_.classList.contains(this.CssClasses_.IS_INVALID);this.updateClasses_(),this.element_.classList.add(this.CssClasses_.IS_UPGRADED),e&&this.element_.classList.add(this.CssClasses_.IS_INVALID),this.input_.hasAttribute(\"autofocus\")&&(this.element_.focus(),this.checkFocus())}},s.register({constructor:L,classAsString:\"MaterialTextfield\",cssClass:\"mdl-js-textfield\",widget:!0});var I=function(e){this.element_=e,this.init()};window.MaterialTooltip=I,I.prototype.Constant_={},I.prototype.CssClasses_={IS_ACTIVE:\"is-active\",BOTTOM:\"mdl-tooltip--bottom\",LEFT:\"mdl-tooltip--left\",RIGHT:\"mdl-tooltip--right\",TOP:\"mdl-tooltip--top\"},I.prototype.handleMouseEnter_=function(e){var t=e.target.getBoundingClientRect(),s=t.left+t.width/2,i=t.top+t.height/2,n=-1*(this.element_.offsetWidth/2),a=-1*(this.element_.offsetHeight/2);this.element_.classList.contains(this.CssClasses_.LEFT)||this.element_.classList.contains(this.CssClasses_.RIGHT)?(s=t.width/2,i+a<0?(this.element_.style.top=\"0\",this.element_.style.marginTop=\"0\"):(this.element_.style.top=i+\"px\",this.element_.style.marginTop=a+\"px\")):s+n<0?(this.element_.style.left=\"0\",this.element_.style.marginLeft=\"0\"):(this.element_.style.left=s+\"px\",this.element_.style.marginLeft=n+\"px\"),this.element_.classList.contains(this.CssClasses_.TOP)?this.element_.style.top=t.top-this.element_.offsetHeight-10+\"px\":this.element_.classList.contains(this.CssClasses_.RIGHT)?this.element_.style.left=t.left+t.width+10+\"px\":this.element_.classList.contains(this.CssClasses_.LEFT)?this.element_.style.left=t.left-this.element_.offsetWidth-10+\"px\":this.element_.style.top=t.top+t.height+10+\"px\",this.element_.classList.add(this.CssClasses_.IS_ACTIVE)},I.prototype.hideTooltip_=function(){this.element_.classList.remove(this.CssClasses_.IS_ACTIVE)},I.prototype.init=function(){if(this.element_){var e=this.element_.getAttribute(\"for\")||this.element_.getAttribute(\"data-mdl-for\");e&&(this.forElement_=document.getElementById(e)),this.forElement_&&(this.forElement_.hasAttribute(\"tabindex\")||this.forElement_.setAttribute(\"tabindex\",\"0\"),this.boundMouseEnterHandler=this.handleMouseEnter_.bind(this),this.boundMouseLeaveAndScrollHandler=this.hideTooltip_.bind(this),this.forElement_.addEventListener(\"mouseenter\",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener(\"touchend\",this.boundMouseEnterHandler,!1),this.forElement_.addEventListener(\"mouseleave\",this.boundMouseLeaveAndScrollHandler,!1),window.addEventListener(\"scroll\",this.boundMouseLeaveAndScrollHandler,!0),window.addEventListener(\"touchstart\",this.boundMouseLeaveAndScrollHandler))}},s.register({constructor:I,classAsString:\"MaterialTooltip\",cssClass:\"mdl-tooltip\"});var f=function(e){this.element_=e,this.init()};window.MaterialLayout=f,f.prototype.Constant_={MAX_WIDTH:\"(max-width: 1024px)\",TAB_SCROLL_PIXELS:100,RESIZE_TIMEOUT:100,MENU_ICON:\"\",CHEVRON_LEFT:\"chevron_left\",CHEVRON_RIGHT:\"chevron_right\"},f.prototype.Keycodes_={ENTER:13,ESCAPE:27,SPACE:32},f.prototype.Mode_={STANDARD:0,SEAMED:1,WATERFALL:2,SCROLL:3},f.prototype.CssClasses_={CONTAINER:\"mdl-layout__container\",HEADER:\"mdl-layout__header\",DRAWER:\"mdl-layout__drawer\",CONTENT:\"mdl-layout__content\",DRAWER_BTN:\"mdl-layout__drawer-button\",ICON:\"material-icons\",JS_RIPPLE_EFFECT:\"mdl-js-ripple-effect\",RIPPLE_CONTAINER:\"mdl-layout__tab-ripple-container\",RIPPLE:\"mdl-ripple\",RIPPLE_IGNORE_EVENTS:\"mdl-js-ripple-effect--ignore-events\",HEADER_SEAMED:\"mdl-layout__header--seamed\",HEADER_WATERFALL:\"mdl-layout__header--waterfall\",HEADER_SCROLL:\"mdl-layout__header--scroll\",FIXED_HEADER:\"mdl-layout--fixed-header\",OBFUSCATOR:\"mdl-layout__obfuscator\",TAB_BAR:\"mdl-layout__tab-bar\",TAB_CONTAINER:\"mdl-layout__tab-bar-container\",TAB:\"mdl-layout__tab\",TAB_BAR_BUTTON:\"mdl-layout__tab-bar-button\",TAB_BAR_LEFT_BUTTON:\"mdl-layout__tab-bar-left-button\",TAB_BAR_RIGHT_BUTTON:\"mdl-layout__tab-bar-right-button\",TAB_MANUAL_SWITCH:\"mdl-layout__tab-manual-switch\",PANEL:\"mdl-layout__tab-panel\",HAS_DRAWER:\"has-drawer\",HAS_TABS:\"has-tabs\",HAS_SCROLLING_HEADER:\"has-scrolling-header\",CASTING_SHADOW:\"is-casting-shadow\",IS_COMPACT:\"is-compact\",IS_SMALL_SCREEN:\"is-small-screen\",IS_DRAWER_OPEN:\"is-visible\",IS_ACTIVE:\"is-active\",IS_UPGRADED:\"is-upgraded\",IS_ANIMATING:\"is-animating\",ON_LARGE_SCREEN:\"mdl-layout--large-screen-only\",ON_SMALL_SCREEN:\"mdl-layout--small-screen-only\"},f.prototype.contentScrollHandler_=function(){if(!this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)){var e=!this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN)||this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);this.content_.scrollTop>0&&!this.header_.classList.contains(this.CssClasses_.IS_COMPACT)?(this.header_.classList.add(this.CssClasses_.CASTING_SHADOW),this.header_.classList.add(this.CssClasses_.IS_COMPACT),e&&this.header_.classList.add(this.CssClasses_.IS_ANIMATING)):this.content_.scrollTop<=0&&this.header_.classList.contains(this.CssClasses_.IS_COMPACT)&&(this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW),this.header_.classList.remove(this.CssClasses_.IS_COMPACT),e&&this.header_.classList.add(this.CssClasses_.IS_ANIMATING))}},f.prototype.keyboardEventHandler_=function(e){e.keyCode===this.Keycodes_.ESCAPE&&this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)&&this.toggleDrawer()},f.prototype.screenSizeHandler_=function(){this.screenSizeMediaQuery_.matches?this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN):(this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN),this.drawer_&&(this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN),this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN)))},f.prototype.drawerToggleHandler_=function(e){if(e&&\"keydown\"===e.type){if(e.keyCode!==this.Keycodes_.SPACE&&e.keyCode!==this.Keycodes_.ENTER)return;e.preventDefault()}this.toggleDrawer()},f.prototype.headerTransitionEndHandler_=function(){this.header_.classList.remove(this.CssClasses_.IS_ANIMATING)},f.prototype.headerClickHandler_=function(){this.header_.classList.contains(this.CssClasses_.IS_COMPACT)&&(this.header_.classList.remove(this.CssClasses_.IS_COMPACT),this.header_.classList.add(this.CssClasses_.IS_ANIMATING))},f.prototype.resetTabState_=function(e){for(var t=0;t0?c.classList.add(this.CssClasses_.IS_ACTIVE):c.classList.remove(this.CssClasses_.IS_ACTIVE),this.tabBar_.scrollLeft0)return;this.setFrameCount(1);var i,n,a=e.currentTarget.getBoundingClientRect();if(0===e.clientX&&0===e.clientY)i=Math.round(a.width/2),n=Math.round(a.height/2);else{var l=void 0!==e.clientX?e.clientX:e.touches[0].clientX,o=void 0!==e.clientY?e.clientY:e.touches[0].clientY;i=Math.round(l-a.left),n=Math.round(o-a.top)}this.setRippleXY(i,n),this.setRippleStyles(!0),window.requestAnimationFrame(this.animFrameHandler.bind(this))}},S.prototype.upHandler_=function(e){e&&2!==e.detail&&window.setTimeout(function(){this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE)}.bind(this),0)},S.prototype.init=function(){if(this.element_){var e=this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)||(this.rippleElement_=this.element_.querySelector(\".\"+this.CssClasses_.RIPPLE),this.frameCount_=0,this.rippleSize_=0,this.x_=0,this.y_=0,this.ignoringMouseDown_=!1,this.boundDownHandler=this.downHandler_.bind(this),this.element_.addEventListener(\"mousedown\",this.boundDownHandler),this.element_.addEventListener(\"touchstart\",this.boundDownHandler),this.boundUpHandler=this.upHandler_.bind(this),this.element_.addEventListener(\"mouseup\",this.boundUpHandler),this.element_.addEventListener(\"mouseleave\",this.boundUpHandler),this.element_.addEventListener(\"touchend\",this.boundUpHandler),this.element_.addEventListener(\"blur\",this.boundUpHandler),this.getFrameCount=function(){return this.frameCount_},this.setFrameCount=function(e){this.frameCount_=e},this.getRippleElement=function(){return this.rippleElement_},this.setRippleXY=function(e,t){this.x_=e,this.y_=t},this.setRippleStyles=function(t){if(null!==this.rippleElement_){var s,i,n,a=\"translate(\"+this.x_+\"px, \"+this.y_+\"px)\";t?(i=this.Constant_.INITIAL_SCALE,n=this.Constant_.INITIAL_SIZE):(i=this.Constant_.FINAL_SCALE,n=this.rippleSize_+\"px\",e&&(a=\"translate(\"+this.boundWidth/2+\"px, \"+this.boundHeight/2+\"px)\")),s=\"translate(-50%, -50%) \"+a+i,this.rippleElement_.style.webkitTransform=s,this.rippleElement_.style.msTransform=s,this.rippleElement_.style.transform=s,t?this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING):this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING)}},this.animFrameHandler=function(){this.frameCount_-- >0?window.requestAnimationFrame(this.animFrameHandler.bind(this)):this.setRippleStyles(!1)})}},s.register({constructor:S,classAsString:\"MaterialRipple\",cssClass:\"mdl-js-ripple-effect\",widget:!1})}();\n//# sourceMappingURL=material.min.js.map\n","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Tabs MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\nvar MaterialTabs = function MaterialTabs(element) {\n // Stores the HTML element.\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialTabs'] = MaterialTabs;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string}\n * @private\n */\nMaterialTabs.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialTabs.prototype.CssClasses_ = {\n TAB_CLASS: 'mdl-tabs__tab',\n PANEL_CLASS: 'mdl-tabs__panel',\n ACTIVE_CLASS: 'is-active',\n UPGRADED_CLASS: 'is-upgraded',\n MDL_JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n MDL_RIPPLE_CONTAINER: 'mdl-tabs__ripple-container',\n MDL_RIPPLE: 'mdl-ripple',\n MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events'\n};\n/**\n * Handle clicks to a tabs component\n *\n * @private\n */\nMaterialTabs.prototype.initTabs_ = function () {\n if (this.element_.classList.contains(this.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n this.tabs_ = this.element_.querySelectorAll('.' + this.CssClasses_.TAB_CLASS);\n this.panels_ = this.element_.querySelectorAll('.' + this.CssClasses_.PANEL_CLASS);\n // Create new tabs for each tab element\n for (var i = 0; i < this.tabs_.length; i++) {\n new MaterialTab(this.tabs_[i], this);\n }\n this.element_.classList.add(this.CssClasses_.UPGRADED_CLASS);\n};\n/**\n * Reset tab state, dropping active classes\n *\n * @private\n */\nMaterialTabs.prototype.resetTabState_ = function () {\n for (var k = 0; k < this.tabs_.length; k++) {\n this.tabs_[k].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n};\n/**\n * Reset panel state, droping active classes\n *\n * @private\n */\nMaterialTabs.prototype.resetPanelState_ = function () {\n for (var j = 0; j < this.panels_.length; j++) {\n this.panels_[j].classList.remove(this.CssClasses_.ACTIVE_CLASS);\n }\n};\n/**\n * Initialize element.\n */\nMaterialTabs.prototype.init = function () {\n if (this.element_) {\n this.initTabs_();\n }\n};\n/**\n * Constructor for an individual tab.\n *\n * @constructor\n * @param {Element} tab The HTML element for the tab.\n * @param {MaterialTabs} ctx The MaterialTabs object that owns the tab.\n */\nfunction MaterialTab(tab, ctx) {\n if (tab) {\n if (ctx.element_.classList.contains(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(ctx.CssClasses_.MDL_RIPPLE_CONTAINER);\n rippleContainer.classList.add(ctx.CssClasses_.MDL_JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(ctx.CssClasses_.MDL_RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n tab.addEventListener('click', function (e) {\n if (tab.getAttribute('href').charAt(0) === '#') {\n e.preventDefault();\n var href = tab.href.split('#')[1];\n var panel = ctx.element_.querySelector('#' + href);\n ctx.resetTabState_();\n ctx.resetPanelState_();\n tab.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n panel.classList.add(ctx.CssClasses_.ACTIVE_CLASS);\n }\n });\n }\n}\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTabs,\n classAsString: 'MaterialTabs',\n cssClass: 'mdl-js-tabs'\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Layout MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialLayout = function MaterialLayout(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialLayout'] = MaterialLayout;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialLayout.prototype.Constant_ = {\n MAX_WIDTH: '(max-width: 1024px)',\n TAB_SCROLL_PIXELS: 100,\n RESIZE_TIMEOUT: 100,\n MENU_ICON: '',\n CHEVRON_LEFT: 'chevron_left',\n CHEVRON_RIGHT: 'chevron_right'\n};\n/**\n * Keycodes, for code readability.\n *\n * @enum {number}\n * @private\n */\nMaterialLayout.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32\n};\n/**\n * Modes.\n *\n * @enum {number}\n * @private\n */\nMaterialLayout.prototype.Mode_ = {\n STANDARD: 0,\n SEAMED: 1,\n WATERFALL: 2,\n SCROLL: 3\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialLayout.prototype.CssClasses_ = {\n CONTAINER: 'mdl-layout__container',\n HEADER: 'mdl-layout__header',\n DRAWER: 'mdl-layout__drawer',\n CONTENT: 'mdl-layout__content',\n DRAWER_BTN: 'mdl-layout__drawer-button',\n ICON: 'material-icons',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-layout__tab-ripple-container',\n RIPPLE: 'mdl-ripple',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n HEADER_SEAMED: 'mdl-layout__header--seamed',\n HEADER_WATERFALL: 'mdl-layout__header--waterfall',\n HEADER_SCROLL: 'mdl-layout__header--scroll',\n FIXED_HEADER: 'mdl-layout--fixed-header',\n OBFUSCATOR: 'mdl-layout__obfuscator',\n TAB_BAR: 'mdl-layout__tab-bar',\n TAB_CONTAINER: 'mdl-layout__tab-bar-container',\n TAB: 'mdl-layout__tab',\n TAB_BAR_BUTTON: 'mdl-layout__tab-bar-button',\n TAB_BAR_LEFT_BUTTON: 'mdl-layout__tab-bar-left-button',\n TAB_BAR_RIGHT_BUTTON: 'mdl-layout__tab-bar-right-button',\n TAB_MANUAL_SWITCH: 'mdl-layout__tab-manual-switch',\n PANEL: 'mdl-layout__tab-panel',\n HAS_DRAWER: 'has-drawer',\n HAS_TABS: 'has-tabs',\n HAS_SCROLLING_HEADER: 'has-scrolling-header',\n CASTING_SHADOW: 'is-casting-shadow',\n IS_COMPACT: 'is-compact',\n IS_SMALL_SCREEN: 'is-small-screen',\n IS_DRAWER_OPEN: 'is-visible',\n IS_ACTIVE: 'is-active',\n IS_UPGRADED: 'is-upgraded',\n IS_ANIMATING: 'is-animating',\n ON_LARGE_SCREEN: 'mdl-layout--large-screen-only',\n ON_SMALL_SCREEN: 'mdl-layout--small-screen-only'\n};\n/**\n * Handles scrolling on the content.\n *\n * @private\n */\nMaterialLayout.prototype.contentScrollHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_ANIMATING)) {\n return;\n }\n var headerVisible = !this.element_.classList.contains(this.CssClasses_.IS_SMALL_SCREEN) || this.element_.classList.contains(this.CssClasses_.FIXED_HEADER);\n if (this.content_.scrollTop > 0 && !this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.add(this.CssClasses_.IS_COMPACT);\n if (headerVisible) {\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n } else if (this.content_.scrollTop <= 0 && this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n if (headerVisible) {\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n }\n};\n/**\n * Handles a keyboard event on the drawer.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialLayout.prototype.keyboardEventHandler_ = function (evt) {\n // Only react when the drawer is open.\n if (evt.keyCode === this.Keycodes_.ESCAPE && this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n this.toggleDrawer();\n }\n};\n/**\n * Handles changes in screen size.\n *\n * @private\n */\nMaterialLayout.prototype.screenSizeHandler_ = function () {\n if (this.screenSizeMediaQuery_.matches) {\n this.element_.classList.add(this.CssClasses_.IS_SMALL_SCREEN);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_SMALL_SCREEN);\n // Collapse drawer (if any) when moving to a large screen size.\n if (this.drawer_) {\n this.drawer_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n this.obfuscator_.classList.remove(this.CssClasses_.IS_DRAWER_OPEN);\n }\n }\n};\n/**\n * Handles events of drawer button.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialLayout.prototype.drawerToggleHandler_ = function (evt) {\n if (evt && evt.type === 'keydown') {\n if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n // prevent scrolling in drawer nav\n evt.preventDefault();\n } else {\n // prevent other keys\n return;\n }\n }\n this.toggleDrawer();\n};\n/**\n * Handles (un)setting the `is-animating` class\n *\n * @private\n */\nMaterialLayout.prototype.headerTransitionEndHandler_ = function () {\n this.header_.classList.remove(this.CssClasses_.IS_ANIMATING);\n};\n/**\n * Handles expanding the header on click\n *\n * @private\n */\nMaterialLayout.prototype.headerClickHandler_ = function () {\n if (this.header_.classList.contains(this.CssClasses_.IS_COMPACT)) {\n this.header_.classList.remove(this.CssClasses_.IS_COMPACT);\n this.header_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n};\n/**\n * Reset tab state, dropping active classes\n *\n * @private\n */\nMaterialLayout.prototype.resetTabState_ = function (tabBar) {\n for (var k = 0; k < tabBar.length; k++) {\n tabBar[k].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n};\n/**\n * Reset panel state, droping active classes\n *\n * @private\n */\nMaterialLayout.prototype.resetPanelState_ = function (panels) {\n for (var j = 0; j < panels.length; j++) {\n panels[j].classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n};\n/**\n * Toggle drawer state\n *\n * @public\n */\nMaterialLayout.prototype.toggleDrawer = function () {\n var drawerButton = this.element_.querySelector('.' + this.CssClasses_.DRAWER_BTN);\n this.drawer_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n this.obfuscator_.classList.toggle(this.CssClasses_.IS_DRAWER_OPEN);\n // Set accessibility properties.\n if (this.drawer_.classList.contains(this.CssClasses_.IS_DRAWER_OPEN)) {\n this.drawer_.setAttribute('aria-hidden', 'false');\n drawerButton.setAttribute('aria-expanded', 'true');\n } else {\n this.drawer_.setAttribute('aria-hidden', 'true');\n drawerButton.setAttribute('aria-expanded', 'false');\n }\n};\nMaterialLayout.prototype['toggleDrawer'] = MaterialLayout.prototype.toggleDrawer;\n/**\n * Initialize element.\n */\nMaterialLayout.prototype.init = function () {\n if (this.element_) {\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.CONTAINER);\n var focusedElement = this.element_.querySelector(':focus');\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n if (focusedElement) {\n focusedElement.focus();\n }\n var directChildren = this.element_.childNodes;\n var numChildren = directChildren.length;\n for (var c = 0; c < numChildren; c++) {\n var child = directChildren[c];\n if (child.classList && child.classList.contains(this.CssClasses_.HEADER)) {\n this.header_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.DRAWER)) {\n this.drawer_ = child;\n }\n if (child.classList && child.classList.contains(this.CssClasses_.CONTENT)) {\n this.content_ = child;\n }\n }\n window.addEventListener('pageshow', function (e) {\n if (e.persisted) {\n // when page is loaded from back/forward cache\n // trigger repaint to let layout scroll in safari\n this.element_.style.overflowY = 'hidden';\n requestAnimationFrame(function () {\n this.element_.style.overflowY = '';\n }.bind(this));\n }\n }.bind(this), false);\n if (this.header_) {\n this.tabBar_ = this.header_.querySelector('.' + this.CssClasses_.TAB_BAR);\n }\n var mode = this.Mode_.STANDARD;\n if (this.header_) {\n if (this.header_.classList.contains(this.CssClasses_.HEADER_SEAMED)) {\n mode = this.Mode_.SEAMED;\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_WATERFALL)) {\n mode = this.Mode_.WATERFALL;\n this.header_.addEventListener('transitionend', this.headerTransitionEndHandler_.bind(this));\n this.header_.addEventListener('click', this.headerClickHandler_.bind(this));\n } else if (this.header_.classList.contains(this.CssClasses_.HEADER_SCROLL)) {\n mode = this.Mode_.SCROLL;\n container.classList.add(this.CssClasses_.HAS_SCROLLING_HEADER);\n }\n if (mode === this.Mode_.STANDARD) {\n this.header_.classList.add(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.add(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.SEAMED || mode === this.Mode_.SCROLL) {\n this.header_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n if (this.tabBar_) {\n this.tabBar_.classList.remove(this.CssClasses_.CASTING_SHADOW);\n }\n } else if (mode === this.Mode_.WATERFALL) {\n // Add and remove shadows depending on scroll position.\n // Also add/remove auxiliary class for styling of the compact version of\n // the header.\n this.content_.addEventListener('scroll', this.contentScrollHandler_.bind(this));\n this.contentScrollHandler_();\n }\n }\n // Add drawer toggling button to our layout, if we have an openable drawer.\n if (this.drawer_) {\n var drawerButton = this.element_.querySelector('.' + this.CssClasses_.DRAWER_BTN);\n if (!drawerButton) {\n drawerButton = document.createElement('div');\n drawerButton.setAttribute('aria-expanded', 'false');\n drawerButton.setAttribute('role', 'button');\n drawerButton.setAttribute('tabindex', '0');\n drawerButton.classList.add(this.CssClasses_.DRAWER_BTN);\n var drawerButtonIcon = document.createElement('i');\n drawerButtonIcon.classList.add(this.CssClasses_.ICON);\n drawerButtonIcon.innerHTML = this.Constant_.MENU_ICON;\n drawerButton.appendChild(drawerButtonIcon);\n }\n if (this.drawer_.classList.contains(this.CssClasses_.ON_LARGE_SCREEN)) {\n //If drawer has ON_LARGE_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_LARGE_SCREEN);\n } else if (this.drawer_.classList.contains(this.CssClasses_.ON_SMALL_SCREEN)) {\n //If drawer has ON_SMALL_SCREEN class then add it to the drawer toggle button as well.\n drawerButton.classList.add(this.CssClasses_.ON_SMALL_SCREEN);\n }\n drawerButton.addEventListener('click', this.drawerToggleHandler_.bind(this));\n drawerButton.addEventListener('keydown', this.drawerToggleHandler_.bind(this));\n // Add a class if the layout has a drawer, for altering the left padding.\n // Adds the HAS_DRAWER to the elements since this.header_ may or may\n // not be present.\n this.element_.classList.add(this.CssClasses_.HAS_DRAWER);\n // If we have a fixed header, add the button to the header rather than\n // the layout.\n if (this.element_.classList.contains(this.CssClasses_.FIXED_HEADER)) {\n this.header_.insertBefore(drawerButton, this.header_.firstChild);\n } else {\n this.element_.insertBefore(drawerButton, this.content_);\n }\n var obfuscator = document.createElement('div');\n obfuscator.classList.add(this.CssClasses_.OBFUSCATOR);\n this.element_.appendChild(obfuscator);\n obfuscator.addEventListener('click', this.drawerToggleHandler_.bind(this));\n this.obfuscator_ = obfuscator;\n this.drawer_.addEventListener('keydown', this.keyboardEventHandler_.bind(this));\n this.drawer_.setAttribute('aria-hidden', 'true');\n }\n // Keep an eye on screen size, and add/remove auxiliary class for styling\n // of small screens.\n this.screenSizeMediaQuery_ = window.matchMedia(this.Constant_.MAX_WIDTH);\n this.screenSizeMediaQuery_.addListener(this.screenSizeHandler_.bind(this));\n this.screenSizeHandler_();\n // Initialize tabs, if any.\n if (this.header_ && this.tabBar_) {\n this.element_.classList.add(this.CssClasses_.HAS_TABS);\n var tabContainer = document.createElement('div');\n tabContainer.classList.add(this.CssClasses_.TAB_CONTAINER);\n this.header_.insertBefore(tabContainer, this.tabBar_);\n this.header_.removeChild(this.tabBar_);\n var leftButton = document.createElement('div');\n leftButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n leftButton.classList.add(this.CssClasses_.TAB_BAR_LEFT_BUTTON);\n var leftButtonIcon = document.createElement('i');\n leftButtonIcon.classList.add(this.CssClasses_.ICON);\n leftButtonIcon.textContent = this.Constant_.CHEVRON_LEFT;\n leftButton.appendChild(leftButtonIcon);\n leftButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft -= this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n var rightButton = document.createElement('div');\n rightButton.classList.add(this.CssClasses_.TAB_BAR_BUTTON);\n rightButton.classList.add(this.CssClasses_.TAB_BAR_RIGHT_BUTTON);\n var rightButtonIcon = document.createElement('i');\n rightButtonIcon.classList.add(this.CssClasses_.ICON);\n rightButtonIcon.textContent = this.Constant_.CHEVRON_RIGHT;\n rightButton.appendChild(rightButtonIcon);\n rightButton.addEventListener('click', function () {\n this.tabBar_.scrollLeft += this.Constant_.TAB_SCROLL_PIXELS;\n }.bind(this));\n tabContainer.appendChild(leftButton);\n tabContainer.appendChild(this.tabBar_);\n tabContainer.appendChild(rightButton);\n // Add and remove tab buttons depending on scroll position and total\n // window size.\n var tabUpdateHandler = function () {\n if (this.tabBar_.scrollLeft > 0) {\n leftButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n leftButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n if (this.tabBar_.scrollLeft < this.tabBar_.scrollWidth - this.tabBar_.offsetWidth) {\n rightButton.classList.add(this.CssClasses_.IS_ACTIVE);\n } else {\n rightButton.classList.remove(this.CssClasses_.IS_ACTIVE);\n }\n }.bind(this);\n this.tabBar_.addEventListener('scroll', tabUpdateHandler);\n tabUpdateHandler();\n // Update tabs when the window resizes.\n var windowResizeHandler = function () {\n // Use timeouts to make sure it doesn't happen too often.\n if (this.resizeTimeoutId_) {\n clearTimeout(this.resizeTimeoutId_);\n }\n this.resizeTimeoutId_ = setTimeout(function () {\n tabUpdateHandler();\n this.resizeTimeoutId_ = null;\n }.bind(this), this.Constant_.RESIZE_TIMEOUT);\n }.bind(this);\n window.addEventListener('resize', windowResizeHandler);\n if (this.tabBar_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.tabBar_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n }\n // Select element tabs, document panels\n var tabs = this.tabBar_.querySelectorAll('.' + this.CssClasses_.TAB);\n var panels = this.content_.querySelectorAll('.' + this.CssClasses_.PANEL);\n // Create new tabs for each tab element\n for (var i = 0; i < tabs.length; i++) {\n new MaterialLayoutTab(tabs[i], tabs, panels, this);\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Constructor for an individual tab.\n *\n * @constructor\n * @param {HTMLElement} tab The HTML element for the tab.\n * @param {!Array} tabs Array with HTML elements for all tabs.\n * @param {!Array} panels Array with HTML elements for all panels.\n * @param {MaterialLayout} layout The MaterialLayout object that owns the tab.\n */\nfunction MaterialLayoutTab(tab, tabs, panels, layout) {\n /**\n * Auxiliary method to programmatically select a tab in the UI.\n */\n function selectTab() {\n var href = tab.href.split('#')[1];\n var panel = layout.content_.querySelector('#' + href);\n layout.resetTabState_(tabs);\n layout.resetPanelState_(panels);\n tab.classList.add(layout.CssClasses_.IS_ACTIVE);\n panel.classList.add(layout.CssClasses_.IS_ACTIVE);\n }\n if (layout.tabBar_.classList.contains(layout.CssClasses_.JS_RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(layout.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(layout.CssClasses_.JS_RIPPLE_EFFECT);\n var ripple = document.createElement('span');\n ripple.classList.add(layout.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n tab.appendChild(rippleContainer);\n }\n if (!layout.tabBar_.classList.contains(layout.CssClasses_.TAB_MANUAL_SWITCH)) {\n tab.addEventListener('click', function (e) {\n if (tab.getAttribute('href').charAt(0) === '#') {\n e.preventDefault();\n selectTab();\n }\n });\n }\n tab.show = selectTab;\n}\nwindow['MaterialLayoutTab'] = MaterialLayoutTab;\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialLayout,\n classAsString: 'MaterialLayout',\n cssClass: 'mdl-js-layout'\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A component handler interface using the revealing module design pattern.\n * More details on this design pattern here:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @author Jason Mayes.\n */\n/* exported componentHandler */\n\n// Pre-defining the componentHandler interface, for closure documentation and\n// static verification.\nvar componentHandler = {\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {string=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {string=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n upgradeDom: function(optJsClass, optCssClass) {},\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!Element} element The element we wish to upgrade.\n * @param {string=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n upgradeElement: function(element, optJsClass) {},\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!Element|!Array|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n upgradeElements: function(elements) {},\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n upgradeAllRegistered: function() {},\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {string} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n registerUpgradedCallback: function(jsClass, callback) {},\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {componentHandler.ComponentConfigPublic} config the registration configuration\n */\n register: function(config) {},\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array|!NodeList} nodes\n */\n downgradeElements: function(nodes) {}\n};\n\ncomponentHandler = (function() {\n 'use strict';\n\n /** @type {!Array} */\n var registeredComponents_ = [];\n\n /** @type {!Array} */\n var createdComponents_ = [];\n\n var componentConfigProperty_ = 'mdlComponentConfigInternal_';\n\n /**\n * Searches registered components for a class we are interested in using.\n * Optionally replaces a match with passed object if specified.\n *\n * @param {string} name The name of a class we want to use.\n * @param {componentHandler.ComponentConfig=} optReplace Optional object to replace match with.\n * @return {!Object|boolean}\n * @private\n */\n function findRegisteredClass_(name, optReplace) {\n for (var i = 0; i < registeredComponents_.length; i++) {\n if (registeredComponents_[i].className === name) {\n if (typeof optReplace !== 'undefined') {\n registeredComponents_[i] = optReplace;\n }\n return registeredComponents_[i];\n }\n }\n return false;\n }\n\n /**\n * Returns an array of the classNames of the upgraded classes on the element.\n *\n * @param {!Element} element The element to fetch data from.\n * @return {!Array}\n * @private\n */\n function getUpgradedListOfElement_(element) {\n var dataUpgraded = element.getAttribute('data-upgraded');\n // Use `['']` as default value to conform the `,name,name...` style.\n return dataUpgraded === null ? [''] : dataUpgraded.split(',');\n }\n\n /**\n * Returns true if the given element has already been upgraded for the given\n * class.\n *\n * @param {!Element} element The element we want to check.\n * @param {string} jsClass The class to check for.\n * @returns {boolean}\n * @private\n */\n function isElementUpgraded_(element, jsClass) {\n var upgradedList = getUpgradedListOfElement_(element);\n return upgradedList.indexOf(jsClass) !== -1;\n }\n\n /**\n * Create an event object.\n *\n * @param {string} eventType The type name of the event.\n * @param {boolean} bubbles Whether the event should bubble up the DOM.\n * @param {boolean} cancelable Whether the event can be canceled.\n * @returns {!Event}\n */\n function createEvent_(eventType, bubbles, cancelable) {\n if ('CustomEvent' in window && typeof window.CustomEvent === 'function') {\n return new CustomEvent(eventType, {\n bubbles: bubbles,\n cancelable: cancelable\n });\n } else {\n var ev = document.createEvent('Events');\n ev.initEvent(eventType, bubbles, cancelable);\n return ev;\n }\n }\n\n /**\n * Searches existing DOM for elements of our component type and upgrades them\n * if they have not already been upgraded.\n *\n * @param {string=} optJsClass the programatic name of the element class we\n * need to create a new instance of.\n * @param {string=} optCssClass the name of the CSS class elements of this\n * type will have.\n */\n function upgradeDomInternal(optJsClass, optCssClass) {\n if (typeof optJsClass === 'undefined' &&\n typeof optCssClass === 'undefined') {\n for (var i = 0; i < registeredComponents_.length; i++) {\n upgradeDomInternal(registeredComponents_[i].className,\n registeredComponents_[i].cssClass);\n }\n } else {\n var jsClass = /** @type {string} */ (optJsClass);\n if (typeof optCssClass === 'undefined') {\n var registeredClass = findRegisteredClass_(jsClass);\n if (registeredClass) {\n optCssClass = registeredClass.cssClass;\n }\n }\n\n var elements = document.querySelectorAll('.' + optCssClass);\n for (var n = 0; n < elements.length; n++) {\n upgradeElementInternal(elements[n], jsClass);\n }\n }\n }\n\n /**\n * Upgrades a specific element rather than all in the DOM.\n *\n * @param {!Element} element The element we wish to upgrade.\n * @param {string=} optJsClass Optional name of the class we want to upgrade\n * the element to.\n */\n function upgradeElementInternal(element, optJsClass) {\n // Verify argument type.\n if (!(typeof element === 'object' && element instanceof Element)) {\n throw new Error('Invalid argument provided to upgrade MDL element.');\n }\n // Allow upgrade to be canceled by canceling emitted event.\n var upgradingEv = createEvent_('mdl-componentupgrading', true, true);\n element.dispatchEvent(upgradingEv);\n if (upgradingEv.defaultPrevented) {\n return;\n }\n\n var upgradedList = getUpgradedListOfElement_(element);\n var classesToUpgrade = [];\n // If jsClass is not provided scan the registered components to find the\n // ones matching the element's CSS classList.\n if (!optJsClass) {\n var classList = element.classList;\n registeredComponents_.forEach(function(component) {\n // Match CSS & Not to be upgraded & Not upgraded.\n if (classList.contains(component.cssClass) &&\n classesToUpgrade.indexOf(component) === -1 &&\n !isElementUpgraded_(element, component.className)) {\n classesToUpgrade.push(component);\n }\n });\n } else if (!isElementUpgraded_(element, optJsClass)) {\n classesToUpgrade.push(findRegisteredClass_(optJsClass));\n }\n\n // Upgrade the element for each classes.\n for (var i = 0, n = classesToUpgrade.length, registeredClass; i < n; i++) {\n registeredClass = classesToUpgrade[i];\n if (registeredClass) {\n // Mark element as upgraded.\n upgradedList.push(registeredClass.className);\n element.setAttribute('data-upgraded', upgradedList.join(','));\n var instance = new registeredClass.classConstructor(element);\n instance[componentConfigProperty_] = registeredClass;\n createdComponents_.push(instance);\n // Call any callbacks the user has registered with this component type.\n for (var j = 0, m = registeredClass.callbacks.length; j < m; j++) {\n registeredClass.callbacks[j](element);\n }\n\n if (registeredClass.widget) {\n // Assign per element instance for control over API\n element[registeredClass.className] = instance;\n }\n } else {\n throw new Error(\n 'Unable to find a registered component for the given class.');\n }\n\n var upgradedEv = createEvent_('mdl-componentupgraded', true, false);\n element.dispatchEvent(upgradedEv);\n }\n }\n\n /**\n * Upgrades a specific list of elements rather than all in the DOM.\n *\n * @param {!Element|!Array|!NodeList|!HTMLCollection} elements\n * The elements we wish to upgrade.\n */\n function upgradeElementsInternal(elements) {\n if (!Array.isArray(elements)) {\n if (elements instanceof Element) {\n elements = [elements];\n } else {\n elements = Array.prototype.slice.call(elements);\n }\n }\n for (var i = 0, n = elements.length, element; i < n; i++) {\n element = elements[i];\n if (element instanceof HTMLElement) {\n upgradeElementInternal(element);\n if (element.children.length > 0) {\n upgradeElementsInternal(element.children);\n }\n }\n }\n }\n\n /**\n * Registers a class for future use and attempts to upgrade existing DOM.\n *\n * @param {componentHandler.ComponentConfigPublic} config\n */\n function registerInternal(config) {\n // In order to support both Closure-compiled and uncompiled code accessing\n // this method, we need to allow for both the dot and array syntax for\n // property access. You'll therefore see the `foo.bar || foo['bar']`\n // pattern repeated across this method.\n var widgetMissing = (typeof config.widget === 'undefined' &&\n typeof config['widget'] === 'undefined');\n var widget = true;\n\n if (!widgetMissing) {\n widget = config.widget || config['widget'];\n }\n\n var newConfig = /** @type {componentHandler.ComponentConfig} */ ({\n classConstructor: config.constructor || config['constructor'],\n className: config.classAsString || config['classAsString'],\n cssClass: config.cssClass || config['cssClass'],\n widget: widget,\n callbacks: []\n });\n\n registeredComponents_.forEach(function(item) {\n if (item.cssClass === newConfig.cssClass) {\n throw new Error('The provided cssClass has already been registered: ' + item.cssClass);\n }\n if (item.className === newConfig.className) {\n throw new Error('The provided className has already been registered');\n }\n });\n\n if (config.constructor.prototype\n .hasOwnProperty(componentConfigProperty_)) {\n throw new Error(\n 'MDL component classes must not have ' + componentConfigProperty_ +\n ' defined as a property.');\n }\n\n var found = findRegisteredClass_(config.classAsString, newConfig);\n\n if (!found) {\n registeredComponents_.push(newConfig);\n }\n }\n\n /**\n * Allows user to be alerted to any upgrades that are performed for a given\n * component type\n *\n * @param {string} jsClass The class name of the MDL component we wish\n * to hook into for any upgrades performed.\n * @param {function(!HTMLElement)} callback The function to call upon an\n * upgrade. This function should expect 1 parameter - the HTMLElement which\n * got upgraded.\n */\n function registerUpgradedCallbackInternal(jsClass, callback) {\n var regClass = findRegisteredClass_(jsClass);\n if (regClass) {\n regClass.callbacks.push(callback);\n }\n }\n\n /**\n * Upgrades all registered components found in the current DOM. This is\n * automatically called on window load.\n */\n function upgradeAllRegisteredInternal() {\n for (var n = 0; n < registeredComponents_.length; n++) {\n upgradeDomInternal(registeredComponents_[n].className);\n }\n }\n\n /**\n * Check the component for the downgrade method.\n * Execute if found.\n * Remove component from createdComponents list.\n *\n * @param {?componentHandler.Component} component\n */\n function deconstructComponentInternal(component) {\n if (component) {\n var componentIndex = createdComponents_.indexOf(component);\n createdComponents_.splice(componentIndex, 1);\n\n var upgrades = component.element_.getAttribute('data-upgraded').split(',');\n var componentPlace = upgrades.indexOf(component[componentConfigProperty_].classAsString);\n upgrades.splice(componentPlace, 1);\n component.element_.setAttribute('data-upgraded', upgrades.join(','));\n\n var ev = createEvent_('mdl-componentdowngraded', true, false);\n component.element_.dispatchEvent(ev);\n }\n }\n\n /**\n * Downgrade either a given node, an array of nodes, or a NodeList.\n *\n * @param {!Node|!Array|!NodeList} nodes\n */\n function downgradeNodesInternal(nodes) {\n /**\n * Auxiliary function to downgrade a single node.\n * @param {!Node} node the node to be downgraded\n */\n var downgradeNode = function(node) {\n createdComponents_.filter(function(item) {\n return item.element_ === node;\n }).forEach(deconstructComponentInternal);\n };\n if (nodes instanceof Array || nodes instanceof NodeList) {\n for (var n = 0; n < nodes.length; n++) {\n downgradeNode(nodes[n]);\n }\n } else if (nodes instanceof Node) {\n downgradeNode(nodes);\n } else {\n throw new Error('Invalid argument provided to downgrade MDL nodes.');\n }\n }\n\n // Now return the functions that should be made public with their publicly\n // facing names...\n return {\n upgradeDom: upgradeDomInternal,\n upgradeElement: upgradeElementInternal,\n upgradeElements: upgradeElementsInternal,\n upgradeAllRegistered: upgradeAllRegisteredInternal,\n registerUpgradedCallback: registerUpgradedCallbackInternal,\n register: registerInternal,\n downgradeElements: downgradeNodesInternal\n };\n})();\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: Function,\n * classAsString: string,\n * cssClass: string,\n * widget: (string|boolean|undefined)\n * }}\n */\ncomponentHandler.ComponentConfigPublic; // jshint ignore:line\n\n/**\n * Describes the type of a registered component type managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * constructor: !Function,\n * className: string,\n * cssClass: string,\n * widget: (string|boolean),\n * callbacks: !Array\n * }}\n */\ncomponentHandler.ComponentConfig; // jshint ignore:line\n\n/**\n * Created component (i.e., upgraded element) type as managed by\n * componentHandler. Provided for benefit of the Closure compiler.\n *\n * @typedef {{\n * element_: !HTMLElement,\n * className: string,\n * classAsString: string,\n * cssClass: string,\n * widget: string\n * }}\n */\ncomponentHandler.Component; // jshint ignore:line\n\n// Export all symbols, for the benefit of Closure compiler.\n// No effect on uncompiled code.\ncomponentHandler['upgradeDom'] = componentHandler.upgradeDom;\ncomponentHandler['upgradeElement'] = componentHandler.upgradeElement;\ncomponentHandler['upgradeElements'] = componentHandler.upgradeElements;\ncomponentHandler['upgradeAllRegistered'] =\n componentHandler.upgradeAllRegistered;\ncomponentHandler['registerUpgradedCallback'] =\n componentHandler.registerUpgradedCallback;\ncomponentHandler['register'] = componentHandler.register;\ncomponentHandler['downgradeElements'] = componentHandler.downgradeElements;\nwindow.componentHandler = componentHandler;\nwindow['componentHandler'] = componentHandler;\n\nwindow.addEventListener('load', function() {\n 'use strict';\n\n /**\n * Performs a \"Cutting the mustard\" test. If the browser supports the features\n * tested, adds a mdl-js class to the element. It then upgrades all MDL\n * components requiring JavaScript.\n */\n if ('classList' in document.createElement('div') &&\n 'querySelector' in document &&\n 'addEventListener' in window && Array.prototype.forEach) {\n document.documentElement.classList.add('mdl-js');\n componentHandler.upgradeAllRegistered();\n } else {\n /**\n * Dummy function to avoid JS errors.\n */\n componentHandler.upgradeElement = function() {};\n /**\n * Dummy function to avoid JS errors.\n */\n componentHandler.register = function() {};\n }\n});\n","// Source: https://github.com/darius/requestAnimationFrame/blob/master/requestAnimationFrame.js\n// Adapted from https://gist.github.com/paulirish/1579671 which derived from\n// http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating\n// requestAnimationFrame polyfill by Erik Möller.\n// Fixes from Paul Irish, Tino Zijdel, Andrew Mao, Klemen Slavič, Darius Bacon\n// MIT license\nif (!Date.now) {\n /**\n * Date.now polyfill.\n * @return {number} the current Date\n */\n Date.now = function () {\n return new Date().getTime();\n };\n Date['now'] = Date.now;\n}\nvar vendors = [\n 'webkit',\n 'moz'\n];\nfor (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp + 'RequestAnimationFrame'];\n window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame'];\n window['requestAnimationFrame'] = window.requestAnimationFrame;\n window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n}\nif (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n /**\n * requestAnimationFrame polyfill.\n * @param {!Function} callback the callback function.\n */\n window.requestAnimationFrame = function (callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function () {\n callback(lastTime = nextTime);\n }, nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n window['requestAnimationFrame'] = window.requestAnimationFrame;\n window['cancelAnimationFrame'] = window.cancelAnimationFrame;\n}","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Button MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialButton = function MaterialButton(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialButton'] = MaterialButton;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialButton.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialButton.prototype.CssClasses_ = {\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_CONTAINER: 'mdl-button__ripple-container',\n RIPPLE: 'mdl-ripple'\n};\n/**\n * Handle blur of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialButton.prototype.blurHandler_ = function (event) {\n if (event) {\n this.element_.blur();\n }\n};\n// Public methods.\n/**\n * Disable button.\n *\n * @public\n */\nMaterialButton.prototype.disable = function () {\n this.element_.disabled = true;\n};\nMaterialButton.prototype['disable'] = MaterialButton.prototype.disable;\n/**\n * Enable button.\n *\n * @public\n */\nMaterialButton.prototype.enable = function () {\n this.element_.disabled = false;\n};\nMaterialButton.prototype['enable'] = MaterialButton.prototype.enable;\n/**\n * Initialize element.\n */\nMaterialButton.prototype.init = function () {\n if (this.element_) {\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleElement_ = document.createElement('span');\n this.rippleElement_.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(this.rippleElement_);\n this.boundRippleBlurHandler = this.blurHandler_.bind(this);\n this.rippleElement_.addEventListener('mouseup', this.boundRippleBlurHandler);\n this.element_.appendChild(rippleContainer);\n }\n this.boundButtonBlurHandler = this.blurHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundButtonBlurHandler);\n this.element_.addEventListener('mouseleave', this.boundButtonBlurHandler);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialButton,\n classAsString: 'MaterialButton',\n cssClass: 'mdl-js-button',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialCheckbox = function MaterialCheckbox(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialCheckbox'] = MaterialCheckbox;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialCheckbox.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialCheckbox.prototype.CssClasses_ = {\n INPUT: 'mdl-checkbox__input',\n BOX_OUTLINE: 'mdl-checkbox__box-outline',\n FOCUS_HELPER: 'mdl-checkbox__focus-helper',\n TICK_OUTLINE: 'mdl-checkbox__tick-outline',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-checkbox__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialCheckbox.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialCheckbox.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialCheckbox.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\nMaterialCheckbox.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialCheckbox.prototype['checkToggleState'] = MaterialCheckbox.prototype.checkToggleState;\n/**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\nMaterialCheckbox.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialCheckbox.prototype['checkDisabled'] = MaterialCheckbox.prototype.checkDisabled;\n/**\n * Disable checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['disable'] = MaterialCheckbox.prototype.disable;\n/**\n * Enable checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['enable'] = MaterialCheckbox.prototype.enable;\n/**\n * Check checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['check'] = MaterialCheckbox.prototype.check;\n/**\n * Uncheck checkbox.\n *\n * @public\n */\nMaterialCheckbox.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\nMaterialCheckbox.prototype['uncheck'] = MaterialCheckbox.prototype.uncheck;\n/**\n * Initialize element.\n */\nMaterialCheckbox.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var boxOutline = document.createElement('span');\n boxOutline.classList.add(this.CssClasses_.BOX_OUTLINE);\n var tickContainer = document.createElement('span');\n tickContainer.classList.add(this.CssClasses_.FOCUS_HELPER);\n var tickOutline = document.createElement('span');\n tickOutline.classList.add(this.CssClasses_.TICK_OUTLINE);\n boxOutline.appendChild(tickOutline);\n this.element_.appendChild(tickContainer);\n this.element_.appendChild(boxOutline);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementMouseUp);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialCheckbox,\n classAsString: 'MaterialCheckbox',\n cssClass: 'mdl-js-checkbox',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for icon toggle MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialIconToggle = function MaterialIconToggle(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialIconToggle'] = MaterialIconToggle;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialIconToggle.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialIconToggle.prototype.CssClasses_ = {\n INPUT: 'mdl-icon-toggle__input',\n JS_RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-icon-toggle__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialIconToggle.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialIconToggle.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialIconToggle.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the inputs toggle state and update display.\n *\n * @public\n */\nMaterialIconToggle.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialIconToggle.prototype['checkToggleState'] = MaterialIconToggle.prototype.checkToggleState;\n/**\n * Check the inputs disabled state and update display.\n *\n * @public\n */\nMaterialIconToggle.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialIconToggle.prototype['checkDisabled'] = MaterialIconToggle.prototype.checkDisabled;\n/**\n * Disable icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['disable'] = MaterialIconToggle.prototype.disable;\n/**\n * Enable icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['enable'] = MaterialIconToggle.prototype.enable;\n/**\n * Check icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.check = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['check'] = MaterialIconToggle.prototype.check;\n/**\n * Uncheck icon toggle.\n *\n * @public\n */\nMaterialIconToggle.prototype.uncheck = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\nMaterialIconToggle.prototype['uncheck'] = MaterialIconToggle.prototype.uncheck;\n/**\n * Initialize element.\n */\nMaterialIconToggle.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.element_.classList.contains(this.CssClasses_.JS_RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.JS_RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.boundRippleMouseUp = this.onMouseUp_.bind(this);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundRippleMouseUp);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundInputOnChange = this.onChange_.bind(this);\n this.boundInputOnFocus = this.onFocus_.bind(this);\n this.boundInputOnBlur = this.onBlur_.bind(this);\n this.boundElementOnMouseUp = this.onMouseUp_.bind(this);\n this.inputElement_.addEventListener('change', this.boundInputOnChange);\n this.inputElement_.addEventListener('focus', this.boundInputOnFocus);\n this.inputElement_.addEventListener('blur', this.boundInputOnBlur);\n this.element_.addEventListener('mouseup', this.boundElementOnMouseUp);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialIconToggle,\n classAsString: 'MaterialIconToggle',\n cssClass: 'mdl-js-icon-toggle',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for dropdown MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialMenu = function MaterialMenu(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialMenu'] = MaterialMenu;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialMenu.prototype.Constant_ = {\n // Total duration of the menu animation.\n TRANSITION_DURATION_SECONDS: 0.3,\n // The fraction of the total duration we want to use for menu item animations.\n TRANSITION_DURATION_FRACTION: 0.8,\n // How long the menu stays open after choosing an option (so the user can see\n // the ripple).\n CLOSE_TIMEOUT: 150\n};\n/**\n * Keycodes, for code readability.\n *\n * @enum {number}\n * @private\n */\nMaterialMenu.prototype.Keycodes_ = {\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n UP_ARROW: 38,\n DOWN_ARROW: 40\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialMenu.prototype.CssClasses_ = {\n CONTAINER: 'mdl-menu__container',\n OUTLINE: 'mdl-menu__outline',\n ITEM: 'mdl-menu__item',\n ITEM_RIPPLE_CONTAINER: 'mdl-menu__item-ripple-container',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n // Statuses\n IS_UPGRADED: 'is-upgraded',\n IS_VISIBLE: 'is-visible',\n IS_ANIMATING: 'is-animating',\n // Alignment options\n BOTTOM_LEFT: 'mdl-menu--bottom-left',\n // This is the default.\n BOTTOM_RIGHT: 'mdl-menu--bottom-right',\n TOP_LEFT: 'mdl-menu--top-left',\n TOP_RIGHT: 'mdl-menu--top-right',\n UNALIGNED: 'mdl-menu--unaligned'\n};\n/**\n * Initialize element.\n */\nMaterialMenu.prototype.init = function () {\n if (this.element_) {\n // Create container for the menu.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n this.container_ = container;\n // Create outline for the menu (shadow and background).\n var outline = document.createElement('div');\n outline.classList.add(this.CssClasses_.OUTLINE);\n this.outline_ = outline;\n container.insertBefore(outline, this.element_);\n // Find the \"for\" element and bind events to it.\n var forElId = this.element_.getAttribute('for') || this.element_.getAttribute('data-mdl-for');\n var forEl = null;\n if (forElId) {\n forEl = document.getElementById(forElId);\n if (forEl) {\n this.forElement_ = forEl;\n forEl.addEventListener('click', this.handleForClick_.bind(this));\n forEl.addEventListener('keydown', this.handleForKeyboardEvent_.bind(this));\n }\n }\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n this.boundItemKeydown_ = this.handleItemKeyboardEvent_.bind(this);\n this.boundItemClick_ = this.handleItemClick_.bind(this);\n for (var i = 0; i < items.length; i++) {\n // Add a listener to each menu item.\n items[i].addEventListener('click', this.boundItemClick_);\n // Add a tab index to each menu item.\n items[i].tabIndex = '-1';\n // Add a keyboard listener to each menu item.\n items[i].addEventListener('keydown', this.boundItemKeydown_);\n }\n // Add ripple classes to each item, if the user has enabled ripples.\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n for (i = 0; i < items.length; i++) {\n var item = items[i];\n var rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.ITEM_RIPPLE_CONTAINER);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n item.appendChild(rippleContainer);\n item.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n }\n }\n // Copy alignment classes to the container, so the outline can use them.\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.BOTTOM_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_LEFT);\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n this.outline_.classList.add(this.CssClasses_.TOP_RIGHT);\n }\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n this.outline_.classList.add(this.CssClasses_.UNALIGNED);\n }\n container.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n/**\n * Handles a click on the \"for\" element, by positioning the menu and then\n * toggling it.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleForClick_ = function (evt) {\n if (this.element_ && this.forElement_) {\n var rect = this.forElement_.getBoundingClientRect();\n var forRect = this.forElement_.parentElement.getBoundingClientRect();\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Position below the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Position above the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Position above the \"for\" element, aligned to its right.\n this.container_.style.right = forRect.right - rect.right + 'px';\n this.container_.style.bottom = forRect.bottom - rect.top + 'px';\n } else {\n // Default: position below the \"for\" element, aligned to its left.\n this.container_.style.left = this.forElement_.offsetLeft + 'px';\n this.container_.style.top = this.forElement_.offsetTop + this.forElement_.offsetHeight + 'px';\n }\n }\n this.toggle(evt);\n};\n/**\n * Handles a keyboard event on the \"for\" element.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleForKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_ && this.forElement_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n items[items.length - 1].focus();\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n items[0].focus();\n }\n }\n }\n};\n/**\n * Handles a keyboard event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleItemKeyboardEvent_ = function (evt) {\n if (this.element_ && this.container_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM + ':not([disabled])');\n if (items && items.length > 0 && this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n var currentIndex = Array.prototype.slice.call(items).indexOf(evt.target);\n if (evt.keyCode === this.Keycodes_.UP_ARROW) {\n evt.preventDefault();\n if (currentIndex > 0) {\n items[currentIndex - 1].focus();\n } else {\n items[items.length - 1].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.DOWN_ARROW) {\n evt.preventDefault();\n if (items.length > currentIndex + 1) {\n items[currentIndex + 1].focus();\n } else {\n items[0].focus();\n }\n } else if (evt.keyCode === this.Keycodes_.SPACE || evt.keyCode === this.Keycodes_.ENTER) {\n evt.preventDefault();\n // Send mousedown and mouseup to trigger ripple.\n var e = new MouseEvent('mousedown');\n evt.target.dispatchEvent(e);\n e = new MouseEvent('mouseup');\n evt.target.dispatchEvent(e);\n // Send click.\n evt.target.click();\n } else if (evt.keyCode === this.Keycodes_.ESCAPE) {\n evt.preventDefault();\n this.hide();\n }\n }\n }\n};\n/**\n * Handles a click event on an item.\n *\n * @param {Event} evt The event that fired.\n * @private\n */\nMaterialMenu.prototype.handleItemClick_ = function (evt) {\n if (evt.target.hasAttribute('disabled')) {\n evt.stopPropagation();\n } else {\n // Wait some time before closing menu, so the user can see the ripple.\n this.closing_ = true;\n window.setTimeout(function (evt) {\n this.hide();\n this.closing_ = false;\n }.bind(this), this.Constant_.CLOSE_TIMEOUT);\n }\n};\n/**\n * Calculates the initial clip (for opening the menu) or final clip (for closing\n * it), and applies it. This allows us to animate from or to the correct point,\n * that is, the point it's aligned to in the \"for\" element.\n *\n * @param {number} height Height of the clip rectangle\n * @param {number} width Width of the clip rectangle\n * @private\n */\nMaterialMenu.prototype.applyClip_ = function (height, width) {\n if (this.element_.classList.contains(this.CssClasses_.UNALIGNED)) {\n // Do not clip.\n this.element_.style.clip = '';\n } else if (this.element_.classList.contains(this.CssClasses_.BOTTOM_RIGHT)) {\n // Clip to the top right corner of the menu.\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + '0 ' + width + 'px)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT)) {\n // Clip to the bottom left corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px 0 ' + height + 'px 0)';\n } else if (this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n // Clip to the bottom right corner of the menu.\n this.element_.style.clip = 'rect(' + height + 'px ' + width + 'px ' + height + 'px ' + width + 'px)';\n } else {\n // Default: do not clip (same as clipping to the top left corner).\n this.element_.style.clip = '';\n }\n};\n/**\n * Cleanup function to remove animation listeners.\n *\n * @param {Event} evt\n * @private\n */\nMaterialMenu.prototype.removeAnimationEndListener_ = function (evt) {\n evt.target.classList.remove(MaterialMenu.prototype.CssClasses_.IS_ANIMATING);\n};\n/**\n * Adds an event listener to clean up after the animation ends.\n *\n * @private\n */\nMaterialMenu.prototype.addAnimationEndListener_ = function () {\n this.element_.addEventListener('transitionend', this.removeAnimationEndListener_);\n this.element_.addEventListener('webkitTransitionEnd', this.removeAnimationEndListener_);\n};\n/**\n * Displays the menu.\n *\n * @public\n */\nMaterialMenu.prototype.show = function (evt) {\n if (this.element_ && this.container_ && this.outline_) {\n // Measure the inner element.\n var height = this.element_.getBoundingClientRect().height;\n var width = this.element_.getBoundingClientRect().width;\n // Apply the inner element's size to the container and outline.\n this.container_.style.width = width + 'px';\n this.container_.style.height = height + 'px';\n this.outline_.style.width = width + 'px';\n this.outline_.style.height = height + 'px';\n var transitionDuration = this.Constant_.TRANSITION_DURATION_SECONDS * this.Constant_.TRANSITION_DURATION_FRACTION;\n // Calculate transition delays for individual menu items, so that they fade\n // in one at a time.\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n for (var i = 0; i < items.length; i++) {\n var itemDelay = null;\n if (this.element_.classList.contains(this.CssClasses_.TOP_LEFT) || this.element_.classList.contains(this.CssClasses_.TOP_RIGHT)) {\n itemDelay = (height - items[i].offsetTop - items[i].offsetHeight) / height * transitionDuration + 's';\n } else {\n itemDelay = items[i].offsetTop / height * transitionDuration + 's';\n }\n items[i].style.transitionDelay = itemDelay;\n }\n // Apply the initial clip to the text before we start animating.\n this.applyClip_(height, width);\n // Wait for the next frame, turn on animation, and apply the final clip.\n // Also make it visible. This triggers the transitions.\n window.requestAnimationFrame(function () {\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.element_.style.clip = 'rect(0 ' + width + 'px ' + height + 'px 0)';\n this.container_.classList.add(this.CssClasses_.IS_VISIBLE);\n }.bind(this));\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n // Add a click listener to the document, to close the menu.\n var callback = function (e) {\n // Check to see if the document is processing the same event that\n // displayed the menu in the first place. If so, do nothing.\n // Also check to see if the menu is in the process of closing itself, and\n // do nothing in that case.\n // Also check if the clicked element is a menu item\n // if so, do nothing.\n if (e !== evt && !this.closing_ && e.target.parentNode !== this.element_) {\n document.removeEventListener('click', callback);\n this.hide();\n }\n }.bind(this);\n document.addEventListener('click', callback);\n }\n};\nMaterialMenu.prototype['show'] = MaterialMenu.prototype.show;\n/**\n * Hides the menu.\n *\n * @public\n */\nMaterialMenu.prototype.hide = function () {\n if (this.element_ && this.container_ && this.outline_) {\n var items = this.element_.querySelectorAll('.' + this.CssClasses_.ITEM);\n // Remove all transition delays; menu items fade out concurrently.\n for (var i = 0; i < items.length; i++) {\n items[i].style.removeProperty('transition-delay');\n }\n // Measure the inner element.\n var rect = this.element_.getBoundingClientRect();\n var height = rect.height;\n var width = rect.width;\n // Turn on animation, and apply the final clip. Also make invisible.\n // This triggers the transitions.\n this.element_.classList.add(this.CssClasses_.IS_ANIMATING);\n this.applyClip_(height, width);\n this.container_.classList.remove(this.CssClasses_.IS_VISIBLE);\n // Clean up after the animation is complete.\n this.addAnimationEndListener_();\n }\n};\nMaterialMenu.prototype['hide'] = MaterialMenu.prototype.hide;\n/**\n * Displays or hides the menu, depending on current state.\n *\n * @public\n */\nMaterialMenu.prototype.toggle = function (evt) {\n if (this.container_.classList.contains(this.CssClasses_.IS_VISIBLE)) {\n this.hide();\n } else {\n this.show(evt);\n }\n};\nMaterialMenu.prototype['toggle'] = MaterialMenu.prototype.toggle;\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialMenu,\n classAsString: 'MaterialMenu',\n cssClass: 'mdl-js-menu',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Progress MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialProgress = function MaterialProgress(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialProgress'] = MaterialProgress;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialProgress.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialProgress.prototype.CssClasses_ = { INDETERMINATE_CLASS: 'mdl-progress__indeterminate' };\n/**\n * Set the current progress of the progressbar.\n *\n * @param {number} p Percentage of the progress (0-100)\n * @public\n */\nMaterialProgress.prototype.setProgress = function (p) {\n if (this.element_.classList.contains(this.CssClasses_.INDETERMINATE_CLASS)) {\n return;\n }\n this.progressbar_.style.width = p + '%';\n};\nMaterialProgress.prototype['setProgress'] = MaterialProgress.prototype.setProgress;\n/**\n * Set the current progress of the buffer.\n *\n * @param {number} p Percentage of the buffer (0-100)\n * @public\n */\nMaterialProgress.prototype.setBuffer = function (p) {\n this.bufferbar_.style.width = p + '%';\n this.auxbar_.style.width = 100 - p + '%';\n};\nMaterialProgress.prototype['setBuffer'] = MaterialProgress.prototype.setBuffer;\n/**\n * Initialize element.\n */\nMaterialProgress.prototype.init = function () {\n if (this.element_) {\n var el = document.createElement('div');\n el.className = 'progressbar bar bar1';\n this.element_.appendChild(el);\n this.progressbar_ = el;\n el = document.createElement('div');\n el.className = 'bufferbar bar bar2';\n this.element_.appendChild(el);\n this.bufferbar_ = el;\n el = document.createElement('div');\n el.className = 'auxbar bar bar3';\n this.element_.appendChild(el);\n this.auxbar_ = el;\n this.progressbar_.style.width = '0%';\n this.bufferbar_.style.width = '100%';\n this.auxbar_.style.width = '0%';\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialProgress,\n classAsString: 'MaterialProgress',\n cssClass: 'mdl-js-progress',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Radio MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialRadio = function MaterialRadio(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialRadio'] = MaterialRadio;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialRadio.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialRadio.prototype.CssClasses_ = {\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked',\n IS_UPGRADED: 'is-upgraded',\n JS_RADIO: 'mdl-js-radio',\n RADIO_BTN: 'mdl-radio__button',\n RADIO_OUTER_CIRCLE: 'mdl-radio__outer-circle',\n RADIO_INNER_CIRCLE: 'mdl-radio__inner-circle',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-radio__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onChange_ = function (event) {\n // Since other radio buttons don't get change events, we need to look for\n // them to update their classes.\n var radios = document.getElementsByClassName(this.CssClasses_.JS_RADIO);\n for (var i = 0; i < radios.length; i++) {\n var button = radios[i].querySelector('.' + this.CssClasses_.RADIO_BTN);\n // Different name == different group, so no point updating those.\n if (button.getAttribute('name') === this.btnElement_.getAttribute('name')) {\n if (typeof radios[i]['MaterialRadio'] !== 'undefined') {\n radios[i]['MaterialRadio'].updateClasses_();\n }\n }\n }\n};\n/**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRadio.prototype.onMouseup_ = function (event) {\n this.blur_();\n};\n/**\n * Update classes.\n *\n * @private\n */\nMaterialRadio.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialRadio.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.btnElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the components disabled state.\n *\n * @public\n */\nMaterialRadio.prototype.checkDisabled = function () {\n if (this.btnElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialRadio.prototype['checkDisabled'] = MaterialRadio.prototype.checkDisabled;\n/**\n * Check the components toggled state.\n *\n * @public\n */\nMaterialRadio.prototype.checkToggleState = function () {\n if (this.btnElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialRadio.prototype['checkToggleState'] = MaterialRadio.prototype.checkToggleState;\n/**\n * Disable radio.\n *\n * @public\n */\nMaterialRadio.prototype.disable = function () {\n this.btnElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialRadio.prototype['disable'] = MaterialRadio.prototype.disable;\n/**\n * Enable radio.\n *\n * @public\n */\nMaterialRadio.prototype.enable = function () {\n this.btnElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialRadio.prototype['enable'] = MaterialRadio.prototype.enable;\n/**\n * Check radio.\n *\n * @public\n */\nMaterialRadio.prototype.check = function () {\n this.btnElement_.checked = true;\n this.onChange_(null);\n};\nMaterialRadio.prototype['check'] = MaterialRadio.prototype.check;\n/**\n * Uncheck radio.\n *\n * @public\n */\nMaterialRadio.prototype.uncheck = function () {\n this.btnElement_.checked = false;\n this.onChange_(null);\n};\nMaterialRadio.prototype['uncheck'] = MaterialRadio.prototype.uncheck;\n/**\n * Initialize element.\n */\nMaterialRadio.prototype.init = function () {\n if (this.element_) {\n this.btnElement_ = this.element_.querySelector('.' + this.CssClasses_.RADIO_BTN);\n this.boundChangeHandler_ = this.onChange_.bind(this);\n this.boundFocusHandler_ = this.onChange_.bind(this);\n this.boundBlurHandler_ = this.onBlur_.bind(this);\n this.boundMouseUpHandler_ = this.onMouseup_.bind(this);\n var outerCircle = document.createElement('span');\n outerCircle.classList.add(this.CssClasses_.RADIO_OUTER_CIRCLE);\n var innerCircle = document.createElement('span');\n innerCircle.classList.add(this.CssClasses_.RADIO_INNER_CIRCLE);\n this.element_.appendChild(outerCircle);\n this.element_.appendChild(innerCircle);\n var rippleContainer;\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n rippleContainer = document.createElement('span');\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n rippleContainer.classList.add(this.CssClasses_.RIPPLE_CENTER);\n rippleContainer.addEventListener('mouseup', this.boundMouseUpHandler_);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n rippleContainer.appendChild(ripple);\n this.element_.appendChild(rippleContainer);\n }\n this.btnElement_.addEventListener('change', this.boundChangeHandler_);\n this.btnElement_.addEventListener('focus', this.boundFocusHandler_);\n this.btnElement_.addEventListener('blur', this.boundBlurHandler_);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler_);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialRadio,\n classAsString: 'MaterialRadio',\n cssClass: 'mdl-js-radio',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Slider MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSlider = function MaterialSlider(element) {\n this.element_ = element;\n // Browser feature detection.\n this.isIE_ = window.navigator.msPointerEnabled;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialSlider'] = MaterialSlider;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSlider.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSlider.prototype.CssClasses_ = {\n IE_CONTAINER: 'mdl-slider__ie-container',\n SLIDER_CONTAINER: 'mdl-slider__container',\n BACKGROUND_FLEX: 'mdl-slider__background-flex',\n BACKGROUND_LOWER: 'mdl-slider__background-lower',\n BACKGROUND_UPPER: 'mdl-slider__background-upper',\n IS_LOWEST_VALUE: 'is-lowest-value',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Handle input on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onInput_ = function (event) {\n this.updateValueStyles_();\n};\n/**\n * Handle change on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onChange_ = function (event) {\n this.updateValueStyles_();\n};\n/**\n * Handle mouseup on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSlider.prototype.onMouseUp_ = function (event) {\n event.target.blur();\n};\n/**\n * Handle mousedown on container element.\n * This handler is purpose is to not require the use to click\n * exactly on the 2px slider element, as FireFox seems to be very\n * strict about this.\n *\n * @param {Event} event The event that fired.\n * @private\n * @suppress {missingProperties}\n */\nMaterialSlider.prototype.onContainerMouseDown_ = function (event) {\n // If this click is not on the parent element (but rather some child)\n // ignore. It may still bubble up.\n if (event.target !== this.element_.parentElement) {\n return;\n }\n // Discard the original event and create a new event that\n // is on the slider element.\n event.preventDefault();\n var newEvent = new MouseEvent('mousedown', {\n target: event.target,\n buttons: event.buttons,\n clientX: event.clientX,\n clientY: this.element_.getBoundingClientRect().y\n });\n this.element_.dispatchEvent(newEvent);\n};\n/**\n * Handle updating of values.\n *\n * @private\n */\nMaterialSlider.prototype.updateValueStyles_ = function () {\n // Calculate and apply percentages to div structure behind slider.\n var fraction = (this.element_.value - this.element_.min) / (this.element_.max - this.element_.min);\n if (fraction === 0) {\n this.element_.classList.add(this.CssClasses_.IS_LOWEST_VALUE);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_LOWEST_VALUE);\n }\n if (!this.isIE_) {\n this.backgroundLower_.style.flex = fraction;\n this.backgroundLower_.style.webkitFlex = fraction;\n this.backgroundUpper_.style.flex = 1 - fraction;\n this.backgroundUpper_.style.webkitFlex = 1 - fraction;\n }\n};\n// Public methods.\n/**\n * Disable slider.\n *\n * @public\n */\nMaterialSlider.prototype.disable = function () {\n this.element_.disabled = true;\n};\nMaterialSlider.prototype['disable'] = MaterialSlider.prototype.disable;\n/**\n * Enable slider.\n *\n * @public\n */\nMaterialSlider.prototype.enable = function () {\n this.element_.disabled = false;\n};\nMaterialSlider.prototype['enable'] = MaterialSlider.prototype.enable;\n/**\n * Update slider value.\n *\n * @param {number} value The value to which to set the control (optional).\n * @public\n */\nMaterialSlider.prototype.change = function (value) {\n if (typeof value !== 'undefined') {\n this.element_.value = value;\n }\n this.updateValueStyles_();\n};\nMaterialSlider.prototype['change'] = MaterialSlider.prototype.change;\n/**\n * Initialize element.\n */\nMaterialSlider.prototype.init = function () {\n if (this.element_) {\n if (this.isIE_) {\n // Since we need to specify a very large height in IE due to\n // implementation limitations, we add a parent here that trims it down to\n // a reasonable size.\n var containerIE = document.createElement('div');\n containerIE.classList.add(this.CssClasses_.IE_CONTAINER);\n this.element_.parentElement.insertBefore(containerIE, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n containerIE.appendChild(this.element_);\n } else {\n // For non-IE browsers, we need a div structure that sits behind the\n // slider and allows us to style the left and right sides of it with\n // different colors.\n var container = document.createElement('div');\n container.classList.add(this.CssClasses_.SLIDER_CONTAINER);\n this.element_.parentElement.insertBefore(container, this.element_);\n this.element_.parentElement.removeChild(this.element_);\n container.appendChild(this.element_);\n var backgroundFlex = document.createElement('div');\n backgroundFlex.classList.add(this.CssClasses_.BACKGROUND_FLEX);\n container.appendChild(backgroundFlex);\n this.backgroundLower_ = document.createElement('div');\n this.backgroundLower_.classList.add(this.CssClasses_.BACKGROUND_LOWER);\n backgroundFlex.appendChild(this.backgroundLower_);\n this.backgroundUpper_ = document.createElement('div');\n this.backgroundUpper_.classList.add(this.CssClasses_.BACKGROUND_UPPER);\n backgroundFlex.appendChild(this.backgroundUpper_);\n }\n this.boundInputHandler = this.onInput_.bind(this);\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n this.boundContainerMouseDownHandler = this.onContainerMouseDown_.bind(this);\n this.element_.addEventListener('input', this.boundInputHandler);\n this.element_.addEventListener('change', this.boundChangeHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.element_.parentElement.addEventListener('mousedown', this.boundContainerMouseDownHandler);\n this.updateValueStyles_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSlider,\n classAsString: 'MaterialSlider',\n cssClass: 'mdl-js-slider',\n widget: true\n});","/**\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Snackbar MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSnackbar = function MaterialSnackbar(element) {\n this.element_ = element;\n this.textElement_ = this.element_.querySelector('.' + this.cssClasses_.MESSAGE);\n this.actionElement_ = this.element_.querySelector('.' + this.cssClasses_.ACTION);\n if (!this.textElement_) {\n throw new Error('There must be a message element for a snackbar.');\n }\n if (!this.actionElement_) {\n throw new Error('There must be an action element for a snackbar.');\n }\n this.active = false;\n this.actionHandler_ = undefined;\n this.message_ = undefined;\n this.actionText_ = undefined;\n this.queuedNotifications_ = [];\n this.setActionHidden_(true);\n};\nwindow['MaterialSnackbar'] = MaterialSnackbar;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSnackbar.prototype.Constant_ = {\n // The duration of the snackbar show/hide animation, in ms.\n ANIMATION_LENGTH: 250\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSnackbar.prototype.cssClasses_ = {\n SNACKBAR: 'mdl-snackbar',\n MESSAGE: 'mdl-snackbar__text',\n ACTION: 'mdl-snackbar__action',\n ACTIVE: 'mdl-snackbar--active'\n};\n/**\n * Display the snackbar.\n *\n * @private\n */\nMaterialSnackbar.prototype.displaySnackbar_ = function () {\n this.element_.setAttribute('aria-hidden', 'true');\n if (this.actionHandler_) {\n this.actionElement_.textContent = this.actionText_;\n this.actionElement_.addEventListener('click', this.actionHandler_);\n this.setActionHidden_(false);\n }\n this.textElement_.textContent = this.message_;\n this.element_.classList.add(this.cssClasses_.ACTIVE);\n this.element_.setAttribute('aria-hidden', 'false');\n setTimeout(this.cleanup_.bind(this), this.timeout_);\n};\n/**\n * Show the snackbar.\n *\n * @param {Object} data The data for the notification.\n * @public\n */\nMaterialSnackbar.prototype.showSnackbar = function (data) {\n if (data === undefined) {\n throw new Error('Please provide a data object with at least a message to display.');\n }\n if (data['message'] === undefined) {\n throw new Error('Please provide a message to be displayed.');\n }\n if (data['actionHandler'] && !data['actionText']) {\n throw new Error('Please provide action text with the handler.');\n }\n if (this.active) {\n this.queuedNotifications_.push(data);\n } else {\n this.active = true;\n this.message_ = data['message'];\n if (data['timeout']) {\n this.timeout_ = data['timeout'];\n } else {\n this.timeout_ = 2750;\n }\n if (data['actionHandler']) {\n this.actionHandler_ = data['actionHandler'];\n }\n if (data['actionText']) {\n this.actionText_ = data['actionText'];\n }\n this.displaySnackbar_();\n }\n};\nMaterialSnackbar.prototype['showSnackbar'] = MaterialSnackbar.prototype.showSnackbar;\n/**\n * Check if the queue has items within it.\n * If it does, display the next entry.\n *\n * @private\n */\nMaterialSnackbar.prototype.checkQueue_ = function () {\n if (this.queuedNotifications_.length > 0) {\n this.showSnackbar(this.queuedNotifications_.shift());\n }\n};\n/**\n * Cleanup the snackbar event listeners and accessiblity attributes.\n *\n * @private\n */\nMaterialSnackbar.prototype.cleanup_ = function () {\n this.element_.classList.remove(this.cssClasses_.ACTIVE);\n setTimeout(function () {\n this.element_.setAttribute('aria-hidden', 'true');\n this.textElement_.textContent = '';\n if (!Boolean(this.actionElement_.getAttribute('aria-hidden'))) {\n this.setActionHidden_(true);\n this.actionElement_.textContent = '';\n this.actionElement_.removeEventListener('click', this.actionHandler_);\n }\n this.actionHandler_ = undefined;\n this.message_ = undefined;\n this.actionText_ = undefined;\n this.active = false;\n this.checkQueue_();\n }.bind(this), this.Constant_.ANIMATION_LENGTH);\n};\n/**\n * Set the action handler hidden state.\n *\n * @param {boolean} value\n * @private\n */\nMaterialSnackbar.prototype.setActionHidden_ = function (value) {\n if (value) {\n this.actionElement_.setAttribute('aria-hidden', 'true');\n } else {\n this.actionElement_.removeAttribute('aria-hidden');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSnackbar,\n classAsString: 'MaterialSnackbar',\n cssClass: 'mdl-js-snackbar',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Spinner MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @param {HTMLElement} element The element that will be upgraded.\n * @constructor\n */\nvar MaterialSpinner = function MaterialSpinner(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialSpinner'] = MaterialSpinner;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSpinner.prototype.Constant_ = { MDL_SPINNER_LAYER_COUNT: 4 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSpinner.prototype.CssClasses_ = {\n MDL_SPINNER_LAYER: 'mdl-spinner__layer',\n MDL_SPINNER_CIRCLE_CLIPPER: 'mdl-spinner__circle-clipper',\n MDL_SPINNER_CIRCLE: 'mdl-spinner__circle',\n MDL_SPINNER_GAP_PATCH: 'mdl-spinner__gap-patch',\n MDL_SPINNER_LEFT: 'mdl-spinner__left',\n MDL_SPINNER_RIGHT: 'mdl-spinner__right'\n};\n/**\n * Auxiliary method to create a spinner layer.\n *\n * @param {number} index Index of the layer to be created.\n * @public\n */\nMaterialSpinner.prototype.createLayer = function (index) {\n var layer = document.createElement('div');\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER);\n layer.classList.add(this.CssClasses_.MDL_SPINNER_LAYER + '-' + index);\n var leftClipper = document.createElement('div');\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n leftClipper.classList.add(this.CssClasses_.MDL_SPINNER_LEFT);\n var gapPatch = document.createElement('div');\n gapPatch.classList.add(this.CssClasses_.MDL_SPINNER_GAP_PATCH);\n var rightClipper = document.createElement('div');\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE_CLIPPER);\n rightClipper.classList.add(this.CssClasses_.MDL_SPINNER_RIGHT);\n var circleOwners = [\n leftClipper,\n gapPatch,\n rightClipper\n ];\n for (var i = 0; i < circleOwners.length; i++) {\n var circle = document.createElement('div');\n circle.classList.add(this.CssClasses_.MDL_SPINNER_CIRCLE);\n circleOwners[i].appendChild(circle);\n }\n layer.appendChild(leftClipper);\n layer.appendChild(gapPatch);\n layer.appendChild(rightClipper);\n this.element_.appendChild(layer);\n};\nMaterialSpinner.prototype['createLayer'] = MaterialSpinner.prototype.createLayer;\n/**\n * Stops the spinner animation.\n * Public method for users who need to stop the spinner for any reason.\n *\n * @public\n */\nMaterialSpinner.prototype.stop = function () {\n this.element_.classList.remove('is-active');\n};\nMaterialSpinner.prototype['stop'] = MaterialSpinner.prototype.stop;\n/**\n * Starts the spinner animation.\n * Public method for users who need to manually start the spinner for any reason\n * (instead of just adding the 'is-active' class to their markup).\n *\n * @public\n */\nMaterialSpinner.prototype.start = function () {\n this.element_.classList.add('is-active');\n};\nMaterialSpinner.prototype['start'] = MaterialSpinner.prototype.start;\n/**\n * Initialize element.\n */\nMaterialSpinner.prototype.init = function () {\n if (this.element_) {\n for (var i = 1; i <= this.Constant_.MDL_SPINNER_LAYER_COUNT; i++) {\n this.createLayer(i);\n }\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSpinner,\n classAsString: 'MaterialSpinner',\n cssClass: 'mdl-js-spinner',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Checkbox MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialSwitch = function MaterialSwitch(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialSwitch'] = MaterialSwitch;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialSwitch.prototype.Constant_ = { TINY_TIMEOUT: 0.001 };\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialSwitch.prototype.CssClasses_ = {\n INPUT: 'mdl-switch__input',\n TRACK: 'mdl-switch__track',\n THUMB: 'mdl-switch__thumb',\n FOCUS_HELPER: 'mdl-switch__focus-helper',\n RIPPLE_EFFECT: 'mdl-js-ripple-effect',\n RIPPLE_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE_CONTAINER: 'mdl-switch__ripple-container',\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE: 'mdl-ripple',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_CHECKED: 'is-checked'\n};\n/**\n * Handle change of state.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onChange_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus of element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle mouseup.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialSwitch.prototype.onMouseUp_ = function (event) {\n this.blur_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialSwitch.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkToggleState();\n};\n/**\n * Add blur.\n *\n * @private\n */\nMaterialSwitch.prototype.blur_ = function () {\n // TODO: figure out why there's a focus event being fired after our blur,\n // so that we can avoid this hack.\n window.setTimeout(function () {\n this.inputElement_.blur();\n }.bind(this), this.Constant_.TINY_TIMEOUT);\n};\n// Public methods.\n/**\n * Check the components disabled state.\n *\n * @public\n */\nMaterialSwitch.prototype.checkDisabled = function () {\n if (this.inputElement_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialSwitch.prototype['checkDisabled'] = MaterialSwitch.prototype.checkDisabled;\n/**\n * Check the components toggled state.\n *\n * @public\n */\nMaterialSwitch.prototype.checkToggleState = function () {\n if (this.inputElement_.checked) {\n this.element_.classList.add(this.CssClasses_.IS_CHECKED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_CHECKED);\n }\n};\nMaterialSwitch.prototype['checkToggleState'] = MaterialSwitch.prototype.checkToggleState;\n/**\n * Disable switch.\n *\n * @public\n */\nMaterialSwitch.prototype.disable = function () {\n this.inputElement_.disabled = true;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['disable'] = MaterialSwitch.prototype.disable;\n/**\n * Enable switch.\n *\n * @public\n */\nMaterialSwitch.prototype.enable = function () {\n this.inputElement_.disabled = false;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['enable'] = MaterialSwitch.prototype.enable;\n/**\n * Activate switch.\n *\n * @public\n */\nMaterialSwitch.prototype.on = function () {\n this.inputElement_.checked = true;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['on'] = MaterialSwitch.prototype.on;\n/**\n * Deactivate switch.\n *\n * @public\n */\nMaterialSwitch.prototype.off = function () {\n this.inputElement_.checked = false;\n this.updateClasses_();\n};\nMaterialSwitch.prototype['off'] = MaterialSwitch.prototype.off;\n/**\n * Initialize element.\n */\nMaterialSwitch.prototype.init = function () {\n if (this.element_) {\n this.inputElement_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n var track = document.createElement('div');\n track.classList.add(this.CssClasses_.TRACK);\n var thumb = document.createElement('div');\n thumb.classList.add(this.CssClasses_.THUMB);\n var focusHelper = document.createElement('span');\n focusHelper.classList.add(this.CssClasses_.FOCUS_HELPER);\n thumb.appendChild(focusHelper);\n this.element_.appendChild(track);\n this.element_.appendChild(thumb);\n this.boundMouseUpHandler = this.onMouseUp_.bind(this);\n if (this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT)) {\n this.element_.classList.add(this.CssClasses_.RIPPLE_IGNORE_EVENTS);\n this.rippleContainerElement_ = document.createElement('span');\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CONTAINER);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_EFFECT);\n this.rippleContainerElement_.classList.add(this.CssClasses_.RIPPLE_CENTER);\n this.rippleContainerElement_.addEventListener('mouseup', this.boundMouseUpHandler);\n var ripple = document.createElement('span');\n ripple.classList.add(this.CssClasses_.RIPPLE);\n this.rippleContainerElement_.appendChild(ripple);\n this.element_.appendChild(this.rippleContainerElement_);\n }\n this.boundChangeHandler = this.onChange_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.inputElement_.addEventListener('change', this.boundChangeHandler);\n this.inputElement_.addEventListener('focus', this.boundFocusHandler);\n this.inputElement_.addEventListener('blur', this.boundBlurHandler);\n this.element_.addEventListener('mouseup', this.boundMouseUpHandler);\n this.updateClasses_();\n this.element_.classList.add('is-upgraded');\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialSwitch,\n classAsString: 'MaterialSwitch',\n cssClass: 'mdl-js-switch',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Textfield MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTextfield = function MaterialTextfield(element) {\n this.element_ = element;\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialTextfield'] = MaterialTextfield;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialTextfield.prototype.Constant_ = {\n NO_MAX_ROWS: -1,\n MAX_ROWS_ATTRIBUTE: 'maxrows'\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialTextfield.prototype.CssClasses_ = {\n LABEL: 'mdl-textfield__label',\n INPUT: 'mdl-textfield__input',\n IS_DIRTY: 'is-dirty',\n IS_FOCUSED: 'is-focused',\n IS_DISABLED: 'is-disabled',\n IS_INVALID: 'is-invalid',\n IS_UPGRADED: 'is-upgraded',\n HAS_PLACEHOLDER: 'has-placeholder'\n};\n/**\n * Handle input being entered.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onKeyDown_ = function (event) {\n var currentRowCount = event.target.value.split('\\n').length;\n if (event.keyCode === 13) {\n if (currentRowCount >= this.maxRows) {\n event.preventDefault();\n }\n }\n};\n/**\n * Handle focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onFocus_ = function (event) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle lost focus.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onBlur_ = function (event) {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n};\n/**\n * Handle reset event from out side.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTextfield.prototype.onReset_ = function (event) {\n this.updateClasses_();\n};\n/**\n * Handle class updates.\n *\n * @private\n */\nMaterialTextfield.prototype.updateClasses_ = function () {\n this.checkDisabled();\n this.checkValidity();\n this.checkDirty();\n this.checkFocus();\n};\n// Public methods.\n/**\n * Check the disabled state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkDisabled = function () {\n if (this.input_.disabled) {\n this.element_.classList.add(this.CssClasses_.IS_DISABLED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DISABLED);\n }\n};\nMaterialTextfield.prototype['checkDisabled'] = MaterialTextfield.prototype.checkDisabled;\n/**\n * Check the focus state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkFocus = function () {\n if (Boolean(this.element_.querySelector(':focus'))) {\n this.element_.classList.add(this.CssClasses_.IS_FOCUSED);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_FOCUSED);\n }\n};\nMaterialTextfield.prototype['checkFocus'] = MaterialTextfield.prototype.checkFocus;\n/**\n * Check the validity state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkValidity = function () {\n if (this.input_.validity) {\n if (this.input_.validity.valid) {\n this.element_.classList.remove(this.CssClasses_.IS_INVALID);\n } else {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n }\n};\nMaterialTextfield.prototype['checkValidity'] = MaterialTextfield.prototype.checkValidity;\n/**\n * Check the dirty state and update field accordingly.\n *\n * @public\n */\nMaterialTextfield.prototype.checkDirty = function () {\n if (this.input_.value && this.input_.value.length > 0) {\n this.element_.classList.add(this.CssClasses_.IS_DIRTY);\n } else {\n this.element_.classList.remove(this.CssClasses_.IS_DIRTY);\n }\n};\nMaterialTextfield.prototype['checkDirty'] = MaterialTextfield.prototype.checkDirty;\n/**\n * Disable text field.\n *\n * @public\n */\nMaterialTextfield.prototype.disable = function () {\n this.input_.disabled = true;\n this.updateClasses_();\n};\nMaterialTextfield.prototype['disable'] = MaterialTextfield.prototype.disable;\n/**\n * Enable text field.\n *\n * @public\n */\nMaterialTextfield.prototype.enable = function () {\n this.input_.disabled = false;\n this.updateClasses_();\n};\nMaterialTextfield.prototype['enable'] = MaterialTextfield.prototype.enable;\n/**\n * Update text field value.\n *\n * @param {string} value The value to which to set the control (optional).\n * @public\n */\nMaterialTextfield.prototype.change = function (value) {\n this.input_.value = value || '';\n this.updateClasses_();\n};\nMaterialTextfield.prototype['change'] = MaterialTextfield.prototype.change;\n/**\n * Initialize element.\n */\nMaterialTextfield.prototype.init = function () {\n if (this.element_) {\n this.label_ = this.element_.querySelector('.' + this.CssClasses_.LABEL);\n this.input_ = this.element_.querySelector('.' + this.CssClasses_.INPUT);\n if (this.input_) {\n if (this.input_.hasAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE)) {\n this.maxRows = parseInt(this.input_.getAttribute(this.Constant_.MAX_ROWS_ATTRIBUTE), 10);\n if (isNaN(this.maxRows)) {\n this.maxRows = this.Constant_.NO_MAX_ROWS;\n }\n }\n if (this.input_.hasAttribute('placeholder')) {\n this.element_.classList.add(this.CssClasses_.HAS_PLACEHOLDER);\n }\n this.boundUpdateClassesHandler = this.updateClasses_.bind(this);\n this.boundFocusHandler = this.onFocus_.bind(this);\n this.boundBlurHandler = this.onBlur_.bind(this);\n this.boundResetHandler = this.onReset_.bind(this);\n this.input_.addEventListener('input', this.boundUpdateClassesHandler);\n this.input_.addEventListener('focus', this.boundFocusHandler);\n this.input_.addEventListener('blur', this.boundBlurHandler);\n this.input_.addEventListener('reset', this.boundResetHandler);\n if (this.maxRows !== this.Constant_.NO_MAX_ROWS) {\n // TODO: This should handle pasting multi line text.\n // Currently doesn't.\n this.boundKeyDownHandler = this.onKeyDown_.bind(this);\n this.input_.addEventListener('keydown', this.boundKeyDownHandler);\n }\n var invalid = this.element_.classList.contains(this.CssClasses_.IS_INVALID);\n this.updateClasses_();\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n if (invalid) {\n this.element_.classList.add(this.CssClasses_.IS_INVALID);\n }\n if (this.input_.hasAttribute('autofocus')) {\n this.element_.focus();\n this.checkFocus();\n }\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTextfield,\n classAsString: 'MaterialTextfield',\n cssClass: 'mdl-js-textfield',\n widget: true\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Tooltip MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialTooltip = function MaterialTooltip(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialTooltip'] = MaterialTooltip;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialTooltip.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialTooltip.prototype.CssClasses_ = {\n IS_ACTIVE: 'is-active',\n BOTTOM: 'mdl-tooltip--bottom',\n LEFT: 'mdl-tooltip--left',\n RIGHT: 'mdl-tooltip--right',\n TOP: 'mdl-tooltip--top'\n};\n/**\n * Handle mouseenter for tooltip.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialTooltip.prototype.handleMouseEnter_ = function (event) {\n var props = event.target.getBoundingClientRect();\n var left = props.left + props.width / 2;\n var top = props.top + props.height / 2;\n var marginLeft = -1 * (this.element_.offsetWidth / 2);\n var marginTop = -1 * (this.element_.offsetHeight / 2);\n if (this.element_.classList.contains(this.CssClasses_.LEFT) || this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n left = props.width / 2;\n if (top + marginTop < 0) {\n this.element_.style.top = '0';\n this.element_.style.marginTop = '0';\n } else {\n this.element_.style.top = top + 'px';\n this.element_.style.marginTop = marginTop + 'px';\n }\n } else {\n if (left + marginLeft < 0) {\n this.element_.style.left = '0';\n this.element_.style.marginLeft = '0';\n } else {\n this.element_.style.left = left + 'px';\n this.element_.style.marginLeft = marginLeft + 'px';\n }\n }\n if (this.element_.classList.contains(this.CssClasses_.TOP)) {\n this.element_.style.top = props.top - this.element_.offsetHeight - 10 + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.RIGHT)) {\n this.element_.style.left = props.left + props.width + 10 + 'px';\n } else if (this.element_.classList.contains(this.CssClasses_.LEFT)) {\n this.element_.style.left = props.left - this.element_.offsetWidth - 10 + 'px';\n } else {\n this.element_.style.top = props.top + props.height + 10 + 'px';\n }\n this.element_.classList.add(this.CssClasses_.IS_ACTIVE);\n};\n/**\n * Hide tooltip on mouseleave or scroll\n *\n * @private\n */\nMaterialTooltip.prototype.hideTooltip_ = function () {\n this.element_.classList.remove(this.CssClasses_.IS_ACTIVE);\n};\n/**\n * Initialize element.\n */\nMaterialTooltip.prototype.init = function () {\n if (this.element_) {\n var forElId = this.element_.getAttribute('for') || this.element_.getAttribute('data-mdl-for');\n if (forElId) {\n this.forElement_ = document.getElementById(forElId);\n }\n if (this.forElement_) {\n // It's left here because it prevents accidental text selection on Android\n if (!this.forElement_.hasAttribute('tabindex')) {\n this.forElement_.setAttribute('tabindex', '0');\n }\n this.boundMouseEnterHandler = this.handleMouseEnter_.bind(this);\n this.boundMouseLeaveAndScrollHandler = this.hideTooltip_.bind(this);\n this.forElement_.addEventListener('mouseenter', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('touchend', this.boundMouseEnterHandler, false);\n this.forElement_.addEventListener('mouseleave', this.boundMouseLeaveAndScrollHandler, false);\n window.addEventListener('scroll', this.boundMouseLeaveAndScrollHandler, true);\n window.addEventListener('touchstart', this.boundMouseLeaveAndScrollHandler);\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialTooltip,\n classAsString: 'MaterialTooltip',\n cssClass: 'mdl-tooltip'\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Data Table Card MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {Element} element The element that will be upgraded.\n */\nvar MaterialDataTable = function MaterialDataTable(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialDataTable'] = MaterialDataTable;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialDataTable.prototype.Constant_ = {};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialDataTable.prototype.CssClasses_ = {\n DATA_TABLE: 'mdl-data-table',\n SELECTABLE: 'mdl-data-table--selectable',\n SELECT_ELEMENT: 'mdl-data-table__select',\n IS_SELECTED: 'is-selected',\n IS_UPGRADED: 'is-upgraded'\n};\n/**\n * Generates and returns a function that toggles the selection state of a\n * single row (or multiple rows).\n *\n * @param {Element} checkbox Checkbox that toggles the selection state.\n * @param {Element} row Row to toggle when checkbox changes.\n * @param {(Array|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n * @private\n */\nMaterialDataTable.prototype.selectRow_ = function (checkbox, row, opt_rows) {\n if (row) {\n return function () {\n if (checkbox.checked) {\n row.classList.add(this.CssClasses_.IS_SELECTED);\n } else {\n row.classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }.bind(this);\n }\n if (opt_rows) {\n return function () {\n var i;\n var el;\n if (checkbox.checked) {\n for (i = 0; i < opt_rows.length; i++) {\n el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el['MaterialCheckbox'].check();\n opt_rows[i].classList.add(this.CssClasses_.IS_SELECTED);\n }\n } else {\n for (i = 0; i < opt_rows.length; i++) {\n el = opt_rows[i].querySelector('td').querySelector('.mdl-checkbox');\n el['MaterialCheckbox'].uncheck();\n opt_rows[i].classList.remove(this.CssClasses_.IS_SELECTED);\n }\n }\n }.bind(this);\n }\n};\n/**\n * Creates a checkbox for a single or or multiple rows and hooks up the\n * event handling.\n *\n * @param {Element} row Row to toggle when checkbox changes.\n * @param {(Array|NodeList)=} opt_rows Rows to toggle when checkbox changes.\n * @private\n */\nMaterialDataTable.prototype.createCheckbox_ = function (row, opt_rows) {\n var label = document.createElement('label');\n var labelClasses = [\n 'mdl-checkbox',\n 'mdl-js-checkbox',\n 'mdl-js-ripple-effect',\n this.CssClasses_.SELECT_ELEMENT\n ];\n label.className = labelClasses.join(' ');\n var checkbox = document.createElement('input');\n checkbox.type = 'checkbox';\n checkbox.classList.add('mdl-checkbox__input');\n if (row) {\n checkbox.checked = row.classList.contains(this.CssClasses_.IS_SELECTED);\n checkbox.addEventListener('change', this.selectRow_(checkbox, row));\n } else if (opt_rows) {\n checkbox.addEventListener('change', this.selectRow_(checkbox, null, opt_rows));\n }\n label.appendChild(checkbox);\n componentHandler.upgradeElement(label, 'MaterialCheckbox');\n return label;\n};\n/**\n * Initialize element.\n */\nMaterialDataTable.prototype.init = function () {\n if (this.element_) {\n var firstHeader = this.element_.querySelector('th');\n var bodyRows = Array.prototype.slice.call(this.element_.querySelectorAll('tbody tr'));\n var footRows = Array.prototype.slice.call(this.element_.querySelectorAll('tfoot tr'));\n var rows = bodyRows.concat(footRows);\n if (this.element_.classList.contains(this.CssClasses_.SELECTABLE)) {\n var th = document.createElement('th');\n var headerCheckbox = this.createCheckbox_(null, rows);\n th.appendChild(headerCheckbox);\n firstHeader.parentElement.insertBefore(th, firstHeader);\n for (var i = 0; i < rows.length; i++) {\n var firstCell = rows[i].querySelector('td');\n if (firstCell) {\n var td = document.createElement('td');\n if (rows[i].parentNode.nodeName.toUpperCase() === 'TBODY') {\n var rowCheckbox = this.createCheckbox_(rows[i]);\n td.appendChild(rowCheckbox);\n }\n rows[i].insertBefore(td, firstCell);\n }\n }\n this.element_.classList.add(this.CssClasses_.IS_UPGRADED);\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialDataTable,\n classAsString: 'MaterialDataTable',\n cssClass: 'mdl-js-data-table'\n});","/**\n * @license\n * Copyright 2015 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * Class constructor for Ripple MDL component.\n * Implements MDL component design pattern defined at:\n * https://github.com/jasonmayes/mdl-component-design-pattern\n *\n * @constructor\n * @param {HTMLElement} element The element that will be upgraded.\n */\nvar MaterialRipple = function MaterialRipple(element) {\n this.element_ = element;\n // Initialize instance.\n this.init();\n};\nwindow['MaterialRipple'] = MaterialRipple;\n/**\n * Store constants in one place so they can be updated easily.\n *\n * @enum {string | number}\n * @private\n */\nMaterialRipple.prototype.Constant_ = {\n INITIAL_SCALE: 'scale(0.0001, 0.0001)',\n INITIAL_SIZE: '1px',\n INITIAL_OPACITY: '0.4',\n FINAL_OPACITY: '0',\n FINAL_SCALE: ''\n};\n/**\n * Store strings for class names defined by this component that are used in\n * JavaScript. This allows us to simply change it in one place should we\n * decide to modify at a later date.\n *\n * @enum {string}\n * @private\n */\nMaterialRipple.prototype.CssClasses_ = {\n RIPPLE_CENTER: 'mdl-ripple--center',\n RIPPLE_EFFECT_IGNORE_EVENTS: 'mdl-js-ripple-effect--ignore-events',\n RIPPLE: 'mdl-ripple',\n IS_ANIMATING: 'is-animating',\n IS_VISIBLE: 'is-visible'\n};\n/**\n * Handle mouse / finger down on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRipple.prototype.downHandler_ = function (event) {\n if (!this.rippleElement_.style.width && !this.rippleElement_.style.height) {\n var rect = this.element_.getBoundingClientRect();\n this.boundHeight = rect.height;\n this.boundWidth = rect.width;\n this.rippleSize_ = Math.sqrt(rect.width * rect.width + rect.height * rect.height) * 2 + 2;\n this.rippleElement_.style.width = this.rippleSize_ + 'px';\n this.rippleElement_.style.height = this.rippleSize_ + 'px';\n }\n this.rippleElement_.classList.add(this.CssClasses_.IS_VISIBLE);\n if (event.type === 'mousedown' && this.ignoringMouseDown_) {\n this.ignoringMouseDown_ = false;\n } else {\n if (event.type === 'touchstart') {\n this.ignoringMouseDown_ = true;\n }\n var frameCount = this.getFrameCount();\n if (frameCount > 0) {\n return;\n }\n this.setFrameCount(1);\n var bound = event.currentTarget.getBoundingClientRect();\n var x;\n var y;\n // Check if we are handling a keyboard click.\n if (event.clientX === 0 && event.clientY === 0) {\n x = Math.round(bound.width / 2);\n y = Math.round(bound.height / 2);\n } else {\n var clientX = event.clientX !== undefined ? event.clientX : event.touches[0].clientX;\n var clientY = event.clientY !== undefined ? event.clientY : event.touches[0].clientY;\n x = Math.round(clientX - bound.left);\n y = Math.round(clientY - bound.top);\n }\n this.setRippleXY(x, y);\n this.setRippleStyles(true);\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n }\n};\n/**\n * Handle mouse / finger up on element.\n *\n * @param {Event} event The event that fired.\n * @private\n */\nMaterialRipple.prototype.upHandler_ = function (event) {\n // Don't fire for the artificial \"mouseup\" generated by a double-click.\n if (event && event.detail !== 2) {\n // Allow a repaint to occur before removing this class, so the animation\n // shows for tap events, which seem to trigger a mouseup too soon after\n // mousedown.\n window.setTimeout(function () {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_VISIBLE);\n }.bind(this), 0);\n }\n};\n/**\n * Initialize element.\n */\nMaterialRipple.prototype.init = function () {\n if (this.element_) {\n var recentering = this.element_.classList.contains(this.CssClasses_.RIPPLE_CENTER);\n if (!this.element_.classList.contains(this.CssClasses_.RIPPLE_EFFECT_IGNORE_EVENTS)) {\n this.rippleElement_ = this.element_.querySelector('.' + this.CssClasses_.RIPPLE);\n this.frameCount_ = 0;\n this.rippleSize_ = 0;\n this.x_ = 0;\n this.y_ = 0;\n // Touch start produces a compat mouse down event, which would cause a\n // second ripples. To avoid that, we use this property to ignore the first\n // mouse down after a touch start.\n this.ignoringMouseDown_ = false;\n this.boundDownHandler = this.downHandler_.bind(this);\n this.element_.addEventListener('mousedown', this.boundDownHandler);\n this.element_.addEventListener('touchstart', this.boundDownHandler);\n this.boundUpHandler = this.upHandler_.bind(this);\n this.element_.addEventListener('mouseup', this.boundUpHandler);\n this.element_.addEventListener('mouseleave', this.boundUpHandler);\n this.element_.addEventListener('touchend', this.boundUpHandler);\n this.element_.addEventListener('blur', this.boundUpHandler);\n /**\n * Getter for frameCount_.\n * @return {number} the frame count.\n */\n this.getFrameCount = function () {\n return this.frameCount_;\n };\n /**\n * Setter for frameCount_.\n * @param {number} fC the frame count.\n */\n this.setFrameCount = function (fC) {\n this.frameCount_ = fC;\n };\n /**\n * Getter for rippleElement_.\n * @return {Element} the ripple element.\n */\n this.getRippleElement = function () {\n return this.rippleElement_;\n };\n /**\n * Sets the ripple X and Y coordinates.\n * @param {number} newX the new X coordinate\n * @param {number} newY the new Y coordinate\n */\n this.setRippleXY = function (newX, newY) {\n this.x_ = newX;\n this.y_ = newY;\n };\n /**\n * Sets the ripple styles.\n * @param {boolean} start whether or not this is the start frame.\n */\n this.setRippleStyles = function (start) {\n if (this.rippleElement_ !== null) {\n var transformString;\n var scale;\n var size;\n var offset = 'translate(' + this.x_ + 'px, ' + this.y_ + 'px)';\n if (start) {\n scale = this.Constant_.INITIAL_SCALE;\n size = this.Constant_.INITIAL_SIZE;\n } else {\n scale = this.Constant_.FINAL_SCALE;\n size = this.rippleSize_ + 'px';\n if (recentering) {\n offset = 'translate(' + this.boundWidth / 2 + 'px, ' + this.boundHeight / 2 + 'px)';\n }\n }\n transformString = 'translate(-50%, -50%) ' + offset + scale;\n this.rippleElement_.style.webkitTransform = transformString;\n this.rippleElement_.style.msTransform = transformString;\n this.rippleElement_.style.transform = transformString;\n if (start) {\n this.rippleElement_.classList.remove(this.CssClasses_.IS_ANIMATING);\n } else {\n this.rippleElement_.classList.add(this.CssClasses_.IS_ANIMATING);\n }\n }\n };\n /**\n * Handles an animation frame.\n */\n this.animFrameHandler = function () {\n if (this.frameCount_-- > 0) {\n window.requestAnimationFrame(this.animFrameHandler.bind(this));\n } else {\n this.setRippleStyles(false);\n }\n };\n }\n }\n};\n// The component registers itself. It can assume componentHandler is available\n// in the global scope.\ncomponentHandler.register({\n constructor: MaterialRipple,\n classAsString: 'MaterialRipple',\n cssClass: 'mdl-js-ripple-effect',\n widget: false\n});"],"names":["e","t","element_","classList","contains","CssClasses_","MDL_JS_RIPPLE_EFFECT","s","document","createElement","add","MDL_RIPPLE_CONTAINER","i","MDL_RIPPLE","appendChild","addEventListener","getAttribute","charAt","preventDefault","href","split","n","querySelector","resetTabState_","resetPanelState_","ACTIVE_CLASS","a","content_","IS_ACTIVE","tabBar_","JS_RIPPLE_EFFECT","RIPPLE_CONTAINER","l","RIPPLE","TAB_MANUAL_SWITCH","show","upgradeDom","upgradeElement","upgradeElements","upgradeAllRegistered","registerUpgradedCallback","register","downgradeElements","c","length","className","indexOf","window","CustomEvent","bubbles","cancelable","createEvent","initEvent","cssClass","o","r","querySelectorAll","_","Element","Error","dispatchEvent","defaultPrevented","push","forEach","d","h","u","setAttribute","join","E","classConstructor","C","p","m","L","callbacks","widget","I","splice","classAsString","Array","isArray","prototype","slice","call","HTMLElement","children","constructor","hasOwnProperty","filter","NodeList","Node","ComponentConfigPublic","ComponentConfig","Component","componentHandler","documentElement","Date","now","getTime","requestAnimationFrame","cancelAnimationFrame","test","navigator","userAgent","Math","max","setTimeout","clearTimeout","init","MaterialButton","Constant_","RIPPLE_EFFECT","blurHandler_","blur","disable","disabled","enable","rippleElement_","boundRippleBlurHandler","bind","boundButtonBlurHandler","MaterialCheckbox","TINY_TIMEOUT","INPUT","BOX_OUTLINE","FOCUS_HELPER","TICK_OUTLINE","RIPPLE_IGNORE_EVENTS","RIPPLE_CENTER","IS_FOCUSED","IS_DISABLED","IS_CHECKED","IS_UPGRADED","onChange_","updateClasses_","onFocus_","onBlur_","remove","onMouseUp_","blur_","checkDisabled","checkToggleState","inputElement_","checked","check","uncheck","rippleContainerElement_","boundRippleMouseUp","boundInputOnChange","boundInputOnFocus","boundInputOnBlur","boundElementMouseUp","MaterialIconToggle","boundElementOnMouseUp","MaterialMenu","TRANSITION_DURATION_SECONDS","TRANSITION_DURATION_FRACTION","CLOSE_TIMEOUT","Keycodes_","ENTER","ESCAPE","SPACE","UP_ARROW","DOWN_ARROW","CONTAINER","OUTLINE","ITEM","ITEM_RIPPLE_CONTAINER","IS_VISIBLE","IS_ANIMATING","BOTTOM_LEFT","BOTTOM_RIGHT","TOP_LEFT","TOP_RIGHT","UNALIGNED","parentElement","insertBefore","removeChild","container_","outline_","getElementById","forElement_","handleForClick_","handleForKeyboardEvent_","boundItemKeydown_","handleItemKeyboardEvent_","boundItemClick_","handleItemClick_","tabIndex","getBoundingClientRect","style","right","top","offsetTop","offsetHeight","left","offsetLeft","bottom","toggle","keyCode","focus","target","MouseEvent","click","hide","hasAttribute","stopPropagation","closing_","applyClip_","clip","removeAnimationEndListener_","addAnimationEndListener_","height","width","transitionDelay","parentNode","removeEventListener","removeProperty","MaterialProgress","INDETERMINATE_CLASS","setProgress","progressbar_","setBuffer","bufferbar_","auxbar_","MaterialRadio","JS_RADIO","RADIO_BTN","RADIO_OUTER_CIRCLE","RADIO_INNER_CIRCLE","getElementsByClassName","btnElement_","onMouseup_","boundChangeHandler_","boundFocusHandler_","boundBlurHandler_","boundMouseUpHandler_","isIE_","msPointerEnabled","MaterialSlider","IE_CONTAINER","SLIDER_CONTAINER","BACKGROUND_FLEX","BACKGROUND_LOWER","BACKGROUND_UPPER","IS_LOWEST_VALUE","onInput_","updateValueStyles_","onContainerMouseDown_","buttons","clientX","clientY","y","value","min","backgroundLower_","flex","webkitFlex","backgroundUpper_","change","boundInputHandler","boundChangeHandler","boundMouseUpHandler","boundContainerMouseDownHandler","textElement_","cssClasses_","MESSAGE","actionElement_","ACTION","active","actionHandler_","message_","actionText_","queuedNotifications_","setActionHidden_","MaterialSnackbar","ANIMATION_LENGTH","SNACKBAR","ACTIVE","displaySnackbar_","textContent","cleanup_","timeout_","showSnackbar","message","actionHandler","actionText","timeout","checkQueue_","shift","Boolean","removeAttribute","MaterialSpinner","MDL_SPINNER_LAYER_COUNT","MDL_SPINNER_LAYER","MDL_SPINNER_CIRCLE_CLIPPER","MDL_SPINNER_CIRCLE","MDL_SPINNER_GAP_PATCH","MDL_SPINNER_LEFT","MDL_SPINNER_RIGHT","createLayer","stop","start","MaterialSwitch","TRACK","THUMB","on","off","boundFocusHandler","boundBlurHandler","MaterialTabs","TAB_CLASS","PANEL_CLASS","UPGRADED_CLASS","MDL_JS_RIPPLE_EFFECT_IGNORE_EVENTS","initTabs_","tabs_","panels_","maxRows","NO_MAX_ROWS","MaterialTextfield","MAX_ROWS_ATTRIBUTE","LABEL","IS_DIRTY","IS_INVALID","HAS_PLACEHOLDER","onKeyDown_","onReset_","checkValidity","checkDirty","checkFocus","input_","validity","valid","label_","parseInt","isNaN","boundUpdateClassesHandler","boundResetHandler","boundKeyDownHandler","MaterialTooltip","BOTTOM","LEFT","RIGHT","TOP","handleMouseEnter_","offsetWidth","marginTop","marginLeft","hideTooltip_","boundMouseEnterHandler","boundMouseLeaveAndScrollHandler","f","MaterialLayout","MAX_WIDTH","TAB_SCROLL_PIXELS","RESIZE_TIMEOUT","MENU_ICON","CHEVRON_LEFT","CHEVRON_RIGHT","Mode_","STANDARD","SEAMED","WATERFALL","SCROLL","HEADER","DRAWER","CONTENT","DRAWER_BTN","ICON","HEADER_SEAMED","HEADER_WATERFALL","HEADER_SCROLL","FIXED_HEADER","OBFUSCATOR","TAB_BAR","TAB_CONTAINER","TAB","TAB_BAR_BUTTON","TAB_BAR_LEFT_BUTTON","TAB_BAR_RIGHT_BUTTON","PANEL","HAS_DRAWER","HAS_TABS","HAS_SCROLLING_HEADER","CASTING_SHADOW","IS_COMPACT","IS_SMALL_SCREEN","IS_DRAWER_OPEN","ON_LARGE_SCREEN","ON_SMALL_SCREEN","contentScrollHandler_","header_","scrollTop","keyboardEventHandler_","drawer_","toggleDrawer","screenSizeHandler_","screenSizeMediaQuery_","matches","obfuscator_","drawerToggleHandler_","type","headerTransitionEndHandler_","headerClickHandler_","childNodes","persisted","overflowY","innerHTML","firstChild","matchMedia","addListener","scrollLeft","scrollWidth","resizeTimeoutId_","MaterialLayoutTab","b","MaterialDataTable","DATA_TABLE","SELECTABLE","SELECT_ELEMENT","IS_SELECTED","selectRow_","createCheckbox_","concat","nodeName","toUpperCase","S","MaterialRipple","INITIAL_SCALE","INITIAL_SIZE","INITIAL_OPACITY","FINAL_OPACITY","FINAL_SCALE","RIPPLE_EFFECT_IGNORE_EVENTS","downHandler_","boundHeight","boundWidth","rippleSize_","sqrt","ignoringMouseDown_","getFrameCount","setFrameCount","currentTarget","round","touches","setRippleXY","setRippleStyles","animFrameHandler","upHandler_","detail","frameCount_","x_","y_","boundDownHandler","boundUpHandler","getRippleElement","webkitTransform","msTransform","transform","MaterialTab","tab","ctx","rippleContainer","ripple","panel","tabs","panels","layout","selectTab","optJsClass","optCssClass","element","elements","jsClass","callback","config","nodes","findRegisteredClass_","name","optReplace","registeredComponents_","getUpgradedListOfElement_","dataUpgraded","isElementUpgraded_","upgradedList","createEvent_","eventType","ev","upgradeDomInternal","registeredClass","upgradeElementInternal","upgradingEv","classesToUpgrade","component","instance","componentConfigProperty_","createdComponents_","j","upgradedEv","upgradeElementsInternal","registerInternal","widgetMissing","newConfig","item","found","registerUpgradedCallbackInternal","regClass","upgradeAllRegisteredInternal","deconstructComponentInternal","componentIndex","upgrades","componentPlace","downgradeNodesInternal","downgradeNode","node","vendors","vp","lastTime","nextTime","this","event","boxOutline","tickContainer","tickOutline","container","outline","forElId","forEl","items","evt","rect","forRect","currentIndex","transitionDuration","itemDelay","el","radios","button","outerCircle","innerCircle","newEvent","fraction","containerIE","backgroundFlex","undefined","data","index","layer","leftClipper","gapPatch","rightClipper","circleOwners","circle","track","thumb","focusHelper","k","currentRowCount","invalid","props","headerVisible","tabBar","drawerButton","focusedElement","directChildren","numChildren","child","mode","drawerButtonIcon","obfuscator","tabContainer","leftButton","leftButtonIcon","rightButton","rightButtonIcon","tabUpdateHandler","windowResizeHandler","checkbox","row","opt_rows","label","labelClasses","firstHeader","bodyRows","footRows","rows","th","headerCheckbox","firstCell","td","rowCheckbox","frameCount","x","bound","recentering","fC","newX","newY","transformString","scale","size","offset"],"version":3,"file":"index.710ba46f.js.map"}