diff --git a/src/pretalx/schedule/models/schedule.py b/src/pretalx/schedule/models/schedule.py
index 7ddda7233..81c3c7c1b 100644
--- a/src/pretalx/schedule/models/schedule.py
+++ b/src/pretalx/schedule/models/schedule.py
@@ -669,8 +669,7 @@ def build_data(self, all_talks=False, filter_updated=None, all_rooms=False):
"state": talk.submission.state if all_talks else None,
"fav_count": count_fav_talk(talk.submission.code) if talk.submission else 0,
"do_not_record": talk.submission.do_not_record,
- "tags": talk.submission.get_tag(),
- "session_type": talk.submission.submission_type.name,
+ "tags": talk.submission.get_tag()
}
)
else:
diff --git a/src/pretalx/static/agenda/js/pretalx-schedule.js b/src/pretalx/static/agenda/js/pretalx-schedule.js
index 98eb6eba3..e8e4c47ab 100644
--- a/src/pretalx/static/agenda/js/pretalx-schedule.js
+++ b/src/pretalx/static/agenda/js/pretalx-schedule.js
@@ -2857,7 +2857,6 @@ module.exports = function autolink(state, silent) {
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
-__webpack_require__.r(__webpack_exports__);
/* WEBPACK VAR INJECTION */(function(global) {/*!
* Vue.js v2.6.14
* (c) 2014-2021 Evan You
@@ -10742,7 +10741,7 @@ if (inBrowser) {
/* */
-/* harmony default export */ __webpack_exports__["default"] = (Vue);
+/* harmony default export */ __webpack_exports__["a"] = (Vue);
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__("c8ba")))
@@ -10934,20 +10933,6 @@ function addStyle (obj /* StyleObjectPart */, shadowRoot) {
}
-/***/ }),
-
-/***/ "3739":
-/***/ (function(module, exports, __webpack_require__) {
-
-// Imports
-var ___CSS_LOADER_API_IMPORT___ = __webpack_require__("24fb");
-exports = ___CSS_LOADER_API_IMPORT___(false);
-// Module
-exports.push([module.i, ".dropdown-content{position:absolute;background:#fff;margin-top:4px;border:1px solid rgba(0,0,0,.38);border-radius:5px;max-width:calc(100% - 40px)}.dropdown-content .checkbox-line{margin:8px}.dropdown-content .checkbox-line .bunt-checkbox .bunt-checkbox-box{min-width:20px}.dropdown-content-enter-active,.dropdown-content-leave-active{transition:all .2s}.dropdown-content-enter,.dropdown-content-leave-to{opacity:0;transform:translateY(-5px)}@media screen and (max-width:480px){.dropdown-content{left:5px}}", ""]);
-// Exports
-module.exports = exports;
-
-
/***/ }),
/***/ "3c0d":
@@ -11438,7 +11423,7 @@ module.exports = function paragraph(state, startLine/*, endLine*/) {
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);
-// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"4a9a49e8-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/pug-plain-loader!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/buntpapier/src/popover.vue?vue&type=template&id=916c9948&lang=pug&
+// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"5b183509-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/pug-plain-loader!./node_modules/cache-loader/dist/cjs.js??ref--1-0!./node_modules/vue-loader/lib??vue-loader-options!./node_modules/buntpapier/src/popover.vue?vue&type=template&id=916c9948&lang=pug&
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"dropdown",staticClass:"bunt-popover-inner",attrs:{"role":"dialog","tabindex":"-1"},on:{"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"esc",27,$event.key,["Esc","Escape"])){ return null; }return _vm.closeDropdown.apply(null, arguments)}}},[_vm._t("default")],2)}
var staticRenderFns = []
@@ -12624,24 +12609,6 @@ ParserInline.prototype.State = __webpack_require__("097b");
module.exports = ParserInline;
-/***/ }),
-
-/***/ "4d25":
-/***/ (function(module, exports, __webpack_require__) {
-
-// style-loader: Adds some css to the DOM by adding a \r\n\t","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Session.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Session.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Session.vue?vue&type=template&id=1bb6b53b&lang=pug&\"\nimport script from \"./Session.vue?vue&type=script&lang=js&\"\nexport * from \"./Session.vue?vue&type=script&lang=js&\"\nfunction injectStyles (context) {\n \n var style0 = require(\"./Session.vue?vue&type=style&index=0&lang=stylus&\")\nif (style0.__inject__) style0.__inject__(context)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n ,true\n)\n\nexport default component.exports","\r\n.c-linear-schedule(v-scrollbar.y=\"\")\r\n\t.bucket(v-for=\"({date, sessions}, index) of sessionBuckets\")\r\n\t\t.bucket-label(:ref=\"getBucketName(date)\", :data-date=\"date.format()\")\r\n\t\t\t.day(v-if=\"index === 0 || date.clone().startOf('day').diff(sessionBuckets[index - 1].date.clone().startOf('day'), 'day') > 0\") {{ date.format('dddd DD. MMMM') }}\r\n\t\t\t.time {{ date.format('LT') }}\r\n\t\t\ttemplate(v-for=\"session of sessions\")\r\n\t\t\t\tsession(\r\n\t\t\t\t\tv-if=\"isProperSession(session)\",\r\n\t\t\t\t\t:session=\"session\",\r\n\t\t\t\t\t:faved=\"session.id && favs.includes(session.id)\",\r\n\t\t\t\t\t@fav=\"$emit('fav', session.id)\",\r\n\t\t\t\t\t@unfav=\"$emit('unfav', session.id)\",\r\n\t\t\t\t\tisLinearSchedule=true\r\n\t\t\t\t)\r\n\t\t\t\t.break(v-else)\r\n\t\t\t\t\t.title {{ getLocalizedString(session.title) }}\r\n\r\n\r\n\r\n\t","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinearSchedule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinearSchedule.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LinearSchedule.vue?vue&type=template&id=555f7733&lang=pug&\"\nimport script from \"./LinearSchedule.vue?vue&type=script&lang=js&\"\nexport * from \"./LinearSchedule.vue?vue&type=script&lang=js&\"\nfunction injectStyles (context) {\n \n var style0 = require(\"./LinearSchedule.vue?vue&type=style&index=0&lang=stylus&\")\nif (style0.__inject__) style0.__inject__(context)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n ,true\n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"c-grid-schedule\"},[_c('div',{staticClass:\"grid\",style:(_vm.gridStyle)},[_vm._l((_vm.visibleTimeslices),function(slice){return [_c('div',{ref:slice.name,refInFor:true,staticClass:\"timeslice\",class:_vm.getSliceClasses(slice),style:(_vm.getSliceStyle(slice)),attrs:{\"data-slice\":slice.date.format()}},[_vm._v(_vm._s(_vm.getSliceLabel(slice)))]),_c('div',{staticClass:\"timeline\",class:_vm.getSliceClasses(slice),style:(_vm.getSliceStyle(slice))})]}),(_vm.nowSlice)?_c('div',{ref:\"now\",staticClass:\"now\",class:{'on-daybreak': _vm.nowSlice.onDaybreak},style:({'grid-area': ((_vm.nowSlice.slice.name) + \" / 1 / auto / auto\"), '--offset': _vm.nowSlice.offset})},[_c('svg',{attrs:{\"viewBox\":\"0 0 10 10\"}},[_c('path',{attrs:{\"d\":\"M 0 0 L 10 5 L 0 10 z\"}})])]):_vm._e(),_c('div',{staticClass:\"room\",style:({'grid-area': \"1 / 1 / auto / auto\"})}),_vm._l((_vm.rooms),function(room,index){return _c('div',{staticClass:\"room\",style:({'grid-area': (\"1 / \" + (index + 2) + \" / auto / auto\")})},[_vm._v(_vm._s(_vm.getLocalizedString(room.name))),(_vm.getLocalizedString(room.description))?_c('bunt-button',{staticClass:\"room-description\",attrs:{\"tooltip\":_vm.getLocalizedString(room.description),\"tooltip-placement\":\"bottom-end\"}},[_vm._v(\"?\")]):_vm._e()],1)}),(_vm.hasSessionsWithoutRoom)?_c('div',{staticClass:\"room\",style:({'grid-area': (\"1 / \" + (_vm.rooms.length + 2) + \" / auto / -1\")})},[_vm._v(\"no location\")]):_vm._e(),_vm._l((_vm.sessions),function(session){return [(_vm.isProperSession(session))?_c('session',{style:(_vm.getSessionStyle(session)),attrs:{\"session\":session,\"showAbstract\":false,\"showRoom\":false,\"faved\":_vm.favs.includes(session.id),\"hasAmPm\":_vm.hasAmPm},on:{\"fav\":function($event){return _vm.$emit('fav', session.id)},\"unfav\":function($event){return _vm.$emit('unfav', session.id)}}}):_c('div',{staticClass:\"break\",style:(_vm.getSessionStyle(session))},[_c('div',{staticClass:\"time-box\"},[(_vm.hasAmPm)?_c('div',{staticClass:\"start has-ampm\"},[_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(session.start.format('h:mm')))]),_c('div',{staticClass:\"ampm\"},[_vm._v(_vm._s(session.start.format('A')))])]):_c('div',{staticClass:\"start\"},[_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(session.start.format('LT')))])]),_c('div',{staticClass:\"duration\"},[_vm._v(_vm._s(_vm.getPrettyDuration(session.start, session.end)))]),_c('div',{staticClass:\"buffer\"})]),_c('div',{staticClass:\"info\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.getLocalizedString(session.title)))])])])]})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n.c-grid-schedule()\r\n\t.grid(:style=\"gridStyle\")\r\n\t\ttemplate(v-for=\"slice of visibleTimeslices\")\r\n\t\t\t.timeslice(:ref=\"slice.name\", :class=\"getSliceClasses(slice)\", :data-slice=\"slice.date.format()\", :style=\"getSliceStyle(slice)\") {{ getSliceLabel(slice) }}\r\n\t\t\t.timeline(:class=\"getSliceClasses(slice)\", :style=\"getSliceStyle(slice)\")\r\n\t\t.now(v-if=\"nowSlice\", ref=\"now\", :class=\"{'on-daybreak': nowSlice.onDaybreak}\", :style=\"{'grid-area': `${nowSlice.slice.name} / 1 / auto / auto`, '--offset': nowSlice.offset}\")\r\n\t\t\tsvg(viewBox=\"0 0 10 10\")\r\n\t\t\t\tpath(d=\"M 0 0 L 10 5 L 0 10 z\")\r\n\t\t.room(:style=\"{'grid-area': `1 / 1 / auto / auto`}\")\r\n\t\t.room(v-for=\"(room, index) of rooms\", :style=\"{'grid-area': `1 / ${index + 2 } / auto / auto`}\") {{ getLocalizedString(room.name) }}\r\n\t\t\tbunt-button.room-description(v-if=\"getLocalizedString(room.description)\", :tooltip=\"getLocalizedString(room.description)\", tooltip-placement=\"bottom-end\") ?\r\n\t\t.room(v-if=\"hasSessionsWithoutRoom\", :style=\"{'grid-area': `1 / ${rooms.length + 2} / auto / -1`}\") no location\r\n\t\ttemplate(v-for=\"session of sessions\")\r\n\t\t\tsession(\r\n\t\t\t\tv-if=\"isProperSession(session)\",\r\n\t\t\t\t:session=\"session\",\r\n\t\t\t\t:style=\"getSessionStyle(session)\",\r\n\t\t\t\t:showAbstract=\"false\", :showRoom=\"false\",\r\n\t\t\t\t:faved=\"favs.includes(session.id)\",\r\n\t\t\t\t:hasAmPm=\"hasAmPm\",\r\n\t\t\t\t@fav=\"$emit('fav', session.id)\",\r\n\t\t\t\t@unfav=\"$emit('unfav', session.id)\"\r\n\t\t\t)\r\n\t\t\t.break(v-else, :style=\"getSessionStyle(session)\")\r\n\t\t\t\t.time-box\r\n\t\t\t\t\t.start(v-if=\"hasAmPm\", class=\"has-ampm\")\r\n\t\t\t\t\t\t.time {{ session.start.format('h:mm') }}\r\n\t\t\t\t\t\t.ampm {{ session.start.format('A') }}\r\n\t\t\t\t\t.start(v-else)\r\n\t\t\t\t\t\t.time {{ session.start.format('LT') }}\r\n\t\t\t\t\t.duration {{ getPrettyDuration(session.start, session.end) }}\r\n\t\t\t\t\t.buffer\r\n\t\t\t\t.info\r\n\t\t\t\t\t.title {{ getLocalizedString(session.title) }}\r\n\r\n\r\n\r\n\t","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GridSchedule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GridSchedule.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GridSchedule.vue?vue&type=template&id=8f695d4c&lang=pug&\"\nimport script from \"./GridSchedule.vue?vue&type=script&lang=js&\"\nexport * from \"./GridSchedule.vue?vue&type=script&lang=js&\"\nfunction injectStyles (context) {\n \n var style0 = require(\"./GridSchedule.vue?vue&type=style&index=0&lang=stylus&\")\nif (style0.__inject__) style0.__inject__(context)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n ,true\n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"on-clickaway\",rawName:\"v-on-clickaway\",value:(_vm.away),expression:\"away\"}],staticClass:\"app-drop-down\"},[_c('bunt-button',{on:{\"click\":_vm.toggle}},[_vm._t(\"toggler\",function(){return [_vm._v(\" Toggle \")]}),(this.sharedState.active)?_c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"1em\",\"height\":\"1em\",\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"m7 15l5-5l5 5z\"}})]):_c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"1em\",\"height\":\"1em\",\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"m7 10l5 5l5-5z\"}})])],2),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n
\r\n Toggle \r\n \r\n \r\n \r\n
\r\n
\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDropdown.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDropdown.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppDropdown.vue?vue&type=template&id=6eac34fc&\"\nimport script from \"./AppDropdown.vue?vue&type=script&lang=js&\"\nexport * from \"./AppDropdown.vue?vue&type=script&lang=js&\"\nfunction injectStyles (context) {\n \n var style0 = require(\"./AppDropdown.vue?vue&type=style&index=0&lang=css&\")\nif (style0.__inject__) style0.__inject__(context)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n ,true\n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{\"name\":\"dropdown-content\"}},[(_vm.active)?_c('div',{staticClass:\"dropdown-content\"},[_vm._t(\"default\")],2):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n
\r\n \r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDropdownContent.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDropdownContent.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppDropdownContent.vue?vue&type=template&id=84173f4e&\"\nimport script from \"./AppDropdownContent.vue?vue&type=script&lang=js&\"\nexport * from \"./AppDropdownContent.vue?vue&type=script&lang=js&\"\nfunction injectStyles (context) {\n \n var style0 = require(\"./AppDropdownContent.vue?vue&type=style&index=0&lang=css&\")\nif (style0.__inject__) style0.__inject__(context)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n ,true\n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n
\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDropdownItem.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDropdownItem.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./AppDropdownItem.vue?vue&type=template&id=30a6369d&\"\nimport script from \"./AppDropdownItem.vue?vue&type=script&lang=js&\"\nexport * from \"./AppDropdownItem.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n ,true\n)\n\nexport default component.exports","\r\n.pretalx-schedule(:style=\"{'--scrollparent-width': scrollParentWidth + 'px', '--schedule-max-width': scheduleMaxWidth + 'px', '--pretalx-sticky-date-offset': days && days.length > 1 ? '48px' : '0px'}\", :class=\"showGrid ? ['grid-schedule'] : ['list-schedule']\")\r\n\ttemplate(v-if=\"scheduleError\")\r\n\t\t.schedule-error\r\n\t\t\t.error-message An error occurred while loading the schedule. Please try again later.\r\n\ttemplate(v-else-if=\"schedule && sessions\")\r\n\t\t.settings\r\n\t\t\tapp-dropdown(v-for=\"item in filter\")\r\n\t\t\t\ttemplate(slot=\"toggler\")\r\n\t\t\t\t\tspan {{item.title}}\r\n\t\t\t\tapp-dropdown-content\r\n\t\t\t\t\tapp-dropdown-item(v-for=\"track in item.data\", :key=\"track.value\")\r\n\t\t\t\t\t\t.checkbox-line(:style=\"{'--track-color': track.color}\")\r\n\t\t\t\t\t\t\tbunt-checkbox(type=\"checkbox\", :label=\"track.label\", :name=\"track.value + track.label\", v-model=\"track.selected\", :value=\"track.value\", @input=\"onlyFavs = false\")\r\n\t\t\t\t\t\t\t.track-description(v-if=\"getLocalizedString(track.description).length\") {{ getLocalizedString(track.description) }}\r\n\t\t\tbunt-button.fav-toggle(v-if=\"favs.length\", @click=\"onlyFavs = !onlyFavs; if (onlyFavs) resetFiltered()\", :class=\"onlyFavs ? ['active'] : []\")\r\n\t\t\t\tsvg#star(viewBox=\"0 0 24 24\")\r\n\t\t\t\t\tpolygon(\r\n\t\t\t\t\t\t:style=\"{fill: '#FFA000', stroke: '#FFA000'}\"\r\n\t\t\t\t\t\tpoints=\"14.43,10 12,2 9.57,10 2,10 8.18,14.41 5.83,22 12,17.31 18.18,22 15.83,14.41 22,10\"\r\n\t\t\t\t\t)\r\n\t\t\t\ttemplate {{ favs.length }}\r\n\t\t\ttemplate(v-if=\"!inEventTimezone\")\r\n\t\t\t\tbunt-select(name=\"timezone\", :options=\"[{id: schedule.timezone, label: schedule.timezone}, {id: userTimezone, label: userTimezone}]\", v-model=\"currentTimezone\", @blur=\"saveTimezone\")\r\n\t\t\ttemplate(v-else)\r\n\t\t\t\tdiv.timezone-label.bunt-tab-header-item {{ schedule.timezone }}\r\n\t\t\tbunt-button.fav-toggle(@click=\"resetAllFiltered\", tooltip=\"Clear All Filters\")\r\n\t\t\t\tsvg(viewBox=\"0 0 24 24\")\r\n\t\t\t\t\tpath(\r\n\t\t\t\t\t\td=\"M14.76 20.83L17.6 18l-2.84-2.83l1.41-1.41L19 16.57l2.83-2.81l1.41 1.41L20.43 18l2.81 2.83l-1.41 1.41L19 19.4l-2.83 2.84zM12 12v7.88c.04.3-.06.62-.29.83a.996.996 0 0 1-1.41 0L8.29 18.7a.99.99 0 0 1-.29-.83V12h-.03L2.21 4.62a1 1 0 0 1 .17-1.4c.19-.14.4-.22.62-.22h14c.22 0 .43.08.62.22a1 1 0 0 1 .17 1.4L12.03 12z\"\r\n\t\t\t\t\t)\r\n\t\tbunt-tabs.days(v-if=\"days && days.length > 1\", :active-tab=\"currentDay && currentDay.format()\", ref=\"tabs\" :class=\"showGrid? ['grid-tabs'] : ['list-tabs']\")\r\n\t\t\tbunt-tab(v-for=\"day in days\", :id=\"day.format()\", :header=\"day.format(dateFormat)\", @selected=\"changeDay(day)\")\r\n\t\tgrid-schedule(v-if=\"showGrid\",\r\n\t\t\t:sessions=\"sessions\",\r\n\t\t\t:rooms=\"rooms\",\r\n\t\t\t:currentDay=\"currentDay\",\r\n\t\t\t:now=\"now\",\r\n\t\t\t:scrollParent=\"scrollParent\",\r\n\t\t\t:favs=\"favs\",\r\n\t\t\t@changeDay=\"currentDay = $event\",\r\n\t\t\t@fav=\"fav($event)\",\r\n\t\t\t@unfav=\"unfav($event)\")\r\n\t\tlinear-schedule(v-else,\r\n\t\t\t:sessions=\"sessions\",\r\n\t\t\t:rooms=\"rooms\",\r\n\t\t\t:currentDay=\"currentDay\",\r\n\t\t\t:now=\"now\",\r\n\t\t\t:scrollParent=\"scrollParent\",\r\n\t\t\t:favs=\"favs\",\r\n\t\t\t@changeDay=\"currentDay = $event\",\r\n\t\t\t@fav=\"fav($event)\",\r\n\t\t\t@unfav=\"unfav($event)\")\r\n\t\t.modal(v-if=\"showModal\")\r\n\t\t\t.modal-content\r\n\t\t\t\t.modal-header\r\n\t\t\t\t\t.h3.modal-title Warning\r\n\t\t\t\t.modal-body.p Please login to add a session to your personal schedule.\r\n\t\t\t\t.modal-footer\r\n\t\t\t\t\t.button(@click=\"closeModal\") OK\r\n\tbunt-progress-circular(v-else, size=\"huge\", :page=\"true\")\r\n\r\n\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&shadow\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&shadow\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=4a6f3e18&lang=pug&shadow\"\nimport script from \"./App.vue?vue&type=script&lang=js&shadow\"\nexport * from \"./App.vue?vue&type=script&lang=js&shadow\"\nfunction injectStyles (context) {\n \n var style0 = require(\"./App.vue?vue&type=style&index=0&lang=stylus&shadow\")\nif (style0.__inject__) style0.__inject__(context)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n ,true\n)\n\nexport default component.exports","import './setPublicPath'\nimport Vue from 'vue'\nimport wrap from '@vue/web-component-wrapper'\n\n// runtime shared by every component chunk\nimport 'css-loader/dist/runtime/api.js'\nimport 'vue-style-loader/lib/addStylesShadow'\nimport 'vue-loader/lib/runtime/componentNormalizer'\n\nimport pretalxSchedule from '~root/src/App.vue?shadow'\nwindow.customElements.define('pretalx-schedule', wrap(Vue, pretalxSchedule))","// Process html entity - {, ¯, ", ...\n\n'use strict';\n\nvar entities = require('../common/entities');\nvar has = require('../common/utils').has;\nvar isValidEntityCode = require('../common/utils').isValidEntityCode;\nvar fromCodePoint = require('../common/utils').fromCodePoint;\n\n\nvar DIGITAL_RE = /^((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\nvar NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\n\nmodule.exports = function entity(state, silent) {\n var ch, code, match, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; }\n\n if (pos + 1 < max) {\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x23 /* # */) {\n match = state.src.slice(pos).match(DIGITAL_RE);\n if (match) {\n if (!silent) {\n code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n }\n state.pos += match[0].length;\n return true;\n }\n } else {\n match = state.src.slice(pos).match(NAMED_RE);\n if (match) {\n if (has(entities, match[1])) {\n if (!silent) { state.pending += entities[match[1]]; }\n state.pos += match[0].length;\n return true;\n }\n }\n }\n }\n\n if (!silent) { state.pending += '&'; }\n state.pos++;\n return true;\n};\n","/*! tether-drop 1.4.1 */\n\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([\"tether\"], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('tether'));\n } else {\n root.Drop = factory(root.Tether);\n }\n}(this, function(Tether) {\n\n/* global Tether */\n'use strict';\n\nvar _bind = Function.prototype.bind;\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x2, _x3, _x4) { var _again = true; _function: while (_again) { var object = _x2, property = _x3, receiver = _x4; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x2 = parent; _x3 = property; _x4 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _Tether$Utils = Tether.Utils;\nvar extend = _Tether$Utils.extend;\nvar addClass = _Tether$Utils.addClass;\nvar removeClass = _Tether$Utils.removeClass;\nvar hasClass = _Tether$Utils.hasClass;\nvar Evented = _Tether$Utils.Evented;\n\nfunction sortAttach(str) {\n var _str$split = str.split(' ');\n\n var _str$split2 = _slicedToArray(_str$split, 2);\n\n var first = _str$split2[0];\n var second = _str$split2[1];\n\n if (['left', 'right'].indexOf(first) >= 0) {\n var _ref = [second, first];\n first = _ref[0];\n second = _ref[1];\n }\n return [first, second].join(' ');\n}\n\nfunction removeFromArray(arr, item) {\n var index = undefined;\n var results = [];\n while ((index = arr.indexOf(item)) !== -1) {\n results.push(arr.splice(index, 1));\n }\n return results;\n}\n\nvar clickEvents = ['click'];\nif ('ontouchstart' in document.documentElement) {\n clickEvents.push('touchstart');\n}\n\nvar transitionEndEvents = {\n 'WebkitTransition': 'webkitTransitionEnd',\n 'MozTransition': 'transitionend',\n 'OTransition': 'otransitionend',\n 'transition': 'transitionend'\n};\n\nvar transitionEndEvent = '';\nfor (var _name in transitionEndEvents) {\n if (({}).hasOwnProperty.call(transitionEndEvents, _name)) {\n var tempEl = document.createElement('p');\n if (typeof tempEl.style[_name] !== 'undefined') {\n transitionEndEvent = transitionEndEvents[_name];\n }\n }\n}\n\nvar MIRROR_ATTACH = {\n left: 'right',\n right: 'left',\n top: 'bottom',\n bottom: 'top',\n middle: 'middle',\n center: 'center'\n};\n\nvar allDrops = {};\n\n// Drop can be included in external libraries. Calling createContext gives you a fresh\n// copy of drop which won't interact with other copies on the page (beyond calling the document events).\n\nfunction createContext() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var drop = function drop() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return new (_bind.apply(DropInstance, [null].concat(args)))();\n };\n\n extend(drop, {\n createContext: createContext,\n drops: [],\n defaults: {}\n });\n\n var defaultOptions = {\n classPrefix: 'drop',\n defaults: {\n position: 'bottom left',\n openOn: 'click',\n beforeClose: null,\n constrainToScrollParent: true,\n constrainToWindow: true,\n classes: '',\n remove: false,\n openDelay: 0,\n closeDelay: 50,\n // inherited from openDelay and closeDelay if not explicitly defined\n focusDelay: null,\n blurDelay: null,\n hoverOpenDelay: null,\n hoverCloseDelay: null,\n tetherOptions: {}\n }\n };\n\n extend(drop, defaultOptions, options);\n extend(drop.defaults, defaultOptions.defaults, options.defaults);\n\n if (typeof allDrops[drop.classPrefix] === 'undefined') {\n allDrops[drop.classPrefix] = [];\n }\n\n drop.updateBodyClasses = function () {\n // There is only one body, so despite the context concept, we still iterate through all\n // drops which share our classPrefix.\n\n var anyOpen = false;\n var drops = allDrops[drop.classPrefix];\n var len = drops.length;\n for (var i = 0; i < len; ++i) {\n if (drops[i].isOpened()) {\n anyOpen = true;\n break;\n }\n }\n\n if (anyOpen) {\n addClass(document.body, drop.classPrefix + '-open');\n } else {\n removeClass(document.body, drop.classPrefix + '-open');\n }\n };\n\n var DropInstance = (function (_Evented) {\n _inherits(DropInstance, _Evented);\n\n function DropInstance(opts) {\n _classCallCheck(this, DropInstance);\n\n _get(Object.getPrototypeOf(DropInstance.prototype), 'constructor', this).call(this);\n this.options = extend({}, drop.defaults, opts);\n this.target = this.options.target;\n\n if (typeof this.target === 'undefined') {\n throw new Error('Drop Error: You must provide a target.');\n }\n\n var dataPrefix = 'data-' + drop.classPrefix;\n\n var contentAttr = this.target.getAttribute(dataPrefix);\n if (contentAttr && this.options.content == null) {\n this.options.content = contentAttr;\n }\n\n var attrsOverride = ['position', 'openOn'];\n for (var i = 0; i < attrsOverride.length; ++i) {\n\n var override = this.target.getAttribute(dataPrefix + '-' + attrsOverride[i]);\n if (override && this.options[attrsOverride[i]] == null) {\n this.options[attrsOverride[i]] = override;\n }\n }\n\n if (this.options.classes && this.options.addTargetClasses !== false) {\n addClass(this.target, this.options.classes);\n }\n\n drop.drops.push(this);\n allDrops[drop.classPrefix].push(this);\n\n this._boundEvents = [];\n this.bindMethods();\n this.setupElements();\n this.setupEvents();\n this.setupTether();\n }\n\n _createClass(DropInstance, [{\n key: '_on',\n value: function _on(element, event, handler) {\n this._boundEvents.push({ element: element, event: event, handler: handler });\n element.addEventListener(event, handler);\n }\n }, {\n key: 'bindMethods',\n value: function bindMethods() {\n this.transitionEndHandler = this._transitionEndHandler.bind(this);\n }\n }, {\n key: 'setupElements',\n value: function setupElements() {\n var _this = this;\n\n this.drop = document.createElement('div');\n addClass(this.drop, drop.classPrefix);\n\n if (this.options.classes) {\n addClass(this.drop, this.options.classes);\n }\n\n this.content = document.createElement('div');\n addClass(this.content, drop.classPrefix + '-content');\n\n if (typeof this.options.content === 'function') {\n var generateAndSetContent = function generateAndSetContent() {\n // content function might return a string or an element\n var contentElementOrHTML = _this.options.content.call(_this, _this);\n\n if (typeof contentElementOrHTML === 'string') {\n _this.content.innerHTML = contentElementOrHTML;\n } else if (typeof contentElementOrHTML === 'object') {\n _this.content.innerHTML = '';\n _this.content.appendChild(contentElementOrHTML);\n } else {\n throw new Error('Drop Error: Content function should return a string or HTMLElement.');\n }\n };\n\n generateAndSetContent();\n this.on('open', generateAndSetContent.bind(this));\n } else if (typeof this.options.content === 'object') {\n this.content.appendChild(this.options.content);\n } else {\n this.content.innerHTML = this.options.content;\n }\n\n this.drop.appendChild(this.content);\n }\n }, {\n key: 'setupTether',\n value: function setupTether() {\n // Tether expects two attachment points, one in the target element, one in the\n // drop. We use a single one, and use the order as well, to allow us to put\n // the drop on either side of any of the four corners. This magic converts between\n // the two:\n var dropAttach = this.options.position.split(' ');\n dropAttach[0] = MIRROR_ATTACH[dropAttach[0]];\n dropAttach = dropAttach.join(' ');\n\n var constraints = [];\n if (this.options.constrainToScrollParent) {\n constraints.push({\n to: 'scrollParent',\n pin: 'top, bottom',\n attachment: 'together none'\n });\n } else {\n // To get 'out of bounds' classes\n constraints.push({\n to: 'scrollParent'\n });\n }\n\n if (this.options.constrainToWindow !== false) {\n constraints.push({\n to: 'window',\n attachment: 'together'\n });\n } else {\n // To get 'out of bounds' classes\n constraints.push({\n to: 'window'\n });\n }\n\n var opts = {\n element: this.drop,\n target: this.target,\n attachment: sortAttach(dropAttach),\n targetAttachment: sortAttach(this.options.position),\n classPrefix: drop.classPrefix,\n offset: '0 0',\n targetOffset: '0 0',\n enabled: false,\n constraints: constraints,\n addTargetClasses: this.options.addTargetClasses\n };\n\n if (this.options.tetherOptions !== false) {\n this.tether = new Tether(extend({}, opts, this.options.tetherOptions));\n }\n }\n }, {\n key: 'setupEvents',\n value: function setupEvents() {\n var _this2 = this;\n\n if (!this.options.openOn) {\n return;\n }\n\n if (this.options.openOn === 'always') {\n setTimeout(this.open.bind(this));\n return;\n }\n\n var events = this.options.openOn.split(' ');\n\n if (events.indexOf('click') >= 0) {\n var openHandler = function openHandler(event) {\n _this2.toggle(event);\n event.preventDefault();\n };\n\n var closeHandler = function closeHandler(event) {\n if (!_this2.isOpened()) {\n return;\n }\n\n // Clicking inside dropdown\n if (event.target === _this2.drop || _this2.drop.contains(event.target)) {\n return;\n }\n\n // Clicking target\n if (event.target === _this2.target || _this2.target.contains(event.target)) {\n return;\n }\n\n _this2.close(event);\n };\n\n for (var i = 0; i < clickEvents.length; ++i) {\n var clickEvent = clickEvents[i];\n this._on(this.target, clickEvent, openHandler);\n this._on(document, clickEvent, closeHandler);\n }\n }\n\n var inTimeout = null;\n var outTimeout = null;\n\n var inHandler = function inHandler(event) {\n if (outTimeout !== null) {\n clearTimeout(outTimeout);\n } else {\n inTimeout = setTimeout(function () {\n _this2.open(event);\n inTimeout = null;\n }, (event.type === 'focus' ? _this2.options.focusDelay : _this2.options.hoverOpenDelay) || _this2.options.openDelay);\n }\n };\n\n var outHandler = function outHandler(event) {\n if (inTimeout !== null) {\n clearTimeout(inTimeout);\n } else {\n outTimeout = setTimeout(function () {\n _this2.close(event);\n outTimeout = null;\n }, (event.type === 'blur' ? _this2.options.blurDelay : _this2.options.hoverCloseDelay) || _this2.options.closeDelay);\n }\n };\n\n if (events.indexOf('hover') >= 0) {\n this._on(this.target, 'mouseover', inHandler);\n this._on(this.drop, 'mouseover', inHandler);\n this._on(this.target, 'mouseout', outHandler);\n this._on(this.drop, 'mouseout', outHandler);\n }\n\n if (events.indexOf('focus') >= 0) {\n this._on(this.target, 'focus', inHandler);\n this._on(this.drop, 'focus', inHandler);\n this._on(this.target, 'blur', outHandler);\n this._on(this.drop, 'blur', outHandler);\n }\n }\n }, {\n key: 'isOpened',\n value: function isOpened() {\n if (this.drop) {\n return hasClass(this.drop, drop.classPrefix + '-open');\n }\n }\n }, {\n key: 'toggle',\n value: function toggle(event) {\n if (this.isOpened()) {\n this.close(event);\n } else {\n this.open(event);\n }\n }\n }, {\n key: 'open',\n value: function open(event) {\n var _this3 = this;\n\n /* eslint no-unused-vars: 0 */\n if (this.isOpened()) {\n return;\n }\n\n if (!this.drop.parentNode) {\n document.body.appendChild(this.drop);\n }\n\n if (typeof this.tether !== 'undefined') {\n this.tether.enable();\n }\n\n addClass(this.drop, drop.classPrefix + '-open');\n addClass(this.drop, drop.classPrefix + '-open-transitionend');\n\n setTimeout(function () {\n if (_this3.drop) {\n addClass(_this3.drop, drop.classPrefix + '-after-open');\n }\n });\n\n if (typeof this.tether !== 'undefined') {\n this.tether.position();\n }\n\n this.trigger('open');\n\n drop.updateBodyClasses();\n }\n }, {\n key: '_transitionEndHandler',\n value: function _transitionEndHandler(e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (!hasClass(this.drop, drop.classPrefix + '-open')) {\n removeClass(this.drop, drop.classPrefix + '-open-transitionend');\n }\n this.drop.removeEventListener(transitionEndEvent, this.transitionEndHandler);\n }\n }, {\n key: 'beforeCloseHandler',\n value: function beforeCloseHandler(event) {\n var shouldClose = true;\n\n if (!this.isClosing && typeof this.options.beforeClose === 'function') {\n this.isClosing = true;\n shouldClose = this.options.beforeClose(event, this) !== false;\n }\n\n this.isClosing = false;\n\n return shouldClose;\n }\n }, {\n key: 'close',\n value: function close(event) {\n if (!this.isOpened()) {\n return;\n }\n\n if (!this.beforeCloseHandler(event)) {\n return;\n }\n\n removeClass(this.drop, drop.classPrefix + '-open');\n removeClass(this.drop, drop.classPrefix + '-after-open');\n\n this.drop.addEventListener(transitionEndEvent, this.transitionEndHandler);\n\n this.trigger('close');\n\n if (typeof this.tether !== 'undefined') {\n this.tether.disable();\n }\n\n drop.updateBodyClasses();\n\n if (this.options.remove) {\n this.remove(event);\n }\n }\n }, {\n key: 'remove',\n value: function remove(event) {\n this.close(event);\n if (this.drop.parentNode) {\n this.drop.parentNode.removeChild(this.drop);\n }\n }\n }, {\n key: 'position',\n value: function position() {\n if (this.isOpened() && typeof this.tether !== 'undefined') {\n this.tether.position();\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.remove();\n\n if (typeof this.tether !== 'undefined') {\n this.tether.destroy();\n }\n\n for (var i = 0; i < this._boundEvents.length; ++i) {\n var _boundEvents$i = this._boundEvents[i];\n var element = _boundEvents$i.element;\n var _event = _boundEvents$i.event;\n var handler = _boundEvents$i.handler;\n\n element.removeEventListener(_event, handler);\n }\n\n this._boundEvents = [];\n\n this.tether = null;\n this.drop = null;\n this.content = null;\n this.target = null;\n\n removeFromArray(allDrops[drop.classPrefix], this);\n removeFromArray(drop.drops, this);\n }\n }]);\n\n return DropInstance;\n })(Evented);\n\n return drop;\n}\n\nvar Drop = createContext();\n\ndocument.addEventListener('DOMContentLoaded', function () {\n Drop.updateBodyClasses();\n});\nreturn Drop;\n\n}));\n","// HTML block\n\n'use strict';\n\n\nvar block_names = require('../common/html_blocks');\nvar HTML_OPEN_CLOSE_TAG_RE = require('../common/html_re').HTML_OPEN_CLOSE_TAG_RE;\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nvar HTML_SEQUENCES = [\n [ /^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true ],\n [ /^/, true ],\n [ /^<\\?/, /\\?>/, true ],\n [ /^/, true ],\n [ /^/, true ],\n [ new RegExp('^?(' + block_names.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true ],\n [ new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false ]\n];\n\n\nmodule.exports = function html_block(state, startLine, endLine, silent) {\n var i, nextLine, token, lineText,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n if (!state.md.options.html) { return false; }\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n lineText = state.src.slice(pos, max);\n\n for (i = 0; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) { break; }\n }\n\n if (i === HTML_SEQUENCES.length) { return false; }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2];\n }\n\n nextLine = startLine + 1;\n\n // If we are here - we detected HTML block.\n // Let's roll down till block end.\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n lineText = state.src.slice(pos, max);\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) { nextLine++; }\n break;\n }\n }\n }\n\n state.line = nextLine;\n\n token = state.push('html_block', '', 0);\n token.map = [ startLine, nextLine ];\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n\n return true;\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","// style-loader: Adds some css to the DOM by adding a \r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Session.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Session.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Session.vue?vue&type=template&id=00e4dc8e&lang=pug&\"\nimport script from \"./Session.vue?vue&type=script&lang=js&\"\nexport * from \"./Session.vue?vue&type=script&lang=js&\"\nfunction injectStyles (context) {\n \n var style0 = require(\"./Session.vue?vue&type=style&index=0&lang=stylus&\")\nif (style0.__inject__) style0.__inject__(context)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n ,true\n)\n\nexport default component.exports","\r\n.c-linear-schedule(v-scrollbar.y=\"\")\r\n\t.bucket(v-for=\"({date, sessions}, index) of sessionBuckets\")\r\n\t\t.bucket-label(:ref=\"getBucketName(date)\", :data-date=\"date.format()\")\r\n\t\t\t.day(v-if=\"index === 0 || date.clone().startOf('day').diff(sessionBuckets[index - 1].date.clone().startOf('day'), 'day') > 0\") {{ date.format('dddd DD. MMMM') }}\r\n\t\t\t.time {{ date.format('LT') }}\r\n\t\t\ttemplate(v-for=\"session of sessions\")\r\n\t\t\t\tsession(\r\n\t\t\t\t\tv-if=\"isProperSession(session)\",\r\n\t\t\t\t\t:session=\"session\",\r\n\t\t\t\t\t:faved=\"session.id && favs.includes(session.id)\",\r\n\t\t\t\t\t@fav=\"$emit('fav', session.id)\",\r\n\t\t\t\t\t@unfav=\"$emit('unfav', session.id)\",\r\n\t\t\t\t\tisLinearSchedule=true\r\n\t\t\t\t)\r\n\t\t\t\t.break(v-else)\r\n\t\t\t\t\t.title {{ getLocalizedString(session.title) }}\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinearSchedule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LinearSchedule.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./LinearSchedule.vue?vue&type=template&id=615554a9&lang=pug&\"\nimport script from \"./LinearSchedule.vue?vue&type=script&lang=js&\"\nexport * from \"./LinearSchedule.vue?vue&type=script&lang=js&\"\nfunction injectStyles (context) {\n \n var style0 = require(\"./LinearSchedule.vue?vue&type=style&index=0&lang=stylus&\")\nif (style0.__inject__) style0.__inject__(context)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n ,true\n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"c-grid-schedule\"},[_c('div',{staticClass:\"grid\",style:(_vm.gridStyle)},[_vm._l((_vm.visibleTimeslices),function(slice){return [_c('div',{ref:slice.name,refInFor:true,staticClass:\"timeslice\",class:_vm.getSliceClasses(slice),style:(_vm.getSliceStyle(slice)),attrs:{\"data-slice\":slice.date.format()}},[_vm._v(_vm._s(_vm.getSliceLabel(slice)))]),_c('div',{staticClass:\"timeline\",class:_vm.getSliceClasses(slice),style:(_vm.getSliceStyle(slice))})]}),(_vm.nowSlice)?_c('div',{ref:\"now\",staticClass:\"now\",class:{'on-daybreak': _vm.nowSlice.onDaybreak},style:({'grid-area': ((_vm.nowSlice.slice.name) + \" / 1 / auto / auto\"), '--offset': _vm.nowSlice.offset})},[_c('svg',{attrs:{\"viewBox\":\"0 0 10 10\"}},[_c('path',{attrs:{\"d\":\"M 0 0 L 10 5 L 0 10 z\"}})])]):_vm._e(),_c('div',{staticClass:\"room\",style:({'grid-area': \"1 / 1 / auto / auto\"})}),_vm._l((_vm.rooms),function(room,index){return _c('div',{staticClass:\"room\",style:({'grid-area': (\"1 / \" + (index + 2) + \" / auto / auto\")})},[_vm._v(_vm._s(_vm.getLocalizedString(room.name))),(_vm.getLocalizedString(room.description))?_c('bunt-button',{staticClass:\"room-description\",attrs:{\"tooltip\":_vm.getLocalizedString(room.description),\"tooltip-placement\":\"bottom-end\"}},[_vm._v(\"?\")]):_vm._e()],1)}),(_vm.hasSessionsWithoutRoom)?_c('div',{staticClass:\"room\",style:({'grid-area': (\"1 / \" + (_vm.rooms.length + 2) + \" / auto / -1\")})},[_vm._v(\"no location\")]):_vm._e(),_vm._l((_vm.sessions),function(session){return [(_vm.isProperSession(session))?_c('session',{style:(_vm.getSessionStyle(session)),attrs:{\"session\":session,\"showAbstract\":false,\"showRoom\":false,\"faved\":_vm.favs.includes(session.id),\"hasAmPm\":_vm.hasAmPm},on:{\"fav\":function($event){return _vm.$emit('fav', session.id)},\"unfav\":function($event){return _vm.$emit('unfav', session.id)}}}):_c('div',{staticClass:\"break\",style:(_vm.getSessionStyle(session))},[_c('div',{staticClass:\"time-box\"},[(_vm.hasAmPm)?_c('div',{staticClass:\"start has-ampm\"},[_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(session.start.format('h:mm')))]),_c('div',{staticClass:\"ampm\"},[_vm._v(_vm._s(session.start.format('A')))])]):_c('div',{staticClass:\"start\"},[_c('div',{staticClass:\"time\"},[_vm._v(_vm._s(session.start.format('LT')))])]),_c('div',{staticClass:\"duration\"},[_vm._v(_vm._s(_vm.getPrettyDuration(session.start, session.end)))]),_c('div',{staticClass:\"buffer\"})]),_c('div',{staticClass:\"info\"},[_c('div',{staticClass:\"title\"},[_vm._v(_vm._s(_vm.getLocalizedString(session.title)))])])])]})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n.c-grid-schedule()\r\n\t.grid(:style=\"gridStyle\")\r\n\t\ttemplate(v-for=\"slice of visibleTimeslices\")\r\n\t\t\t.timeslice(:ref=\"slice.name\", :class=\"getSliceClasses(slice)\", :data-slice=\"slice.date.format()\", :style=\"getSliceStyle(slice)\") {{ getSliceLabel(slice) }}\r\n\t\t\t.timeline(:class=\"getSliceClasses(slice)\", :style=\"getSliceStyle(slice)\")\r\n\t\t.now(v-if=\"nowSlice\", ref=\"now\", :class=\"{'on-daybreak': nowSlice.onDaybreak}\", :style=\"{'grid-area': `${nowSlice.slice.name} / 1 / auto / auto`, '--offset': nowSlice.offset}\")\r\n\t\t\tsvg(viewBox=\"0 0 10 10\")\r\n\t\t\t\tpath(d=\"M 0 0 L 10 5 L 0 10 z\")\r\n\t\t.room(:style=\"{'grid-area': `1 / 1 / auto / auto`}\")\r\n\t\t.room(v-for=\"(room, index) of rooms\", :style=\"{'grid-area': `1 / ${index + 2 } / auto / auto`}\") {{ getLocalizedString(room.name) }}\r\n\t\t\tbunt-button.room-description(v-if=\"getLocalizedString(room.description)\", :tooltip=\"getLocalizedString(room.description)\", tooltip-placement=\"bottom-end\") ?\r\n\t\t.room(v-if=\"hasSessionsWithoutRoom\", :style=\"{'grid-area': `1 / ${rooms.length + 2} / auto / -1`}\") no location\r\n\t\ttemplate(v-for=\"session of sessions\")\r\n\t\t\tsession(\r\n\t\t\t\tv-if=\"isProperSession(session)\",\r\n\t\t\t\t:session=\"session\",\r\n\t\t\t\t:style=\"getSessionStyle(session)\",\r\n\t\t\t\t:showAbstract=\"false\", :showRoom=\"false\",\r\n\t\t\t\t:faved=\"favs.includes(session.id)\",\r\n\t\t\t\t:hasAmPm=\"hasAmPm\",\r\n\t\t\t\t@fav=\"$emit('fav', session.id)\",\r\n\t\t\t\t@unfav=\"$emit('unfav', session.id)\"\r\n\t\t\t)\r\n\t\t\t.break(v-else, :style=\"getSessionStyle(session)\")\r\n\t\t\t\t.time-box\r\n\t\t\t\t\t.start(v-if=\"hasAmPm\", class=\"has-ampm\")\r\n\t\t\t\t\t\t.time {{ session.start.format('h:mm') }}\r\n\t\t\t\t\t\t.ampm {{ session.start.format('A') }}\r\n\t\t\t\t\t.start(v-else)\r\n\t\t\t\t\t\t.time {{ session.start.format('LT') }}\r\n\t\t\t\t\t.duration {{ getPrettyDuration(session.start, session.end) }}\r\n\t\t\t\t\t.buffer\r\n\t\t\t\t.info\r\n\t\t\t\t\t.title {{ getLocalizedString(session.title) }}\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GridSchedule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GridSchedule.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./GridSchedule.vue?vue&type=template&id=358239b4&lang=pug&\"\nimport script from \"./GridSchedule.vue?vue&type=script&lang=js&\"\nexport * from \"./GridSchedule.vue?vue&type=script&lang=js&\"\nfunction injectStyles (context) {\n \n var style0 = require(\"./GridSchedule.vue?vue&type=style&index=0&lang=stylus&\")\nif (style0.__inject__) style0.__inject__(context)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n ,true\n)\n\nexport default component.exports","\r\n.pretalx-schedule(:style=\"{'--scrollparent-width': scrollParentWidth + 'px', '--schedule-max-width': scheduleMaxWidth + 'px', '--pretalx-sticky-date-offset': days && days.length > 1 ? '48px' : '0px'}\", :class=\"showGrid ? ['grid-schedule'] : ['list-schedule']\")\r\n\ttemplate(v-if=\"scheduleError\")\r\n\t\t.schedule-error\r\n\t\t\t.error-message An error occurred while loading the schedule. Please try again later.\r\n\ttemplate(v-else-if=\"schedule && sessions\")\r\n\t\t.modal-overlay(v-if=\"showFilterModal\", @click.stop=\"showFilterModal = false\")\r\n\t\t\t.modal-box(@click.stop=\"\")\r\n\t\t\t\th3 Tracks\r\n\t\t\t\t.checkbox-line(v-for=\"track in allTracks\", :key=\"track.value\", :style=\"{'--track-color': track.color}\")\r\n\t\t\t\t\tbunt-checkbox(type=\"checkbox\", :label=\"track.label\", :name=\"track.value + track.label\", v-model=\"track.selected\", :value=\"track.value\", @input=\"onlyFavs = false\")\r\n\t\t\t\t\t.track-description(v-if=\"getLocalizedString(track.description).length\") {{ getLocalizedString(track.description) }}\r\n\t\t.settings\r\n\t\t\tbunt-button.filter-tracks(v-if=\"this.schedule.tracks.length\", @click=\"showFilterModal=true\")\r\n\t\t\t\tsvg#filter(viewBox=\"0 0 752 752\")\r\n\t\t\t\t\tpath(d=\"m401.57 264.71h-174.75c-6.6289 0-11.84 5.2109-11.84 11.84 0 6.6289 5.2109 11.84 11.84 11.84h174.75c5.2109 17.523 21.312 30.309 40.727 30.309 18.941 0 35.52-12.785 40.254-30.309h43.098c6.6289 0 11.84-5.2109 11.84-11.84 0-6.6289-5.2109-11.84-11.84-11.84h-43.098c-5.2109-17.523-21.312-30.309-40.254-30.309-19.414 0-35.516 12.785-40.727 30.309zm58.723 11.84c0 10.418-8.5234 18.469-18.469 18.469s-18.469-8.0508-18.469-18.469 8.5234-18.469 18.469-18.469c9.4727-0.003906 18.469 8.0469 18.469 18.469z\")\r\n\t\t\t\t\tpath(d=\"m259.5 359.43h-32.676c-6.6289 0-11.84 5.2109-11.84 11.84s5.2109 11.84 11.84 11.84h32.676c5.2109 17.523 21.312 30.309 40.727 30.309 18.941 0 35.52-12.785 40.254-30.309h185.17c6.6289 0 11.84-5.2109 11.84-11.84s-5.2109-11.84-11.84-11.84h-185.17c-5.2109-17.523-21.312-30.309-40.254-30.309-19.418 0-35.52 12.785-40.73 30.309zm58.723 11.84c0 10.418-8.5234 18.469-18.469 18.469-9.9453 0-18.469-8.0508-18.469-18.469s8.5234-18.469 18.469-18.469c9.9453 0 18.469 8.0508 18.469 18.469z\")\r\n\t\t\t\t\tpath(d=\"m344.75 463.61h-117.92c-6.6289 0-11.84 5.2109-11.84 11.84s5.2109 11.84 11.84 11.84h117.92c5.2109 17.523 21.312 30.309 40.727 30.309 18.941 0 35.52-12.785 40.254-30.309h99.926c6.6289 0 11.84-5.2109 11.84-11.84s-5.2109-11.84-11.84-11.84h-99.926c-5.2109-17.523-21.312-30.309-40.254-30.309-19.418 0-35.52 12.785-40.727 30.309zm58.723 11.84c0 10.418-8.5234 18.469-18.469 18.469s-18.469-8.0508-18.469-18.469 8.5234-18.469 18.469-18.469 18.469 8.0508 18.469 18.469z\")\r\n\t\t\t\ttemplate Filter\r\n\t\t\t\ttemplate(v-if=\"filteredTracks.length\") ({{ filteredTracks.length }})\r\n\t\t\tbunt-button.fav-toggle(v-if=\"favs.length\", @click=\"onlyFavs = !onlyFavs; if (onlyFavs) resetFilteredTracks()\", :class=\"onlyFavs ? ['active'] : []\")\r\n\t\t\t\tsvg#star(viewBox=\"0 0 24 24\")\r\n\t\t\t\t\tpolygon(\r\n\t\t\t\t\t\t:style=\"{fill: '#FFA000', stroke: '#FFA000'}\"\r\n\t\t\t\t\t\tpoints=\"14.43,10 12,2 9.57,10 2,10 8.18,14.41 5.83,22 12,17.31 18.18,22 15.83,14.41 22,10\"\r\n\t\t\t\t\t)\r\n\t\t\t\ttemplate {{ favs.length }}\r\n\t\t\ttemplate(v-if=\"!inEventTimezone\")\r\n\t\t\t\tbunt-select(style=\"margin-left: 0px\", name=\"timezone\", :options=\"[{id: schedule.timezone, label: schedule.timezone}, {id: userTimezone, label: userTimezone}]\", v-model=\"currentTimezone\", @blur=\"saveTimezone\")\r\n\t\t\ttemplate(v-else)\r\n\t\t\t\tdiv.timezone-label.bunt-tab-header-item {{ schedule.timezone }}\r\n\t\tbunt-tabs.days(v-if=\"days && days.length > 1\", :active-tab=\"currentDay && currentDay.format()\", ref=\"tabs\" :class=\"showGrid? ['grid-tabs'] : ['list-tabs']\")\r\n\t\t\tbunt-tab(v-for=\"day in days\", :id=\"day.format()\", :header=\"day.format(dateFormat)\", @selected=\"changeDay(day)\")\r\n\t\tgrid-schedule(v-if=\"showGrid\",\r\n\t\t\t:sessions=\"sessions\",\r\n\t\t\t:rooms=\"rooms\",\r\n\t\t\t:currentDay=\"currentDay\",\r\n\t\t\t:now=\"now\",\r\n\t\t\t:scrollParent=\"scrollParent\",\r\n\t\t\t:favs=\"favs\",\r\n\t\t\t@changeDay=\"currentDay = $event\",\r\n\t\t\t@fav=\"fav($event)\",\r\n\t\t\t@unfav=\"unfav($event)\")\r\n\t\tlinear-schedule(v-else,\r\n\t\t\t:sessions=\"sessions\",\r\n\t\t\t:rooms=\"rooms\",\r\n\t\t\t:currentDay=\"currentDay\",\r\n\t\t\t:now=\"now\",\r\n\t\t\t:scrollParent=\"scrollParent\",\r\n\t\t\t:favs=\"favs\",\r\n\t\t\t:sortBy=\"sortBy\",\r\n\t\t\t@changeDay=\"currentDay = $event\",\r\n\t\t\t@fav=\"fav($event)\",\r\n\t\t\t@unfav=\"unfav($event)\")\r\n\t\t.modal(v-if=\"showModal\")\r\n\t\t\t.modal-content\r\n\t\t\t\t.modal-header\r\n\t\t\t\t\t.h3.modal-title Warning\r\n\t\t\t\t.modal-body.p Please login to add a session to your personal schedule.\r\n\t\t\t\t.modal-footer\r\n\t\t\t\t\t.button(@click=\"closeModal\") OK\r\n\tbunt-progress-circular(v-else, size=\"huge\", :page=\"true\")\r\n\r\n\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&shadow\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&shadow\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=50fb73b4&lang=pug&shadow\"\nimport script from \"./App.vue?vue&type=script&lang=js&shadow\"\nexport * from \"./App.vue?vue&type=script&lang=js&shadow\"\nfunction injectStyles (context) {\n \n var style0 = require(\"./App.vue?vue&type=style&index=0&lang=stylus&shadow\")\nif (style0.__inject__) style0.__inject__(context)\n\n}\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n injectStyles,\n null,\n null\n ,true\n)\n\nexport default component.exports","import './setPublicPath'\nimport Vue from 'vue'\nimport wrap from '@vue/web-component-wrapper'\n\n// runtime shared by every component chunk\nimport 'css-loader/dist/runtime/api.js'\nimport 'vue-style-loader/lib/addStylesShadow'\nimport 'vue-loader/lib/runtime/componentNormalizer'\n\nimport pretalxSchedule from '~root/src/App.vue?shadow'\nwindow.customElements.define('pretalx-schedule', wrap(Vue, pretalxSchedule))","// Process html entity - {, ¯, ", ...\n\n'use strict';\n\nvar entities = require('../common/entities');\nvar has = require('../common/utils').has;\nvar isValidEntityCode = require('../common/utils').isValidEntityCode;\nvar fromCodePoint = require('../common/utils').fromCodePoint;\n\n\nvar DIGITAL_RE = /^((?:x[a-f0-9]{1,6}|[0-9]{1,7}));/i;\nvar NAMED_RE = /^&([a-z][a-z0-9]{1,31});/i;\n\n\nmodule.exports = function entity(state, silent) {\n var ch, code, match, pos = state.pos, max = state.posMax;\n\n if (state.src.charCodeAt(pos) !== 0x26/* & */) { return false; }\n\n if (pos + 1 < max) {\n ch = state.src.charCodeAt(pos + 1);\n\n if (ch === 0x23 /* # */) {\n match = state.src.slice(pos).match(DIGITAL_RE);\n if (match) {\n if (!silent) {\n code = match[1][0].toLowerCase() === 'x' ? parseInt(match[1].slice(1), 16) : parseInt(match[1], 10);\n state.pending += isValidEntityCode(code) ? fromCodePoint(code) : fromCodePoint(0xFFFD);\n }\n state.pos += match[0].length;\n return true;\n }\n } else {\n match = state.src.slice(pos).match(NAMED_RE);\n if (match) {\n if (has(entities, match[1])) {\n if (!silent) { state.pending += entities[match[1]]; }\n state.pos += match[0].length;\n return true;\n }\n }\n }\n }\n\n if (!silent) { state.pending += '&'; }\n state.pos++;\n return true;\n};\n","/*! tether-drop 1.4.1 */\n\n(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([\"tether\"], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('tether'));\n } else {\n root.Drop = factory(root.Tether);\n }\n}(this, function(Tether) {\n\n/* global Tether */\n'use strict';\n\nvar _bind = Function.prototype.bind;\n\nvar _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();\n\nvar _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();\n\nvar _get = function get(_x2, _x3, _x4) { var _again = true; _function: while (_again) { var object = _x2, property = _x3, receiver = _x4; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x2 = parent; _x3 = property; _x4 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar _Tether$Utils = Tether.Utils;\nvar extend = _Tether$Utils.extend;\nvar addClass = _Tether$Utils.addClass;\nvar removeClass = _Tether$Utils.removeClass;\nvar hasClass = _Tether$Utils.hasClass;\nvar Evented = _Tether$Utils.Evented;\n\nfunction sortAttach(str) {\n var _str$split = str.split(' ');\n\n var _str$split2 = _slicedToArray(_str$split, 2);\n\n var first = _str$split2[0];\n var second = _str$split2[1];\n\n if (['left', 'right'].indexOf(first) >= 0) {\n var _ref = [second, first];\n first = _ref[0];\n second = _ref[1];\n }\n return [first, second].join(' ');\n}\n\nfunction removeFromArray(arr, item) {\n var index = undefined;\n var results = [];\n while ((index = arr.indexOf(item)) !== -1) {\n results.push(arr.splice(index, 1));\n }\n return results;\n}\n\nvar clickEvents = ['click'];\nif ('ontouchstart' in document.documentElement) {\n clickEvents.push('touchstart');\n}\n\nvar transitionEndEvents = {\n 'WebkitTransition': 'webkitTransitionEnd',\n 'MozTransition': 'transitionend',\n 'OTransition': 'otransitionend',\n 'transition': 'transitionend'\n};\n\nvar transitionEndEvent = '';\nfor (var _name in transitionEndEvents) {\n if (({}).hasOwnProperty.call(transitionEndEvents, _name)) {\n var tempEl = document.createElement('p');\n if (typeof tempEl.style[_name] !== 'undefined') {\n transitionEndEvent = transitionEndEvents[_name];\n }\n }\n}\n\nvar MIRROR_ATTACH = {\n left: 'right',\n right: 'left',\n top: 'bottom',\n bottom: 'top',\n middle: 'middle',\n center: 'center'\n};\n\nvar allDrops = {};\n\n// Drop can be included in external libraries. Calling createContext gives you a fresh\n// copy of drop which won't interact with other copies on the page (beyond calling the document events).\n\nfunction createContext() {\n var options = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];\n\n var drop = function drop() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return new (_bind.apply(DropInstance, [null].concat(args)))();\n };\n\n extend(drop, {\n createContext: createContext,\n drops: [],\n defaults: {}\n });\n\n var defaultOptions = {\n classPrefix: 'drop',\n defaults: {\n position: 'bottom left',\n openOn: 'click',\n beforeClose: null,\n constrainToScrollParent: true,\n constrainToWindow: true,\n classes: '',\n remove: false,\n openDelay: 0,\n closeDelay: 50,\n // inherited from openDelay and closeDelay if not explicitly defined\n focusDelay: null,\n blurDelay: null,\n hoverOpenDelay: null,\n hoverCloseDelay: null,\n tetherOptions: {}\n }\n };\n\n extend(drop, defaultOptions, options);\n extend(drop.defaults, defaultOptions.defaults, options.defaults);\n\n if (typeof allDrops[drop.classPrefix] === 'undefined') {\n allDrops[drop.classPrefix] = [];\n }\n\n drop.updateBodyClasses = function () {\n // There is only one body, so despite the context concept, we still iterate through all\n // drops which share our classPrefix.\n\n var anyOpen = false;\n var drops = allDrops[drop.classPrefix];\n var len = drops.length;\n for (var i = 0; i < len; ++i) {\n if (drops[i].isOpened()) {\n anyOpen = true;\n break;\n }\n }\n\n if (anyOpen) {\n addClass(document.body, drop.classPrefix + '-open');\n } else {\n removeClass(document.body, drop.classPrefix + '-open');\n }\n };\n\n var DropInstance = (function (_Evented) {\n _inherits(DropInstance, _Evented);\n\n function DropInstance(opts) {\n _classCallCheck(this, DropInstance);\n\n _get(Object.getPrototypeOf(DropInstance.prototype), 'constructor', this).call(this);\n this.options = extend({}, drop.defaults, opts);\n this.target = this.options.target;\n\n if (typeof this.target === 'undefined') {\n throw new Error('Drop Error: You must provide a target.');\n }\n\n var dataPrefix = 'data-' + drop.classPrefix;\n\n var contentAttr = this.target.getAttribute(dataPrefix);\n if (contentAttr && this.options.content == null) {\n this.options.content = contentAttr;\n }\n\n var attrsOverride = ['position', 'openOn'];\n for (var i = 0; i < attrsOverride.length; ++i) {\n\n var override = this.target.getAttribute(dataPrefix + '-' + attrsOverride[i]);\n if (override && this.options[attrsOverride[i]] == null) {\n this.options[attrsOverride[i]] = override;\n }\n }\n\n if (this.options.classes && this.options.addTargetClasses !== false) {\n addClass(this.target, this.options.classes);\n }\n\n drop.drops.push(this);\n allDrops[drop.classPrefix].push(this);\n\n this._boundEvents = [];\n this.bindMethods();\n this.setupElements();\n this.setupEvents();\n this.setupTether();\n }\n\n _createClass(DropInstance, [{\n key: '_on',\n value: function _on(element, event, handler) {\n this._boundEvents.push({ element: element, event: event, handler: handler });\n element.addEventListener(event, handler);\n }\n }, {\n key: 'bindMethods',\n value: function bindMethods() {\n this.transitionEndHandler = this._transitionEndHandler.bind(this);\n }\n }, {\n key: 'setupElements',\n value: function setupElements() {\n var _this = this;\n\n this.drop = document.createElement('div');\n addClass(this.drop, drop.classPrefix);\n\n if (this.options.classes) {\n addClass(this.drop, this.options.classes);\n }\n\n this.content = document.createElement('div');\n addClass(this.content, drop.classPrefix + '-content');\n\n if (typeof this.options.content === 'function') {\n var generateAndSetContent = function generateAndSetContent() {\n // content function might return a string or an element\n var contentElementOrHTML = _this.options.content.call(_this, _this);\n\n if (typeof contentElementOrHTML === 'string') {\n _this.content.innerHTML = contentElementOrHTML;\n } else if (typeof contentElementOrHTML === 'object') {\n _this.content.innerHTML = '';\n _this.content.appendChild(contentElementOrHTML);\n } else {\n throw new Error('Drop Error: Content function should return a string or HTMLElement.');\n }\n };\n\n generateAndSetContent();\n this.on('open', generateAndSetContent.bind(this));\n } else if (typeof this.options.content === 'object') {\n this.content.appendChild(this.options.content);\n } else {\n this.content.innerHTML = this.options.content;\n }\n\n this.drop.appendChild(this.content);\n }\n }, {\n key: 'setupTether',\n value: function setupTether() {\n // Tether expects two attachment points, one in the target element, one in the\n // drop. We use a single one, and use the order as well, to allow us to put\n // the drop on either side of any of the four corners. This magic converts between\n // the two:\n var dropAttach = this.options.position.split(' ');\n dropAttach[0] = MIRROR_ATTACH[dropAttach[0]];\n dropAttach = dropAttach.join(' ');\n\n var constraints = [];\n if (this.options.constrainToScrollParent) {\n constraints.push({\n to: 'scrollParent',\n pin: 'top, bottom',\n attachment: 'together none'\n });\n } else {\n // To get 'out of bounds' classes\n constraints.push({\n to: 'scrollParent'\n });\n }\n\n if (this.options.constrainToWindow !== false) {\n constraints.push({\n to: 'window',\n attachment: 'together'\n });\n } else {\n // To get 'out of bounds' classes\n constraints.push({\n to: 'window'\n });\n }\n\n var opts = {\n element: this.drop,\n target: this.target,\n attachment: sortAttach(dropAttach),\n targetAttachment: sortAttach(this.options.position),\n classPrefix: drop.classPrefix,\n offset: '0 0',\n targetOffset: '0 0',\n enabled: false,\n constraints: constraints,\n addTargetClasses: this.options.addTargetClasses\n };\n\n if (this.options.tetherOptions !== false) {\n this.tether = new Tether(extend({}, opts, this.options.tetherOptions));\n }\n }\n }, {\n key: 'setupEvents',\n value: function setupEvents() {\n var _this2 = this;\n\n if (!this.options.openOn) {\n return;\n }\n\n if (this.options.openOn === 'always') {\n setTimeout(this.open.bind(this));\n return;\n }\n\n var events = this.options.openOn.split(' ');\n\n if (events.indexOf('click') >= 0) {\n var openHandler = function openHandler(event) {\n _this2.toggle(event);\n event.preventDefault();\n };\n\n var closeHandler = function closeHandler(event) {\n if (!_this2.isOpened()) {\n return;\n }\n\n // Clicking inside dropdown\n if (event.target === _this2.drop || _this2.drop.contains(event.target)) {\n return;\n }\n\n // Clicking target\n if (event.target === _this2.target || _this2.target.contains(event.target)) {\n return;\n }\n\n _this2.close(event);\n };\n\n for (var i = 0; i < clickEvents.length; ++i) {\n var clickEvent = clickEvents[i];\n this._on(this.target, clickEvent, openHandler);\n this._on(document, clickEvent, closeHandler);\n }\n }\n\n var inTimeout = null;\n var outTimeout = null;\n\n var inHandler = function inHandler(event) {\n if (outTimeout !== null) {\n clearTimeout(outTimeout);\n } else {\n inTimeout = setTimeout(function () {\n _this2.open(event);\n inTimeout = null;\n }, (event.type === 'focus' ? _this2.options.focusDelay : _this2.options.hoverOpenDelay) || _this2.options.openDelay);\n }\n };\n\n var outHandler = function outHandler(event) {\n if (inTimeout !== null) {\n clearTimeout(inTimeout);\n } else {\n outTimeout = setTimeout(function () {\n _this2.close(event);\n outTimeout = null;\n }, (event.type === 'blur' ? _this2.options.blurDelay : _this2.options.hoverCloseDelay) || _this2.options.closeDelay);\n }\n };\n\n if (events.indexOf('hover') >= 0) {\n this._on(this.target, 'mouseover', inHandler);\n this._on(this.drop, 'mouseover', inHandler);\n this._on(this.target, 'mouseout', outHandler);\n this._on(this.drop, 'mouseout', outHandler);\n }\n\n if (events.indexOf('focus') >= 0) {\n this._on(this.target, 'focus', inHandler);\n this._on(this.drop, 'focus', inHandler);\n this._on(this.target, 'blur', outHandler);\n this._on(this.drop, 'blur', outHandler);\n }\n }\n }, {\n key: 'isOpened',\n value: function isOpened() {\n if (this.drop) {\n return hasClass(this.drop, drop.classPrefix + '-open');\n }\n }\n }, {\n key: 'toggle',\n value: function toggle(event) {\n if (this.isOpened()) {\n this.close(event);\n } else {\n this.open(event);\n }\n }\n }, {\n key: 'open',\n value: function open(event) {\n var _this3 = this;\n\n /* eslint no-unused-vars: 0 */\n if (this.isOpened()) {\n return;\n }\n\n if (!this.drop.parentNode) {\n document.body.appendChild(this.drop);\n }\n\n if (typeof this.tether !== 'undefined') {\n this.tether.enable();\n }\n\n addClass(this.drop, drop.classPrefix + '-open');\n addClass(this.drop, drop.classPrefix + '-open-transitionend');\n\n setTimeout(function () {\n if (_this3.drop) {\n addClass(_this3.drop, drop.classPrefix + '-after-open');\n }\n });\n\n if (typeof this.tether !== 'undefined') {\n this.tether.position();\n }\n\n this.trigger('open');\n\n drop.updateBodyClasses();\n }\n }, {\n key: '_transitionEndHandler',\n value: function _transitionEndHandler(e) {\n if (e.target !== e.currentTarget) {\n return;\n }\n\n if (!hasClass(this.drop, drop.classPrefix + '-open')) {\n removeClass(this.drop, drop.classPrefix + '-open-transitionend');\n }\n this.drop.removeEventListener(transitionEndEvent, this.transitionEndHandler);\n }\n }, {\n key: 'beforeCloseHandler',\n value: function beforeCloseHandler(event) {\n var shouldClose = true;\n\n if (!this.isClosing && typeof this.options.beforeClose === 'function') {\n this.isClosing = true;\n shouldClose = this.options.beforeClose(event, this) !== false;\n }\n\n this.isClosing = false;\n\n return shouldClose;\n }\n }, {\n key: 'close',\n value: function close(event) {\n if (!this.isOpened()) {\n return;\n }\n\n if (!this.beforeCloseHandler(event)) {\n return;\n }\n\n removeClass(this.drop, drop.classPrefix + '-open');\n removeClass(this.drop, drop.classPrefix + '-after-open');\n\n this.drop.addEventListener(transitionEndEvent, this.transitionEndHandler);\n\n this.trigger('close');\n\n if (typeof this.tether !== 'undefined') {\n this.tether.disable();\n }\n\n drop.updateBodyClasses();\n\n if (this.options.remove) {\n this.remove(event);\n }\n }\n }, {\n key: 'remove',\n value: function remove(event) {\n this.close(event);\n if (this.drop.parentNode) {\n this.drop.parentNode.removeChild(this.drop);\n }\n }\n }, {\n key: 'position',\n value: function position() {\n if (this.isOpened() && typeof this.tether !== 'undefined') {\n this.tether.position();\n }\n }\n }, {\n key: 'destroy',\n value: function destroy() {\n this.remove();\n\n if (typeof this.tether !== 'undefined') {\n this.tether.destroy();\n }\n\n for (var i = 0; i < this._boundEvents.length; ++i) {\n var _boundEvents$i = this._boundEvents[i];\n var element = _boundEvents$i.element;\n var _event = _boundEvents$i.event;\n var handler = _boundEvents$i.handler;\n\n element.removeEventListener(_event, handler);\n }\n\n this._boundEvents = [];\n\n this.tether = null;\n this.drop = null;\n this.content = null;\n this.target = null;\n\n removeFromArray(allDrops[drop.classPrefix], this);\n removeFromArray(drop.drops, this);\n }\n }]);\n\n return DropInstance;\n })(Evented);\n\n return drop;\n}\n\nvar Drop = createContext();\n\ndocument.addEventListener('DOMContentLoaded', function () {\n Drop.updateBodyClasses();\n});\nreturn Drop;\n\n}));\n","// HTML block\n\n'use strict';\n\n\nvar block_names = require('../common/html_blocks');\nvar HTML_OPEN_CLOSE_TAG_RE = require('../common/html_re').HTML_OPEN_CLOSE_TAG_RE;\n\n// An array of opening and corresponding closing sequences for html tags,\n// last argument defines whether it can terminate a paragraph or not\n//\nvar HTML_SEQUENCES = [\n [ /^<(script|pre|style|textarea)(?=(\\s|>|$))/i, /<\\/(script|pre|style|textarea)>/i, true ],\n [ /^/, true ],\n [ /^<\\?/, /\\?>/, true ],\n [ /^/, true ],\n [ /^/, true ],\n [ new RegExp('^?(' + block_names.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true ],\n [ new RegExp(HTML_OPEN_CLOSE_TAG_RE.source + '\\\\s*$'), /^$/, false ]\n];\n\n\nmodule.exports = function html_block(state, startLine, endLine, silent) {\n var i, nextLine, token, lineText,\n pos = state.bMarks[startLine] + state.tShift[startLine],\n max = state.eMarks[startLine];\n\n // if it's indented more than 3 spaces, it should be a code block\n if (state.sCount[startLine] - state.blkIndent >= 4) { return false; }\n\n if (!state.md.options.html) { return false; }\n\n if (state.src.charCodeAt(pos) !== 0x3C/* < */) { return false; }\n\n lineText = state.src.slice(pos, max);\n\n for (i = 0; i < HTML_SEQUENCES.length; i++) {\n if (HTML_SEQUENCES[i][0].test(lineText)) { break; }\n }\n\n if (i === HTML_SEQUENCES.length) { return false; }\n\n if (silent) {\n // true if this sequence can be a terminator, false otherwise\n return HTML_SEQUENCES[i][2];\n }\n\n nextLine = startLine + 1;\n\n // If we are here - we detected HTML block.\n // Let's roll down till block end.\n if (!HTML_SEQUENCES[i][1].test(lineText)) {\n for (; nextLine < endLine; nextLine++) {\n if (state.sCount[nextLine] < state.blkIndent) { break; }\n\n pos = state.bMarks[nextLine] + state.tShift[nextLine];\n max = state.eMarks[nextLine];\n lineText = state.src.slice(pos, max);\n\n if (HTML_SEQUENCES[i][1].test(lineText)) {\n if (lineText.length !== 0) { nextLine++; }\n break;\n }\n }\n }\n\n state.line = nextLine;\n\n token = state.push('html_block', '', 0);\n token.map = [ startLine, nextLine ];\n token.content = state.getLines(startLine, nextLine, state.blkIndent, true);\n\n return true;\n};\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","// style-loader: Adds some css to the DOM by adding a