(function() { "use strict"; var Button = {}, pageLabels = []; /** * Shorthand helper function to getElementById * @param id * @returns {Element} */ var d = function (id) { return document.getElementById(id); }; var ClassHelper = (function() { return { addClass: function(ele, name) { var classes = ele.className.length !== 0 ? ele.className.split(" ") : []; var index = classes.indexOf(name); if (index === -1) { classes.push(name); ele.className = classes.join(" "); } }, removeClass: function(ele, name) { var classes = ele.className.length !== 0 ? ele.className.split(" ") : []; var index = classes.indexOf(name); if (index !== -1) { classes.splice(index, 1); } ele.className = classes.join(" "); }, toggleClass: function(ele, name) { var classes = ele.className.length !== 0 ? ele.className.split(" ") : []; var index = classes.indexOf(name); var wasClassAdded; if (index === -1) { classes.push(name); wasClassAdded = true; } else { classes.splice(index, 1); wasClassAdded = false; } ele.className = classes.join(" "); return wasClassAdded; } }; })(); /** * Encapsulation of sidebar functionality */ var Sidebar = (function () { var Sidebar = {}, loadedThumbsArray = [], lastScroll = 0, sidebar, thumbnailBar, imageType, scrollSidebar = true, thumbnailPanel, bookmarkPanel, searchPanel, isSearchLoaded, searchInput, thumbnailScrollPt = 0, bookmarkScrollPt = 0, searchScrollPt = 0, curPg, pgCount; /** * Performs the setup for the sidebar * @param initialPage Current page * @param pageCount Page count * @param bounds Page bounds array * @param thumbnailType Image type used for thumbnails * @param bookmarks Object containing any bookmarks */ Sidebar.setup = function (initialPage, pageCount, bounds, thumbnailType, bookmarks) { curPg = initialPage; pgCount = pageCount; Button.outlines = d('btnOutlines'); Button.thumbnails = d('btnThumbnails'); Button.search = d('btnSearch'); d('btnSideToggle').onclick = function () { Sidebar.toggleSidebar(); }; Button.outlines.onclick = function () { Sidebar.switchToBookmarks(); }; Button.thumbnails.onclick = function () { Sidebar.switchToThumbnails(); }; Button.search.onclick = function () { Sidebar.switchToSearch(); }; thumbnailBar = d('leftContent'); sidebar = d('left'); thumbnailPanel = d('thumbnailPanel'); bookmarkPanel = d('outlinePanel'); searchPanel = d('searchPanel'); searchInput = d('searchInput'); imageType = thumbnailType; loadThumbnailFrames(bounds); // Initialise loaded array for (var i = 0; i < pgCount; i++) { loadedThumbsArray[i] = false; } Sidebar.switchToThumbnails(); thumbnailBar.addEventListener("scroll", handleThumbnailBarScroll); if (bookmarks.length > 0) { Sidebar.setBookmarks(bookmarks); } bookmarkScrollPt = bookmarkPanel.scrollTop; searchScrollPt = searchPanel.scrollTop; thumbnailBar.scrollTop = thumbnailScrollPt; }; Sidebar.openSidebar = function() { if (sidebar.className.indexOf("open") === -1) { Sidebar.toggleSidebar(); } }; /** * Toggle the sidebar open and closed */ Sidebar.toggleSidebar = function () { if (ClassHelper.toggleClass(sidebar, "open")) { loadVisibleThumbnails(); } }; /** * Display the thumbnail panel in the sidebar */ Sidebar.switchToThumbnails = function () { if (bookmarkPanel.className == "visible") { bookmarkScrollPt = thumbnailBar.scrollTop; } if (searchPanel.className == "visible") { searchScrollPt = thumbnailBar.scrollTop; } thumbnailPanel.className = "visible"; bookmarkPanel.className = "hidden"; searchPanel.className = "hidden"; updateThumbnailPanelToCurrentPage(); Button.thumbnails.className = 'disabled btn'; Button.outlines.className = 'btn'; Button.search.className = 'btn'; }; /** * Display the bookmarks panel in the sidebar */ Sidebar.switchToBookmarks = function () { if (searchPanel.className == "visible") { searchScrollPt = thumbnailBar.scrollTop; } if (thumbnailPanel.className == "visible") { thumbnailScrollPt = thumbnailBar.scrollTop; } thumbnailPanel.className = "hidden"; bookmarkPanel.className = "visible"; searchPanel.className = "hidden"; Button.thumbnails.className = 'btn'; Button.outlines.className = 'disabled btn'; Button.search.className = 'btn'; thumbnailBar.scrollTop = bookmarkScrollPt; }; Sidebar.switchToSearch = function() { if (bookmarkPanel.className == "visible") { bookmarkScrollPt = thumbnailBar.scrollTop; } if (thumbnailPanel.className == "visible") { thumbnailScrollPt = thumbnailBar.scrollTop; } thumbnailPanel.className = "hidden"; bookmarkPanel.className = "hidden"; searchPanel.className = "visible"; Button.thumbnails.className = 'btn'; Button.outlines.className = 'btn'; Button.search.className = 'disabled btn'; var loadListener = function(loaded) { if (loaded) { searchInput.value = ""; searchInput.disabled = ""; searchInput.focus(); } else { searchInput.value = "Search not available."; } }; var progressListener = function(percentageLoaded) { searchInput.value = "Loading (" + percentageLoaded + "%)"; }; if (!isSearchLoaded) { IDRViewer.loadSearch(loadListener, progressListener); } searchInput.focus(); thumbnailBar.scrollTop = searchScrollPt; }; /** * Load the frames for all the thumbnails * @param bounds Page bound array */ var loadThumbnailFrames = function (bounds) { var heights = []; var MAXWIDTH = 160; var MAXHEIGHT = 200; // Calculate height for max width of 160px and max height of 200px for (var i = 0; i < bounds.length; i++) { var height = Math.floor(bounds[i][1] * (MAXWIDTH / bounds[i][0])); heights[i] = (bounds[i][0] > bounds[i][1] || height <= MAXHEIGHT) ? height : MAXHEIGHT; } function makeThumbnailClickHandler(pg) { return function() { scrollSidebar = false; IDRViewer.goToPage(pg); return false; }; } for (var page = 1; page <= bounds.length; page++) { var ele = document.createElement("a"); ele.style.height = heights[page - 1] + "px"; ele.className = "thumbnail"; ele.href = "?page=" + page; ele.id = "thumb" + page; ele.onclick = makeThumbnailClickHandler(page); ele.setAttribute('title', 'Page ' + page); ele.innerHTML = ''; thumbnailPanel.appendChild(ele); } }; var handleThumbnailBarScroll = function () { var scrollTop = thumbnailBar.scrollTop; lastScroll = scrollTop; setTimeout(function () { loadVisibleThumbnails(scrollTop); }, 500); }; var loadVisibleThumbnails = function (scrollTop) { if (typeof scrollTop !== 'undefined' && scrollTop != lastScroll) return; // load thumbs in view for (var thumbIndex = 0; thumbIndex < pgCount; thumbIndex++) { if (!loadedThumbsArray[thumbIndex]) { var curThumb = thumbnailPanel.children[thumbIndex]; // Bails out of the loop when the next thumbnail is below the viewable area if (curThumb.offsetTop > thumbnailBar.scrollTop + thumbnailBar.clientHeight) { break; } if (curThumb.offsetTop + curThumb.clientHeight > thumbnailBar.scrollTop) { curThumb.children[0].setAttribute("src", "thumbnails/" + (thumbIndex + 1) + '.' + imageType); loadedThumbsArray[thumbIndex] = true; } } } }; /** * Scrolls the thumbnail bar to a specific page and adds currentPageThumbnail class. * @param page Page to scroll to */ Sidebar.handlePageChange = function (page) { curPg = page; if (thumbnailPanel.className === "visible") { updateThumbnailPanelToCurrentPage(); } scrollSidebar = true; }; var updateThumbnailPanelToCurrentPage = function() { var curThumb = thumbnailPanel.children[curPg - 1]; if (curThumb.className !== "thumbnail currentPageThumbnail") { for (var i = 0; i < pgCount; i++) { thumbnailPanel.children[i].className = "thumbnail"; } curThumb.className = "thumbnail currentPageThumbnail"; if (scrollSidebar) { thumbnailBar.scrollTop = thumbnailBar.scrollTop + curThumb.getBoundingClientRect().top - d('leftContent').getBoundingClientRect().top; } } }; Sidebar.setBookmarks = function (bookmarks) { ClassHelper.addClass(sidebar, 'hasBookmarks'); addBookmark(bookmarkPanel, bookmarks); }; var addBookmark = function (container, bookmarks) { var outer = document.createElement('ul'); var makeBookmarkClickHandler = function(pg, zoom) { return function() { IDRViewer.goToPage(parseInt(pg), zoom); }; }; for (var i = 0; i < bookmarks.length; i++) { var bookmark = bookmarks[i]; var li = document.createElement('li'); li.setAttribute('title', 'Page ' + bookmark.page); li.innerHTML = bookmark.title; li.onclick = makeBookmarkClickHandler(bookmark.page, bookmark.zoom); outer.appendChild(li); if (typeof(bookmark.children) != 'undefined') { addBookmark(outer, bookmark.children); } } container.appendChild(outer); }; return Sidebar; })(); var populateGoBtn = function (initialPage, pgCount) { Button.go.className = ""; Button.go.innerHTML = ""; for (var i = 1; i <= pgCount; i++) { var opt = document.createElement('option'); opt.value = i; opt.innerHTML = pageLabels.length ? pageLabels[i - 1] : String(i); Button.go.appendChild(opt); } Button.go.selectedIndex = initialPage - 1; }; var handleGoBtn = function () { IDRViewer.goToPage(parseInt(Button.go.options[Button.go.selectedIndex].value)); this.blur(); }; var updateSelectionButtons = function (mode) { switch (mode) { case IDRViewer.SELECT_PAN: Button.select.className = 'btn'; Button.move.className = 'disabled btn'; break; case IDRViewer.SELECT_SELECT: Button.select.className = 'disabled btn'; Button.move.className = 'btn'; break; } }; var handlePageChange = function (data) { d('pgCount').innerHTML = getPageString(data.page, data.pagecount); Sidebar.handlePageChange(data.page); Button.go.selectedIndex = data.page - 1; Button.prev.className = data.isFirstPage ? 'disabled btn' : 'btn'; Button.next.className = data.isLastPage ? 'disabled btn' : 'btn'; }; var handleZoomUpdate = function (data) { Button.zoom.value = data.zoomType; Button.zoom.options[0].innerHTML = Math.floor(data.zoomValue * 100) + "%"; Button.zoomOut.className = data.isMinZoom ? 'disabled btn' : 'btn'; Button.zoomIn.className = data.isMaxZoom ? 'disabled btn' : 'btn'; }; var handleSelectionChange = function (data) { updateSelectionButtons(data.type); }; var handleZoomBtn = function () { var zoomType = Button.zoom.value; if (zoomType != IDRViewer.ZOOM_SPECIFIC) { IDRViewer.setZoom(zoomType); } this.blur(); }; var handleViewBtn = function () { IDRViewer.setLayout(Button.View.value); this.blur(); }; var setupLayoutSwitching = function (pgCount, layout, availableLayouts, isMobile) { if (!isMobile) { if (availableLayouts.length > 1 && pgCount > 1) { Button.View = document.createElement('select'); Button.View.id = 'viewBtn'; var temp = document.createElement('option'); temp.innerHTML = "Presentation"; temp.value = IDRViewer.LAYOUT_PRESENTATION; Button.View.appendChild(temp); if (availableLayouts.indexOf(IDRViewer.LAYOUT_MAGAZINE) != -1) { temp = document.createElement('option'); temp.innerHTML = "Magazine"; temp.value = IDRViewer.LAYOUT_MAGAZINE; Button.View.appendChild(temp); } if (availableLayouts.indexOf(IDRViewer.LAYOUT_CONTINUOUS) != -1) { temp = document.createElement('option'); temp.innerHTML = "Continuous"; temp.value = IDRViewer.LAYOUT_CONTINUOUS; Button.View.appendChild(temp); } Button.View.onchange = handleViewBtn; d('controls-center').appendChild(Button.View); Button.View.value = layout; } } else { Button.zoom.parentNode.removeChild(Button.zoom); Button.move.parentNode.removeChild(Button.move); Button.select.parentNode.removeChild(Button.select); Button.zoomIn.parentNode.removeChild(Button.zoomIn); Button.zoomOut.parentNode.removeChild(Button.zoomOut); } }; var handleFullscreenChange = function (data) { if (data.isFullscreen) { Button.fullscreen.className = "btn open"; } else { Button.fullscreen.className = "btn closed"; } }; function getPageString(page, pageCount) { var result = "/ " + pageCount; if (pageLabels.length) { result = "(" + page + " / " + pageCount + ")"; } return result; } var doSearch = function() { var resultDiv = document.getElementById('searchResults'); resultDiv.innerHTML = ""; var searchTerm = d('searchInput').value; var matchCase = d('cbMatchCase').checked; var limitOnePerPage = d('cbLimitResults').checked; var results = IDRViewer.search(searchTerm, matchCase, limitOnePerPage); d('searchResultsCount').innerHTML = String(results.length) + " results"; var docFrag = document.createDocumentFragment(); for (var i = 0; i < results.length && i < 500; i++) { var pg = results[i].page; var link = document.createElement("a"); link.href = "?page=" + pg; link.innerHTML = results[i].snippet; link.className = "result"; (function(page) { link.onclick = function() { IDRViewer.goToPage(page); return false; }; })(pg); docFrag.appendChild(link); } if (results.length >= 500) { var element = document.createElement("span"); element.innerHTML = "Limited to first 500 results."; element.className = "result"; docFrag.appendChild(element); } resultDiv.appendChild(docFrag); }; /** * Main setup function that runs on load */ IDRViewer.on('ready', function (data) { // Grab buttons Button.go = d('goBtn'); Button.zoom = d('zoomBtn'); Button.fullscreen = d('btnFullScreen'); Button.prev = d('btnPrev'); Button.next = d('btnNext'); Button.move = d('btnMove'); Button.select = d('btnSelect'); Button.zoomIn = d('btnZoomIn'); Button.zoomOut = d('btnZoomOut'); Button.prev.className = data.isFirstPage ? 'disabled btn' : 'btn'; Button.next.className = data.isLastPage ? 'disabled btn' : 'btn'; // Set button actions Button.go.onchange = handleGoBtn; Button.zoom.onchange = handleZoomBtn; Button.prev.onclick = function (e) { IDRViewer.prev(); e.preventDefault(); }; Button.next.onclick = function (e) { IDRViewer.next(); e.preventDefault(); }; Button.move.onclick = function (e) { IDRViewer.setSelectMode(IDRViewer.SELECT_PAN); e.preventDefault(); }; Button.select.onclick = function (e) { IDRViewer.setSelectMode(IDRViewer.SELECT_SELECT); e.preventDefault(); }; Button.zoomIn.onclick = function (e) { IDRViewer.zoomIn(); e.preventDefault(); }; Button.zoomOut.onclick = function (e) { IDRViewer.zoomOut(); e.preventDefault(); }; document.onkeydown = function(e) { switch (e.keyCode) { case 33: // Page Up case 37: // Left Arrow IDRViewer.prev(); e.preventDefault(); break; case 34: // Page Down case 39: // Right Arrow IDRViewer.next(); e.preventDefault(); break; case 36: // Home IDRViewer.goToPage(1); e.preventDefault(); break; case 35: // End IDRViewer.goToPage(data.pagecount); e.preventDefault(); break; } }; // Misc setup document.title = data.title ? data.title : data.fileName; updateSelectionButtons(data.selectMode); pageLabels = data.pageLabels; populateGoBtn(data.page, data.pagecount); Sidebar.setup(data.page, data.pagecount, data.bounds, data.thumbnailType, data.bookmarks); d('pgCount').innerHTML = getPageString(data.page, data.pagecount); if (IDRViewer.isFullscreenEnabled()) { Button.fullscreen.onclick = function () { IDRViewer.toggleFullScreen(); }; IDRViewer.on('fullscreenchange', handleFullscreenChange); } else { Button.fullscreen.parentNode.removeChild(Button.fullscreen); } setupLayoutSwitching(data.pagecount, data.layout, data.availableLayouts, data.isMobile); Button.zoom.value = IDRViewer.ZOOM_AUTO; // Add event listeners IDRViewer.on('selectchange', handleSelectionChange); IDRViewer.on('pagechange', handlePageChange); IDRViewer.on('zoomchange', handleZoomUpdate); var themeToggle = false; d('btnThemeToggle').addEventListener('click', function() { ClassHelper.removeClass(document.body, "light-theme"); ClassHelper.removeClass(document.body, "dark-theme"); ClassHelper.addClass(document.body, themeToggle ? "light-theme" : "dark-theme"); themeToggle = !themeToggle; }); var searchInput = d('searchInput'); searchInput.value = "Loading"; searchInput.disabled = "disabled"; searchInput.oninput = doSearch; d('cbMatchCase').onclick = doSearch; d('cbLimitResults').onclick = doSearch; document.addEventListener('keydown', function(event) { if (event.keyCode == 70 && (event.ctrlKey || event.metaKey)) { Sidebar.openSidebar(); Sidebar.switchToSearch(); event.preventDefault(); } }); (function reticulateSplines() { var el = document.createElement("div"); el.innerHTML = atob("PGRpdiBzdHlsZT0icG9zaXRpb246Zml4ZWQ7cmlnaHQ6MzBweDtib3R0b206MTVweDtib3JkZXItcmFkaXVz" + "OjVweDtib3gtc2hhZG93OiAxcHggMXB4IDRweCByZ2JhKDEyMCwxMjAsMTIwLDAuNSk7bGluZS1oZWlnaHQ6MDtvdmVyZmxvdzpoaW" + "RkZW47Ij48YSBocmVmPSJodHRwczovL3d3dy5pZHJzb2x1dGlvbnMuY29tL2J1aWxkdnUvIiByZWw9Im5vZm9sbG93IiB0YXJnZXQ9" + "Il9ibGFuayI+PGltZyBhbHQ9IkNyZWF0ZWQgd2l0aCBCdWlsZFZ1IiBzdHlsZT0iYm9yZGVyOjA7IiBzcmM9ImRhdGE6aW1hZ2UvcG" + "5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBSllBQUFBdENBTUFBQUI3MG1KbUFBQUNQVkJNVkVYLy8vLysvdjBkSFJ2" + "NysvdjgvUHlJaUlmYjI5di9iMG41d3k3MzkvZjR3aXY0d1NscWFtcng4ZkcwdExQNHZ5WGw1ZVhnNE9EQ3dzSjRlSGR1Ym0zVDA5UD" + "R3Q2YzdmlQZTN0MnhzYkZnWUYvNHdpMzN2Qi9yNit1aG9hQ0VoSU9CZ1lCeGNYQlpXVmZvNk9oUlVWRkRRMElwS1NqajQrTm9hR2Ri" + "VzFvbEpTUDN1Qlh6OC9QS3lzcGRYVjFKU1VjOFBEdjJ0USs2dXJxNHVMZGtaR1JVVkZQL2NFcjJ1aG42K3ZxcXFxcW1wcVpMUzBwQl" + "FUODRPRGI1K2ZuMTlmWFgxOWZIeDhlK3ZyMmVucDZhbXBxWGw1ZU9qbzU4Zkh0MWRYVnpjM05XVmxaSFIwWGxueDM0dXh6Ky9mcnQ3" + "ZTMrK2V2aTR1TFkyTmpRME5ERnhjV3VycTJVbEpSUFQwNGdJQi9uNStmT3pzN0J3Y0g4NTYraW9xS0tpb241MG12K256ejltVHMwTk" + "RMNHdqSDR2aUhub3lIbm9CLzJ1aHZqblJqZ21CUCsvdnorOE16TXpNejk3Y1gvd0svODVxaWpvNk9Sa1pIL2JVcitxajMrcFQzOGp6" + "VXRMU3p1cWgvMXNnais5K1RhMnRyLzI5TC8xc3ovekwvNzNJYUdob1g2Mm9INTBGMzV6RTcvYzA3K2wwSDV5RUQ5a1VEK2RrRC9zRH" + "ozeER2OGtqbi93RGoxdVNULysvcisrdkgvOU9ycTZ1ci83T2YvNXQvKzg5Zjg2cjM4NDUveDBwai9wby80eTRML2tYVDUwV1AvZzJI" + "NXlVVC9uMFQrYjBQL3REdit0emZ5cERMOGhUTDRzaTdycENJYkd4dnlyeGIvOXZQKzZ0ajk4dFAvMWNyNDU4bisyOFgrM2NQOTRxMy" + "91cWYvdUtUKzE1di9ycGo3NEpYL25JTDlwNEQ1MVh6NjFXL3N3R3Y3cm1UK3RtUCtrMkg5cDFQbXFUdnpxQzZaVVdMMEFBQUdYVWxF" + "UVZSWXcrMlloMTlTVVJUSHo3czg1WUdBVEJOSUJRRVZBeVFRVXlRMTl5cHpsWmxsYXBxMmQ3YjMzbnZ2dmZjZWYxdm52aWRGRmlPcl" + "QzMCsrZnZvdS9kdzEvZWRjKzY5ZklCUmplcS9GQU0vcS9nNEVNRWYxbno0SjdFNnB3SXdJOGRpWWd3SU04eUtOdmJDemdYWTRSZThs" + "YW53ZXpKeENvYmgvN0Vtck12Q1YzdFdLaTJEVkFVZW9DcjNSM0Q2Sm83cndMNGp4bHBxelRMWFZuNDNmK1BDVU11d05OUzdGWDVITT" + "lZTU15RzhPamlPMnpSU2I3R2djSy9EMHNIS1U5U1pvUFNrQUJRN25RQ1Fwbld3WVBGWXFEdWJVM0piRUVPT2RRbEFBeXVCU3ExU1ZH" + "VExkRnJDK3VNNDE4TnhXNmVHdGs5aFl2ZVd6Y2w3UU9Lck5hUjZDbVcyaGFETjlhV0Q0cWJiS3ZlaVBRbVdXYXRzMHhGWGJpc0Nsd2" + "JhZlpiY1NXM2Q2ZTNLREUzV3hKSndYRk8zY2FnTDN5WVlFeXRXUzdxRUwyZGs2MENIaTgvV1VxdFd6ZFlXbzIyQlpUVmVxd2owTGtB" + "djVzaWJNdXdnbTlXY0pkRmlpQXNNREdncmdRMnpTMTV6bk5GbzdGbnlsZWdNWll3TlM1OHJkQ3kxQTB6TE1NWFovVkJRWXk1c2pMZG" + "lTbWVZTnJ2OHVXcUFzaG9BeUhlcHFzczFTaXRVVk1UTDBIdWFWQUN6Tit4Q0p4RkxhcFJ5VzRKNzkxVC8va1ZZeG9SVkVwRHo1YlE0" + "VEtmcWZDWDZ5enlqTkFkbXpRYUlNNlBOMU1WanJZTE9iWkxGWmNhNVVrSG1VVlBNNlpodk5tWFlkUmIxY0ZLcE5FRnEzTHFXdCs4UE" + "RGemYvNGh5UmNkaXdHeFhNVTFPTUhnQnZMWWpUQU5NTDhOc0FuTVplakJnZ1JUUVZrTjdZUXVncW02cXdMNWFCTlltdnd4RWpweEdp" + "QThBS214eUdSRXJJVUc2Y3hHYWh6NE9ES3paZitVcFFFeFlZSExKWEV1aDJrSTNmcnFoSE5RK1U1eVptZW5US3FFODNWQUJTb05Nby" + "tWZDZ0K01ma3VGaGtwSGsxV1duRm5wQU9leUNDZndPYzZJVkVsSkNVbFNUTEEzOWYwRGZWY3U3emt6SlRvV3o2WFVLVEdmaFdvSnJt" + "OVJnVHdmVkNWRnVCR296ZW9hdnZTbDQxZ0o5dEZKV0d3dnlvOXdKejRYc0JJVEU1T1NOcDJxcjYvdjc3OStlYytLZDRlQm50c1JzTD" + "dmdVZHMk14T3RRMmpiQXNTaVZHTlFpUWQ2Ni92cSt6L3RXYkZ5em9jN2YrK3FSazNaeXcxaHpSMDdkdTZCTlgxOTlUZFdJRmJYam9l" + "d2VNTmZ3NEpPQVl0U1RaNDNlY0thdnQ3ZWxTdm56T2xhdGVybDh1M3JnWW1LeGJBUjRqR3lucWlUUVN5a21qQmgzTGhidmIxWEw4N3" + "AycmZxMmlXeE9HL0RuL0FXRTBPQzNlV01OT1hIVUdjaDFmanh0MjVjdmJpamE5KzFTM2xpc1hqN3ZVaFg5YlJBbmRzZE1IalF5S3kx" + "NmVnOVpMQ3BBU1JWYmdVdTJWN25VdzVsZXBtdExoREkwVFJqblFGOWhjQlRVSTZQNU0yODRkQU9QN21NMGlFc1NvVWFYTk8xWTllcT" + "NjdkZxRHp4UnB6cHgxajVvQ1ZrOVdwQ3lGTDhtQkRrQVZVR2FVV3NRbEtPbzBvSlNlWUhzMUJGU0hZYjlweE5aMnZLS1FLVUtGZVB6" + "Mlk3ZnpNMnVPRmJiYUZZWXhCTGNOYmc0T0RldDd2MkJhbkVRYTd2c0xEUUVKZEUzbVFsMC9HbE04Z2tpaldSNkJFcm5hVGlJRFhKVm" + "cxaHBSR1hNcjdVVEVnWm9HUUtRT25TK1djV2p5WFBHWWExaE9POUZZemhnVmNuNE1FdXBCS3dVSXVSS3h5V2pGNkpwQzRHTEJva0hE" + "RHhDSTJlZHVncXpRK1BkWHluVVFnaUpueFA1eUo2dmg5K0w4N0x5K094cUI0alZ4Z3NlNHBGN1c2YkZRT1dqRTVpSWNSSkU5R2dRc3" + "VIRVE2UHhXemxwSWcxZC9MZXpvN2duWE5zdzhiRlQ1NmRQdjNpN05uejU3ZFRmNFhCNHFXRjJMQ3dZVFh4MHJJR1g2UWxGeUlFY1Fw" + "c3dTZ21KblIyclAzQmpqMTQrK2pSWSt2WEh3eUg1YTZjcmMwbWFSUkw4RU1Vckd5aXBxWGV6RUoxUVNTcytYQ0M2em5YY1NqeU1SSU" + "9pNzZ4aDVCbWlxV0dJbWpzSnQ1UXJHUVFNUXlQaGFzejRDVnQ4ZnhRWDNLeElWUEFzdlB6eVF1SG4yMVRsNnlGYUlxVThpMkV6SVFV" + "RzZtbXlVemFra094TEVKUHhESmo2ZXdtTXNFMnRlcXJnRmRqSVQrZHNpN01tVHNDckJveU1jMms2U1lCQjBBbDVsaVpLWVBZYWF4OH" + "BBem5uVWxJYmE3Qkpac0JZQ0xkTlZvN0lXNTZ2dUpmaVYzVENvS3lwZ0hLcElIaFhQT1pFV0pWRTE3dWRseW9PSXV2MXpWU3JGcVN5" + "bU1KV2dmb0xhbzJXVXJRQzRWV09RaEt0bFo1RldhREE2SXJ4bStudWxhRlFxOVlLQmhRYWpKWDZWbHFzSk5hVlZpa0tIaDVjTVVTUF" + "ZaS0crQ0xkTTRnSUJUN1RTWjAzYTlqeFJKK0p2UkdaaUwvTUlINmpWakFzRlJNMEJMbGk5alFyekRNMTNhK2huUS9KR1ZGb21HTS8r" + "WVBTU1BRdXJSL0VrdFpBQ3lNYWxTaitqMzZESlBYRlVmWVU0NDFBQUFBQUVsRlRrU3VRbUNDIiAvPjwvYT48L2Rpdj4="); document.body[atob("YXBwZW5kQ2hpbGQ=")](el.firstChild); })(); }); })();