mirror of
https://github.com/stancl/tenancy-docs.git
synced 2025-12-12 10:14:03 +00:00
123 lines
No EOL
103 KiB
JavaScript
123 lines
No EOL
103 KiB
JavaScript
/******/ (function(modules) { // webpackBootstrap
|
|
/******/ // The module cache
|
|
/******/ var installedModules = {};
|
|
/******/
|
|
/******/ // The require function
|
|
/******/ function __webpack_require__(moduleId) {
|
|
/******/
|
|
/******/ // Check if module is in cache
|
|
/******/ if(installedModules[moduleId]) {
|
|
/******/ return installedModules[moduleId].exports;
|
|
/******/ }
|
|
/******/ // Create a new module (and put it into the cache)
|
|
/******/ var module = installedModules[moduleId] = {
|
|
/******/ i: moduleId,
|
|
/******/ l: false,
|
|
/******/ exports: {}
|
|
/******/ };
|
|
/******/
|
|
/******/ // Execute the module function
|
|
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
|
|
/******/
|
|
/******/ // Flag the module as loaded
|
|
/******/ module.l = true;
|
|
/******/
|
|
/******/ // Return the exports of the module
|
|
/******/ return module.exports;
|
|
/******/ }
|
|
/******/
|
|
/******/
|
|
/******/ // expose the modules object (__webpack_modules__)
|
|
/******/ __webpack_require__.m = modules;
|
|
/******/
|
|
/******/ // expose the module cache
|
|
/******/ __webpack_require__.c = installedModules;
|
|
/******/
|
|
/******/ // define getter function for harmony exports
|
|
/******/ __webpack_require__.d = function(exports, name, getter) {
|
|
/******/ if(!__webpack_require__.o(exports, name)) {
|
|
/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
|
|
/******/ }
|
|
/******/ };
|
|
/******/
|
|
/******/ // define __esModule on exports
|
|
/******/ __webpack_require__.r = function(exports) {
|
|
/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
|
|
/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
/******/ }
|
|
/******/ Object.defineProperty(exports, '__esModule', { value: true });
|
|
/******/ };
|
|
/******/
|
|
/******/ // create a fake namespace object
|
|
/******/ // mode & 1: value is a module id, require it
|
|
/******/ // mode & 2: merge all properties of value into the ns
|
|
/******/ // mode & 4: return value when already ns object
|
|
/******/ // mode & 8|1: behave like require
|
|
/******/ __webpack_require__.t = function(value, mode) {
|
|
/******/ if(mode & 1) value = __webpack_require__(value);
|
|
/******/ if(mode & 8) return value;
|
|
/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
|
|
/******/ var ns = Object.create(null);
|
|
/******/ __webpack_require__.r(ns);
|
|
/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
|
|
/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
|
|
/******/ return ns;
|
|
/******/ };
|
|
/******/
|
|
/******/ // getDefaultExport function for compatibility with non-harmony modules
|
|
/******/ __webpack_require__.n = function(module) {
|
|
/******/ var getter = module && module.__esModule ?
|
|
/******/ function getDefault() { return module['default']; } :
|
|
/******/ function getModuleExports() { return module; };
|
|
/******/ __webpack_require__.d(getter, 'a', getter);
|
|
/******/ return getter;
|
|
/******/ };
|
|
/******/
|
|
/******/ // Object.prototype.hasOwnProperty.call
|
|
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
|
|
/******/
|
|
/******/ // __webpack_public_path__
|
|
/******/ __webpack_require__.p = "/";
|
|
/******/
|
|
/******/
|
|
/******/ // Load entry module and return exports
|
|
/******/ return __webpack_require__(__webpack_require__.s = 1);
|
|
/******/ })
|
|
/************************************************************************/
|
|
/******/ ({
|
|
|
|
/***/ "./node_modules/turbolinks/dist/turbolinks.js":
|
|
/*!****************************************************!*\
|
|
!*** ./node_modules/turbolinks/dist/turbolinks.js ***!
|
|
\****************************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*\nTurbolinks 5.2.0\nCopyright © 2018 Basecamp, LLC\n */\n(function(){var t=this;(function(){(function(){this.Turbolinks={supported:function(){return null!=window.history.pushState&&null!=window.requestAnimationFrame&&null!=window.addEventListener}(),visit:function(t,r){return e.controller.visit(t,r)},clearCache:function(){return e.controller.clearCache()},setProgressBarDelay:function(t){return e.controller.setProgressBarDelay(t)}}}).call(this)}).call(t);var e=t.Turbolinks;(function(){(function(){var t,r,n,o=[].slice;e.copyObject=function(t){var e,r,n;r={};for(e in t)n=t[e],r[e]=n;return r},e.closest=function(e,r){return t.call(e,r)},t=function(){var t,e;return t=document.documentElement,null!=(e=t.closest)?e:function(t){var e;for(e=this;e;){if(e.nodeType===Node.ELEMENT_NODE&&r.call(e,t))return e;e=e.parentNode}}}(),e.defer=function(t){return setTimeout(t,1)},e.throttle=function(t){var e;return e=null,function(){var r;return r=1<=arguments.length?o.call(arguments,0):[],null!=e?e:e=requestAnimationFrame(function(n){return function(){return e=null,t.apply(n,r)}}(this))}},e.dispatch=function(t,e){var r,o,i,s,a,u;return a=null!=e?e:{},u=a.target,r=a.cancelable,o=a.data,i=document.createEvent(\"Events\"),i.initEvent(t,!0,r===!0),i.data=null!=o?o:{},i.cancelable&&!n&&(s=i.preventDefault,i.preventDefault=function(){return this.defaultPrevented||Object.defineProperty(this,\"defaultPrevented\",{get:function(){return!0}}),s.call(this)}),(null!=u?u:document).dispatchEvent(i),i},n=function(){var t;return t=document.createEvent(\"Events\"),t.initEvent(\"test\",!0,!0),t.preventDefault(),t.defaultPrevented}(),e.match=function(t,e){return r.call(t,e)},r=function(){var t,e,r,n;return t=document.documentElement,null!=(e=null!=(r=null!=(n=t.matchesSelector)?n:t.webkitMatchesSelector)?r:t.msMatchesSelector)?e:t.mozMatchesSelector}(),e.uuid=function(){var t,e,r;for(r=\"\",t=e=1;36>=e;t=++e)r+=9===t||14===t||19===t||24===t?\"-\":15===t?\"4\":20===t?(Math.floor(4*Math.random())+8).toString(16):Math.floor(15*Math.random()).toString(16);return r}}).call(this),function(){e.Location=function(){function t(t){var e,r;null==t&&(t=\"\"),r=document.createElement(\"a\"),r.href=t.toString(),this.absoluteURL=r.href,e=r.hash.length,2>e?this.requestURL=this.absoluteURL:(this.requestURL=this.absoluteURL.slice(0,-e),this.anchor=r.hash.slice(1))}var e,r,n,o;return t.wrap=function(t){return t instanceof this?t:new this(t)},t.prototype.getOrigin=function(){return this.absoluteURL.split(\"/\",3).join(\"/\")},t.prototype.getPath=function(){var t,e;return null!=(t=null!=(e=this.requestURL.match(/\\/\\/[^\\/]*(\\/[^?;]*)/))?e[1]:void 0)?t:\"/\"},t.prototype.getPathComponents=function(){return this.getPath().split(\"/\").slice(1)},t.prototype.getLastPathComponent=function(){return this.getPathComponents().slice(-1)[0]},t.prototype.getExtension=function(){var t,e;return null!=(t=null!=(e=this.getLastPathComponent().match(/\\.[^.]*$/))?e[0]:void 0)?t:\"\"},t.prototype.isHTML=function(){return this.getExtension().match(/^(?:|\\.(?:htm|html|xhtml))$/)},t.prototype.isPrefixedBy=function(t){var e;return e=r(t),this.isEqualTo(t)||o(this.absoluteURL,e)},t.prototype.isEqualTo=function(t){return this.absoluteURL===(null!=t?t.absoluteURL:void 0)},t.prototype.toCacheKey=function(){return this.requestURL},t.prototype.toJSON=function(){return this.absoluteURL},t.prototype.toString=function(){return this.absoluteURL},t.prototype.valueOf=function(){return this.absoluteURL},r=function(t){return e(t.getOrigin()+t.getPath())},e=function(t){return n(t,\"/\")?t:t+\"/\"},o=function(t,e){return t.slice(0,e.length)===e},n=function(t,e){return t.slice(-e.length)===e},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.HttpRequest=function(){function r(r,n,o){this.delegate=r,this.requestCanceled=t(this.requestCanceled,this),this.requestTimedOut=t(this.requestTimedOut,this),this.requestFailed=t(this.requestFailed,this),this.requestLoaded=t(this.requestLoaded,this),this.requestProgressed=t(this.requestProgressed,this),this.url=e.Location.wrap(n).requestURL,this.referrer=e.Location.wrap(o).absoluteURL,this.createXHR()}return r.NETWORK_FAILURE=0,r.TIMEOUT_FAILURE=-1,r.timeout=60,r.prototype.send=function(){var t;return this.xhr&&!this.sent?(this.notifyApplicationBeforeRequestStart(),this.setProgress(0),this.xhr.send(),this.sent=!0,\"function\"==typeof(t=this.delegate).requestStarted?t.requestStarted():void 0):void 0},r.prototype.cancel=function(){return this.xhr&&this.sent?this.xhr.abort():void 0},r.prototype.requestProgressed=function(t){return t.lengthComputable?this.setProgress(t.loaded/t.total):void 0},r.prototype.requestLoaded=function(){return this.endRequest(function(t){return function(){var e;return 200<=(e=t.xhr.status)&&300>e?t.delegate.requestCompletedWithResponse(t.xhr.responseText,t.xhr.getResponseHeader(\"Turbolinks-Location\")):(t.failed=!0,t.delegate.requestFailedWithStatusCode(t.xhr.status,t.xhr.responseText))}}(this))},r.prototype.requestFailed=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.NETWORK_FAILURE)}}(this))},r.prototype.requestTimedOut=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.TIMEOUT_FAILURE)}}(this))},r.prototype.requestCanceled=function(){return this.endRequest()},r.prototype.notifyApplicationBeforeRequestStart=function(){return e.dispatch(\"turbolinks:request-start\",{data:{url:this.url,xhr:this.xhr}})},r.prototype.notifyApplicationAfterRequestEnd=function(){return e.dispatch(\"turbolinks:request-end\",{data:{url:this.url,xhr:this.xhr}})},r.prototype.createXHR=function(){return this.xhr=new XMLHttpRequest,this.xhr.open(\"GET\",this.url,!0),this.xhr.timeout=1e3*this.constructor.timeout,this.xhr.setRequestHeader(\"Accept\",\"text/html, application/xhtml+xml\"),this.xhr.setRequestHeader(\"Turbolinks-Referrer\",this.referrer),this.xhr.onprogress=this.requestProgressed,this.xhr.onload=this.requestLoaded,this.xhr.onerror=this.requestFailed,this.xhr.ontimeout=this.requestTimedOut,this.xhr.onabort=this.requestCanceled},r.prototype.endRequest=function(t){return this.xhr?(this.notifyApplicationAfterRequestEnd(),null!=t&&t.call(this),this.destroy()):void 0},r.prototype.setProgress=function(t){var e;return this.progress=t,\"function\"==typeof(e=this.delegate).requestProgressed?e.requestProgressed(this.progress):void 0},r.prototype.destroy=function(){var t;return this.setProgress(1),\"function\"==typeof(t=this.delegate).requestFinished&&t.requestFinished(),this.delegate=null,this.xhr=null},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.ProgressBar=function(){function e(){this.trickle=t(this.trickle,this),this.stylesheetElement=this.createStylesheetElement(),this.progressElement=this.createProgressElement()}var r;return r=300,e.defaultCSS=\".turbolinks-progress-bar {\\n position: fixed;\\n display: block;\\n top: 0;\\n left: 0;\\n height: 3px;\\n background: #0076ff;\\n z-index: 9999;\\n transition: width \"+r+\"ms ease-out, opacity \"+r/2+\"ms \"+r/2+\"ms ease-in;\\n transform: translate3d(0, 0, 0);\\n}\",e.prototype.show=function(){return this.visible?void 0:(this.visible=!0,this.installStylesheetElement(),this.installProgressElement(),this.startTrickling())},e.prototype.hide=function(){return this.visible&&!this.hiding?(this.hiding=!0,this.fadeProgressElement(function(t){return function(){return t.uninstallProgressElement(),t.stopTrickling(),t.visible=!1,t.hiding=!1}}(this))):void 0},e.prototype.setValue=function(t){return this.value=t,this.refresh()},e.prototype.installStylesheetElement=function(){return document.head.insertBefore(this.stylesheetElement,document.head.firstChild)},e.prototype.installProgressElement=function(){return this.progressElement.style.width=0,this.progressElement.style.opacity=1,document.documentElement.insertBefore(this.progressElement,document.body),this.refresh()},e.prototype.fadeProgressElement=function(t){return this.progressElement.style.opacity=0,setTimeout(t,1.5*r)},e.prototype.uninstallProgressElement=function(){return this.progressElement.parentNode?document.documentElement.removeChild(this.progressElement):void 0},e.prototype.startTrickling=function(){return null!=this.trickleInterval?this.trickleInterval:this.trickleInterval=setInterval(this.trickle,r)},e.prototype.stopTrickling=function(){return clearInterval(this.trickleInterval),this.trickleInterval=null},e.prototype.trickle=function(){return this.setValue(this.value+Math.random()/100)},e.prototype.refresh=function(){return requestAnimationFrame(function(t){return function(){return t.progressElement.style.width=10+90*t.value+\"%\"}}(this))},e.prototype.createStylesheetElement=function(){var t;return t=document.createElement(\"style\"),t.type=\"text/css\",t.textContent=this.constructor.defaultCSS,t},e.prototype.createProgressElement=function(){var t;return t=document.createElement(\"div\"),t.className=\"turbolinks-progress-bar\",t},e}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.BrowserAdapter=function(){function r(r){this.controller=r,this.showProgressBar=t(this.showProgressBar,this),this.progressBar=new e.ProgressBar}var n,o,i;return i=e.HttpRequest,n=i.NETWORK_FAILURE,o=i.TIMEOUT_FAILURE,r.prototype.visitProposedToLocationWithAction=function(t,e){return this.controller.startVisitToLocationWithAction(t,e)},r.prototype.visitStarted=function(t){return t.issueRequest(),t.changeHistory(),t.loadCachedSnapshot()},r.prototype.visitRequestStarted=function(t){return this.progressBar.setValue(0),t.hasCachedSnapshot()||\"restore\"!==t.action?this.showProgressBarAfterDelay():this.showProgressBar()},r.prototype.visitRequestProgressed=function(t){return this.progressBar.setValue(t.progress)},r.prototype.visitRequestCompleted=function(t){return t.loadResponse()},r.prototype.visitRequestFailedWithStatusCode=function(t,e){switch(e){case n:case o:return this.reload();default:return t.loadResponse()}},r.prototype.visitRequestFinished=function(t){return this.hideProgressBar()},r.prototype.visitCompleted=function(t){return t.followRedirect()},r.prototype.pageInvalidated=function(){return this.reload()},r.prototype.showProgressBarAfterDelay=function(){return this.progressBarTimeout=setTimeout(this.showProgressBar,this.controller.progressBarDelay)},r.prototype.showProgressBar=function(){return this.progressBar.show()},r.prototype.hideProgressBar=function(){return this.progressBar.hide(),clearTimeout(this.progressBarTimeout)},r.prototype.reload=function(){return window.location.reload()},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.History=function(){function r(e){this.delegate=e,this.onPageLoad=t(this.onPageLoad,this),this.onPopState=t(this.onPopState,this)}return r.prototype.start=function(){return this.started?void 0:(addEventListener(\"popstate\",this.onPopState,!1),addEventListener(\"load\",this.onPageLoad,!1),this.started=!0)},r.prototype.stop=function(){return this.started?(removeEventListener(\"popstate\",this.onPopState,!1),removeEventListener(\"load\",this.onPageLoad,!1),this.started=!1):void 0},r.prototype.push=function(t,r){return t=e.Location.wrap(t),this.update(\"push\",t,r)},r.prototype.replace=function(t,r){return t=e.Location.wrap(t),this.update(\"replace\",t,r)},r.prototype.onPopState=function(t){var r,n,o,i;return this.shouldHandlePopState()&&(i=null!=(n=t.state)?n.turbolinks:void 0)?(r=e.Location.wrap(window.location),o=i.restorationIdentifier,this.delegate.historyPoppedToLocationWithRestorationIdentifier(r,o)):void 0},r.prototype.onPageLoad=function(t){return e.defer(function(t){return function(){return t.pageLoaded=!0}}(this))},r.prototype.shouldHandlePopState=function(){return this.pageIsLoaded()},r.prototype.pageIsLoaded=function(){return this.pageLoaded||\"complete\"===document.readyState},r.prototype.update=function(t,e,r){var n;return n={turbolinks:{restorationIdentifier:r}},history[t+\"State\"](n,null,e)},r}()}.call(this),function(){e.HeadDetails=function(){function t(t){var e,r,n,s,a,u;for(this.elements={},n=0,a=t.length;a>n;n++)u=t[n],u.nodeType===Node.ELEMENT_NODE&&(s=u.outerHTML,r=null!=(e=this.elements)[s]?e[s]:e[s]={type:i(u),tracked:o(u),elements:[]},r.elements.push(u))}var e,r,n,o,i;return t.fromHeadElement=function(t){var e;return new this(null!=(e=null!=t?t.childNodes:void 0)?e:[])},t.prototype.hasElementWithKey=function(t){return t in this.elements},t.prototype.getTrackedElementSignature=function(){var t,e;return function(){var r,n;r=this.elements,n=[];for(t in r)e=r[t].tracked,e&&n.push(t);return n}.call(this).join(\"\")},t.prototype.getScriptElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails(\"script\",t)},t.prototype.getStylesheetElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails(\"stylesheet\",t)},t.prototype.getElementsMatchingTypeNotInDetails=function(t,e){var r,n,o,i,s,a;o=this.elements,s=[];for(n in o)i=o[n],a=i.type,r=i.elements,a!==t||e.hasElementWithKey(n)||s.push(r[0]);return s},t.prototype.getProvisionalElements=function(){var t,e,r,n,o,i,s;r=[],n=this.elements;for(e in n)o=n[e],s=o.type,i=o.tracked,t=o.elements,null!=s||i?t.length>1&&r.push.apply(r,t.slice(1)):r.push.apply(r,t);return r},t.prototype.getMetaValue=function(t){var e;return null!=(e=this.findMetaElementByName(t))?e.getAttribute(\"content\"):void 0},t.prototype.findMetaElementByName=function(t){var r,n,o,i;r=void 0,i=this.elements;for(o in i)n=i[o].elements,e(n[0],t)&&(r=n[0]);return r},i=function(t){return r(t)?\"script\":n(t)?\"stylesheet\":void 0},o=function(t){return\"reload\"===t.getAttribute(\"data-turbolinks-track\")},r=function(t){var e;return e=t.tagName.toLowerCase(),\"script\"===e},n=function(t){var e;return e=t.tagName.toLowerCase(),\"style\"===e||\"link\"===e&&\"stylesheet\"===t.getAttribute(\"rel\")},e=function(t,e){var r;return r=t.tagName.toLowerCase(),\"meta\"===r&&t.getAttribute(\"name\")===e},t}()}.call(this),function(){e.Snapshot=function(){function t(t,e){this.headDetails=t,this.bodyElement=e}return t.wrap=function(t){return t instanceof this?t:\"string\"==typeof t?this.fromHTMLString(t):this.fromHTMLElement(t)},t.fromHTMLString=function(t){var e;return e=document.createElement(\"html\"),e.innerHTML=t,this.fromHTMLElement(e)},t.fromHTMLElement=function(t){var r,n,o,i;return o=t.querySelector(\"head\"),r=null!=(i=t.querySelector(\"body\"))?i:document.createElement(\"body\"),n=e.HeadDetails.fromHeadElement(o),new this(n,r)},t.prototype.clone=function(){return new this.constructor(this.headDetails,this.bodyElement.cloneNode(!0))},t.prototype.getRootLocation=function(){var t,r;return r=null!=(t=this.getSetting(\"root\"))?t:\"/\",new e.Location(r)},t.prototype.getCacheControlValue=function(){return this.getSetting(\"cache-control\")},t.prototype.getElementForAnchor=function(t){try{return this.bodyElement.querySelector(\"[id='\"+t+\"'], a[name='\"+t+\"']\")}catch(e){}},t.prototype.getPermanentElements=function(){return this.bodyElement.querySelectorAll(\"[id][data-turbolinks-permanent]\")},t.prototype.getPermanentElementById=function(t){return this.bodyElement.querySelector(\"#\"+t+\"[data-turbolinks-permanent]\")},t.prototype.getPermanentElementsPresentInSnapshot=function(t){var e,r,n,o,i;for(o=this.getPermanentElements(),i=[],r=0,n=o.length;n>r;r++)e=o[r],t.getPermanentElementById(e.id)&&i.push(e);return i},t.prototype.findFirstAutofocusableElement=function(){return this.bodyElement.querySelector(\"[autofocus]\")},t.prototype.hasAnchor=function(t){return null!=this.getElementForAnchor(t)},t.prototype.isPreviewable=function(){return\"no-preview\"!==this.getCacheControlValue()},t.prototype.isCacheable=function(){return\"no-cache\"!==this.getCacheControlValue()},t.prototype.isVisitable=function(){return\"reload\"!==this.getSetting(\"visit-control\")},t.prototype.getSetting=function(t){return this.headDetails.getMetaValue(\"turbolinks-\"+t)},t}()}.call(this),function(){var t=[].slice;e.Renderer=function(){function e(){}var r;return e.render=function(){var e,r,n,o;return n=arguments[0],r=arguments[1],e=3<=arguments.length?t.call(arguments,2):[],o=function(t,e,r){r.prototype=t.prototype;var n=new r,o=t.apply(n,e);return Object(o)===o?o:n}(this,e,function(){}),o.delegate=n,o.render(r),o},e.prototype.renderView=function(t){return this.delegate.viewWillRender(this.newBody),t(),this.delegate.viewRendered(this.newBody)},e.prototype.invalidateView=function(){return this.delegate.viewInvalidated()},e.prototype.createScriptElement=function(t){var e;return\"false\"===t.getAttribute(\"data-turbolinks-eval\")?t:(e=document.createElement(\"script\"),e.textContent=t.textContent,e.async=!1,r(e,t),e)},r=function(t,e){var r,n,o,i,s,a,u;for(i=e.attributes,a=[],r=0,n=i.length;n>r;r++)s=i[r],o=s.name,u=s.value,a.push(t.setAttribute(o,u));return a},e}()}.call(this),function(){var t,r,n=function(t,e){function r(){this.constructor=t}for(var n in e)o.call(e,n)&&(t[n]=e[n]);return r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype,t},o={}.hasOwnProperty;e.SnapshotRenderer=function(e){function o(t,e,r){this.currentSnapshot=t,this.newSnapshot=e,this.isPreview=r,this.currentHeadDetails=this.currentSnapshot.headDetails,this.newHeadDetails=this.newSnapshot.headDetails,this.currentBody=this.currentSnapshot.bodyElement,this.newBody=this.newSnapshot.bodyElement}return n(o,e),o.prototype.render=function(t){return this.shouldRender()?(this.mergeHead(),this.renderView(function(e){return function(){return e.replaceBody(),e.isPreview||e.focusFirstAutofocusableElement(),t()}}(this))):this.invalidateView()},o.prototype.mergeHead=function(){return this.copyNewHeadStylesheetElements(),this.copyNewHeadScriptElements(),this.removeCurrentHeadProvisionalElements(),this.copyNewHeadProvisionalElements()},o.prototype.replaceBody=function(){var t;return t=this.relocateCurrentBodyPermanentElements(),this.activateNewBodyScriptElements(),this.assignNewBody(),this.replacePlaceholderElementsWithClonedPermanentElements(t)},o.prototype.shouldRender=function(){return this.newSnapshot.isVisitable()&&this.trackedElementsAreIdentical()},o.prototype.trackedElementsAreIdentical=function(){return this.currentHeadDetails.getTrackedElementSignature()===this.newHeadDetails.getTrackedElementSignature()},o.prototype.copyNewHeadStylesheetElements=function(){var t,e,r,n,o;for(n=this.getNewHeadStylesheetElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(t));return o},o.prototype.copyNewHeadScriptElements=function(){var t,e,r,n,o;for(n=this.getNewHeadScriptElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(this.createScriptElement(t)));return o},o.prototype.removeCurrentHeadProvisionalElements=function(){var t,e,r,n,o;for(n=this.getCurrentHeadProvisionalElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.removeChild(t));return o},o.prototype.copyNewHeadProvisionalElements=function(){var t,e,r,n,o;for(n=this.getNewHeadProvisionalElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(t));return o},o.prototype.relocateCurrentBodyPermanentElements=function(){var e,n,o,i,s,a,u;for(a=this.getCurrentBodyPermanentElements(),u=[],e=0,n=a.length;n>e;e++)i=a[e],s=t(i),o=this.newSnapshot.getPermanentElementById(i.id),r(i,s.element),r(o,i),u.push(s);return u},o.prototype.replacePlaceholderElementsWithClonedPermanentElements=function(t){var e,n,o,i,s,a,u;for(u=[],o=0,i=t.length;i>o;o++)a=t[o],n=a.element,s=a.permanentElement,e=s.cloneNode(!0),u.push(r(n,e));return u},o.prototype.activateNewBodyScriptElements=function(){var t,e,n,o,i,s;for(i=this.getNewBodyScriptElements(),s=[],e=0,o=i.length;o>e;e++)n=i[e],t=this.createScriptElement(n),s.push(r(n,t));return s},o.prototype.assignNewBody=function(){return document.body=this.newBody},o.prototype.focusFirstAutofocusableElement=function(){var t;return null!=(t=this.newSnapshot.findFirstAutofocusableElement())?t.focus():void 0},o.prototype.getNewHeadStylesheetElements=function(){return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails)},o.prototype.getNewHeadScriptElements=function(){return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails)},o.prototype.getCurrentHeadProvisionalElements=function(){return this.currentHeadDetails.getProvisionalElements()},o.prototype.getNewHeadProvisionalElements=function(){return this.newHeadDetails.getProvisionalElements()},o.prototype.getCurrentBodyPermanentElements=function(){return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot)},o.prototype.getNewBodyScriptElements=function(){return this.newBody.querySelectorAll(\"script\")},o}(e.Renderer),t=function(t){var e;return e=document.createElement(\"meta\"),e.setAttribute(\"name\",\"turbolinks-permanent-placeholder\"),e.setAttribute(\"content\",t.id),{element:e,permanentElement:t}},r=function(t,e){var r;return(r=t.parentNode)?r.replaceChild(e,t):void 0}}.call(this),function(){var t=function(t,e){function n(){this.constructor=t}for(var o in e)r.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;e.ErrorRenderer=function(e){function r(t){var e;e=document.createElement(\"html\"),e.innerHTML=t,this.newHead=e.querySelector(\"head\"),this.newBody=e.querySelector(\"body\")}return t(r,e),r.prototype.render=function(t){return this.renderView(function(e){return function(){return e.replaceHeadAndBody(),e.activateBodyScriptElements(),t()}}(this))},r.prototype.replaceHeadAndBody=function(){var t,e;return e=document.head,t=document.body,e.parentNode.replaceChild(this.newHead,e),t.parentNode.replaceChild(this.newBody,t)},r.prototype.activateBodyScriptElements=function(){var t,e,r,n,o,i;for(n=this.getScriptElements(),i=[],e=0,r=n.length;r>e;e++)o=n[e],t=this.createScriptElement(o),i.push(o.parentNode.replaceChild(t,o));return i},r.prototype.getScriptElements=function(){return document.documentElement.querySelectorAll(\"script\")},r}(e.Renderer)}.call(this),function(){e.View=function(){function t(t){this.delegate=t,this.htmlElement=document.documentElement}return t.prototype.getRootLocation=function(){return this.getSnapshot().getRootLocation()},t.prototype.getElementForAnchor=function(t){return this.getSnapshot().getElementForAnchor(t)},t.prototype.getSnapshot=function(){return e.Snapshot.fromHTMLElement(this.htmlElement)},t.prototype.render=function(t,e){var r,n,o;return o=t.snapshot,r=t.error,n=t.isPreview,this.markAsPreview(n),null!=o?this.renderSnapshot(o,n,e):this.renderError(r,e)},t.prototype.markAsPreview=function(t){return t?this.htmlElement.setAttribute(\"data-turbolinks-preview\",\"\"):this.htmlElement.removeAttribute(\"data-turbolinks-preview\")},t.prototype.renderSnapshot=function(t,r,n){return e.SnapshotRenderer.render(this.delegate,n,this.getSnapshot(),e.Snapshot.wrap(t),r)},t.prototype.renderError=function(t,r){return e.ErrorRenderer.render(this.delegate,r,t)},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.ScrollManager=function(){function r(r){this.delegate=r,this.onScroll=t(this.onScroll,this),this.onScroll=e.throttle(this.onScroll)}return r.prototype.start=function(){return this.started?void 0:(addEventListener(\"scroll\",this.onScroll,!1),this.onScroll(),this.started=!0)},r.prototype.stop=function(){return this.started?(removeEventListener(\"scroll\",this.onScroll,!1),this.started=!1):void 0},r.prototype.scrollToElement=function(t){return t.scrollIntoView()},r.prototype.scrollToPosition=function(t){var e,r;return e=t.x,r=t.y,window.scrollTo(e,r)},r.prototype.onScroll=function(t){return this.updatePosition({x:window.pageXOffset,y:window.pageYOffset})},r.prototype.updatePosition=function(t){var e;return this.position=t,null!=(e=this.delegate)?e.scrollPositionChanged(this.position):void 0},r}()}.call(this),function(){e.SnapshotCache=function(){function t(t){this.size=t,this.keys=[],this.snapshots={}}var r;return t.prototype.has=function(t){var e;return e=r(t),e in this.snapshots},t.prototype.get=function(t){var e;if(this.has(t))return e=this.read(t),this.touch(t),e},t.prototype.put=function(t,e){return this.write(t,e),this.touch(t),e},t.prototype.read=function(t){var e;return e=r(t),this.snapshots[e]},t.prototype.write=function(t,e){var n;return n=r(t),this.snapshots[n]=e},t.prototype.touch=function(t){var e,n;return n=r(t),e=this.keys.indexOf(n),e>-1&&this.keys.splice(e,1),this.keys.unshift(n),this.trim()},t.prototype.trim=function(){var t,e,r,n,o;for(n=this.keys.splice(this.size),o=[],t=0,r=n.length;r>t;t++)e=n[t],o.push(delete this.snapshots[e]);return o},r=function(t){return e.Location.wrap(t).toCacheKey()},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Visit=function(){function r(r,n,o){this.controller=r,this.action=o,this.performScroll=t(this.performScroll,this),this.identifier=e.uuid(),this.location=e.Location.wrap(n),this.adapter=this.controller.adapter,this.state=\"initialized\",this.timingMetrics={}}var n;return r.prototype.start=function(){return\"initialized\"===this.state?(this.recordTimingMetric(\"visitStart\"),this.state=\"started\",this.adapter.visitStarted(this)):void 0},r.prototype.cancel=function(){var t;return\"started\"===this.state?(null!=(t=this.request)&&t.cancel(),this.cancelRender(),this.state=\"canceled\"):void 0},r.prototype.complete=function(){var t;return\"started\"===this.state?(this.recordTimingMetric(\"visitEnd\"),this.state=\"completed\",\"function\"==typeof(t=this.adapter).visitCompleted&&t.visitCompleted(this),this.controller.visitCompleted(this)):void 0},r.prototype.fail=function(){var t;return\"started\"===this.state?(this.state=\"failed\",\"function\"==typeof(t=this.adapter).visitFailed?t.visitFailed(this):void 0):void 0},r.prototype.changeHistory=function(){var t,e;return this.historyChanged?void 0:(t=this.location.isEqualTo(this.referrer)?\"replace\":this.action,e=n(t),this.controller[e](this.location,this.restorationIdentifier),this.historyChanged=!0)},r.prototype.issueRequest=function(){return this.shouldIssueRequest()&&null==this.request?(this.progress=0,this.request=new e.HttpRequest(this,this.location,this.referrer),this.request.send()):void 0},r.prototype.getCachedSnapshot=function(){var t;return!(t=this.controller.getCachedSnapshotForLocation(this.location))||null!=this.location.anchor&&!t.hasAnchor(this.location.anchor)||\"restore\"!==this.action&&!t.isPreviewable()?void 0:t},r.prototype.hasCachedSnapshot=function(){return null!=this.getCachedSnapshot()},r.prototype.loadCachedSnapshot=function(){var t,e;return(e=this.getCachedSnapshot())?(t=this.shouldIssueRequest(),this.render(function(){var r;return this.cacheSnapshot(),this.controller.render({snapshot:e,isPreview:t},this.performScroll),\"function\"==typeof(r=this.adapter).visitRendered&&r.visitRendered(this),t?void 0:this.complete()})):void 0},r.prototype.loadResponse=function(){return null!=this.response?this.render(function(){var t,e;return this.cacheSnapshot(),this.request.failed?(this.controller.render({error:this.response},this.performScroll),\"function\"==typeof(t=this.adapter).visitRendered&&t.visitRendered(this),this.fail()):(this.controller.render({snapshot:this.response},this.performScroll),\"function\"==typeof(e=this.adapter).visitRendered&&e.visitRendered(this),this.complete())}):void 0},r.prototype.followRedirect=function(){return this.redirectedToLocation&&!this.followedRedirect?(this.location=this.redirectedToLocation,this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation,this.restorationIdentifier),this.followedRedirect=!0):void 0},r.prototype.requestStarted=function(){var t;return this.recordTimingMetric(\"requestStart\"),\"function\"==typeof(t=this.adapter).visitRequestStarted?t.visitRequestStarted(this):void 0},r.prototype.requestProgressed=function(t){var e;return this.progress=t,\"function\"==typeof(e=this.adapter).visitRequestProgressed?e.visitRequestProgressed(this):void 0},r.prototype.requestCompletedWithResponse=function(t,r){return this.response=t,null!=r&&(this.redirectedToLocation=e.Location.wrap(r)),this.adapter.visitRequestCompleted(this)},r.prototype.requestFailedWithStatusCode=function(t,e){return this.response=e,this.adapter.visitRequestFailedWithStatusCode(this,t)},r.prototype.requestFinished=function(){var t;return this.recordTimingMetric(\"requestEnd\"),\"function\"==typeof(t=this.adapter).visitRequestFinished?t.visitRequestFinished(this):void 0},r.prototype.performScroll=function(){return this.scrolled?void 0:(\"restore\"===this.action?this.scrollToRestoredPosition()||this.scrollToTop():this.scrollToAnchor()||this.scrollToTop(),this.scrolled=!0)},r.prototype.scrollToRestoredPosition=function(){var t,e;return t=null!=(e=this.restorationData)?e.scrollPosition:void 0,null!=t?(this.controller.scrollToPosition(t),!0):void 0},r.prototype.scrollToAnchor=function(){return null!=this.location.anchor?(this.controller.scrollToAnchor(this.location.anchor),!0):void 0},r.prototype.scrollToTop=function(){return this.controller.scrollToPosition({x:0,y:0})},r.prototype.recordTimingMetric=function(t){var e;return null!=(e=this.timingMetrics)[t]?e[t]:e[t]=(new Date).getTime()},r.prototype.getTimingMetrics=function(){return e.copyObject(this.timingMetrics)},n=function(t){switch(t){case\"replace\":return\"replaceHistoryWithLocationAndRestorationIdentifier\";case\"advance\":case\"restore\":return\"pushHistoryWithLocationAndRestorationIdentifier\"}},r.prototype.shouldIssueRequest=function(){return\"restore\"===this.action?!this.hasCachedSnapshot():!0},r.prototype.cacheSnapshot=function(){return this.snapshotCached?void 0:(this.controller.cacheSnapshot(),this.snapshotCached=!0)},r.prototype.render=function(t){return this.cancelRender(),this.frame=requestAnimationFrame(function(e){return function(){return e.frame=null,t.call(e)}}(this))},r.prototype.cancelRender=function(){return this.frame?cancelAnimationFrame(this.frame):void 0},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Controller=function(){function r(){this.clickBubbled=t(this.clickBubbled,this),this.clickCaptured=t(this.clickCaptured,this),this.pageLoaded=t(this.pageLoaded,this),this.history=new e.History(this),this.view=new e.View(this),this.scrollManager=new e.ScrollManager(this),this.restorationData={},this.clearCache(),this.setProgressBarDelay(500)}return r.prototype.start=function(){return e.supported&&!this.started?(addEventListener(\"click\",this.clickCaptured,!0),addEventListener(\"DOMContentLoaded\",this.pageLoaded,!1),this.scrollManager.start(),this.startHistory(),this.started=!0,this.enabled=!0):void 0},r.prototype.disable=function(){return this.enabled=!1},r.prototype.stop=function(){return this.started?(removeEventListener(\"click\",this.clickCaptured,!0),removeEventListener(\"DOMContentLoaded\",this.pageLoaded,!1),this.scrollManager.stop(),this.stopHistory(),this.started=!1):void 0},r.prototype.clearCache=function(){return this.cache=new e.SnapshotCache(10)},r.prototype.visit=function(t,r){var n,o;return null==r&&(r={}),t=e.Location.wrap(t),this.applicationAllowsVisitingLocation(t)?this.locationIsVisitable(t)?(n=null!=(o=r.action)?o:\"advance\",this.adapter.visitProposedToLocationWithAction(t,n)):window.location=t:void 0},r.prototype.startVisitToLocationWithAction=function(t,r,n){var o;return e.supported?(o=this.getRestorationDataForIdentifier(n),this.startVisit(t,r,{restorationData:o})):window.location=t},r.prototype.setProgressBarDelay=function(t){return this.progressBarDelay=t},r.prototype.startHistory=function(){return this.location=e.Location.wrap(window.location),this.restorationIdentifier=e.uuid(),this.history.start(),this.history.replace(this.location,this.restorationIdentifier)},r.prototype.stopHistory=function(){return this.history.stop()},r.prototype.pushHistoryWithLocationAndRestorationIdentifier=function(t,r){return this.restorationIdentifier=r,this.location=e.Location.wrap(t),this.history.push(this.location,this.restorationIdentifier)},r.prototype.replaceHistoryWithLocationAndRestorationIdentifier=function(t,r){return this.restorationIdentifier=r,this.location=e.Location.wrap(t),this.history.replace(this.location,this.restorationIdentifier)},r.prototype.historyPoppedToLocationWithRestorationIdentifier=function(t,r){var n;return this.restorationIdentifier=r,this.enabled?(n=this.getRestorationDataForIdentifier(this.restorationIdentifier),this.startVisit(t,\"restore\",{restorationIdentifier:this.restorationIdentifier,restorationData:n,historyChanged:!0}),this.location=e.Location.wrap(t)):this.adapter.pageInvalidated()},r.prototype.getCachedSnapshotForLocation=function(t){var e;return null!=(e=this.cache.get(t))?e.clone():void 0},r.prototype.shouldCacheSnapshot=function(){return this.view.getSnapshot().isCacheable();\n},r.prototype.cacheSnapshot=function(){var t,r;return this.shouldCacheSnapshot()?(this.notifyApplicationBeforeCachingSnapshot(),r=this.view.getSnapshot(),t=this.lastRenderedLocation,e.defer(function(e){return function(){return e.cache.put(t,r.clone())}}(this))):void 0},r.prototype.scrollToAnchor=function(t){var e;return(e=this.view.getElementForAnchor(t))?this.scrollToElement(e):this.scrollToPosition({x:0,y:0})},r.prototype.scrollToElement=function(t){return this.scrollManager.scrollToElement(t)},r.prototype.scrollToPosition=function(t){return this.scrollManager.scrollToPosition(t)},r.prototype.scrollPositionChanged=function(t){var e;return e=this.getCurrentRestorationData(),e.scrollPosition=t},r.prototype.render=function(t,e){return this.view.render(t,e)},r.prototype.viewInvalidated=function(){return this.adapter.pageInvalidated()},r.prototype.viewWillRender=function(t){return this.notifyApplicationBeforeRender(t)},r.prototype.viewRendered=function(){return this.lastRenderedLocation=this.currentVisit.location,this.notifyApplicationAfterRender()},r.prototype.pageLoaded=function(){return this.lastRenderedLocation=this.location,this.notifyApplicationAfterPageLoad()},r.prototype.clickCaptured=function(){return removeEventListener(\"click\",this.clickBubbled,!1),addEventListener(\"click\",this.clickBubbled,!1)},r.prototype.clickBubbled=function(t){var e,r,n;return this.enabled&&this.clickEventIsSignificant(t)&&(r=this.getVisitableLinkForNode(t.target))&&(n=this.getVisitableLocationForLink(r))&&this.applicationAllowsFollowingLinkToLocation(r,n)?(t.preventDefault(),e=this.getActionForLink(r),this.visit(n,{action:e})):void 0},r.prototype.applicationAllowsFollowingLinkToLocation=function(t,e){var r;return r=this.notifyApplicationAfterClickingLinkToLocation(t,e),!r.defaultPrevented},r.prototype.applicationAllowsVisitingLocation=function(t){var e;return e=this.notifyApplicationBeforeVisitingLocation(t),!e.defaultPrevented},r.prototype.notifyApplicationAfterClickingLinkToLocation=function(t,r){return e.dispatch(\"turbolinks:click\",{target:t,data:{url:r.absoluteURL},cancelable:!0})},r.prototype.notifyApplicationBeforeVisitingLocation=function(t){return e.dispatch(\"turbolinks:before-visit\",{data:{url:t.absoluteURL},cancelable:!0})},r.prototype.notifyApplicationAfterVisitingLocation=function(t){return e.dispatch(\"turbolinks:visit\",{data:{url:t.absoluteURL}})},r.prototype.notifyApplicationBeforeCachingSnapshot=function(){return e.dispatch(\"turbolinks:before-cache\")},r.prototype.notifyApplicationBeforeRender=function(t){return e.dispatch(\"turbolinks:before-render\",{data:{newBody:t}})},r.prototype.notifyApplicationAfterRender=function(){return e.dispatch(\"turbolinks:render\")},r.prototype.notifyApplicationAfterPageLoad=function(t){return null==t&&(t={}),e.dispatch(\"turbolinks:load\",{data:{url:this.location.absoluteURL,timing:t}})},r.prototype.startVisit=function(t,e,r){var n;return null!=(n=this.currentVisit)&&n.cancel(),this.currentVisit=this.createVisit(t,e,r),this.currentVisit.start(),this.notifyApplicationAfterVisitingLocation(t)},r.prototype.createVisit=function(t,r,n){var o,i,s,a,u;return i=null!=n?n:{},a=i.restorationIdentifier,s=i.restorationData,o=i.historyChanged,u=new e.Visit(this,t,r),u.restorationIdentifier=null!=a?a:e.uuid(),u.restorationData=e.copyObject(s),u.historyChanged=o,u.referrer=this.location,u},r.prototype.visitCompleted=function(t){return this.notifyApplicationAfterPageLoad(t.getTimingMetrics())},r.prototype.clickEventIsSignificant=function(t){return!(t.defaultPrevented||t.target.isContentEditable||t.which>1||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey)},r.prototype.getVisitableLinkForNode=function(t){return this.nodeIsVisitable(t)?e.closest(t,\"a[href]:not([target]):not([download])\"):void 0},r.prototype.getVisitableLocationForLink=function(t){var r;return r=new e.Location(t.getAttribute(\"href\")),this.locationIsVisitable(r)?r:void 0},r.prototype.getActionForLink=function(t){var e;return null!=(e=t.getAttribute(\"data-turbolinks-action\"))?e:\"advance\"},r.prototype.nodeIsVisitable=function(t){var r;return(r=e.closest(t,\"[data-turbolinks]\"))?\"false\"!==r.getAttribute(\"data-turbolinks\"):!0},r.prototype.locationIsVisitable=function(t){return t.isPrefixedBy(this.view.getRootLocation())&&t.isHTML()},r.prototype.getCurrentRestorationData=function(){return this.getRestorationDataForIdentifier(this.restorationIdentifier)},r.prototype.getRestorationDataForIdentifier=function(t){var e;return null!=(e=this.restorationData)[t]?e[t]:e[t]={}},r}()}.call(this),function(){!function(){var t,e;if((t=e=document.currentScript)&&!e.hasAttribute(\"data-turbolinks-suppress-warning\"))for(;t=t.parentNode;)if(t===document.body)return console.warn(\"You are loading Turbolinks from a <script> element inside the <body> element. This is probably not what you meant to do!\\n\\nLoad your application\\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\\n\\nFor more information, see: https://github.com/turbolinks/turbolinks#working-with-script-elements\\n\\n\\u2014\\u2014\\nSuppress this warning by adding a `data-turbolinks-suppress-warning` attribute to: %s\",e.outerHTML)}()}.call(this),function(){var t,r,n;e.start=function(){return r()?(null==e.controller&&(e.controller=t()),e.controller.start()):void 0},r=function(){return null==window.Turbolinks&&(window.Turbolinks=e),n()},t=function(){var t;return t=new e.Controller,t.adapter=new e.BrowserAdapter(t),t},n=function(){return window.Turbolinks===e},n()&&e.start()}.call(this)}).call(this), true&&module.exports?module.exports=e: true&&!(__WEBPACK_AMD_DEFINE_FACTORY__ = (e),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))}).call(this);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvdHVyYm9saW5rcy9kaXN0L3R1cmJvbGlua3MuanM/MzNjYiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksV0FBVyxZQUFZLFlBQVksaUJBQWlCLHFCQUFxQix5R0FBeUcsdUJBQXVCLCtCQUErQix1QkFBdUIsaUNBQWlDLGlDQUFpQyw2Q0FBNkMsYUFBYSxVQUFVLG1CQUFtQixZQUFZLFlBQVkscUJBQXFCLHlCQUF5QixVQUFVLEtBQUsseUJBQXlCLFNBQVMseUJBQXlCLG1CQUFtQixjQUFjLFFBQVEsb0VBQW9FLE1BQU0sV0FBVyxFQUFFLEVBQUUsd0RBQXdELGlCQUFpQix1QkFBdUIsdUJBQXVCLHdCQUF3QixNQUFNLHlCQUF5QixNQUFNLGtHQUFrRyxrQkFBa0IsNEJBQTRCLFNBQVMsMEJBQTBCLGdCQUFnQixxQkFBcUIsaUhBQWlILG1FQUFtRSw2RUFBNkUsZUFBZSxVQUFVLGVBQWUsMENBQTBDLGNBQWMsTUFBTSx3R0FBd0cseUJBQXlCLG1CQUFtQixjQUFjLFlBQVkseUpBQXlKLHFCQUFxQixVQUFVLGVBQWUsTUFBTSxvSkFBb0osVUFBVSx3QkFBd0Isc0JBQXNCLGNBQWMsUUFBUSwwTkFBME4sWUFBWSwwQkFBMEIsdUNBQXVDLGtDQUFrQywrQ0FBK0MsZ0NBQWdDLFFBQVEsaUVBQWlFLDBCQUEwQiwwQ0FBMEMsMENBQTBDLDZDQUE2Qyw2Q0FBNkMscUNBQXFDLFFBQVEsMEZBQTBGLCtCQUErQixnRUFBZ0Usc0NBQXNDLE1BQU0sdURBQXVELG1DQUFtQyx5REFBeUQsbUNBQW1DLHVCQUF1QiwrQkFBK0Isd0JBQXdCLGlDQUFpQyx3QkFBd0IsZ0NBQWdDLHdCQUF3QixlQUFlLG9DQUFvQyxlQUFlLHdCQUF3QixpQkFBaUIsK0JBQStCLGlCQUFpQiw4QkFBOEIsR0FBRyxHQUFHLHVCQUF1QixvQkFBb0Isa0JBQWtCLDhCQUE4Qix5QkFBeUIsa0JBQWtC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NkVBQTZFLHdFQUF3RSxzQ0FBc0MsZUFBZSxrQkFBa0IsZUFBZSxFQUFFLGlFQUFpRSw2Q0FBNkMsTUFBTSxrQkFBa0IsZUFBZSxFQUFFLGdFQUFnRSxzQ0FBc0MsTUFBTSxtQkFBbUIsRUFBRSwrREFBK0QsNkNBQTZDLHVEQUF1RCw4Q0FBOEMsTUFBTSxXQUFXLEVBQUUscURBQXFELHVDQUF1Qyx3REFBd0QscUJBQXFCLGdDQUFnQyxNQUFNLHdDQUF3QyxFQUFFLHdDQUF3QyxNQUFNLGtLQUFrSyx5Q0FBeUMsY0FBYyxxQkFBcUIscU5BQXFOLHdDQUF3QyxpRUFBaUUsaURBQWlELCtHQUErRyxpREFBaUQsMkZBQTJGLHFEQUFxRCxNQUFNLHFGQUFxRiwwQ0FBMEMsTUFBTSxzRUFBc0UseUNBQXlDLE1BQU0sMEZBQTBGLDZDQUE2QywrREFBK0Qsa0RBQWtELHdFQUF3RSx5REFBeUQsTUFBTSxzREFBc0QsR0FBRyxHQUFHLHVCQUF1QixZQUFZLFFBQVEsMEZBQTBGLGVBQWUsbWhCQUFtaEIsR0FBRyx1QkFBdUIsVUFBVSxtQkFBbUIsZ0ZBQWdGLGNBQWMsMERBQTBELGNBQWMsTUFBTSw4REFBOEQsY0FBYyw2QkFBNkIsZ0JBQWdCLFlBQVksYUFBYSxLQUF1QixrQ0FBa0MsS0FBcUMsRUFBRSxvQ0FBTyxDQUFDO0FBQUE7QUFBQTtBQUFBO0FBQUEsb0dBQUMsQ0FBQyIsImZpbGUiOiIuL25vZGVfbW9kdWxlcy90dXJib2xpbmtzL2Rpc3QvdHVyYm9saW5rcy5qcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG5UdXJib2xpbmtzIDUuMi4wXG5Db3B5cmlnaHQgwqkgMjAxOCBCYXNlY2FtcCwgTExDXG4gKi9cbihmdW5jdGlvbigpe3ZhciB0PXRoaXM7KGZ1bmN0aW9uKCl7KGZ1bmN0aW9uKCl7dGhpcy5UdXJib2xpbmtzPXtzdXBwb3J0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9d2luZG93Lmhpc3RvcnkucHVzaFN0YXRlJiZudWxsIT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lJiZudWxsIT13aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcn0oKSx2aXNpdDpmdW5jdGlvbih0LHIpe3JldHVybiBlLmNvbnRyb2xsZXIudmlzaXQodCxyKX0sY2xlYXJDYWNoZTpmdW5jdGlvbigpe3JldHVybiBlLmNvbnRyb2xsZXIuY2xlYXJDYWNoZSgpfSxzZXRQcm9ncmVzc0JhckRlbGF5OmZ1bmN0aW9uKHQpe3JldHVybiBlLmNvbnRyb2xsZXIuc2V0UHJvZ3Jlc3NCYXJEZWxheSh0KX19fSkuY2FsbCh0aGlzKX0pLmNhbGwodCk7dmFyIGU9dC5UdXJib2xpbmtzOyhmdW5jdGlvbigpeyhmdW5jdGlvbigpe3ZhciB0LHIsbixvPVtdLnNsaWNlO2UuY29weU9iamVjdD1mdW5jdGlvbih0KXt2YXIgZSxyLG47cj17fTtmb3IoZSBpbiB0KW49dFtlXSxyW2VdPW47cmV0dXJuIHJ9LGUuY2xvc2VzdD1mdW5jdGlvbihlLHIpe3JldHVybiB0LmNhbGwoZSxyKX0sdD1mdW5jdGlvbigpe3ZhciB0LGU7cmV0dXJuIHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG51bGwhPShlPXQuY2xvc2VzdCk/ZTpmdW5jdGlvbih0KXt2YXIgZTtmb3IoZT10aGlzO2U7KXtpZihlLm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJnIuY2FsbChlLHQpKXJldHVybiBlO2U9ZS5wYXJlbnROb2RlfX19KCksZS5kZWZlcj1mdW5jdGlvbih0KXtyZXR1cm4gc2V0VGltZW91dCh0LDEpfSxlLnRocm90dGxlPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBlPW51bGwsZnVuY3Rpb24oKXt2YXIgcjtyZXR1cm4gcj0xPD1hcmd1bWVudHMubGVuZ3RoP28uY2FsbChhcmd1bWVudHMsMCk6W10sbnVsbCE9ZT9lOmU9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKG4pe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlPW51bGwsdC5hcHBseShuLHIpfX0odGhpcykpfX0sZS5kaXNwYXRjaD1mdW5jdGlvbih0LGUpe3ZhciByLG8saSxzLGEsdTtyZXR1cm4gYT1udWxsIT1lP2U6e30sdT1hLnRhcmdldCxyPWEuY2FuY2VsYWJsZSxvPWEuZGF0YSxpPWRvY3VtZW50LmNyZWF0ZUV2ZW50KFwiRXZlbnRzXCIpLGkuaW5pdEV2ZW50KHQsITAscj09PSEwKSxpLmRhdGE9bnVsbCE9bz9vOnt9LGkuY2FuY2VsYWJsZSYmIW4mJihzPWkucHJldmVudERlZmF1bHQsaS5wcmV2ZW50RGVmYXVsdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmRlZmF1bHRQcmV2ZW50ZWR8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLFwiZGVmYXVsdFByZXZlbnRlZFwiLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4hMH19KSxzLmNhbGwodGhpcyl9KSwobnVsbCE9dT91OmRvY3VtZW50KS5kaXNwYXRjaEV2ZW50KGkpLGl9LG49ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdD1kb2N1bWVudC5jcmVhdGVFdmVudChcIkV2ZW50c1wiKSx0LmluaXRFdmVudChcInRlc3RcIiwhMCwhMCksdC5wcmV2ZW50RGVmYXVsdCgpLHQuZGVmYXVsdFByZXZlbnRlZH0oKSxlLm1hdGNoPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHIuY2FsbCh0LGUpfSxyPWZ1bmN0aW9uKCl7dmFyIHQsZSxyLG47cmV0dXJuIHQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG51bGwhPShlPW51bGwhPShyPW51bGwhPShuPXQubWF0Y2hlc1NlbGVjdG9yKT9uOnQud2Via2l0TWF0Y2hlc1NlbGVjdG9yKT9yOnQubXNNYXRjaGVzU2VsZWN0b3IpP2U6dC5tb3pNYXRjaGVzU2VsZWN0b3J9KCksZS51dWlkPWZ1bmN0aW9uKCl7dmFyIHQsZSxyO2ZvcihyPVwiXCIsdD1lPTE7MzY+PWU7dD0rK2Upcis9OT09PXR8fDE0PT09dHx8MTk9PT10fHwyND09PXQ/XCItXCI6MTU9PT10P1wiNFwiOjIwPT09dD8oTWF0aC5mbG9vcig0Kk1hdGgucmFuZG9tKCkpKzgpLnRvU3RyaW5nKDE2KTpNYXRoLmZsb29yKDE1Kk1hdGgucmFuZG9tKCkpLnRvU3RyaW5nKDE2KTtyZXR1cm4gcn19KS5jYWxsKHRoaXMpLGZ1bmN0aW9uKCl7ZS5Mb2NhdGlvbj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dmFyIGUscjtudWxsPT10JiYodD1cIlwiKSxyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpLHIuaHJlZj10LnRvU3RyaW5nKCksdGhpcy5hYnNvbHV0ZVVSTD1yLmhyZWYsZT1yLmhhc2gubGVuZ3RoLDI+ZT90aGlzLnJlcXVlc3RVUkw9dGhpcy5hYnNvbHV0ZVVSTDoodGhpcy5yZXF1ZXN0VVJMPXRoaXMuYWJzb2x1dGVVUkwuc2xpY2UoMCwtZSksdGhpcy5hbmNob3I9ci5oYXNoLnNsaWNlKDEpKX12YXIgZSxyLG4sbztyZXR1cm4gdC53cmFwPWZ1bmN0aW9uKHQpe3JldHVybiB0IGluc3RhbmNlb2YgdGhpcz90Om5ldyB0aGlzKHQpfSx0LnByb3RvdHlwZS5nZXRPcmlnaW49ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hYnNvbHV0ZVVSTC5zcGxpdChcIi9cIiwzKS5qb2luKFwiL1wiKX0sdC5wcm90b3R5cGUuZ2V0UGF0aD1mdW5jdGlvbigpe3ZhciB0LGU7cmV0dXJuIG51bGwhPSh0PW51bGwhPShlPXRoaXMucmVxdWVzdFVSTC5tYXRjaCgvXFwvXFwvW15cXC9dKihcXC9bXj87XSopLykpP2VbMV06dm9pZCAwKT90OlwiL1wifSx0LnByb3RvdHlwZS5nZXRQYXRoQ29tcG9uZW50cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFBhdGgoKS5zcGxpdChcIi9cIikuc2xpY2UoMSl9LHQucHJvdG90eXBlLmdldExhc3RQYXRoQ29tcG9uZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0UGF0aENvbXBvbmVudHMoKS5zbGljZSgtMSlbMF19LHQucHJvdG90eXBlLmdldEV4dGVuc2lvbj1mdW5jdGlvbigpe3ZhciB0LGU7cmV0dXJuIG51bGwhPSh0PW51bGwhPShlPXRoaXMuZ2V0TGFzdFBhdGhDb21wb25lbnQoKS5tYXRjaCgvXFwuW14uXSokLykpP2VbMF06dm9pZCAwKT90OlwiXCJ9LHQucHJvdG90eXBlLmlzSFRNTD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldEV4dGVuc2lvbigpLm1hdGNoKC9eKD86fFxcLig/Omh0bXxodG1sfHhodG1sKSkkLyl9LHQucHJvdG90eXBlLmlzUHJlZml4ZWRCeT1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gZT1yKHQpLHRoaXMuaXNFcXVhbFRvKHQpfHxvKHRoaXMuYWJzb2x1dGVVUkwsZSl9LHQucHJvdG90eXBlLmlzRXF1YWxUbz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5hYnNvbHV0ZVVSTD09PShudWxsIT10P3QuYWJzb2x1dGVVUkw6dm9pZCAwKX0sdC5wcm90b3R5cGUudG9DYWNoZUtleT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnJlcXVlc3RVUkx9LHQucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFic29sdXRlVVJMfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmFic29sdXRlVVJMfSx0LnByb3RvdHlwZS52YWx1ZU9mPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWJzb2x1dGVVUkx9LHI9ZnVuY3Rpb24odCl7cmV0dXJuIGUodC5nZXRPcmlnaW4oKSt0LmdldFBhdGgoKSl9LGU9ZnVuY3Rpb24odCl7cmV0dXJuIG4odCxcIi9cIik/dDp0K1wiL1wifSxvPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc2xpY2UoMCxlLmxlbmd0aCk9PT1lfSxuPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuc2xpY2UoLWUubGVuZ3RoKT09PWV9LHR9KCl9LmNhbGwodGhpcyksZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19O2UuSHR0cFJlcXVlc3Q9ZnVuY3Rpb24oKXtmdW5jdGlvbiByKHIsbixvKXt0aGlzLmRlbGVnYXRlPXIsdGhpcy5yZXF1ZXN0Q2FuY2VsZWQ9dCh0aGlzLnJlcXVlc3RDYW5jZWxlZCx0aGlzKSx0aGlzLnJlcXVlc3RUaW1lZE91dD10KHRoaXMucmVxdWVzdFRpbWVkT3V0LHRoaXMpLHRoaXMucmVxdWVzdEZhaWxlZD10KHRoaXMucmVxdWVzdEZhaWxlZCx0aGlzKSx0aGlzLnJlcXVlc3RMb2FkZWQ9dCh0aGlzLnJlcXVlc3RMb2FkZWQsdGhpcyksdGhpcy5yZXF1ZXN0UHJvZ3Jlc3NlZD10KHRoaXMucmVxdWVzdFByb2dyZXNzZWQsdGhpcyksdGhpcy51cmw9ZS5Mb2NhdGlvbi53cmFwKG4pLnJlcXVlc3RVUkwsdGhpcy5yZWZlcnJlcj1lLkxvY2F0aW9uLndyYXAobykuYWJzb2x1dGVVUkwsdGhpcy5jcmVhdGVYSFIoKX1yZXR1cm4gci5ORVRXT1JLX0ZBSUxVUkU9MCxyLlRJTUVPVVRfRkFJTFVSRT0tMSxyLnRpbWVvdXQ9NjAsci5wcm90b3R5cGUuc2VuZD1mdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLnhociYmIXRoaXMuc2VudD8odGhpcy5ub3RpZnlBcHBsaWNhdGlvbkJlZm9yZVJlcXVlc3RTdGFydCgpLHRoaXMuc2V0UHJvZ3Jlc3MoMCksdGhpcy54aHIuc2VuZCgpLHRoaXMuc2VudD0hMCxcImZ1bmN0aW9uXCI9PXR5cGVvZih0PXRoaXMuZGVsZWdhdGUpLnJlcXVlc3RTdGFydGVkP3QucmVxdWVzdFN0YXJ0ZWQoKTp2b2lkIDApOnZvaWQgMH0sci5wcm90b3R5cGUuY2FuY2VsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMueGhyJiZ0aGlzLnNlbnQ/dGhpcy54aHIuYWJvcnQoKTp2b2lkIDB9LHIucHJvdG90eXBlLnJlcXVlc3RQcm9ncmVzc2VkPWZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aENvbXB1dGFibGU/dGhpcy5zZXRQcm9ncmVzcyh0LmxvYWRlZC90LnRvdGFsKTp2b2lkIDB9LHIucHJvdG90eXBlLnJlcXVlc3RMb2FkZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmRSZXF1ZXN0KGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlO3JldHVybiAyMDA8PShlPXQueGhyLnN0YXR1cykmJjMwMD5lP3QuZGVsZWdhdGUucmVxdWVzdENvbXBsZXRlZFdpdGhSZXNwb25zZSh0Lnhoci5yZXNwb25zZVRleHQsdC54aHIuZ2V0UmVzcG9uc2VIZWFkZXIoXCJUdXJib2xpbmtzLUxvY2F0aW9uXCIpKToodC5mYWlsZWQ9ITAsdC5kZWxlZ2F0ZS5yZXF1ZXN0RmFpbGVkV2l0aFN0YXR1c0NvZGUodC54aHIuc3RhdHVzLHQueGhyLnJlc3BvbnNlVGV4dCkpfX0odGhpcykpfSxyLnByb3RvdHlwZS5yZXF1ZXN0RmFpbGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZW5kUmVxdWVzdChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5mYWlsZWQ9ITAsdC5kZWxlZ2F0ZS5yZXF1ZXN0RmFpbGVkV2l0aFN0YXR1c0NvZGUodC5jb25zdHJ1Y3Rvci5ORVRXT1JLX0ZBSUxVUkUpfX0odGhpcykpfSxyLnByb3RvdHlwZS5yZXF1ZXN0VGltZWRPdXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmRSZXF1ZXN0KGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmZhaWxlZD0hMCx0LmRlbGVnYXRlLnJlcXVlc3RGYWlsZWRXaXRoU3RhdHVzQ29kZSh0LmNvbnN0cnVjdG9yLlRJTUVPVVRfRkFJTFVSRSl9fSh0aGlzKSl9LHIucHJvdG90eXBlLnJlcXVlc3RDYW5jZWxlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZFJlcXVlc3QoKX0sci5wcm90b3R5cGUubm90aWZ5QXBwbGljYXRpb25CZWZvcmVSZXF1ZXN0U3RhcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gZS5kaXNwYXRjaChcInR1cmJvbGlua3M6cmVxdWVzdC1zdGFydFwiLHtkYXRhOnt1cmw6dGhpcy51cmwseGhyOnRoaXMueGhyfX0pfSxyLnByb3RvdHlwZS5ub3RpZnlBcHBsaWNhdGlvbkFmdGVyUmVxdWVzdEVuZD1mdW5jdGlvbigpe3JldHVybiBlLmRpc3BhdGNoKFwidHVyYm9saW5rczpyZXF1ZXN0LWVuZFwiLHtkYXRhOnt1cmw6dGhpcy51cmwseGhyOnRoaXMueGhyfX0pfSxyLnByb3RvdHlwZS5jcmVhdGVYSFI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy54aHI9bmV3IFhNTEh0dHBSZXF1ZXN0LHRoaXMueGhyLm9wZW4oXCJHRVRcIix0aGlzLnVybCwhMCksdGhpcy54aHIudGltZW91dD0xZTMqdGhpcy5jb25zdHJ1Y3Rvci50aW1lb3V0LHRoaXMueGhyLnNldFJlcXVlc3RIZWFkZXIoXCJBY2NlcHRcIixcInRleHQvaHRtbCwgYXBwbGljYXRpb24veGh0bWwreG1sXCIpLHRoaXMueGhyLnNldFJlcXVlc3RIZWFkZXIoXCJUdXJib2xpbmtzLVJlZmVycmVyXCIsdGhpcy5yZWZlcnJlciksdGhpcy54aHIub25wcm9ncmVzcz10aGlzLnJlcXVlc3RQcm9ncmVzc2VkLHRoaXMueGhyLm9ubG9hZD10aGlzLnJlcXVlc3RMb2FkZWQsdGhpcy54aHIub25lcnJvcj10aGlzLnJlcXVlc3RGYWlsZWQsdGhpcy54aHIub250aW1lb3V0PXRoaXMucmVxdWVzdFRpbWVkT3V0LHRoaXMueGhyLm9uYWJvcnQ9dGhpcy5yZXF1ZXN0Q2FuY2VsZWR9LHIucHJvdG90eXBlLmVuZFJlcXVlc3Q9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMueGhyPyh0aGlzLm5vdGlmeUFwcGxpY2F0aW9uQWZ0ZXJSZXF1ZXN0RW5kKCksbnVsbCE9dCYmdC5jYWxsKHRoaXMpLHRoaXMuZGVzdHJveSgpKTp2b2lkIDB9LHIucHJvdG90eXBlLnNldFByb2dyZXNzPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiB0aGlzLnByb2dyZXNzPXQsXCJmdW5jdGlvblwiPT10eXBlb2YoZT10aGlzLmRlbGVnYXRlKS5yZXF1ZXN0UHJvZ3Jlc3NlZD9lLnJlcXVlc3RQcm9ncmVzc2VkKHRoaXMucHJvZ3Jlc3MpOnZvaWQgMH0sci5wcm90b3R5cGUuZGVzdHJveT1mdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLnNldFByb2dyZXNzKDEpLFwiZnVuY3Rpb25cIj09dHlwZW9mKHQ9dGhpcy5kZWxlZ2F0ZSkucmVxdWVzdEZpbmlzaGVkJiZ0LnJlcXVlc3RGaW5pc2hlZCgpLHRoaXMuZGVsZWdhdGU9bnVsbCx0aGlzLnhocj1udWxsfSxyfSgpfS5jYWxsKHRoaXMpLGZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fTtlLlByb2dyZXNzQmFyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3RoaXMudHJpY2tsZT10KHRoaXMudHJpY2tsZSx0aGlzKSx0aGlzLnN0eWxlc2hlZXRFbGVtZW50PXRoaXMuY3JlYXRlU3R5bGVzaGVldEVsZW1lbnQoKSx0aGlzLnByb2dyZXNzRWxlbWVudD10aGlzLmNyZWF0ZVByb2dyZXNzRWxlbWVudCgpfXZhciByO3JldHVybiByPTMwMCxlLmRlZmF1bHRDU1M9XCIudHVyYm9saW5rcy1wcm9ncmVzcy1iYXIge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB0b3A6IDA7XFxuICBsZWZ0OiAwO1xcbiAgaGVpZ2h0OiAzcHg7XFxuICBiYWNrZ3JvdW5kOiAjMDA3NmZmO1xcbiAgei1pbmRleDogOTk5OTtcXG4gIHRyYW5zaXRpb246IHdpZHRoIFwiK3IrXCJtcyBlYXNlLW91dCwgb3BhY2l0eSBcIityLzIrXCJtcyBcIityLzIrXCJtcyBlYXNlLWluO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTtcXG59XCIsZS5wcm90b3R5cGUuc2hvdz1mdW5jdGlvbigpe3JldHVybiB0aGlzLnZpc2libGU/dm9pZCAwOih0aGlzLnZpc2libGU9ITAsdGhpcy5pbnN0YWxsU3R5bGVzaGVldEVsZW1lbnQoKSx0aGlzLmluc3RhbGxQcm9ncmVzc0VsZW1lbnQoKSx0aGlzLnN0YXJ0VHJpY2tsaW5nKCkpfSxlLnByb3RvdHlwZS5oaWRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmlzaWJsZSYmIXRoaXMuaGlkaW5nPyh0aGlzLmhpZGluZz0hMCx0aGlzLmZhZGVQcm9ncmVzc0VsZW1lbnQoZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQudW5pbnN0YWxsUHJvZ3Jlc3NFbGVtZW50KCksdC5zdG9wVHJpY2tsaW5nKCksdC52aXNpYmxlPSExLHQuaGlkaW5nPSExfX0odGhpcykpKTp2b2lkIDB9LGUucHJvdG90eXBlLnNldFZhbHVlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnZhbHVlPXQsdGhpcy5yZWZyZXNoKCl9LGUucHJvdG90eXBlLmluc3RhbGxTdHlsZXNoZWV0RWxlbWVudD1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5oZWFkLmluc2VydEJlZm9yZSh0aGlzLnN0eWxlc2hlZXRFbGVtZW50LGRvY3VtZW50LmhlYWQuZmlyc3RDaGlsZCl9LGUucHJvdG90eXBlLmluc3RhbGxQcm9ncmVzc0VsZW1lbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9ncmVzc0VsZW1lbnQuc3R5bGUud2lkdGg9MCx0aGlzLnByb2dyZXNzRWxlbWVudC5zdHlsZS5vcGFjaXR5PTEsZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lmluc2VydEJlZm9yZSh0aGlzLnByb2dyZXNzRWxlbWVudCxkb2N1bWVudC5ib2R5KSx0aGlzLnJlZnJlc2goKX0sZS5wcm90b3R5cGUuZmFkZVByb2dyZXNzRWxlbWVudD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcm9ncmVzc0VsZW1lbnQuc3R5bGUub3BhY2l0eT0wLHNldFRpbWVvdXQodCwxLjUqcil9LGUucHJvdG90eXBlLnVuaW5zdGFsbFByb2dyZXNzRWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb2dyZXNzRWxlbWVudC5wYXJlbnROb2RlP2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5yZW1vdmVDaGlsZCh0aGlzLnByb2dyZXNzRWxlbWVudCk6dm9pZCAwfSxlLnByb3RvdHlwZS5zdGFydFRyaWNrbGluZz1mdW5jdGlvbigpe3JldHVybiBudWxsIT10aGlzLnRyaWNrbGVJbnRlcnZhbD90aGlzLnRyaWNrbGVJbnRlcnZhbDp0aGlzLnRyaWNrbGVJbnRlcnZhbD1zZXRJbnRlcnZhbCh0aGlzLnRyaWNrbGUscil9LGUucHJvdG90eXBlLnN0b3BUcmlja2xpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gY2xlYXJJbnRlcnZhbCh0aGlzLnRyaWNrbGVJbnRlcnZhbCksdGhpcy50cmlja2xlSW50ZXJ2YWw9bnVsbH0sZS5wcm90b3R5cGUudHJpY2tsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNldFZhbHVlKHRoaXMudmFsdWUrTWF0aC5yYW5kb20oKS8xMDApfSxlLnByb3RvdHlwZS5yZWZyZXNoPWZ1bmN0aW9uKCl7cmV0dXJuIHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5wcm9ncmVzc0VsZW1lbnQuc3R5bGUud2lkdGg9MTArOTAqdC52YWx1ZStcIiVcIn19KHRoaXMpKX0sZS5wcm90b3R5cGUuY3JlYXRlU3R5bGVzaGVldEVsZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIiksdC50eXBlPVwidGV4dC9jc3NcIix0LnRleHRDb250ZW50PXRoaXMuY29uc3RydWN0b3IuZGVmYXVsdENTUyx0fSxlLnByb3RvdHlwZS5jcmVhdGVQcm9ncmVzc0VsZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpLHQuY2xhc3NOYW1lPVwidHVyYm9saW5rcy1wcm9ncmVzcy1iYXJcIix0fSxlfSgpfS5jYWxsKHRoaXMpLGZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fTtlLkJyb3dzZXJBZGFwdGVyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihyKXt0aGlzLmNvbnRyb2xsZXI9cix0aGlzLnNob3dQcm9ncmVzc0Jhcj10KHRoaXMuc2hvd1Byb2dyZXNzQmFyLHRoaXMpLHRoaXMucHJvZ3Jlc3NCYXI9bmV3IGUuUHJvZ3Jlc3NCYXJ9dmFyIG4sbyxpO3JldHVybiBpPWUuSHR0cFJlcXVlc3Qsbj1pLk5FVFdPUktfRkFJTFVSRSxvPWkuVElNRU9VVF9GQUlMVVJFLHIucHJvdG90eXBlLnZpc2l0UHJvcG9zZWRUb0xvY2F0aW9uV2l0aEFjdGlvbj1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLmNvbnRyb2xsZXIuc3RhcnRWaXNpdFRvTG9jYXRpb25XaXRoQWN0aW9uKHQsZSl9LHIucHJvdG90eXBlLnZpc2l0U3RhcnRlZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5pc3N1ZVJlcXVlc3QoKSx0LmNoYW5nZUhpc3RvcnkoKSx0LmxvYWRDYWNoZWRTbmFwc2hvdCgpfSxyLnByb3RvdHlwZS52aXNpdFJlcXVlc3RTdGFydGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnByb2dyZXNzQmFyLnNldFZhbHVlKDApLHQuaGFzQ2FjaGVkU25hcHNob3QoKXx8XCJyZXN0b3JlXCIhPT10LmFjdGlvbj90aGlzLnNob3dQcm9ncmVzc0JhckFmdGVyRGVsYXkoKTp0aGlzLnNob3dQcm9ncmVzc0JhcigpfSxyLnByb3RvdHlwZS52aXNpdFJlcXVlc3RQcm9ncmVzc2VkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnByb2dyZXNzQmFyLnNldFZhbHVlKHQucHJvZ3Jlc3MpfSxyLnByb3RvdHlwZS52aXNpdFJlcXVlc3RDb21wbGV0ZWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHQubG9hZFJlc3BvbnNlKCl9LHIucHJvdG90eXBlLnZpc2l0UmVxdWVzdEZhaWxlZFdpdGhTdGF0dXNDb2RlPWZ1bmN0aW9uKHQsZSl7c3dpdGNoKGUpe2Nhc2UgbjpjYXNlIG86cmV0dXJuIHRoaXMucmVsb2FkKCk7ZGVmYXVsdDpyZXR1cm4gdC5sb2FkUmVzcG9uc2UoKX19LHIucHJvdG90eXBlLnZpc2l0UmVxdWVzdEZpbmlzaGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmhpZGVQcm9ncmVzc0JhcigpfSxyLnByb3RvdHlwZS52aXNpdENvbXBsZXRlZD1mdW5jdGlvbih0KXtyZXR1cm4gdC5mb2xsb3dSZWRpcmVjdCgpfSxyLnByb3RvdHlwZS5wYWdlSW52YWxpZGF0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWxvYWQoKX0sci5wcm90b3R5cGUuc2hvd1Byb2dyZXNzQmFyQWZ0ZXJEZWxheT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb2dyZXNzQmFyVGltZW91dD1zZXRUaW1lb3V0KHRoaXMuc2hvd1Byb2dyZXNzQmFyLHRoaXMuY29udHJvbGxlci5wcm9ncmVzc0JhckRlbGF5KX0sci5wcm90b3R5cGUuc2hvd1Byb2dyZXNzQmFyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJvZ3Jlc3NCYXIuc2hvdygpfSxyLnByb3RvdHlwZS5oaWRlUHJvZ3Jlc3NCYXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9ncmVzc0Jhci5oaWRlKCksY2xlYXJUaW1lb3V0KHRoaXMucHJvZ3Jlc3NCYXJUaW1lb3V0KX0sci5wcm90b3R5cGUucmVsb2FkPWZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKX0scn0oKX0uY2FsbCh0aGlzKSxmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX07ZS5IaXN0b3J5PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlKXt0aGlzLmRlbGVnYXRlPWUsdGhpcy5vblBhZ2VMb2FkPXQodGhpcy5vblBhZ2VMb2FkLHRoaXMpLHRoaXMub25Qb3BTdGF0ZT10KHRoaXMub25Qb3BTdGF0ZSx0aGlzKX1yZXR1cm4gci5wcm90b3R5cGUuc3RhcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGVkP3ZvaWQgMDooYWRkRXZlbnRMaXN0ZW5lcihcInBvcHN0YXRlXCIsdGhpcy5vblBvcFN0YXRlLCExKSxhZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLHRoaXMub25QYWdlTG9hZCwhMSksdGhpcy5zdGFydGVkPSEwKX0sci5wcm90b3R5cGUuc3RvcD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0ZWQ/KHJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb3BzdGF0ZVwiLHRoaXMub25Qb3BTdGF0ZSwhMSkscmVtb3ZlRXZlbnRMaXN0ZW5lcihcImxvYWRcIix0aGlzLm9uUGFnZUxvYWQsITEpLHRoaXMuc3RhcnRlZD0hMSk6dm9pZCAwfSxyLnByb3RvdHlwZS5wdXNoPWZ1bmN0aW9uKHQscil7cmV0dXJuIHQ9ZS5Mb2NhdGlvbi53cmFwKHQpLHRoaXMudXBkYXRlKFwicHVzaFwiLHQscil9LHIucHJvdG90eXBlLnJlcGxhY2U9ZnVuY3Rpb24odCxyKXtyZXR1cm4gdD1lLkxvY2F0aW9uLndyYXAodCksdGhpcy51cGRhdGUoXCJyZXBsYWNlXCIsdCxyKX0sci5wcm90b3R5cGUub25Qb3BTdGF0ZT1mdW5jdGlvbih0KXt2YXIgcixuLG8saTtyZXR1cm4gdGhpcy5zaG91bGRIYW5kbGVQb3BTdGF0ZSgpJiYoaT1udWxsIT0obj10LnN0YXRlKT9uLnR1cmJvbGlua3M6dm9pZCAwKT8ocj1lLkxvY2F0aW9uLndyYXAod2luZG93LmxvY2F0aW9uKSxvPWkucmVzdG9yYXRpb25JZGVudGlmaWVyLHRoaXMuZGVsZWdhdGUuaGlzdG9yeVBvcHBlZFRvTG9jYXRpb25XaXRoUmVzdG9yYXRpb25JZGVudGlmaWVyKHIsbykpOnZvaWQgMH0sci5wcm90b3R5cGUub25QYWdlTG9hZD1mdW5jdGlvbih0KXtyZXR1cm4gZS5kZWZlcihmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5wYWdlTG9hZGVkPSEwfX0odGhpcykpfSxyLnByb3RvdHlwZS5zaG91bGRIYW5kbGVQb3BTdGF0ZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnBhZ2VJc0xvYWRlZCgpfSxyLnByb3RvdHlwZS5wYWdlSXNMb2FkZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYWdlTG9hZGVkfHxcImNvbXBsZXRlXCI9PT1kb2N1bWVudC5yZWFkeVN0YXRlfSxyLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24odCxlLHIpe3ZhciBuO3JldHVybiBuPXt0dXJib2xpbmtzOntyZXN0b3JhdGlvbklkZW50aWZpZXI6cn19LGhpc3RvcnlbdCtcIlN0YXRlXCJdKG4sbnVsbCxlKX0scn0oKX0uY2FsbCh0aGlzKSxmdW5jdGlvbigpe2UuSGVhZERldGFpbHM9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3ZhciBlLHIsbixzLGEsdTtmb3IodGhpcy5lbGVtZW50cz17fSxuPTAsYT10Lmxlbmd0aDthPm47bisrKXU9dFtuXSx1Lm5vZGVUeXBlPT09Tm9kZS5FTEVNRU5UX05PREUmJihzPXUub3V0ZXJIVE1MLHI9bnVsbCE9KGU9dGhpcy5lbGVtZW50cylbc10/ZVtzXTplW3NdPXt0eXBlOmkodSksdHJhY2tlZDpvKHUpLGVsZW1lbnRzOltdfSxyLmVsZW1lbnRzLnB1c2godSkpfXZhciBlLHIsbixvLGk7cmV0dXJuIHQuZnJvbUhlYWRFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBuZXcgdGhpcyhudWxsIT0oZT1udWxsIT10P3QuY2hpbGROb2Rlczp2b2lkIDApP2U6W10pfSx0LnByb3RvdHlwZS5oYXNFbGVtZW50V2l0aEtleT1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbiB0aGlzLmVsZW1lbnRzfSx0LnByb3RvdHlwZS5nZXRUcmFja2VkRWxlbWVudFNpZ25hdHVyZT1mdW5jdGlvbigpe3ZhciB0LGU7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHIsbjtyPXRoaXMuZWxlbWVudHMsbj1bXTtmb3IodCBpbiByKWU9clt0XS50cmFja2VkLGUmJm4ucHVzaCh0KTtyZXR1cm4gbn0uY2FsbCh0aGlzKS5qb2luKFwiXCIpfSx0LnByb3RvdHlwZS5nZXRTY3JpcHRFbGVtZW50c05vdEluRGV0YWlscz1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5nZXRFbGVtZW50c01hdGNoaW5nVHlwZU5vdEluRGV0YWlscyhcInNjcmlwdFwiLHQpfSx0LnByb3RvdHlwZS5nZXRTdHlsZXNoZWV0RWxlbWVudHNOb3RJbkRldGFpbHM9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudHNNYXRjaGluZ1R5cGVOb3RJbkRldGFpbHMoXCJzdHlsZXNoZWV0XCIsdCl9LHQucHJvdG90eXBlLmdldEVsZW1lbnRzTWF0Y2hpbmdUeXBlTm90SW5EZXRhaWxzPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixvLGkscyxhO289dGhpcy5lbGVtZW50cyxzPVtdO2ZvcihuIGluIG8paT1vW25dLGE9aS50eXBlLHI9aS5lbGVtZW50cyxhIT09dHx8ZS5oYXNFbGVtZW50V2l0aEtleShuKXx8cy5wdXNoKHJbMF0pO3JldHVybiBzfSx0LnByb3RvdHlwZS5nZXRQcm92aXNpb25hbEVsZW1lbnRzPWZ1bmN0aW9uKCl7dmFyIHQsZSxyLG4sbyxpLHM7cj1bXSxuPXRoaXMuZWxlbWVudHM7Zm9yKGUgaW4gbilvPW5bZV0scz1vLnR5cGUsaT1vLnRyYWNrZWQsdD1vLmVsZW1lbnRzLG51bGwhPXN8fGk/dC5sZW5ndGg+MSYmci5wdXNoLmFwcGx5KHIsdC5zbGljZSgxKSk6ci5wdXNoLmFwcGx5KHIsdCk7cmV0dXJuIHJ9LHQucHJvdG90eXBlLmdldE1ldGFWYWx1ZT1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gbnVsbCE9KGU9dGhpcy5maW5kTWV0YUVsZW1lbnRCeU5hbWUodCkpP2UuZ2V0QXR0cmlidXRlKFwiY29udGVudFwiKTp2b2lkIDB9LHQucHJvdG90eXBlLmZpbmRNZXRhRWxlbWVudEJ5TmFtZT1mdW5jdGlvbih0KXt2YXIgcixuLG8saTtyPXZvaWQgMCxpPXRoaXMuZWxlbWVudHM7Zm9yKG8gaW4gaSluPWlbb10uZWxlbWVudHMsZShuWzBdLHQpJiYocj1uWzBdKTtyZXR1cm4gcn0saT1mdW5jdGlvbih0KXtyZXR1cm4gcih0KT9cInNjcmlwdFwiOm4odCk/XCJzdHlsZXNoZWV0XCI6dm9pZCAwfSxvPWZ1bmN0aW9uKHQpe3JldHVyblwicmVsb2FkXCI9PT10LmdldEF0dHJpYnV0ZShcImRhdGEtdHVyYm9saW5rcy10cmFja1wiKX0scj1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gZT10LnRhZ05hbWUudG9Mb3dlckNhc2UoKSxcInNjcmlwdFwiPT09ZX0sbj1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gZT10LnRhZ05hbWUudG9Mb3dlckNhc2UoKSxcInN0eWxlXCI9PT1lfHxcImxpbmtcIj09PWUmJlwic3R5bGVzaGVldFwiPT09dC5nZXRBdHRyaWJ1dGUoXCJyZWxcIil9LGU9ZnVuY3Rpb24odCxlKXt2YXIgcjtyZXR1cm4gcj10LnRhZ05hbWUudG9Mb3dlckNhc2UoKSxcIm1ldGFcIj09PXImJnQuZ2V0QXR0cmlidXRlKFwibmFtZVwiKT09PWV9LHR9KCl9LmNhbGwodGhpcyksZnVuY3Rpb24oKXtlLlNuYXBzaG90PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUpe3RoaXMuaGVhZERldGFpbHM9dCx0aGlzLmJvZHlFbGVtZW50PWV9cmV0dXJuIHQud3JhcD1mdW5jdGlvbih0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIHRoaXM/dDpcInN0cmluZ1wiPT10eXBlb2YgdD90aGlzLmZyb21IVE1MU3RyaW5nKHQpOnRoaXMuZnJvbUhUTUxFbGVtZW50KHQpfSx0LmZyb21IVE1MU3RyaW5nPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJodG1sXCIpLGUuaW5uZXJIVE1MPXQsdGhpcy5mcm9tSFRNTEVsZW1lbnQoZSl9LHQuZnJvbUhUTUxFbGVtZW50PWZ1bmN0aW9uKHQpe3ZhciByLG4sbyxpO3JldHVybiBvPXQucXVlcnlTZWxlY3RvcihcImhlYWRcIikscj1udWxsIT0oaT10LnF1ZXJ5U2VsZWN0b3IoXCJib2R5XCIpKT9pOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJib2R5XCIpLG49ZS5IZWFkRGV0YWlscy5mcm9tSGVhZEVsZW1lbnQobyksbmV3IHRoaXMobixyKX0sdC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHRoaXMuY29uc3RydWN0b3IodGhpcy5oZWFkRGV0YWlscyx0aGlzLmJvZHlFbGVtZW50LmNsb25lTm9kZSghMCkpfSx0LnByb3RvdHlwZS5nZXRSb290TG9jYXRpb249ZnVuY3Rpb24oKXt2YXIgdCxyO3JldHVybiByPW51bGwhPSh0PXRoaXMuZ2V0U2V0dGluZyhcInJvb3RcIikpP3Q6XCIvXCIsbmV3IGUuTG9jYXRpb24ocil9LHQucHJvdG90eXBlLmdldENhY2hlQ29udHJvbFZhbHVlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0U2V0dGluZyhcImNhY2hlLWNvbnRyb2xcIil9LHQucHJvdG90eXBlLmdldEVsZW1lbnRGb3JBbmNob3I9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiB0aGlzLmJvZHlFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbaWQ9J1wiK3QrXCInXSwgYVtuYW1lPSdcIit0K1wiJ11cIil9Y2F0Y2goZSl7fX0sdC5wcm90b3R5cGUuZ2V0UGVybWFuZW50RWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ib2R5RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwiW2lkXVtkYXRhLXR1cmJvbGlua3MtcGVybWFuZW50XVwiKX0sdC5wcm90b3R5cGUuZ2V0UGVybWFuZW50RWxlbWVudEJ5SWQ9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuYm9keUVsZW1lbnQucXVlcnlTZWxlY3RvcihcIiNcIit0K1wiW2RhdGEtdHVyYm9saW5rcy1wZXJtYW5lbnRdXCIpfSx0LnByb3RvdHlwZS5nZXRQZXJtYW5lbnRFbGVtZW50c1ByZXNlbnRJblNuYXBzaG90PWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixvLGk7Zm9yKG89dGhpcy5nZXRQZXJtYW5lbnRFbGVtZW50cygpLGk9W10scj0wLG49by5sZW5ndGg7bj5yO3IrKyllPW9bcl0sdC5nZXRQZXJtYW5lbnRFbGVtZW50QnlJZChlLmlkKSYmaS5wdXNoKGUpO3JldHVybiBpfSx0LnByb3RvdHlwZS5maW5kRmlyc3RBdXRvZm9jdXNhYmxlRWxlbWVudD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJvZHlFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXCJbYXV0b2ZvY3VzXVwiKX0sdC5wcm90b3R5cGUuaGFzQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiBudWxsIT10aGlzLmdldEVsZW1lbnRGb3JBbmNob3IodCl9LHQucHJvdG90eXBlLmlzUHJldmlld2FibGU9ZnVuY3Rpb24oKXtyZXR1cm5cIm5vLXByZXZpZXdcIiE9PXRoaXMuZ2V0Q2FjaGVDb250cm9sVmFsdWUoKX0sdC5wcm90b3R5cGUuaXNDYWNoZWFibGU9ZnVuY3Rpb24oKXtyZXR1cm5cIm5vLWNhY2hlXCIhPT10aGlzLmdldENhY2hlQ29udHJvbFZhbHVlKCl9LHQucHJvdG90eXBlLmlzVmlzaXRhYmxlPWZ1bmN0aW9uKCl7cmV0dXJuXCJyZWxvYWRcIiE9PXRoaXMuZ2V0U2V0dGluZyhcInZpc2l0LWNvbnRyb2xcIil9LHQucHJvdG90eXBlLmdldFNldHRpbmc9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuaGVhZERldGFpbHMuZ2V0TWV0YVZhbHVlKFwidHVyYm9saW5rcy1cIit0KX0sdH0oKX0uY2FsbCh0aGlzKSxmdW5jdGlvbigpe3ZhciB0PVtdLnNsaWNlO2UuUmVuZGVyZXI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKCl7fXZhciByO3JldHVybiBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciBlLHIsbixvO3JldHVybiBuPWFyZ3VtZW50c1swXSxyPWFyZ3VtZW50c1sxXSxlPTM8PWFyZ3VtZW50cy5sZW5ndGg/dC5jYWxsKGFyZ3VtZW50cywyKTpbXSxvPWZ1bmN0aW9uKHQsZSxyKXtyLnByb3RvdHlwZT10LnByb3RvdHlwZTt2YXIgbj1uZXcgcixvPXQuYXBwbHkobixlKTtyZXR1cm4gT2JqZWN0KG8pPT09bz9vOm59KHRoaXMsZSxmdW5jdGlvbigpe30pLG8uZGVsZWdhdGU9bixvLnJlbmRlcihyKSxvfSxlLnByb3RvdHlwZS5yZW5kZXJWaWV3PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmRlbGVnYXRlLnZpZXdXaWxsUmVuZGVyKHRoaXMubmV3Qm9keSksdCgpLHRoaXMuZGVsZWdhdGUudmlld1JlbmRlcmVkKHRoaXMubmV3Qm9keSl9LGUucHJvdG90eXBlLmludmFsaWRhdGVWaWV3PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVsZWdhdGUudmlld0ludmFsaWRhdGVkKCl9LGUucHJvdG90eXBlLmNyZWF0ZVNjcmlwdEVsZW1lbnQ9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuXCJmYWxzZVwiPT09dC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXR1cmJvbGlua3MtZXZhbFwiKT90OihlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIiksZS50ZXh0Q29udGVudD10LnRleHRDb250ZW50LGUuYXN5bmM9ITEscihlLHQpLGUpfSxyPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbixvLGkscyxhLHU7Zm9yKGk9ZS5hdHRyaWJ1dGVzLGE9W10scj0wLG49aS5sZW5ndGg7bj5yO3IrKylzPWlbcl0sbz1zLm5hbWUsdT1zLnZhbHVlLGEucHVzaCh0LnNldEF0dHJpYnV0ZShvLHUpKTtyZXR1cm4gYX0sZX0oKX0uY2FsbCh0aGlzKSxmdW5jdGlvbigpe3ZhciB0LHIsbj1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIoKXt0aGlzLmNvbnN0cnVjdG9yPXR9Zm9yKHZhciBuIGluIGUpby5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiByLnByb3RvdHlwZT1lLnByb3RvdHlwZSx0LnByb3RvdHlwZT1uZXcgcix0Ll9fc3VwZXJfXz1lLnByb3RvdHlwZSx0fSxvPXt9Lmhhc093blByb3BlcnR5O2UuU25hcHNob3RSZW5kZXJlcj1mdW5jdGlvbihlKXtmdW5jdGlvbiBvKHQsZSxyKXt0aGlzLmN1cnJlbnRTbmFwc2hvdD10LHRoaXMubmV3U25hcHNob3Q9ZSx0aGlzLmlzUHJldmlldz1yLHRoaXMuY3VycmVudEhlYWREZXRhaWxzPXRoaXMuY3VycmVudFNuYXBzaG90LmhlYWREZXRhaWxzLHRoaXMubmV3SGVhZERldGFpbHM9dGhpcy5uZXdTbmFwc2hvdC5oZWFkRGV0YWlscyx0aGlzLmN1cnJlbnRCb2R5PXRoaXMuY3VycmVudFNuYXBzaG90LmJvZHlFbGVtZW50LHRoaXMubmV3Qm9keT10aGlzLm5ld1NuYXBzaG90LmJvZHlFbGVtZW50fXJldHVybiBuKG8sZSksby5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNob3VsZFJlbmRlcigpPyh0aGlzLm1lcmdlSGVhZCgpLHRoaXMucmVuZGVyVmlldyhmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5yZXBsYWNlQm9keSgpLGUuaXNQcmV2aWV3fHxlLmZvY3VzRmlyc3RBdXRvZm9jdXNhYmxlRWxlbWVudCgpLHQoKX19KHRoaXMpKSk6dGhpcy5pbnZhbGlkYXRlVmlldygpfSxvLnByb3RvdHlwZS5tZXJnZUhlYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb3B5TmV3SGVhZFN0eWxlc2hlZXRFbGVtZW50cygpLHRoaXMuY29weU5ld0hlYWRTY3JpcHRFbGVtZW50cygpLHRoaXMucmVtb3ZlQ3VycmVudEhlYWRQcm92aXNpb25hbEVsZW1lbnRzKCksdGhpcy5jb3B5TmV3SGVhZFByb3Zpc2lvbmFsRWxlbWVudHMoKX0sby5wcm90b3R5cGUucmVwbGFjZUJvZHk9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdD10aGlzLnJlbG9jYXRlQ3VycmVudEJvZHlQZXJtYW5lbnRFbGVtZW50cygpLHRoaXMuYWN0aXZhdGVOZXdCb2R5U2NyaXB0RWxlbWVudHMoKSx0aGlzLmFzc2lnbk5ld0JvZHkoKSx0aGlzLnJlcGxhY2VQbGFjZWhvbGRlckVsZW1lbnRzV2l0aENsb25lZFBlcm1hbmVudEVsZW1lbnRzKHQpfSxvLnByb3RvdHlwZS5zaG91bGRSZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXdTbmFwc2hvdC5pc1Zpc2l0YWJsZSgpJiZ0aGlzLnRyYWNrZWRFbGVtZW50c0FyZUlkZW50aWNhbCgpfSxvLnByb3RvdHlwZS50cmFja2VkRWxlbWVudHNBcmVJZGVudGljYWw9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50SGVhZERldGFpbHMuZ2V0VHJhY2tlZEVsZW1lbnRTaWduYXR1cmUoKT09PXRoaXMubmV3SGVhZERldGFpbHMuZ2V0VHJhY2tlZEVsZW1lbnRTaWduYXR1cmUoKX0sby5wcm90b3R5cGUuY29weU5ld0hlYWRTdHlsZXNoZWV0RWxlbWVudHM9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbixvO2ZvcihuPXRoaXMuZ2V0TmV3SGVhZFN0eWxlc2hlZXRFbGVtZW50cygpLG89W10sZT0wLHI9bi5sZW5ndGg7cj5lO2UrKyl0PW5bZV0sby5wdXNoKGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodCkpO3JldHVybiBvfSxvLnByb3RvdHlwZS5jb3B5TmV3SGVhZFNjcmlwdEVsZW1lbnRzPWZ1bmN0aW9uKCl7dmFyIHQsZSxyLG4sbztmb3Iobj10aGlzLmdldE5ld0hlYWRTY3JpcHRFbGVtZW50cygpLG89W10sZT0wLHI9bi5sZW5ndGg7cj5lO2UrKyl0PW5bZV0sby5wdXNoKGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGVTY3JpcHRFbGVtZW50KHQpKSk7cmV0dXJuIG99LG8ucHJvdG90eXBlLnJlbW92ZUN1cnJlbnRIZWFkUHJvdmlzaW9uYWxFbGVtZW50cz1mdW5jdGlvbigpe3ZhciB0LGUscixuLG87Zm9yKG49dGhpcy5nZXRDdXJyZW50SGVhZFByb3Zpc2lvbmFsRWxlbWVudHMoKSxvPVtdLGU9MCxyPW4ubGVuZ3RoO3I+ZTtlKyspdD1uW2VdLG8ucHVzaChkb2N1bWVudC5oZWFkLnJlbW92ZUNoaWxkKHQpKTtyZXR1cm4gb30sby5wcm90b3R5cGUuY29weU5ld0hlYWRQcm92aXNpb25hbEVsZW1lbnRzPWZ1bmN0aW9uKCl7dmFyIHQsZSxyLG4sbztmb3Iobj10aGlzLmdldE5ld0hlYWRQcm92aXNpb25hbEVsZW1lbnRzKCksbz1bXSxlPTAscj1uLmxlbmd0aDtyPmU7ZSsrKXQ9bltlXSxvLnB1c2goZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh0KSk7cmV0dXJuIG99LG8ucHJvdG90eXBlLnJlbG9jYXRlQ3VycmVudEJvZHlQZXJtYW5lbnRFbGVtZW50cz1mdW5jdGlvbigpe3ZhciBlLG4sbyxpLHMsYSx1O2ZvcihhPXRoaXMuZ2V0Q3VycmVudEJvZHlQZXJtYW5lbnRFbGVtZW50cygpLHU9W10sZT0wLG49YS5sZW5ndGg7bj5lO2UrKylpPWFbZV0scz10KGkpLG89dGhpcy5uZXdTbmFwc2hvdC5nZXRQZXJtYW5lbnRFbGVtZW50QnlJZChpLmlkKSxyKGkscy5lbGVtZW50KSxyKG8saSksdS5wdXNoKHMpO3JldHVybiB1fSxvLnByb3RvdHlwZS5yZXBsYWNlUGxhY2Vob2xkZXJFbGVtZW50c1dpdGhDbG9uZWRQZXJtYW5lbnRFbGVtZW50cz1mdW5jdGlvbih0KXt2YXIgZSxuLG8saSxzLGEsdTtmb3IodT1bXSxvPTAsaT10Lmxlbmd0aDtpPm87bysrKWE9dFtvXSxuPWEuZWxlbWVudCxzPWEucGVybWFuZW50RWxlbWVudCxlPXMuY2xvbmVOb2RlKCEwKSx1LnB1c2gocihuLGUpKTtyZXR1cm4gdX0sby5wcm90b3R5cGUuYWN0aXZhdGVOZXdCb2R5U2NyaXB0RWxlbWVudHM9ZnVuY3Rpb24oKXt2YXIgdCxlLG4sbyxpLHM7Zm9yKGk9dGhpcy5nZXROZXdCb2R5U2NyaXB0RWxlbWVudHMoKSxzPVtdLGU9MCxvPWkubGVuZ3RoO28+ZTtlKyspbj1pW2VdLHQ9dGhpcy5jcmVhdGVTY3JpcHRFbGVtZW50KG4pLHMucHVzaChyKG4sdCkpO3JldHVybiBzfSxvLnByb3RvdHlwZS5hc3NpZ25OZXdCb2R5PWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmJvZHk9dGhpcy5uZXdCb2R5fSxvLnByb3RvdHlwZS5mb2N1c0ZpcnN0QXV0b2ZvY3VzYWJsZUVsZW1lbnQ9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gbnVsbCE9KHQ9dGhpcy5uZXdTbmFwc2hvdC5maW5kRmlyc3RBdXRvZm9jdXNhYmxlRWxlbWVudCgpKT90LmZvY3VzKCk6dm9pZCAwfSxvLnByb3RvdHlwZS5nZXROZXdIZWFkU3R5bGVzaGVldEVsZW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmV3SGVhZERldGFpbHMuZ2V0U3R5bGVzaGVldEVsZW1lbnRzTm90SW5EZXRhaWxzKHRoaXMuY3VycmVudEhlYWREZXRhaWxzKX0sby5wcm90b3R5cGUuZ2V0TmV3SGVhZFNjcmlwdEVsZW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmV3SGVhZERldGFpbHMuZ2V0U2NyaXB0RWxlbWVudHNOb3RJbkRldGFpbHModGhpcy5jdXJyZW50SGVhZERldGFpbHMpfSxvLnByb3RvdHlwZS5nZXRDdXJyZW50SGVhZFByb3Zpc2lvbmFsRWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jdXJyZW50SGVhZERldGFpbHMuZ2V0UHJvdmlzaW9uYWxFbGVtZW50cygpfSxvLnByb3RvdHlwZS5nZXROZXdIZWFkUHJvdmlzaW9uYWxFbGVtZW50cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLm5ld0hlYWREZXRhaWxzLmdldFByb3Zpc2lvbmFsRWxlbWVudHMoKX0sby5wcm90b3R5cGUuZ2V0Q3VycmVudEJvZHlQZXJtYW5lbnRFbGVtZW50cz1mdW5jdGlvbigpe3JldHVybiB0aGlzLmN1cnJlbnRTbmFwc2hvdC5nZXRQZXJtYW5lbnRFbGVtZW50c1ByZXNlbnRJblNuYXBzaG90KHRoaXMubmV3U25hcHNob3QpfSxvLnByb3RvdHlwZS5nZXROZXdCb2R5U2NyaXB0RWxlbWVudHM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uZXdCb2R5LnF1ZXJ5U2VsZWN0b3JBbGwoXCJzY3JpcHRcIil9LG99KGUuUmVuZGVyZXIpLHQ9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIm1ldGFcIiksZS5zZXRBdHRyaWJ1dGUoXCJuYW1lXCIsXCJ0dXJib2xpbmtzLXBlcm1hbmVudC1wbGFjZWhvbGRlclwiKSxlLnNldEF0dHJpYnV0ZShcImNvbnRlbnRcIix0LmlkKSx7ZWxlbWVudDplLHBlcm1hbmVudEVsZW1lbnQ6dH19LHI9ZnVuY3Rpb24odCxlKXt2YXIgcjtyZXR1cm4ocj10LnBhcmVudE5vZGUpP3IucmVwbGFjZUNoaWxkKGUsdCk6dm9pZCAwfX0uY2FsbCh0aGlzKSxmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gbigpe3RoaXMuY29uc3RydWN0b3I9dH1mb3IodmFyIG8gaW4gZSlyLmNhbGwoZSxvKSYmKHRbb109ZVtvXSk7cmV0dXJuIG4ucHJvdG90eXBlPWUucHJvdG90eXBlLHQucHJvdG90eXBlPW5ldyBuLHQuX19zdXBlcl9fPWUucHJvdG90eXBlLHR9LHI9e30uaGFzT3duUHJvcGVydHk7ZS5FcnJvclJlbmRlcmVyPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHIodCl7dmFyIGU7ZT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiaHRtbFwiKSxlLmlubmVySFRNTD10LHRoaXMubmV3SGVhZD1lLnF1ZXJ5U2VsZWN0b3IoXCJoZWFkXCIpLHRoaXMubmV3Qm9keT1lLnF1ZXJ5U2VsZWN0b3IoXCJib2R5XCIpfXJldHVybiB0KHIsZSksci5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnJlbmRlclZpZXcoZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUucmVwbGFjZUhlYWRBbmRCb2R5KCksZS5hY3RpdmF0ZUJvZHlTY3JpcHRFbGVtZW50cygpLHQoKX19KHRoaXMpKX0sci5wcm90b3R5cGUucmVwbGFjZUhlYWRBbmRCb2R5PWZ1bmN0aW9uKCl7dmFyIHQsZTtyZXR1cm4gZT1kb2N1bWVudC5oZWFkLHQ9ZG9jdW1lbnQuYm9keSxlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHRoaXMubmV3SGVhZCxlKSx0LnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHRoaXMubmV3Qm9keSx0KX0sci5wcm90b3R5cGUuYWN0aXZhdGVCb2R5U2NyaXB0RWxlbWVudHM9ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbixvLGk7Zm9yKG49dGhpcy5nZXRTY3JpcHRFbGVtZW50cygpLGk9W10sZT0wLHI9bi5sZW5ndGg7cj5lO2UrKylvPW5bZV0sdD10aGlzLmNyZWF0ZVNjcmlwdEVsZW1lbnQobyksaS5wdXNoKG8ucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQodCxvKSk7cmV0dXJuIGl9LHIucHJvdG90eXBlLmdldFNjcmlwdEVsZW1lbnRzPWZ1bmN0aW9uKCl7cmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKFwic2NyaXB0XCIpfSxyfShlLlJlbmRlcmVyKX0uY2FsbCh0aGlzKSxmdW5jdGlvbigpe2UuVmlldz1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCl7dGhpcy5kZWxlZ2F0ZT10LHRoaXMuaHRtbEVsZW1lbnQ9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fXJldHVybiB0LnByb3RvdHlwZS5nZXRSb290TG9jYXRpb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRTbmFwc2hvdCgpLmdldFJvb3RMb2NhdGlvbigpfSx0LnByb3RvdHlwZS5nZXRFbGVtZW50Rm9yQW5jaG9yPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmdldFNuYXBzaG90KCkuZ2V0RWxlbWVudEZvckFuY2hvcih0KX0sdC5wcm90b3R5cGUuZ2V0U25hcHNob3Q9ZnVuY3Rpb24oKXtyZXR1cm4gZS5TbmFwc2hvdC5mcm9tSFRNTEVsZW1lbnQodGhpcy5odG1sRWxlbWVudCl9LHQucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbih0LGUpe3ZhciByLG4sbztyZXR1cm4gbz10LnNuYXBzaG90LHI9dC5lcnJvcixuPXQuaXNQcmV2aWV3LHRoaXMubWFya0FzUHJldmlldyhuKSxudWxsIT1vP3RoaXMucmVuZGVyU25hcHNob3QobyxuLGUpOnRoaXMucmVuZGVyRXJyb3IocixlKX0sdC5wcm90b3R5cGUubWFya0FzUHJldmlldz1mdW5jdGlvbih0KXtyZXR1cm4gdD90aGlzLmh0bWxFbGVtZW50LnNldEF0dHJpYnV0ZShcImRhdGEtdHVyYm9saW5rcy1wcmV2aWV3XCIsXCJcIik6dGhpcy5odG1sRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLXR1cmJvbGlua3MtcHJldmlld1wiKX0sdC5wcm90b3R5cGUucmVuZGVyU25hcHNob3Q9ZnVuY3Rpb24odCxyLG4pe3JldHVybiBlLlNuYXBzaG90UmVuZGVyZXIucmVuZGVyKHRoaXMuZGVsZWdhdGUsbix0aGlzLmdldFNuYXBzaG90KCksZS5TbmFwc2hvdC53cmFwKHQpLHIpfSx0LnByb3RvdHlwZS5yZW5kZXJFcnJvcj1mdW5jdGlvbih0LHIpe3JldHVybiBlLkVycm9yUmVuZGVyZXIucmVuZGVyKHRoaXMuZGVsZWdhdGUscix0KX0sdH0oKX0uY2FsbCh0aGlzKSxmdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHQuYXBwbHkoZSxhcmd1bWVudHMpfX07ZS5TY3JvbGxNYW5hZ2VyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihyKXt0aGlzLmRlbGVnYXRlPXIsdGhpcy5vblNjcm9sbD10KHRoaXMub25TY3JvbGwsdGhpcyksdGhpcy5vblNjcm9sbD1lLnRocm90dGxlKHRoaXMub25TY3JvbGwpfXJldHVybiByLnByb3RvdHlwZS5zdGFydD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnN0YXJ0ZWQ/dm9pZCAwOihhZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsdGhpcy5vblNjcm9sbCwhMSksdGhpcy5vblNjcm9sbCgpLHRoaXMuc3RhcnRlZD0hMCl9LHIucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGVkPyhyZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsdGhpcy5vblNjcm9sbCwhMSksdGhpcy5zdGFydGVkPSExKTp2b2lkIDB9LHIucHJvdG90eXBlLnNjcm9sbFRvRWxlbWVudD1mdW5jdGlvbih0KXtyZXR1cm4gdC5zY3JvbGxJbnRvVmlldygpfSxyLnByb3RvdHlwZS5zY3JvbGxUb1Bvc2l0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlLHI7cmV0dXJuIGU9dC54LHI9dC55LHdpbmRvdy5zY3JvbGxUbyhlLHIpfSxyLnByb3RvdHlwZS5vblNjcm9sbD1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy51cGRhdGVQb3NpdGlvbih7eDp3aW5kb3cucGFnZVhPZmZzZXQseTp3aW5kb3cucGFnZVlPZmZzZXR9KX0sci5wcm90b3R5cGUudXBkYXRlUG9zaXRpb249ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIHRoaXMucG9zaXRpb249dCxudWxsIT0oZT10aGlzLmRlbGVnYXRlKT9lLnNjcm9sbFBvc2l0aW9uQ2hhbmdlZCh0aGlzLnBvc2l0aW9uKTp2b2lkIDB9LHJ9KCl9LmNhbGwodGhpcyksZnVuY3Rpb24oKXtlLlNuYXBzaG90Q2FjaGU9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KHQpe3RoaXMuc2l6ZT10LHRoaXMua2V5cz1bXSx0aGlzLnNuYXBzaG90cz17fX12YXIgcjtyZXR1cm4gdC5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBlPXIodCksZSBpbiB0aGlzLnNuYXBzaG90c30sdC5wcm90b3R5cGUuZ2V0PWZ1bmN0aW9uKHQpe3ZhciBlO2lmKHRoaXMuaGFzKHQpKXJldHVybiBlPXRoaXMucmVhZCh0KSx0aGlzLnRvdWNoKHQpLGV9LHQucHJvdG90eXBlLnB1dD1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLndyaXRlKHQsZSksdGhpcy50b3VjaCh0KSxlfSx0LnByb3RvdHlwZS5yZWFkPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBlPXIodCksdGhpcy5zbmFwc2hvdHNbZV19LHQucHJvdG90eXBlLndyaXRlPWZ1bmN0aW9uKHQsZSl7dmFyIG47cmV0dXJuIG49cih0KSx0aGlzLnNuYXBzaG90c1tuXT1lfSx0LnByb3RvdHlwZS50b3VjaD1mdW5jdGlvbih0KXt2YXIgZSxuO3JldHVybiBuPXIodCksZT10aGlzLmtleXMuaW5kZXhPZihuKSxlPi0xJiZ0aGlzLmtleXMuc3BsaWNlKGUsMSksdGhpcy5rZXlzLnVuc2hpZnQobiksdGhpcy50cmltKCl9LHQucHJvdG90eXBlLnRyaW09ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbixvO2ZvcihuPXRoaXMua2V5cy5zcGxpY2UodGhpcy5zaXplKSxvPVtdLHQ9MCxyPW4ubGVuZ3RoO3I+dDt0KyspZT1uW3RdLG8ucHVzaChkZWxldGUgdGhpcy5zbmFwc2hvdHNbZV0pO3JldHVybiBvfSxyPWZ1bmN0aW9uKHQpe3JldHVybiBlLkxvY2F0aW9uLndyYXAodCkudG9DYWNoZUtleSgpfSx0fSgpfS5jYWxsKHRoaXMpLGZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdC5hcHBseShlLGFyZ3VtZW50cyl9fTtlLlZpc2l0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihyLG4sbyl7dGhpcy5jb250cm9sbGVyPXIsdGhpcy5hY3Rpb249byx0aGlzLnBlcmZvcm1TY3JvbGw9dCh0aGlzLnBlcmZvcm1TY3JvbGwsdGhpcyksdGhpcy5pZGVudGlmaWVyPWUudXVpZCgpLHRoaXMubG9jYXRpb249ZS5Mb2NhdGlvbi53cmFwKG4pLHRoaXMuYWRhcHRlcj10aGlzLmNvbnRyb2xsZXIuYWRhcHRlcix0aGlzLnN0YXRlPVwiaW5pdGlhbGl6ZWRcIix0aGlzLnRpbWluZ01ldHJpY3M9e319dmFyIG47cmV0dXJuIHIucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuXCJpbml0aWFsaXplZFwiPT09dGhpcy5zdGF0ZT8odGhpcy5yZWNvcmRUaW1pbmdNZXRyaWMoXCJ2aXNpdFN0YXJ0XCIpLHRoaXMuc3RhdGU9XCJzdGFydGVkXCIsdGhpcy5hZGFwdGVyLnZpc2l0U3RhcnRlZCh0aGlzKSk6dm9pZCAwfSxyLnByb3RvdHlwZS5jYW5jZWw9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm5cInN0YXJ0ZWRcIj09PXRoaXMuc3RhdGU/KG51bGwhPSh0PXRoaXMucmVxdWVzdCkmJnQuY2FuY2VsKCksdGhpcy5jYW5jZWxSZW5kZXIoKSx0aGlzLnN0YXRlPVwiY2FuY2VsZWRcIik6dm9pZCAwfSxyLnByb3RvdHlwZS5jb21wbGV0ZT1mdW5jdGlvbigpe3ZhciB0O3JldHVyblwic3RhcnRlZFwiPT09dGhpcy5zdGF0ZT8odGhpcy5yZWNvcmRUaW1pbmdNZXRyaWMoXCJ2aXNpdEVuZFwiKSx0aGlzLnN0YXRlPVwiY29tcGxldGVkXCIsXCJmdW5jdGlvblwiPT10eXBlb2YodD10aGlzLmFkYXB0ZXIpLnZpc2l0Q29tcGxldGVkJiZ0LnZpc2l0Q29tcGxldGVkKHRoaXMpLHRoaXMuY29udHJvbGxlci52aXNpdENvbXBsZXRlZCh0aGlzKSk6dm9pZCAwfSxyLnByb3RvdHlwZS5mYWlsPWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuXCJzdGFydGVkXCI9PT10aGlzLnN0YXRlPyh0aGlzLnN0YXRlPVwiZmFpbGVkXCIsXCJmdW5jdGlvblwiPT10eXBlb2YodD10aGlzLmFkYXB0ZXIpLnZpc2l0RmFpbGVkP3QudmlzaXRGYWlsZWQodGhpcyk6dm9pZCAwKTp2b2lkIDB9LHIucHJvdG90eXBlLmNoYW5nZUhpc3Rvcnk9ZnVuY3Rpb24oKXt2YXIgdCxlO3JldHVybiB0aGlzLmhpc3RvcnlDaGFuZ2VkP3ZvaWQgMDoodD10aGlzLmxvY2F0aW9uLmlzRXF1YWxUbyh0aGlzLnJlZmVycmVyKT9cInJlcGxhY2VcIjp0aGlzLmFjdGlvbixlPW4odCksdGhpcy5jb250cm9sbGVyW2VdKHRoaXMubG9jYXRpb24sdGhpcy5yZXN0b3JhdGlvbklkZW50aWZpZXIpLHRoaXMuaGlzdG9yeUNoYW5nZWQ9ITApfSxyLnByb3RvdHlwZS5pc3N1ZVJlcXVlc3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG91bGRJc3N1ZVJlcXVlc3QoKSYmbnVsbD09dGhpcy5yZXF1ZXN0Pyh0aGlzLnByb2dyZXNzPTAsdGhpcy5yZXF1ZXN0PW5ldyBlLkh0dHBSZXF1ZXN0KHRoaXMsdGhpcy5sb2NhdGlvbix0aGlzLnJlZmVycmVyKSx0aGlzLnJlcXVlc3Quc2VuZCgpKTp2b2lkIDB9LHIucHJvdG90eXBlLmdldENhY2hlZFNuYXBzaG90PWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuISh0PXRoaXMuY29udHJvbGxlci5nZXRDYWNoZWRTbmFwc2hvdEZvckxvY2F0aW9uKHRoaXMubG9jYXRpb24pKXx8bnVsbCE9dGhpcy5sb2NhdGlvbi5hbmNob3ImJiF0Lmhhc0FuY2hvcih0aGlzLmxvY2F0aW9uLmFuY2hvcil8fFwicmVzdG9yZVwiIT09dGhpcy5hY3Rpb24mJiF0LmlzUHJldmlld2FibGUoKT92b2lkIDA6dH0sci5wcm90b3R5cGUuaGFzQ2FjaGVkU25hcHNob3Q9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9dGhpcy5nZXRDYWNoZWRTbmFwc2hvdCgpfSxyLnByb3RvdHlwZS5sb2FkQ2FjaGVkU25hcHNob3Q9ZnVuY3Rpb24oKXt2YXIgdCxlO3JldHVybihlPXRoaXMuZ2V0Q2FjaGVkU25hcHNob3QoKSk/KHQ9dGhpcy5zaG91bGRJc3N1ZVJlcXVlc3QoKSx0aGlzLnJlbmRlcihmdW5jdGlvbigpe3ZhciByO3JldHVybiB0aGlzLmNhY2hlU25hcHNob3QoKSx0aGlzLmNvbnRyb2xsZXIucmVuZGVyKHtzbmFwc2hvdDplLGlzUHJldmlldzp0fSx0aGlzLnBlcmZvcm1TY3JvbGwpLFwiZnVuY3Rpb25cIj09dHlwZW9mKHI9dGhpcy5hZGFwdGVyKS52aXNpdFJlbmRlcmVkJiZyLnZpc2l0UmVuZGVyZWQodGhpcyksdD92b2lkIDA6dGhpcy5jb21wbGV0ZSgpfSkpOnZvaWQgMH0sci5wcm90b3R5cGUubG9hZFJlc3BvbnNlPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGwhPXRoaXMucmVzcG9uc2U/dGhpcy5yZW5kZXIoZnVuY3Rpb24oKXt2YXIgdCxlO3JldHVybiB0aGlzLmNhY2hlU25hcHNob3QoKSx0aGlzLnJlcXVlc3QuZmFpbGVkPyh0aGlzLmNvbnRyb2xsZXIucmVuZGVyKHtlcnJvcjp0aGlzLnJlc3BvbnNlfSx0aGlzLnBlcmZvcm1TY3JvbGwpLFwiZnVuY3Rpb25cIj09dHlwZW9mKHQ9dGhpcy5hZGFwdGVyKS52aXNpdFJlbmRlcmVkJiZ0LnZpc2l0UmVuZGVyZWQodGhpcyksdGhpcy5mYWlsKCkpOih0aGlzLmNvbnRyb2xsZXIucmVuZGVyKHtzbmFwc2hvdDp0aGlzLnJlc3BvbnNlfSx0aGlzLnBlcmZvcm1TY3JvbGwpLFwiZnVuY3Rpb25cIj09dHlwZW9mKGU9dGhpcy5hZGFwdGVyKS52aXNpdFJlbmRlcmVkJiZlLnZpc2l0UmVuZGVyZWQodGhpcyksdGhpcy5jb21wbGV0ZSgpKX0pOnZvaWQgMH0sci5wcm90b3R5cGUuZm9sbG93UmVkaXJlY3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWRpcmVjdGVkVG9Mb2NhdGlvbiYmIXRoaXMuZm9sbG93ZWRSZWRpcmVjdD8odGhpcy5sb2NhdGlvbj10aGlzLnJlZGlyZWN0ZWRUb0xvY2F0aW9uLHRoaXMuY29udHJvbGxlci5yZXBsYWNlSGlzdG9yeVdpdGhMb2NhdGlvbkFuZFJlc3RvcmF0aW9uSWRlbnRpZmllcih0aGlzLnJlZGlyZWN0ZWRUb0xvY2F0aW9uLHRoaXMucmVzdG9yYXRpb25JZGVudGlmaWVyKSx0aGlzLmZvbGxvd2VkUmVkaXJlY3Q9ITApOnZvaWQgMH0sci5wcm90b3R5cGUucmVxdWVzdFN0YXJ0ZWQ9ZnVuY3Rpb24oKXt2YXIgdDtyZXR1cm4gdGhpcy5yZWNvcmRUaW1pbmdNZXRyaWMoXCJyZXF1ZXN0U3RhcnRcIiksXCJmdW5jdGlvblwiPT10eXBlb2YodD10aGlzLmFkYXB0ZXIpLnZpc2l0UmVxdWVzdFN0YXJ0ZWQ/dC52aXNpdFJlcXVlc3RTdGFydGVkKHRoaXMpOnZvaWQgMH0sci5wcm90b3R5cGUucmVxdWVzdFByb2dyZXNzZWQ9ZnVuY3Rpb24odCl7dmFyIGU7cmV0dXJuIHRoaXMucHJvZ3Jlc3M9dCxcImZ1bmN0aW9uXCI9PXR5cGVvZihlPXRoaXMuYWRhcHRlcikudmlzaXRSZXF1ZXN0UHJvZ3Jlc3NlZD9lLnZpc2l0UmVxdWVzdFByb2dyZXNzZWQodGhpcyk6dm9pZCAwfSxyLnByb3RvdHlwZS5yZXF1ZXN0Q29tcGxldGVkV2l0aFJlc3BvbnNlPWZ1bmN0aW9uKHQscil7cmV0dXJuIHRoaXMucmVzcG9uc2U9dCxudWxsIT1yJiYodGhpcy5yZWRpcmVjdGVkVG9Mb2NhdGlvbj1lLkxvY2F0aW9uLndyYXAocikpLHRoaXMuYWRhcHRlci52aXNpdFJlcXVlc3RDb21wbGV0ZWQodGhpcyl9LHIucHJvdG90eXBlLnJlcXVlc3RGYWlsZWRXaXRoU3RhdHVzQ29kZT1mdW5jdGlvbih0LGUpe3JldHVybiB0aGlzLnJlc3BvbnNlPWUsdGhpcy5hZGFwdGVyLnZpc2l0UmVxdWVzdEZhaWxlZFdpdGhTdGF0dXNDb2RlKHRoaXMsdCl9LHIucHJvdG90eXBlLnJlcXVlc3RGaW5pc2hlZD1mdW5jdGlvbigpe3ZhciB0O3JldHVybiB0aGlzLnJlY29yZFRpbWluZ01ldHJpYyhcInJlcXVlc3RFbmRcIiksXCJmdW5jdGlvblwiPT10eXBlb2YodD10aGlzLmFkYXB0ZXIpLnZpc2l0UmVxdWVzdEZpbmlzaGVkP3QudmlzaXRSZXF1ZXN0RmluaXNoZWQodGhpcyk6dm9pZCAwfSxyLnByb3RvdHlwZS5wZXJmb3JtU2Nyb2xsPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Nyb2xsZWQ/dm9pZCAwOihcInJlc3RvcmVcIj09PXRoaXMuYWN0aW9uP3RoaXMuc2Nyb2xsVG9SZXN0b3JlZFBvc2l0aW9uKCl8fHRoaXMuc2Nyb2xsVG9Ub3AoKTp0aGlzLnNjcm9sbFRvQW5jaG9yKCl8fHRoaXMuc2Nyb2xsVG9Ub3AoKSx0aGlzLnNjcm9sbGVkPSEwKX0sci5wcm90b3R5cGUuc2Nyb2xsVG9SZXN0b3JlZFBvc2l0aW9uPWZ1bmN0aW9uKCl7dmFyIHQsZTtyZXR1cm4gdD1udWxsIT0oZT10aGlzLnJlc3RvcmF0aW9uRGF0YSk/ZS5zY3JvbGxQb3NpdGlvbjp2b2lkIDAsbnVsbCE9dD8odGhpcy5jb250cm9sbGVyLnNjcm9sbFRvUG9zaXRpb24odCksITApOnZvaWQgMH0sci5wcm90b3R5cGUuc2Nyb2xsVG9BbmNob3I9ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbCE9dGhpcy5sb2NhdGlvbi5hbmNob3I/KHRoaXMuY29udHJvbGxlci5zY3JvbGxUb0FuY2hvcih0aGlzLmxvY2F0aW9uLmFuY2hvciksITApOnZvaWQgMH0sci5wcm90b3R5cGUuc2Nyb2xsVG9Ub3A9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb250cm9sbGVyLnNjcm9sbFRvUG9zaXRpb24oe3g6MCx5OjB9KX0sci5wcm90b3R5cGUucmVjb3JkVGltaW5nTWV0cmljPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsIT0oZT10aGlzLnRpbWluZ01ldHJpY3MpW3RdP2VbdF06ZVt0XT0obmV3IERhdGUpLmdldFRpbWUoKX0sci5wcm90b3R5cGUuZ2V0VGltaW5nTWV0cmljcz1mdW5jdGlvbigpe3JldHVybiBlLmNvcHlPYmplY3QodGhpcy50aW1pbmdNZXRyaWNzKX0sbj1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZVwicmVwbGFjZVwiOnJldHVyblwicmVwbGFjZUhpc3RvcnlXaXRoTG9jYXRpb25BbmRSZXN0b3JhdGlvbklkZW50aWZpZXJcIjtjYXNlXCJhZHZhbmNlXCI6Y2FzZVwicmVzdG9yZVwiOnJldHVyblwicHVzaEhpc3RvcnlXaXRoTG9jYXRpb25BbmRSZXN0b3JhdGlvbklkZW50aWZpZXJcIn19LHIucHJvdG90eXBlLnNob3VsZElzc3VlUmVxdWVzdD1mdW5jdGlvbigpe3JldHVyblwicmVzdG9yZVwiPT09dGhpcy5hY3Rpb24/IXRoaXMuaGFzQ2FjaGVkU25hcHNob3QoKTohMH0sci5wcm90b3R5cGUuY2FjaGVTbmFwc2hvdD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnNuYXBzaG90Q2FjaGVkP3ZvaWQgMDoodGhpcy5jb250cm9sbGVyLmNhY2hlU25hcHNob3QoKSx0aGlzLnNuYXBzaG90Q2FjaGVkPSEwKX0sci5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLmNhbmNlbFJlbmRlcigpLHRoaXMuZnJhbWU9cmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlLmZyYW1lPW51bGwsdC5jYWxsKGUpfX0odGhpcykpfSxyLnByb3RvdHlwZS5jYW5jZWxSZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5mcmFtZT9jYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLmZyYW1lKTp2b2lkIDB9LHJ9KCl9LmNhbGwodGhpcyksZnVuY3Rpb24oKXt2YXIgdD1mdW5jdGlvbih0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19O2UuQ29udHJvbGxlcj1mdW5jdGlvbigpe2Z1bmN0aW9uIHIoKXt0aGlzLmNsaWNrQnViYmxlZD10KHRoaXMuY2xpY2tCdWJibGVkLHRoaXMpLHRoaXMuY2xpY2tDYXB0dXJlZD10KHRoaXMuY2xpY2tDYXB0dXJlZCx0aGlzKSx0aGlzLnBhZ2VMb2FkZWQ9dCh0aGlzLnBhZ2VMb2FkZWQsdGhpcyksdGhpcy5oaXN0b3J5PW5ldyBlLkhpc3RvcnkodGhpcyksdGhpcy52aWV3PW5ldyBlLlZpZXcodGhpcyksdGhpcy5zY3JvbGxNYW5hZ2VyPW5ldyBlLlNjcm9sbE1hbmFnZXIodGhpcyksdGhpcy5yZXN0b3JhdGlvbkRhdGE9e30sdGhpcy5jbGVhckNhY2hlKCksdGhpcy5zZXRQcm9ncmVzc0JhckRlbGF5KDUwMCl9cmV0dXJuIHIucHJvdG90eXBlLnN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIGUuc3VwcG9ydGVkJiYhdGhpcy5zdGFydGVkPyhhZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmNsaWNrQ2FwdHVyZWQsITApLGFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsdGhpcy5wYWdlTG9hZGVkLCExKSx0aGlzLnNjcm9sbE1hbmFnZXIuc3RhcnQoKSx0aGlzLnN0YXJ0SGlzdG9yeSgpLHRoaXMuc3RhcnRlZD0hMCx0aGlzLmVuYWJsZWQ9ITApOnZvaWQgMH0sci5wcm90b3R5cGUuZGlzYWJsZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmVuYWJsZWQ9ITF9LHIucHJvdG90eXBlLnN0b3A9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdGFydGVkPyhyZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmNsaWNrQ2FwdHVyZWQsITApLHJlbW92ZUV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsdGhpcy5wYWdlTG9hZGVkLCExKSx0aGlzLnNjcm9sbE1hbmFnZXIuc3RvcCgpLHRoaXMuc3RvcEhpc3RvcnkoKSx0aGlzLnN0YXJ0ZWQ9ITEpOnZvaWQgMH0sci5wcm90b3R5cGUuY2xlYXJDYWNoZT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmNhY2hlPW5ldyBlLlNuYXBzaG90Q2FjaGUoMTApfSxyLnByb3RvdHlwZS52aXNpdD1mdW5jdGlvbih0LHIpe3ZhciBuLG87cmV0dXJuIG51bGw9PXImJihyPXt9KSx0PWUuTG9jYXRpb24ud3JhcCh0KSx0aGlzLmFwcGxpY2F0aW9uQWxsb3dzVmlzaXRpbmdMb2NhdGlvbih0KT90aGlzLmxvY2F0aW9uSXNWaXNpdGFibGUodCk/KG49bnVsbCE9KG89ci5hY3Rpb24pP286XCJhZHZhbmNlXCIsdGhpcy5hZGFwdGVyLnZpc2l0UHJvcG9zZWRUb0xvY2F0aW9uV2l0aEFjdGlvbih0LG4pKTp3aW5kb3cubG9jYXRpb249dDp2b2lkIDB9LHIucHJvdG90eXBlLnN0YXJ0VmlzaXRUb0xvY2F0aW9uV2l0aEFjdGlvbj1mdW5jdGlvbih0LHIsbil7dmFyIG87cmV0dXJuIGUuc3VwcG9ydGVkPyhvPXRoaXMuZ2V0UmVzdG9yYXRpb25EYXRhRm9ySWRlbnRpZmllcihuKSx0aGlzLnN0YXJ0VmlzaXQodCxyLHtyZXN0b3JhdGlvbkRhdGE6b30pKTp3aW5kb3cubG9jYXRpb249dH0sci5wcm90b3R5cGUuc2V0UHJvZ3Jlc3NCYXJEZWxheT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5wcm9ncmVzc0JhckRlbGF5PXR9LHIucHJvdG90eXBlLnN0YXJ0SGlzdG9yeT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2F0aW9uPWUuTG9jYXRpb24ud3JhcCh3aW5kb3cubG9jYXRpb24pLHRoaXMucmVzdG9yYXRpb25JZGVudGlmaWVyPWUudXVpZCgpLHRoaXMuaGlzdG9yeS5zdGFydCgpLHRoaXMuaGlzdG9yeS5yZXBsYWNlKHRoaXMubG9jYXRpb24sdGhpcy5yZXN0b3JhdGlvbklkZW50aWZpZXIpfSxyLnByb3RvdHlwZS5zdG9wSGlzdG9yeT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmhpc3Rvcnkuc3RvcCgpfSxyLnByb3RvdHlwZS5wdXNoSGlzdG9yeVdpdGhMb2NhdGlvbkFuZFJlc3RvcmF0aW9uSWRlbnRpZmllcj1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLnJlc3RvcmF0aW9uSWRlbnRpZmllcj1yLHRoaXMubG9jYXRpb249ZS5Mb2NhdGlvbi53cmFwKHQpLHRoaXMuaGlzdG9yeS5wdXNoKHRoaXMubG9jYXRpb24sdGhpcy5yZXN0b3JhdGlvbklkZW50aWZpZXIpfSxyLnByb3RvdHlwZS5yZXBsYWNlSGlzdG9yeVdpdGhMb2NhdGlvbkFuZFJlc3RvcmF0aW9uSWRlbnRpZmllcj1mdW5jdGlvbih0LHIpe3JldHVybiB0aGlzLnJlc3RvcmF0aW9uSWRlbnRpZmllcj1yLHRoaXMubG9jYXRpb249ZS5Mb2NhdGlvbi53cmFwKHQpLHRoaXMuaGlzdG9yeS5yZXBsYWNlKHRoaXMubG9jYXRpb24sdGhpcy5yZXN0b3JhdGlvbklkZW50aWZpZXIpfSxyLnByb3RvdHlwZS5oaXN0b3J5UG9wcGVkVG9Mb2NhdGlvbldpdGhSZXN0b3JhdGlvbklkZW50aWZpZXI9ZnVuY3Rpb24odCxyKXt2YXIgbjtyZXR1cm4gdGhpcy5yZXN0b3JhdGlvbklkZW50aWZpZXI9cix0aGlzLmVuYWJsZWQ/KG49dGhpcy5nZXRSZXN0b3JhdGlvbkRhdGFGb3JJZGVudGlmaWVyKHRoaXMucmVzdG9yYXRpb25JZGVudGlmaWVyKSx0aGlzLnN0YXJ0VmlzaXQodCxcInJlc3RvcmVcIix7cmVzdG9yYXRpb25JZGVudGlmaWVyOnRoaXMucmVzdG9yYXRpb25JZGVudGlmaWVyLHJlc3RvcmF0aW9uRGF0YTpuLGhpc3RvcnlDaGFuZ2VkOiEwfSksdGhpcy5sb2NhdGlvbj1lLkxvY2F0aW9uLndyYXAodCkpOnRoaXMuYWRhcHRlci5wYWdlSW52YWxpZGF0ZWQoKX0sci5wcm90b3R5cGUuZ2V0Q2FjaGVkU25hcHNob3RGb3JMb2NhdGlvbj1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gbnVsbCE9KGU9dGhpcy5jYWNoZS5nZXQodCkpP2UuY2xvbmUoKTp2b2lkIDB9LHIucHJvdG90eXBlLnNob3VsZENhY2hlU25hcHNob3Q9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52aWV3LmdldFNuYXBzaG90KCkuaXNDYWNoZWFibGUoKTtcbn0sci5wcm90b3R5cGUuY2FjaGVTbmFwc2hvdD1mdW5jdGlvbigpe3ZhciB0LHI7cmV0dXJuIHRoaXMuc2hvdWxkQ2FjaGVTbmFwc2hvdCgpPyh0aGlzLm5vdGlmeUFwcGxpY2F0aW9uQmVmb3JlQ2FjaGluZ1NuYXBzaG90KCkscj10aGlzLnZpZXcuZ2V0U25hcHNob3QoKSx0PXRoaXMubGFzdFJlbmRlcmVkTG9jYXRpb24sZS5kZWZlcihmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZS5jYWNoZS5wdXQodCxyLmNsb25lKCkpfX0odGhpcykpKTp2b2lkIDB9LHIucHJvdG90eXBlLnNjcm9sbFRvQW5jaG9yPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybihlPXRoaXMudmlldy5nZXRFbGVtZW50Rm9yQW5jaG9yKHQpKT90aGlzLnNjcm9sbFRvRWxlbWVudChlKTp0aGlzLnNjcm9sbFRvUG9zaXRpb24oe3g6MCx5OjB9KX0sci5wcm90b3R5cGUuc2Nyb2xsVG9FbGVtZW50PWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNjcm9sbE1hbmFnZXIuc2Nyb2xsVG9FbGVtZW50KHQpfSxyLnByb3RvdHlwZS5zY3JvbGxUb1Bvc2l0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLnNjcm9sbE1hbmFnZXIuc2Nyb2xsVG9Qb3NpdGlvbih0KX0sci5wcm90b3R5cGUuc2Nyb2xsUG9zaXRpb25DaGFuZ2VkPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBlPXRoaXMuZ2V0Q3VycmVudFJlc3RvcmF0aW9uRGF0YSgpLGUuc2Nyb2xsUG9zaXRpb249dH0sci5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMudmlldy5yZW5kZXIodCxlKX0sci5wcm90b3R5cGUudmlld0ludmFsaWRhdGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWRhcHRlci5wYWdlSW52YWxpZGF0ZWQoKX0sci5wcm90b3R5cGUudmlld1dpbGxSZW5kZXI9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMubm90aWZ5QXBwbGljYXRpb25CZWZvcmVSZW5kZXIodCl9LHIucHJvdG90eXBlLnZpZXdSZW5kZXJlZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLmxhc3RSZW5kZXJlZExvY2F0aW9uPXRoaXMuY3VycmVudFZpc2l0LmxvY2F0aW9uLHRoaXMubm90aWZ5QXBwbGljYXRpb25BZnRlclJlbmRlcigpfSxyLnByb3RvdHlwZS5wYWdlTG9hZGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGFzdFJlbmRlcmVkTG9jYXRpb249dGhpcy5sb2NhdGlvbix0aGlzLm5vdGlmeUFwcGxpY2F0aW9uQWZ0ZXJQYWdlTG9hZCgpfSxyLnByb3RvdHlwZS5jbGlja0NhcHR1cmVkPWZ1bmN0aW9uKCl7cmV0dXJuIHJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLHRoaXMuY2xpY2tCdWJibGVkLCExKSxhZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIix0aGlzLmNsaWNrQnViYmxlZCwhMSl9LHIucHJvdG90eXBlLmNsaWNrQnViYmxlZD1mdW5jdGlvbih0KXt2YXIgZSxyLG47cmV0dXJuIHRoaXMuZW5hYmxlZCYmdGhpcy5jbGlja0V2ZW50SXNTaWduaWZpY2FudCh0KSYmKHI9dGhpcy5nZXRWaXNpdGFibGVMaW5rRm9yTm9kZSh0LnRhcmdldCkpJiYobj10aGlzLmdldFZpc2l0YWJsZUxvY2F0aW9uRm9yTGluayhyKSkmJnRoaXMuYXBwbGljYXRpb25BbGxvd3NGb2xsb3dpbmdMaW5rVG9Mb2NhdGlvbihyLG4pPyh0LnByZXZlbnREZWZhdWx0KCksZT10aGlzLmdldEFjdGlvbkZvckxpbmsociksdGhpcy52aXNpdChuLHthY3Rpb246ZX0pKTp2b2lkIDB9LHIucHJvdG90eXBlLmFwcGxpY2F0aW9uQWxsb3dzRm9sbG93aW5nTGlua1RvTG9jYXRpb249ZnVuY3Rpb24odCxlKXt2YXIgcjtyZXR1cm4gcj10aGlzLm5vdGlmeUFwcGxpY2F0aW9uQWZ0ZXJDbGlja2luZ0xpbmtUb0xvY2F0aW9uKHQsZSksIXIuZGVmYXVsdFByZXZlbnRlZH0sci5wcm90b3R5cGUuYXBwbGljYXRpb25BbGxvd3NWaXNpdGluZ0xvY2F0aW9uPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBlPXRoaXMubm90aWZ5QXBwbGljYXRpb25CZWZvcmVWaXNpdGluZ0xvY2F0aW9uKHQpLCFlLmRlZmF1bHRQcmV2ZW50ZWR9LHIucHJvdG90eXBlLm5vdGlmeUFwcGxpY2F0aW9uQWZ0ZXJDbGlja2luZ0xpbmtUb0xvY2F0aW9uPWZ1bmN0aW9uKHQscil7cmV0dXJuIGUuZGlzcGF0Y2goXCJ0dXJib2xpbmtzOmNsaWNrXCIse3RhcmdldDp0LGRhdGE6e3VybDpyLmFic29sdXRlVVJMfSxjYW5jZWxhYmxlOiEwfSl9LHIucHJvdG90eXBlLm5vdGlmeUFwcGxpY2F0aW9uQmVmb3JlVmlzaXRpbmdMb2NhdGlvbj1mdW5jdGlvbih0KXtyZXR1cm4gZS5kaXNwYXRjaChcInR1cmJvbGlua3M6YmVmb3JlLXZpc2l0XCIse2RhdGE6e3VybDp0LmFic29sdXRlVVJMfSxjYW5jZWxhYmxlOiEwfSl9LHIucHJvdG90eXBlLm5vdGlmeUFwcGxpY2F0aW9uQWZ0ZXJWaXNpdGluZ0xvY2F0aW9uPWZ1bmN0aW9uKHQpe3JldHVybiBlLmRpc3BhdGNoKFwidHVyYm9saW5rczp2aXNpdFwiLHtkYXRhOnt1cmw6dC5hYnNvbHV0ZVVSTH19KX0sci5wcm90b3R5cGUubm90aWZ5QXBwbGljYXRpb25CZWZvcmVDYWNoaW5nU25hcHNob3Q9ZnVuY3Rpb24oKXtyZXR1cm4gZS5kaXNwYXRjaChcInR1cmJvbGlua3M6YmVmb3JlLWNhY2hlXCIpfSxyLnByb3RvdHlwZS5ub3RpZnlBcHBsaWNhdGlvbkJlZm9yZVJlbmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gZS5kaXNwYXRjaChcInR1cmJvbGlua3M6YmVmb3JlLXJlbmRlclwiLHtkYXRhOntuZXdCb2R5OnR9fSl9LHIucHJvdG90eXBlLm5vdGlmeUFwcGxpY2F0aW9uQWZ0ZXJSZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gZS5kaXNwYXRjaChcInR1cmJvbGlua3M6cmVuZGVyXCIpfSxyLnByb3RvdHlwZS5ub3RpZnlBcHBsaWNhdGlvbkFmdGVyUGFnZUxvYWQ9ZnVuY3Rpb24odCl7cmV0dXJuIG51bGw9PXQmJih0PXt9KSxlLmRpc3BhdGNoKFwidHVyYm9saW5rczpsb2FkXCIse2RhdGE6e3VybDp0aGlzLmxvY2F0aW9uLmFic29sdXRlVVJMLHRpbWluZzp0fX0pfSxyLnByb3RvdHlwZS5zdGFydFZpc2l0PWZ1bmN0aW9uKHQsZSxyKXt2YXIgbjtyZXR1cm4gbnVsbCE9KG49dGhpcy5jdXJyZW50VmlzaXQpJiZuLmNhbmNlbCgpLHRoaXMuY3VycmVudFZpc2l0PXRoaXMuY3JlYXRlVmlzaXQodCxlLHIpLHRoaXMuY3VycmVudFZpc2l0LnN0YXJ0KCksdGhpcy5ub3RpZnlBcHBsaWNhdGlvbkFmdGVyVmlzaXRpbmdMb2NhdGlvbih0KX0sci5wcm90b3R5cGUuY3JlYXRlVmlzaXQ9ZnVuY3Rpb24odCxyLG4pe3ZhciBvLGkscyxhLHU7cmV0dXJuIGk9bnVsbCE9bj9uOnt9LGE9aS5yZXN0b3JhdGlvbklkZW50aWZpZXIscz1pLnJlc3RvcmF0aW9uRGF0YSxvPWkuaGlzdG9yeUNoYW5nZWQsdT1uZXcgZS5WaXNpdCh0aGlzLHQsciksdS5yZXN0b3JhdGlvbklkZW50aWZpZXI9bnVsbCE9YT9hOmUudXVpZCgpLHUucmVzdG9yYXRpb25EYXRhPWUuY29weU9iamVjdChzKSx1Lmhpc3RvcnlDaGFuZ2VkPW8sdS5yZWZlcnJlcj10aGlzLmxvY2F0aW9uLHV9LHIucHJvdG90eXBlLnZpc2l0Q29tcGxldGVkPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLm5vdGlmeUFwcGxpY2F0aW9uQWZ0ZXJQYWdlTG9hZCh0LmdldFRpbWluZ01ldHJpY3MoKSl9LHIucHJvdG90eXBlLmNsaWNrRXZlbnRJc1NpZ25pZmljYW50PWZ1bmN0aW9uKHQpe3JldHVybiEodC5kZWZhdWx0UHJldmVudGVkfHx0LnRhcmdldC5pc0NvbnRlbnRFZGl0YWJsZXx8dC53aGljaD4xfHx0LmFsdEtleXx8dC5jdHJsS2V5fHx0Lm1ldGFLZXl8fHQuc2hpZnRLZXkpfSxyLnByb3RvdHlwZS5nZXRWaXNpdGFibGVMaW5rRm9yTm9kZT1mdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5ub2RlSXNWaXNpdGFibGUodCk/ZS5jbG9zZXN0KHQsXCJhW2hyZWZdOm5vdChbdGFyZ2V0XSk6bm90KFtkb3dubG9hZF0pXCIpOnZvaWQgMH0sci5wcm90b3R5cGUuZ2V0VmlzaXRhYmxlTG9jYXRpb25Gb3JMaW5rPWZ1bmN0aW9uKHQpe3ZhciByO3JldHVybiByPW5ldyBlLkxvY2F0aW9uKHQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSksdGhpcy5sb2NhdGlvbklzVmlzaXRhYmxlKHIpP3I6dm9pZCAwfSxyLnByb3RvdHlwZS5nZXRBY3Rpb25Gb3JMaW5rPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsIT0oZT10LmdldEF0dHJpYnV0ZShcImRhdGEtdHVyYm9saW5rcy1hY3Rpb25cIikpP2U6XCJhZHZhbmNlXCJ9LHIucHJvdG90eXBlLm5vZGVJc1Zpc2l0YWJsZT1mdW5jdGlvbih0KXt2YXIgcjtyZXR1cm4ocj1lLmNsb3Nlc3QodCxcIltkYXRhLXR1cmJvbGlua3NdXCIpKT9cImZhbHNlXCIhPT1yLmdldEF0dHJpYnV0ZShcImRhdGEtdHVyYm9saW5rc1wiKTohMH0sci5wcm90b3R5cGUubG9jYXRpb25Jc1Zpc2l0YWJsZT1mdW5jdGlvbih0KXtyZXR1cm4gdC5pc1ByZWZpeGVkQnkodGhpcy52aWV3LmdldFJvb3RMb2NhdGlvbigpKSYmdC5pc0hUTUwoKX0sci5wcm90b3R5cGUuZ2V0Q3VycmVudFJlc3RvcmF0aW9uRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFJlc3RvcmF0aW9uRGF0YUZvcklkZW50aWZpZXIodGhpcy5yZXN0b3JhdGlvbklkZW50aWZpZXIpfSxyLnByb3RvdHlwZS5nZXRSZXN0b3JhdGlvbkRhdGFGb3JJZGVudGlmaWVyPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBudWxsIT0oZT10aGlzLnJlc3RvcmF0aW9uRGF0YSlbdF0/ZVt0XTplW3RdPXt9fSxyfSgpfS5jYWxsKHRoaXMpLGZ1bmN0aW9uKCl7IWZ1bmN0aW9uKCl7dmFyIHQsZTtpZigodD1lPWRvY3VtZW50LmN1cnJlbnRTY3JpcHQpJiYhZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXR1cmJvbGlua3Mtc3VwcHJlc3Mtd2FybmluZ1wiKSlmb3IoO3Q9dC5wYXJlbnROb2RlOylpZih0PT09ZG9jdW1lbnQuYm9keSlyZXR1cm4gY29uc29sZS53YXJuKFwiWW91IGFyZSBsb2FkaW5nIFR1cmJvbGlua3MgZnJvbSBhIDxzY3JpcHQ+IGVsZW1lbnQgaW5zaWRlIHRoZSA8Ym9keT4gZWxlbWVudC4gVGhpcyBpcyBwcm9iYWJseSBub3Qgd2hhdCB5b3UgbWVhbnQgdG8gZG8hXFxuXFxuTG9hZCB5b3VyIGFwcGxpY2F0aW9uXFx1MjAxOXMgSmF2YVNjcmlwdCBidW5kbGUgaW5zaWRlIHRoZSA8aGVhZD4gZWxlbWVudCBpbnN0ZWFkLiA8c2NyaXB0PiBlbGVtZW50cyBpbiA8Ym9keT4gYXJlIGV2YWx1YXRlZCB3aXRoIGVhY2ggcGFnZSBjaGFuZ2UuXFxuXFxuRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL3R1cmJvbGlua3MvdHVyYm9saW5rcyN3b3JraW5nLXdpdGgtc2NyaXB0LWVsZW1lbnRzXFxuXFxuXFx1MjAxNFxcdTIwMTRcXG5TdXBwcmVzcyB0aGlzIHdhcm5pbmcgYnkgYWRkaW5nIGEgYGRhdGEtdHVyYm9saW5rcy1zdXBwcmVzcy13YXJuaW5nYCBhdHRyaWJ1dGUgdG86ICVzXCIsZS5vdXRlckhUTUwpfSgpfS5jYWxsKHRoaXMpLGZ1bmN0aW9uKCl7dmFyIHQscixuO2Uuc3RhcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gcigpPyhudWxsPT1lLmNvbnRyb2xsZXImJihlLmNvbnRyb2xsZXI9dCgpKSxlLmNvbnRyb2xsZXIuc3RhcnQoKSk6dm9pZCAwfSxyPWZ1bmN0aW9uKCl7cmV0dXJuIG51bGw9PXdpbmRvdy5UdXJib2xpbmtzJiYod2luZG93LlR1cmJvbGlua3M9ZSksbigpfSx0PWZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIHQ9bmV3IGUuQ29udHJvbGxlcix0LmFkYXB0ZXI9bmV3IGUuQnJvd3NlckFkYXB0ZXIodCksdH0sbj1mdW5jdGlvbigpe3JldHVybiB3aW5kb3cuVHVyYm9saW5rcz09PWV9LG4oKSYmZS5zdGFydCgpfS5jYWxsKHRoaXMpfSkuY2FsbCh0aGlzKSxcIm9iamVjdFwiPT10eXBlb2YgbW9kdWxlJiZtb2R1bGUuZXhwb3J0cz9tb2R1bGUuZXhwb3J0cz1lOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZCYmZGVmaW5lKGUpfSkuY2FsbCh0aGlzKTsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/turbolinks/dist/turbolinks.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ "./source/_assets/js/turbolinks.js":
|
|
/*!*****************************************!*\
|
|
!*** ./source/_assets/js/turbolinks.js ***!
|
|
\*****************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
eval("var Turbolinks = __webpack_require__(/*! turbolinks */ \"./node_modules/turbolinks/dist/turbolinks.js\");\n\nTurbolinks.start(); // make progressbar always visible (default 500)\n//Turbolinks.setProgressBarDelay(0);\n// document.addEventListener(\"turbolinks:load\", function() {\n// \tconsole.log('turbolinks ready');\n// })//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9zb3VyY2UvX2Fzc2V0cy9qcy90dXJib2xpbmtzLmpzP2NjYzEiXSwibmFtZXMiOlsiVHVyYm9saW5rcyIsInJlcXVpcmUiLCJzdGFydCJdLCJtYXBwaW5ncyI6IkFBQUEsSUFBSUEsVUFBVSxHQUFHQyxtQkFBTyxDQUFDLGdFQUFELENBQXhCOztBQUVBRCxVQUFVLENBQUNFLEtBQVgsRyxDQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0EiLCJmaWxlIjoiLi9zb3VyY2UvX2Fzc2V0cy9qcy90dXJib2xpbmtzLmpzLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIFR1cmJvbGlua3MgPSByZXF1aXJlKFwidHVyYm9saW5rc1wiKVxuXG5UdXJib2xpbmtzLnN0YXJ0KCk7XG5cbi8vIG1ha2UgcHJvZ3Jlc3NiYXIgYWx3YXlzIHZpc2libGUgKGRlZmF1bHQgNTAwKVxuLy9UdXJib2xpbmtzLnNldFByb2dyZXNzQmFyRGVsYXkoMCk7XG5cbi8vIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJ0dXJib2xpbmtzOmxvYWRcIiwgZnVuY3Rpb24oKSB7XG4vLyBcdGNvbnNvbGUubG9nKCd0dXJib2xpbmtzIHJlYWR5Jyk7XG4vLyB9KSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./source/_assets/js/turbolinks.js\n");
|
|
|
|
/***/ }),
|
|
|
|
/***/ 1:
|
|
/*!***********************************************!*\
|
|
!*** multi ./source/_assets/js/turbolinks.js ***!
|
|
\***********************************************/
|
|
/*! no static exports found */
|
|
/***/ (function(module, exports, __webpack_require__) {
|
|
|
|
module.exports = __webpack_require__(/*! /Users/abrar/Documents/www/tenancy-docs/source/_assets/js/turbolinks.js */"./source/_assets/js/turbolinks.js");
|
|
|
|
|
|
/***/ })
|
|
|
|
/******/ }); |