1!function(){"use strict";var t={d:function(e,r){for(var o in r)t.o(r,o)&&!t.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:r[o]})}};t.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),t.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},function(){var e="undefined"!=typeof globalThis&&globalThis||"undefined"!=typeof self&&self||void 0!==t.g&&t.g||{},r="URLSearchParams"in e,o="Symbol"in e&&"iterator"in Symbol,n="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(t){return!1}}(),i="FormData"in e,s="ArrayBuffer"in e;if(s)var a=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],u=ArrayBuffer.isView||function(t){return t&&a.indexOf(Object.prototype.toString.call(t))>-1};function c(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(t)||""===t)throw new TypeError('Invalid character in header field name: "'+t+'"');return t.toLowerCase()}function d(t){return"string"!=typeof t&&(t=String(t)),t}function l(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return o&&(e[Symbol.iterator]=function(){return e}),e}function f(t){this.map={},t instanceof f?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){if(2!=t.length)throw new TypeError("Headers constructor: expected name/value pair to be length 2, found"+t.length);this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function h(t){if(!t._noBody)return t.bodyUsed?Promise.reject(new TypeError("Already read")):void(t.bodyUsed=!0)}function y(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function p(t){var e=new FileReader,r=y(e);return e.readAsArrayBuffer(t),r}function b(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function w(){return this.bodyUsed=!1,this._initBody=function(t){var e;this.bodyUsed=this.bodyUsed,this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:n&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:i&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:r&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():s&&n&&(e=t)&&DataView.prototype.isPrototypeOf(e)?(this._bodyArrayBuffer=b(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(t)||u(t))?this._bodyArrayBuffer=b(t):this._bodyText=t=Object.prototype.toString.call(t):(this._noBody=!0,this._bodyText=""),this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},n&&(this.blob=function(){var t=h(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))}),this.arrayBuffer=function(){if(this._bodyArrayBuffer)return h(this)||(ArrayBuffer.isView(this._bodyArrayBuffer)?Promise.resolve(this._bodyArrayBuffer.buffer.slice(this._bodyArrayBuffer.byteOffset,this._bodyArrayBuffer.byteOffset+this._bodyArrayBuffer.byteLength)):Promise.resolve(this._bodyArrayBuffer));if(n)return this.blob().then(p);throw new Error("could not read as ArrayBuffer")},this.text=function(){var t,e,r,o,n,i=h(this);if(i)return i;if(this._bodyBlob)return t=this._bodyBlob,r=y(e=new FileReader),n=(o=/charset=([A-Za-z0-9_-]+)/.exec(t.type))?o[1]:"utf-8",e.readAsText(t,n),r;if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),o=0;o<e.length;o++)r[o]=String.fromCharCode(e[o]);return r.join("")}(this._bodyArrayBuffer));if(this._bodyFormData)throw new Error("could not read FormData body as text");return Promise.resolve(this._bodyText)},i&&(this.formData=function(){return this.text().then(g)}),this.json=function(){return this.text().then(JSON.parse)},this}f.prototype.append=function(t,e){t=c(t),e=d(e);var r=this.map[t];this.map[t]=r?r+", "+e:e},f.prototype.delete=function(t){delete this.map[c(t)]},f.prototype.get=function(t){return t=c(t),this.has(t)?this.map[t]:null},f.prototype.has=function(t){return this.map.hasOwnProperty(c(t))},f.prototype.set=function(t,e){this.map[c(t)]=d(e)},f.prototype.forEach=function(t,e){for(var r in this.map)this.map.hasOwnProperty(r)&&t.call(e,this.map[r],r,this)},f.prototype.keys=function(){var t=[];return this.forEach(function(e,r){t.push(r)}),l(t)}
vendor: 3,107 bytes, line 1
1,f.prototype.values=function(){var t=[];return this.forEach(function(e){t.push(e)}),l(t)},f.prototype.entries=function(){var t=[];return this.forEach(function(e,r){t.push([r,e])}),l(t)},o&&(f.prototype[Symbol.iterator]=f.prototype.entries);var m=["CONNECT","DELETE","GET","HEAD","OPTIONS","PATCH","POST","PUT","TRACE"];function v(t,r){if(!(this instanceof v))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');var o,n,i=(r=r||{}).body;if(t instanceof v){if(t.bodyUsed)throw new TypeError("Already read");this.url=t.url,this.credentials=t.credentials,r.headers||(this.headers=new f(t.headers)),this.method=t.method,this.mode=t.mode,this.signal=t.signal,i||null==t._bodyInit||(i=t._bodyInit,t.bodyUsed=!0)}else this.url=String(t);if(this.credentials=r.credentials||this.credentials||"same-origin",!r.headers&&this.headers||(this.headers=new f(r.headers)),this.method=(n=(o=r.method||this.method||"GET").toUpperCase(),m.indexOf(n)>-1?n:o),this.mode=r.mode||this.mode||null,this.signal=r.signal||this.signal||function(){if("AbortController"in e)return(new AbortController).signal}(),this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&i)throw new TypeError("Body not allowed for GET or HEAD requests");if(this._initBody(i),!("GET"!==this.method&&"HEAD"!==this.method||"no-store"!==r.cache&&"no-cache"!==r.cache)){var s=/([?&])_=[^&]*/;s.test(this.url)?this.url=this.url.replace(s,"$1_="+(new Date).getTime()):this.url+=(/\?/.test(this.url)?"&":"?")+"_="+(new Date).getTime()}}function g(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),o=r.shift().replace(/\+/g," "),n=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(o),decodeURIComponent(n))}}),e}function T(t,e){if(!(this instanceof T))throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');if(e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.status<200||this.status>599)throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");this.ok=this.status>=200&&this.status<300,this.statusText=void 0===e.statusText?"":""+e.statusText,this.headers=new f(e.headers),this.url=e.url||"",this._initBody(t)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},w.call(v.prototype),w.call(T.prototype),T.prototype.clone=function(){return new T(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new f(this.headers),url:this.url})},T.error=function(){var t=new T(null,{status:200,statusText:""});return t.ok=!1,t.status=0,t.type="error",t};var A=[301,302,303,307,308];T.redirect=function(t,e){if(-1===A.indexOf(e))throw new RangeError("Invalid status code");return new T(null,{status:e,headers:{location:t}})};var _=e.DOMException;try{new _}catch(t){(_=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack}).prototype=Object.create(Error.prototype),_.prototype.constructor=_}function E(t,r){return new Promise(function(o,i){var a=new v(t,r);
1if(a.signal&&a.signal.aborted)return i(new _("Aborted","AbortError"));var u=new XMLHttpRequest;function l(){u.abort()}if(u.onload=function(){var t,e,r={statusText:u.statusText,headers:(t=u.getAllResponseHeaders()||"",e=new f,t.replace(/\r?\n[\t ]+/g," ").split("\r").map(function(t){return 0===t.indexOf("\n")?t.substr(1,t.length):t}).forEach(function(t){var r=t.split(":"),o=r.shift().trim();if(o){var n=r.join(":").trim();try{e.append(o,n)}catch(t){console.warn("Response "+t.message)}}}),e)};0===a.url.indexOf("file://")&&(u.status<200||u.status>599)?r.status=200:r.status=u.status,r.url="responseURL"in u?u.responseURL:r.headers.get("X-Request-URL");var n="response"in u?u.response:u.responseText;setTimeout(function(){o(new T(n,r))},0)},u.onerror=function(){setTimeout(function(){i(new TypeError("Network request failed"))},0)},u.ontimeout=function(){setTimeout(function(){i(new TypeError("Network request timed out"))},0)},u.onabort=function(){setTimeout(function(){i(new _("Aborted","AbortError"))},0)},u.open(a.method,function(t){try{return""===t&&e.location.href?e.location.href:t}catch(e){return t}}(a.url),!0),"include"===a.credentials?u.withCredentials=!0:"omit"===a.credentials&&(u.withCredentials=!1),"responseType"in u&&(n?u.responseType="blob":s&&(u.responseType="arraybuffer")),r&&"object"==typeof r.headers&&!(r.headers instanceof f||e.Headers&&r.headers instanceof e.Headers)){var h=[];Object.getOwnPropertyNames(r.headers).forEach(function(t){h.push(c(t)),u.setRequestHeader(t,d(r.headers[t]))}),a.headers.forEach(function(t,e){-1===h.indexOf(e)&&u.setRequestHeader(e,t)})}else a.headers.forEach(function(t,e){u.setRequestHeader(e,t)});a.signal&&(a.signal.addEventListener("abort",l),u.onreadystatechange=function(){4===u.readyState&&a.signal.removeEventListener("abort",l)}),u.send(void 0===a._bodyInit?null:a._bodyInit)})}E.polyfill=!0,e.fetch||(e.fetch=E,e.Headers=f,e.Request=v,e.Response=T)}(),function(){function t(t,e){if(!t||t.length<2)return!1;var r=t.replace(/^#/,""),o=r;try{o=decodeURIComponent(r)}catch(i){}var n,i,s=null,a=document.getElementById(o);if(a)s=a;else{var u=(n=o,(null===(i=window.CSS)||void 0===i?void 0:i.escape)?window.CSS.escape(n):n.replace(/([ #;?%&,.+*~':"!^$[\]()=>|\/@])/g,"\\$1"));(s=document.querySelector("#"+u))||(s=document.querySelector('[name="'+o.replace(/"/g,'\\"')+'"]'))}if(!s)return!1;!function(t){for(var e=t,r=function(){var t=e.closest(".tab-widget-panel, .ui-tabs-panel, [id][tabcount]");if(!t||!t.id)return{value:void 0};var r=t.closest(".widget.widget-tabs, .widget.support-resources");if(!r)return{value:void 0};if(null!==t.offsetParent&&"true"!==t.getAttribute("aria-hidden"))return e=r.parentElement,"continue";var o=Array.from(r.querySelectorAll(".tab_accordion_heading")).find(function(e){return e.getAttribute("rel")===t.id});if(!o)return{value:void 0};o.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0})),e=r.parentElement};e;){var o=r();if("object"==typeof o)return o.value}}(s),e&&history.replaceState(null,"","#"+encodeURIComponent(r));var c=function(){for(var t=0,e=Array.from(document.querySelectorAll(".header-container, .simple-header-container"));t<e.length;t++){var r=e[t];if(null!==r.offsetParent){var o=r.getBoundingClientRect();if(o.height>0)return o.height}}return 0}(),d=s.getBoundingClientRect(),l=Math.max(0,d.top+window.scrollY-c);return $("html, body").stop(!0).animate({scrollTop:l},300,function(){!function(t){var e=t.hasAttribute("tabindex"),r=e?t.getAttribute("tabindex"):null;e||t.setAttribute("tabindex","-1"),t.focus({preventScroll:!0}),e||null!==r||t.addEventListener("blur",function e(){t.removeAttribute("tabindex"),t.removeEventListener("blur",e)})}(s)}),!0}function e(e){if(!function(t){return t.defaultPrevented||0!==t.button||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey}(e)){var r=e.target instanceof Element?e.target:null,o=null==r?void 0:r.closest("a[href^='#']");if(o){var n=o.getAttribute("href");n&&"#"!==n&&t(n,!0)&&e.preventDefault()}}}function r(){if(!window.__anchorScrollInitialized){window.__anchorScrollInitialized=!0;var r=window.location.hash;if(r){"scrollRestoration"in history&&(history.scrollRestoration="manual"),window.scrollTo(0,0);var o=function(){t(r,!1),window.setTimeout(function(){t(r,!1)},50),window.setTimeout(function(){t(r,!1)},300),window.setTimeout(function(){t(r,!1)},800)};"complete"===document.readyState?o():window.addEventListener("load",o,{once:!0})}window.addEventListener("hashchange",function(){t(window.location.hash,!1)}),(document.body||document).addEventListener("click",e)}}window.scrollToAnchorFromHashTs=t,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",r,{once:!0}):document.body&&r(),window.toast=function(t,e){void 0===e&&(e=3e3),$("#blackout").length||$("body").append('\n\t\t<div id="blackout" style="position:fixed; inset:0; display:none; background:rgba(0, 0, 0, 0.6); z-index:999; color:#fff">\n\t\t\t<div id="blackout_text_container" style="position: absolute; inset:35% 0 0 0; display: none;">\n\t\t\t\t<div id="blackout_text" style="font-size: 1.5em; text-align: center; padding: 30px 5%; background:#000; max-width: 900px; margin: 0 auto;">\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>'),$("#blackout").addClass("removable"),$("#blackout_text").html(t),$("#blackout_text_container").show(),$("#blackout").fadeIn("slow",function(){window.blackoutTimeout=window.setTimeout(function(){$("#blackout").fadeOut("slow",function(){window.cwToast=!1,
1clearTimeout(window.blackoutTimeout),$("#blackout").stop().hide().removeClass("removable"),$("#blackout_text").html(""),$("#blackout_text_container").hide().removeClass("activity").css("top","35%")})},e)}),window.cwToast=!0}}()}(); 2//# sourceMappingURL=data:application/json;charset=utf-8;base64,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NPakM1USxPQUFPNlEsU0FBVSxFQUNqQkMsYUFBYTlRLE9BQU8yUSxpQkFDcEJ2QyxFQUFFLGFBQWFDLE9BQU8wQyxPQUFPQyxZQUFZLGFBQ3pDNUMsRUFBRSxrQkFBa0JvQyxLQUFLLElBQ3pCcEMsRUFBRSw0QkFBNEIyQyxPQUFPQyxZQUFZLFlBQVlDLElBQUksTUFBTyxNRFR0RSxFQUNELEVBQUdYLEVBQ0osR0FFQXRRLE9BQU82USxTQUFVLENBQ2xCLEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3doYXR3Zy1mZXRjaC9mZXRjaC5qcyIsIndlYnBhY2s6Ly8vLi91dGlsL2RvbS50cyIsIndlYnBhY2s6Ly8vLi9ib290c3RyYXAvYW5jaG9yU2Nyb2xsLnRzIiwid2VicGFjazovLy8uL2Jvb3RzdHJhcC9oZWFkLnRzIiwid2VicGFjazovLy8uL3V0aWwvdWkvdG9hc3QudHMiLCJ3ZWJwYWNrOi8vLy4vdXRpbC91aS9vdmVybGF5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSByZXF1aXJlIHNjb3BlXG52YXIgX193ZWJwYWNrX3JlcXVpcmVfXyA9IHt9O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYn
2BhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvdHlwZS1idWlsdGlucyAqL1xudmFyIGcgPVxuICAodHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbFRoaXMpIHx8XG4gICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZikgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwpIHx8XG4gIHt9XG5cbnZhciBzdXBwb3J0ID0ge1xuICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIGcsXG4gIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBnICYmICdpdGVyYXRvcicgaW4gU3ltYm9sLFxuICBibG9iOlxuICAgICdGaWxlUmVhZGVyJyBpbiBnICYmXG4gICAgJ0Jsb2InIGluIGcgJiZcbiAgICAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICBuZXcgQmxvYigpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pKCksXG4gIGZvcm1EYXRhOiAnRm9ybURhdGEnIGluIGcsXG4gIGFycmF5QnVmZmVyOiAnQXJyYXlCdWZmZXInIGluIGdcbn1cblxuZnVuY3Rpb24gaXNEYXRhVmlldyhvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBEYXRhVmlldy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihvYmopXG59XG5cbmlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gIHZhciB2aWV3Q2xhc3NlcyA9IFtcbiAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDY0QXJyYXldJ1xuICBdXG5cbiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgfHxcbiAgICBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICBuYW1lID0gU3RyaW5nKG5hbWUpXG4gIH1cbiAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QobmFtZSkgfHwgbmFtZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogXCInICsgbmFtZSArICdcIicpXG4gIH1cbiAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuZnVuY3Rpb24gaXRlcmF0b3JGb3IoaXRlbXMpIHtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICB0aGlzLm1hcCA9IHt9XG5cbiAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICBpZiAoaGVhZGVyLmxlbmd0aCAhPSAyKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0hlYWRlcnMgY29uc3RydWN0b3I6IGV4cGVjdGVkIG5hbWUvdmFsdWUgcGFpciB0byBiZSBsZW5ndGggMiwgZm91bmQnICsgaGVhZGVyLmxlbmd0aClcbiAgICAgIH1cbiAgICAgIHRoaXMuYXBwZW5kKGhlYWRlclswXSwgaGVhZGVyWzFdKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoaGVhZGVycykge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgaGVhZGVyc1tuYW1lXSlcbiAgICB9LCB0aGlzKVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIG5hbWUgPSBub3JtYWxpem
2VOYW1lKG5hbWUpXG4gIHZhbHVlID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG4gIHZhciBvbGRWYWx1ZSA9IHRoaXMubWFwW25hbWVdXG4gIHRoaXMubWFwW25hbWVdID0gb2xkVmFsdWUgPyBvbGRWYWx1ZSArICcsICcgKyB2YWx1ZSA6IHZhbHVlXG59XG5cbkhlYWRlcnMucHJvdG90eXBlWydkZWxldGUnXSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgZGVsZXRlIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgcmV0dXJuIHRoaXMuaGFzKG5hbWUpID8gdGhpcy5tYXBbbmFtZV0gOiBudWxsXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihjYWxsYmFjaywgdGhpc0FyZykge1xuICBmb3IgKHZhciBuYW1lIGluIHRoaXMubWFwKSB7XG4gICAgaWYgKHRoaXMubWFwLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHRoaXMubWFwW25hbWVdLCBuYW1lLCB0aGlzKVxuICAgIH1cbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgIGl0ZW1zLnB1c2gobmFtZSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaXRlbXMucHVzaCh2YWx1ZSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgIGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5pZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICBIZWFkZXJzLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gSGVhZGVycy5wcm90b3R5cGUuZW50cmllc1xufVxuXG5mdW5jdGlvbiBjb25zdW1lZChib2R5KSB7XG4gIGlmIChib2R5Ll9ub0JvZHkpIHJldHVyblxuICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgfVxuICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZS
2hmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpXG4gICAgfVxuICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHZhciBtYXRjaCA9IC9jaGFyc2V0PShbQS1aYS16MC05Xy1dKykvLmV4ZWMoYmxvYi50eXBlKVxuICB2YXIgZW5jb2RpbmcgPSBtYXRjaCA/IG1hdGNoWzFdIDogJ3V0Zi04J1xuICByZWFkZXIucmVhZEFzVGV4dChibG9iLCBlbmNvZGluZylcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEFycmF5QnVmZmVyQXNUZXh0KGJ1Zikge1xuICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZilcbiAgdmFyIGNoYXJzID0gbmV3IEFycmF5KHZpZXcubGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7IGkrKykge1xuICAgIGNoYXJzW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZSh2aWV3W2ldKVxuICB9XG4gIHJldHVybiBjaGFycy5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBidWZmZXJDbG9uZShidWYpIHtcbiAgaWYgKGJ1Zi5zbGljZSkge1xuICAgIHJldHVybiBidWYuc2xpY2UoMClcbiAgfSBlbHNlIHtcbiAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zi5ieXRlTGVuZ3RoKVxuICAgIHZpZXcuc2V0KG5ldyBVaW50OEFycmF5KGJ1ZikpXG4gICAgcmV0dXJuIHZpZXcuYnVmZmVyXG4gIH1cbn1cblxuZnVuY3Rpb24gQm9keSgpIHtcbiAgdGhpcy5ib2R5VXNlZCA9IGZhbHNlXG5cbiAgdGhpcy5faW5pdEJvZHkgPSBmdW5jdGlvbihib2R5KSB7XG4gICAgLypcbiAgICAgIGZldGNoLW1vY2sgd3JhcHMgdGhlIFJlc3BvbnNlIG9iamVjdCBpbiBhbiBFUzYgUHJveHkgdG9cbiAgICAgIHByb3ZpZGUgdXNlZnVsIHRlc3QgaGFybmVzcyBmZWF0dXJlcyBzdWNoIGFzIGZsdXNoLiBIb3dldmVyLCBvblxuICAgICAgRVM1IGJyb3dzZXJzIHdpdGhvdXQgZmV0Y2ggb3IgUHJveHkgc3VwcG9ydCBwb2xseWZpbGxzIG11c3QgYmUgdXNlZDtcbiAgICAgIHRoZSBwcm94eS1wb2xseWZpbGwgaXMgdW5hYmxlIHRvIHByb3h5IGFuIGF0dHJpYnV0ZSB1bmxlc3MgaXQgZXhpc3RzXG4gICAgICBvbiB0aGUgb2JqZWN0IGJlZm9yZSB0aGUgUHJveHkgaXMgY3JlYXRlZC4gVGhpcyBjaGFuZ2UgZW5zdXJlc1xuICAgICAgUmVzcG9uc2UuYm9keVVzZWQgZXhpc3RzIG9uIHRoZSBpbnN0YW5jZSwgd2hpbGUgbWFpbnRhaW5pbmcgdGhlXG4gICAgICBzZW1hbnRpYyBvZiBzZXR0aW5nIFJlcXVlc3QuYm9keVVzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIGJlZm9yZVxuICAgICAgX2luaXRCb2R5IGlzIGNhbGxlZC5cbiAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWFzc2lnblxuICAgIHRoaXMuYm9keVVzZWQgPSB0aGlzLmJvZHlVc2VkXG4gICAgdGhpcy5fYm9keUluaXQgPSBib2R5XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICB0aGlzLl9ub0JvZHkgPSB0cnVlO1xuICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QmxvYiA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5ibG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkuYnVmZmVyKVxuICAgICAgLy8gSUUgMTAtMTEgY2FuJ3QgaGFuZGxlIGEgRGF0YVZpZXcgYm9keS5cbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldy
2hib2R5KSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KVxuICAgIH1cblxuICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHZhciBpc0NvbnN1bWVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChpc0NvbnN1bWVkKSB7XG4gICAgICAgIHJldHVybiBpc0NvbnN1bWVkXG4gICAgICB9IGVsc2UgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ1ZmZlci5zbGljZShcbiAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0LFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQgKyB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZUxlbmd0aFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBhcyBBcnJheUJ1ZmZlcicpXG4gICAgfVxuICB9XG5cbiAgdGhpcy50ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3RlZFxuICAgIH1cblxuICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlYWRBcnJheUJ1ZmZlckFzVGV4dCh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICB0aGlzLmZvcm1EYXRhID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihkZWNvZGUpXG4gICAgfVxuICB9XG5cbiAgdGhpcy5qc29uID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhUVFAgbWV0aG9kcyB3aG9zZSBjYXBpdGFsaXphdGlvbiBzaG91bGQgYmUgbm9ybWFsaXplZFxudmFyIG1ldGhvZHMgPSBbJ0NPTk5FQ1QnLCAnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnUEFUQ0gnLCAnUE9TVCcsICdQVVQnLCAnVFJBQ0UnXVxuXG5mdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xID8gdXBjYXNlZCA6IG1ldGhvZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVxdWVzdChpbnB1dCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVxdWVzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keVxuXG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG4gICAgfVxuICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kXG4gICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsXG4gICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICBib2R5ID0gaW5wdXQuX2JvZHlJbml0XG4gICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcbiAgICB9XG4gI
2H0gZWxzZSB7XG4gICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpXG4gIH1cblxuICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdzYW1lLW9yaWdpbidcbiAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB9XG4gIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbCB8fCAoZnVuY3Rpb24gKCkge1xuICAgIGlmICgnQWJvcnRDb250cm9sbGVyJyBpbiBnKSB7XG4gICAgICB2YXIgY3RybCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIHJldHVybiBjdHJsLnNpZ25hbDtcbiAgICB9XG4gIH0oKSk7XG4gIHRoaXMucmVmZXJyZXIgPSBudWxsXG5cbiAgaWYgKCh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykgJiYgYm9keSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JvZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBIRUFEIHJlcXVlc3RzJylcbiAgfVxuICB0aGlzLl9pbml0Qm9keShib2R5KVxuXG4gIGlmICh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykge1xuICAgIGlmIChvcHRpb25zLmNhY2hlID09PSAnbm8tc3RvcmUnIHx8IG9wdGlvbnMuY2FjaGUgPT09ICduby1jYWNoZScpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgYSAnXycgcGFyYW1ldGVyIGluIHRoZSBxdWVyeSBzdHJpbmdcbiAgICAgIHZhciByZVBhcmFtU2VhcmNoID0gLyhbPyZdKV89W14mXSovXG4gICAgICBpZiAocmVQYXJhbVNlYXJjaC50ZXN0KHRoaXMudXJsKSkge1xuICAgICAgICAvLyBJZiBpdCBhbHJlYWR5IGV4aXN0cyB0aGVuIHNldCB0aGUgdmFsdWUgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHRoaXMudXJsID0gdGhpcy51cmwucmVwbGFjZShyZVBhcmFtU2VhcmNoLCAnJDFfPScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSBhZGQgYSBuZXcgJ18nIHBhcmFtZXRlciB0byB0aGUgZW5kIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB2Y
2XIgcmVRdWVyeVN0cmluZyA9IC9cXD8vXG4gICAgICAgIHRoaXMudXJsICs9IChyZVF1ZXJ5U3RyaW5nLnRlc3QodGhpcy51cmwpID8gJyYnIDogJz8nKSArICdfPScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5SZXF1ZXN0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcywge2JvZHk6IHRoaXMuX2JvZHlJbml0fSlcbn1cblxuZnVuY3Rpb24gZGVjb2RlKGJvZHkpIHtcbiAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKVxuICBib2R5XG4gICAgLnRyaW0oKVxuICAgIC5zcGxpdCgnJicpXG4gICAgLmZvckVhY2goZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICAgIGlmIChieXRlcykge1xuICAgICAgICB2YXIgc3BsaXQgPSBieXRlcy5zcGxpdCgnPScpXG4gICAgICAgIHZhciBuYW1lID0gc3BsaXQuc2hpZnQoKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICB2YXIgdmFsdWUgPSBzcGxpdC5qb2luKCc9JykucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgZm9ybS5hcHBlbmQoZGVjb2RlVVJJQ29tcG9uZW50KG5hbWUpLCBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBmb3JtXG59XG5cbmZ1bmN0aW9uIHBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKSB7XG4gIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKVxuICAvLyBSZXBsYWNlIGluc3RhbmNlcyBvZiBcXHJcXG4gYW5kIFxcbiBmb2xsb3dlZCBieSBhdCBsZWFzdCBvbmUgc3BhY2Ugb3IgaG9yaXpvbnRhbCB0YWIgd2l0aCBhIHNwYWNlXG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4yXG4gIHZhciBwcmVQcm9jZXNzZWRIZWFkZXJzID0gcmF3SGVhZGVycy5yZXBsYWNlKC9cXHI/XFxuW1xcdCBdKy9nLCAnICcpXG4gIC8vIEF2b2lkaW5nIHNwbGl0IHZpYSByZWdleCB0byB3b3JrIGFyb3VuZCBhIGNvbW1vbiBJRTExIGJ1ZyB3aXRoIHRoZSBjb3JlLWpzIDMuNi4wIHJlZ2V4IHBvbHlmaWxsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9naXRodWIvZmV0Y2gvaXNzdWVzLzc0OFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNzUxXG4gIHByZVByb2Nlc3NlZEhlYWRlcnNcbiAgICAuc3BsaXQoJ1xccicpXG4gICAgLm1hcChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIHJldHVybiBoZWFkZXIuaW5kZXhPZignXFxuJykgPT09IDAgPyBoZWFkZXIuc3Vic3RyKDEsIGhlYWRlci5sZW5ndGgpIDogaGVhZGVyXG4gICAgfSlcbiAgICAuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgICB2Y
2XIgcGFydHMgPSBsaW5lLnNwbGl0KCc6JylcbiAgICAgIHZhciBrZXkgPSBwYXJ0cy5zaGlmdCgpLnRyaW0oKVxuICAgICAgaWYgKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBwYXJ0cy5qb2luKCc6JykudHJpbSgpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaGVhZGVycy5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1Jlc3BvbnNlICcgKyBlcnJvci5tZXNzYWdlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGhlYWRlcnNcbn1cblxuQm9keS5jYWxsKFJlcXVlc3QucHJvdG90eXBlKVxuXG5leHBvcnQgZnVuY3Rpb24gUmVzcG9uc2UoYm9keUluaXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlc3BvbnNlKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge31cbiAgfVxuXG4gIHRoaXMudHlwZSA9ICdkZWZhdWx0J1xuICB0aGlzLnN0YXR1cyA9IG9wdGlvbnMuc3RhdHVzID09PSB1bmRlZmluZWQgPyAyMDAgOiBvcHRpb25zLnN0YXR1c1xuICBpZiAodGhpcy5zdGF0dXMgPCAyMDAgfHwgdGhpcy5zdGF0dXMgPiA1OTkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ1Jlc3BvbnNlJzogVGhlIHN0YXR1cyBwcm92aWRlZCAoMCkgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgWzIwMCwgNTk5XS5cIilcbiAgfVxuICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0gMjAwICYmIHRoaXMuc3RhdHVzIDwgMzAwXG4gIHRoaXMuc3RhdHVzVGV4dCA9IG9wdGlvbnMuc3RhdHVzVGV4dCA9PT0gdW5kZWZpbmVkID8gJycgOiAnJyArIG9wdGlvbnMuc3RhdHVzVGV4dFxuICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIHRoaXMudXJsID0gb3B0aW9ucy51cmwgfHwgJydcbiAgdGhpcy5faW5pdEJvZHkoYm9keUluaXQpXG59XG5cbkJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5cblJlc3BvbnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2JvZHlJbml0LCB7XG4gICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG4gICAgaGVhZGVyczogbmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICB1cmw6IHRoaXMudXJsXG4gIH0pXG59XG5cblJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiAyMDAsIHN0YXR1c1RleHQ6ICcnfSlcbiAgcmVzcG9uc2Uub2sgPSBmYWxzZVxuICByZXNwb25zZS5zdGF0dXMgPSAwXG4gIHJlc3BvbnNlLnR5cGUgPSAnZXJyb3InXG4gIHJldHVybiByZXNwb25zZVxufVxuXG52YXIgcmVkaXJlY3RTdGF0dXNlcyA9IFszMDEsIDMwMiwgMzAzLCAzMDcsIDMwOF1cblxuUmVzcG9uc2UucmVkaXJlY3QgPSBmdW5jdGlvbih1cmwsIHN0YXR1cykge1xuICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgc3RhdHVzIGNvZGUnKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiBzdGF0dXMsIGhlYWRlcnM6IHtsb2NhdGlvbjogdXJsfX0pXG59XG5cbmV4cG9ydCB2YXIgRE9NRXhjZXB0aW9uID0gZy5ET01FeGNlcHRpb25cbnRyeSB7XG4gIG5ldyBET01FeGNlcHRpb24oKVxufSBjYXRjaCAoZXJyKSB7XG4gIERPTUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG5hbWUpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpXG4gICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrXG4gIH1cbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRE9NRXhjZXB0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaChpbnB1dCwgaW5pdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCAmJiByZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgIH1cblxuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuXG4gICAgZnVuY3Rpb24gYWJvcnRYaHIoKSB7XG4gICAgICB4aHIuYWJvcnQoKVxuICAgIH1cblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBzdGF0dXNUZXh0OiB4aHIuc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcGFyc2VIZWFkZXJzKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB8fCAnJylcbiAgICAgIH1cbiAgICAgIC8vIFRoaXMgY2hlY2sgaWYgc3BlY2lmaWNhbGx5IGZvciB3aGVuIGEgdXNlciBmZXRjaGVzIGEgZmlsZSBsb2NhbGx5IGZyb20gdGhlIGZpbGUgc3lzdGVtXG4gICAgICAvLyBPbmx5IGlmIHRoZSBzdGF0dXMgaXMgb3V0IG9mIGEgbm9ybWFsIHJhbmdlXG4gICAgICBpZiAocmVxdWVzdC51cmwuaW5kZXhPZignZmlsZTovLycpID09PSAwICYmICh4aHIuc3RhdHVzIDwgMjAwIHx8IHhoci5zdGF0dXMgPiA1OTkpKSB7XG4gICAgICAgIG9wdGlvbnMuc3RhdHVzID0gMjAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucy5zdGF0dXMgPSB4aHIuc3RhdHVzO1xuICAgICAgfVxuICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgI
2HJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCB0aW1lZCBvdXQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZml4VXJsKHVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gJycgJiYgZy5sb2NhdGlvbi5ocmVmID8gZy5sb2NhdGlvbi5ocmVmIDogdXJsXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIub3BlbihyZXF1ZXN0Lm1ldGhvZCwgZml4VXJsKHJlcXVlc3QudXJsKSwgdHJ1ZSlcblxuICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZScpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnb21pdCcpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIpIHtcbiAgICAgIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgc3VwcG9ydC5hcnJheUJ1ZmZlclxuICAgICAgKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluaXQgJiYgdHlwZW9mIGluaXQuaGVhZGVycyA9PT0gJ29iamVjdCcgJiYgIShpbml0LmhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzIHx8IChnLkhlYWRlcnMgJiYgaW5pdC5oZWFkZXJzIGluc3RhbmNlb2YgZy5IZWFkZXJzKSkpIHtcbiAgICAgIHZhciBuYW1lcyA9IFtdO1xuICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaW5pdC5oZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgbmFtZXMucHVzaChub3JtYWxpemVOYW1lKG5hbWUpKVxuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCBub3JtYWxpemVWYWx1ZShpbml0LmhlYWRlcnNbbmFtZV0pKVxuICAgICAgfSlcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIGlmIChuYW1lcy5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsKSB7XG4gICAgICByZXF1ZXN0LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuXG4gICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIERPTkUgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7XG4gICAgICAgICAgcmVxdWVzdC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5zZW5kKHR5cGVvZiByZXF1ZXN0Ll9ib2R5SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogcmVxdWVzdC5fYm9keUluaXQpXG4gIH0pXG59XG5cbmZldGNoLnBvbHlmaWxsID0gdHJ1ZVxuXG5pZiAoIWcuZmV0Y2gpIHtcbiAgZy5mZXRjaCA9IGZldGNoXG4gIGcuSGVhZGVycyA9IEhlYWRlcnNcbiAgZy5SZXF1ZXN0ID0gUmVxdWVzdFxuICBnLlJlc3BvbnNlID0gUmVzcG9uc2Vcbn1cbiIsImRlY2xhcmUgY29uc3QgJDogSlF1ZXJ5U3RhdGljO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFnZVR5cGUoKTogJ2NhdGVnb3J5JyB8ICdwcm9kdWN0JyB8ICdwbGF0Zm9ybScgfCAnb3RoZXInIHtcblx0aWYgKGlzQ2F0ZWdvcnlQYWdlKCkpIHtcblx0XHRyZXR1cm4gJ2NhdGVnb3J5Jztcblx0fSBlbHNlIGlmIChpc1Byb2R1Y3RQYWdlKCkpIHtcblx0XHRyZXR1cm4gJ3Byb2R1Y3QnO1xuXHR9IGVsc2UgaWYgKGlzUGxhdGZvcm1QYWdlKCkpIHtcblx0XHRyZXR1cm4gJ3BsYXRmb3JtJztcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gJ290aGVyJztcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNDYXRlZ29yeVBhZ2UoKTogYm9vbGVhbiB7XG5cdHJldHVybiAkKCdib2R5JykuaGFzQ2xhc3MoJ2NhdGVnb3J5LXBhZ2UnKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvZHVjdFBhZ2UoKTogYm9vbGVhbiB7XG5cdHJldHVybiAkKCdib2R5JykuaGFzQ2xhc3MoJ3Byb2R1Y3RwYWdlJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1BsYXRmb3JtUGFnZSgpOiBib29sZWFuIHtcblx0cmV0dXJuICQoJ2JvZHknKS5oYXNDbGFzcygncGxhdGZvcm0nKTtcbn1cblxuZnVuY3Rpb24gZ2V0Rmlyc3RWaXNpYmxlSGVhZGVySGVpZ2h0KCk6IG51bWJlciB7XG5cdGNvbnN0IGNhbmRpZGF0ZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCcuaGVhZGVyLWNvbnRhaW5lciwgLnNpbXBsZS1oZWFkZXItY29udGFpbmVyJykpO1xuXHRmb3IgKGNvbnN0IGVsZW1lbnQgb2YgY2FuZGlkYXRlcykge1xuXHRcdC8vIFJvdWdoIGVxdWl2YWxlbnQgdG8galF1ZXJ5IDp2aXNpYmxlXG5cdFx0aWYgKGVsZW1lbnQub2Zmc2V0UGFyZW50ID09PSBudWxsKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cdFx0Y29uc3QgcmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cdFx0aWYgKHJlY3QuaGVpZ2h0ID4gMCkge1xuXHRcdFx0cmV0dXJuIHJlY3QuaGVpZ2h0O1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gMDtcbn1cblxuZnVuY3Rpb24gZXNjYXBlQ3NzSWQoaWQ6IHN0cmluZyk6IHN0cmluZyB7XG5cdGlmICgod2luZG93IGFzIHVua25vd24gYXMgeyBDU1M/OiB7IGVzY2FwZT86ICh2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmcgfSB9KS5DU1M/LmVzY2FwZSkge1xuXHRcdHJldHVybiAod2luZG93IGFzIHVua25vd24gYXMgeyBDU1M6IHsgZXNjYXBlOiAodmFsdWU6IHN0cmluZykgPT4gc3RyaW5nIH0gfSkuQ1NTLmVzY2FwZShpZCk7XG5cdH1cblx0cmV0dXJuIGlkLnJlcGxhY2UoLyhbICM7PyUmLC4rKn4nOlwiIV4kW1xcXSgpPT58XFwvQF0pL2csICdcXFxcJDEnKTtcbn1cblxuZnVuY3Rpb24gZm9jdXNUYXJnZXRBZnRlclNjcm9sbCh0YXJnZXQ6IEhUTUxFbGVtZW50KTogdm9pZCB7XG5cdGNvbnN0IGhhc1RhYkluZGV4ID0gdGFyZ2V0Lmhhc0F0dHJpYnV0ZSgndGFiaW5kZXgnKTtcblx0Y29uc3QgcHJldmlvdXNUYWJJbmRleCA9IGh
2hc1RhYkluZGV4ID8gdGFyZ2V0LmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSA6IG51bGw7XG5cblx0aWYgKCFoYXNUYWJJbmRleCkge1xuXHRcdHRhcmdldC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG5cdH1cblx0dGFyZ2V0LmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTtcblxuXHRpZiAoIWhhc1RhYkluZGV4ICYmIHByZXZpb3VzVGFiSW5kZXggPT09IG51bGwpIHtcblx0XHR0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uIGhhbmRsZUJsdXIoKTogdm9pZCB7XG5cdFx0XHR0YXJnZXQucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuXHRcdFx0dGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCBoYW5kbGVCbHVyKTtcblx0XHR9KTtcblx0fVxufVxuXG5mdW5jdGlvbiByZXZlYWxUYXJnZXRJblRhYldpZGdldHModGFyZ2V0OiBIVE1MRWxlbWVudCk6IHZvaWQge1xuXHRsZXQgY3VycmVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gdGFyZ2V0O1xuXG5cdHdoaWxlIChjdXJyZW50KSB7XG5cdFx0Y29uc3QgcGFuZWwgPSBjdXJyZW50LmNsb3Nlc3QoJy50YWItd2lkZ2V0LXBhbmVsLCAudWktdGFicy1wYW5lbCwgW2lkXVt0YWJjb3VudF0nKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cdFx0aWYgKCFwYW5lbCB8fCAhcGFuZWwuaWQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCB3aWRnZXQgPSBwYW5lbC5jbG9zZXN0KCcud2lkZ2V0LndpZGdldC10YWJzLCAud2lkZ2V0LnN1cHBvcnQtcmVzb3VyY2VzJykgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXHRcdGlmICghd2lkZ2V0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKHBhbmVsLm9mZnNldFBhcmVudCAhPT0gbnVsbCAmJiBwYW5lbC5nZXRBdHRyaWJ1dGUoJ2FyaWEtaGlkZGVuJykgIT09ICd0cnVlJykge1xuXHRcdFx0Y3VycmVudCA9IHdpZGdldC5wYXJlbnRFbGVtZW50O1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Y29uc3QgbWF0Y2hpbmdIZWFkaW5nID0gKEFycmF5LmZyb20od2lkZ2V0LnF1ZXJ5U2VsZWN0b3JBbGwoJy50YWJfYWNjb3JkaW9uX2hlYWRpbmcnKSkgYXMgSFRNTEVsZW1lbnRbXSkuZmluZChcblx0XHRcdChoZWFkaW5nKSA9PiBoZWFkaW5nLmdldEF0dHJpYnV0ZSgncmVsJykgPT09IHBhbmVsLmlkXG5cdFx0KTtcblx0XHRpZiAoIW1hdGNoaW5nSGVhZGluZykge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdG1hdGNoaW5nSGVhZGluZy5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KCdjbGljaycsIHsgYnViYmxlczogdHJ1ZSwgY2FuY2VsYWJsZTogdHJ1ZSB9KSk7XG5cdFx0Y3VycmVudCA9IHdpZGdldC5wYXJlbnRFbGVtZW50O1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzY3JvbGxUb0FuY2hvckZyb21IYXNoKGhhc2g6IHN0cmluZywgdXBkYXRlSGlzdG9yeTogYm9vbGVhbik6IGJvb2xlYW4ge1xuXHRpZiAoIWhhc2ggfHwgaGFzaC5sZW5ndGggPCAyKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Y29uc3QgcmF3SWQgPSBoYXNoLnJlcGxhY2UoL14jLywgJycpO1xuXHRsZXQgdGFyZ2V0SWQgPSByYXdJZDtcblx0dHJ5IHtcblx0XHR0YXJnZXRJZCA9IGRlY29kZVVSSUNvbXBvbmVudChyYXdJZCk7XG5cdH0gY2F0Y2gge1xuXHRcdC8vIGtlZXAgcmF3XG5cdH1cblxuXHRsZXQgdGFyZ2V0OiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xuXHRjb25zdCBieUlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGFyZ2V0SWQpO1xuXHRpZiAoYnlJZCkge1xuXHRcdHRhcmdldCA9IGJ5SWQ7XG5cdH0gZWxzZSB7XG5cdFx0Y29uc3Qgc2FmZUlkID0gZXNjYXBlQ3NzSWQodGFyZ2V0SWQpO1xuXHRcdHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcjJyArIHNhZmVJZCk7XG5cdFx0aWYgKCF0YXJnZXQpIHtcblx0XHRcdHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCdbbmFtZT1cIicgKyB0YXJnZXRJZC5yZXBsYWNlKC9cIi9nLCAnXFxcXFwiJykgKyAnXCJdJyk7XG5cdFx0fVxuXHR9XG5cblx0aWYgKCF0YXJnZXQpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblxuXHRyZXZlYWxUYXJnZXRJblRhYldpZGdldHModGFyZ2V0KTtcblxuXHRpZiAodXBkYXRlSGlzdG9yeSkge1xuXHRcdGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCAnIycgKyBlbmNvZGVVUklDb21wb25lbnQocmF3SWQpKTtcblx0fVxuXG5cdGNvbnN0IG9mZnNldCA9IGdldEZpcnN0VmlzaWJsZUhlYWRlckhlaWdodCgpO1xuXHRjb25zdCByZWN0ID0gdGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXHRjb25zdCB0YXJnZXRUb3AgPSBNYXRoLm1heCgwLCByZWN0LnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gb2Zmc2V0KTtcblxuXHQkKCdodG1sLCBib2R5Jylcblx0XHQuc3RvcCh0cnVlKVxuXHRcdC5hbmltYXRlKHsgc2Nyb2xsVG9wOiB0YXJnZXRUb3AgfSwgMzAwLCBmdW5jdGlvbiAoKTogdm9pZCB7XG5cdFx0XHRmb2N1c1RhcmdldEFmdGVyU2Nyb2xsKHRhcmdldCk7XG5cdFx0fSk7XG5cblx0cmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzTW9kaWZpZWRDbGljayhldmVudDogTW91c2VFdmVudCk6IGJvb2xlYW4ge1xuXHRyZXR1cm4gZXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCBldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQubWV0YUtleSB8fCBldmVudC5jdHJsS2V5IHx8IGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmFsdEtleTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlQW5jaG9yQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcblx0aWYgKGlzTW9kaWZpZWRDbGljayhldmVudCkpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgaW5zdGFuY2VvZiBFbGVtZW50ID8gZXZlbnQudGFyZ2V0IDogbnVsbDtcblx0Y29uc3QgbGluayA9IHRhcmdldD8uY2xvc2VzdChcImFbaHJlZl49JyMnXVwiKSBhcyBIVE1MQW5jaG9yRWxlbWVudCB8IG51bGw7XG5cdGlmICghbGluaykge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IGhyZWYgPSBsaW5rLmdldEF0dHJpYnV0ZSgnaHJlZicpO1xuXHRpZiAoIWhyZWYgfHwgaHJlZiA9PT0gJyMnKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0aWYgKHNjcm9sbFRvQW5jaG9yRnJvbUhhc2goaHJlZiwgdHJ1ZSkpIHtcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0QW5jaG9yU2Nyb2xsKCk6IHZvaWQge1xuXHRpZiAod2luZG93Ll9fYW5jaG9yU2Nyb2xsSW5pdGlhbGl6ZWQpIHtcblx0XHRyZXR1cm47XG5cdH1cblx0d2luZG93Ll9fYW5jaG9yU2Nyb2xsSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG5cdGNvbnN0IGluaXRpYWxIYXNoID0gd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cdGlmIChpbml0aWFsSGFzaCkge1xuXHRcdGlmICgnc2Nyb2xsUmVzdG9yYXRpb24nIGluIGhpc3RvcnkpIHtcblx0XHRcdGhpc3Rvcnkuc2Nyb2xsUmVzdG9yYXRpb24gPSAnbWFudWFsJztcblx0XHR9XG5cdFx0d2luZG93LnNjcm9sbFRvKDAsIDApO1xuXG5cdFx0Y29uc3Qgc2Nyb2xsSW5pdGlhbEhhc2ggPSBmdW5jdGlvbiAoKTogdm9pZCB7XG5cdFx0XHRzY3JvbGxUb0FuY2hvckZyb21IYXNoKGluaXRpYWxIYXNoLCBmYWxzZSk7XG5cdFx0XHR3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKTogdm9pZCB7XG5cdFx0XHRcdHNjcm9sbFRvQW5jaG9yRnJvbUhhc2goaW5pdGlhbEhhc2gsIGZhbHNlKTtcblx0XHRcdH0sIDUwKTtcblx0XHRcdHdpbmRvdy5zZXRUaW
21lb3V0KGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0c2Nyb2xsVG9BbmNob3JGcm9tSGFzaChpbml0aWFsSGFzaCwgZmFsc2UpO1xuXHRcdFx0fSwgMzAwKTtcblx0XHRcdHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRcdFx0c2Nyb2xsVG9BbmNob3JGcm9tSGFzaChpbml0aWFsSGFzaCwgZmFsc2UpO1xuXHRcdFx0fSwgODAwKTtcblx0XHR9O1xuXG5cdFx0aWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHtcblx0XHRcdHNjcm9sbEluaXRpYWxIYXNoKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgc2Nyb2xsSW5pdGlhbEhhc2gsIHsgb25jZTogdHJ1ZSB9KTtcblx0XHR9XG5cdH1cblxuXHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignaGFzaGNoYW5nZScsIGZ1bmN0aW9uICgpOiB2b2lkIHtcblx0XHRzY3JvbGxUb0FuY2hvckZyb21IYXNoKHdpbmRvdy5sb2NhdGlvbi5oYXNoLCBmYWxzZSk7XG5cdH0pO1xuXG5cdChkb2N1bWVudC5ib2R5IHx8IGRvY3VtZW50KS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUFuY2hvckNsaWNrKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExpbmVDb3VudChlbGVtZW50OiBKUXVlcnk8SFRNTEVsZW1lbnQ+KTogbnVtYmVyIHtcblx0Y29uc3QgZWwgPSBlbGVtZW50WzBdO1xuXHRpZiAoIWVsKSB7XG5cdFx0cmV0dXJuIDA7XG5cdH1cblx0Y29uc3QgY29tcHV0ZWQgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCk7XG5cdGxldCBsaW5lSGVpZ2h0ID0gcGFyc2VGbG9hdChjb21wdXRlZC5saW5lSGVpZ2h0KTtcblx0aWYgKE51bWJlci5pc05hTihsaW5lSGVpZ2h0KSkge1xuXHRcdGxpbmVIZWlnaHQgPSBwYXJzZUZsb2F0KGNvbXB1dGVkLmZvbnRTaXplKSAqIDEuMjtcblx0fVxuXHRpZiAoIWxpbmVIZWlnaHQpIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXHRyZXR1cm4gTWF0aC5yb3VuZChlbC5zY3JvbGxIZWlnaHQgLyBsaW5lSGVpZ2h0KTtcbn1cbiIsImltcG9ydCB7IGluaXRBbmNob3JTY3JvbGwsIHNjcm9sbFRvQW5jaG9yRnJvbUhhc2ggfSBmcm9tIFwiLi4vdXRpbC9kb20uanNcIjtcblxuLy8gTGVnYWN5IEpTIGRlbGVnYXRlcyBoYXNoIHNjcm9sbGluZyB0aHJvdWdoIHRoaXMgd2luZG93IGhvb2suXG53aW5kb3cuc2Nyb2xsVG9BbmNob3JGcm9tSGFzaFRzID0gc2Nyb2xsVG9BbmNob3JGcm9tSGFzaDtcblxuaWYoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gXCJsb2FkaW5nXCIpe1xuXHRkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLCBpbml0QW5jaG9yU2Nyb2xsLCB7IG9uY2U6IHRydWUgfSk7XG59ZWxzZSBpZihkb2N1bWVudC5ib2R5KXtcblx0aW5pdEFuY2hvclNjcm9sbCgpO1xufVxuXG4iLCIvLyBMb2FkIGV2ZXJ5IHNjcmlwdCB0aGF0IG5lZWRzIHRvIGJlIGxvYWRlZCBpbiB0aGUgaGVhZC5waHAgZmlsZVxuaW1wb3J0IHsgdG9hc3QgfSBmcm9tIFwiLi4vdXRpbC91aS90b2FzdC5qc1wiO1xuaW1wb3J0IFwiLi9pbmRleFwiO1xuXG4vLyBFeHBvc2UgdG9hc3QgZ2xvYmFsbHkgZm9yIGxlZ2FjeSBKUyBjb2RlXG53aW5kb3cudG9hc3QgPSB0b2FzdDtcbiIsImltcG9ydCB7IGNsb3NlQmxhY2tvdXQsIGNyZWF0ZUJsYWNrb3V0IH0gZnJvbSBcIi4vb3ZlcmxheS5qc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gdG9hc3QodGV4dDogc3RyaW5nLCB0aW1lOiBudW1iZXIgPSAzMDAwKTogdm9pZCB7XG5cdGNyZWF0ZUJsYWNrb3V0KCk7XG5cdCQoJyNibGFja291dCcpLmFkZENsYXNzKCdyZW1vdmFibGUnKTtcblx0JChcIiNibGFja291dF90ZXh0XCIpLmh0bWwodGV4dCk7XG5cdCQoXCIjYmxhY2tvdXRfdGV4dF9jb250YWluZXJcIikuc2hvdygpO1xuXG5cdCQoJyNibGFja291dCcpLmZhZGVJbignc2xvdycsICgpID0+IHtcblx0XHR3aW5kb3cuYmxhY2tvdXRUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0JCgnI2JsYWNrb3V0JykuZmFkZU91dCgnc2xvdycsICgpID0+IHtcblx0XHRcdFx0Y2xvc2VCbGFja291dCgpO1xuXHRcdFx0fSk7XG5cdFx0fSwgdGltZSk7XG5cdH0pO1xuXG5cdHdpbmRvdy5jd1RvYXN0ID0gdHJ1ZTtcbn1cbiIsImRlY2xhcmUgY29uc3QgJDogSlF1ZXJ5U3RhdGljO1xuXG50eXBlIEZhZGVTcGVlZCA9IG51bWJlciB8IFwic2xvd1wiIHwgXCJmYXN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCbGFja291dCgpOiB2b2lkIHtcblx0aWYoISQoXCIjYmxhY2tvdXRcIikubGVuZ3RoKXtcblx0XHQkKFwiYm9keVwiKS5hcHBlbmQoYFxuXHRcdDxkaXYgaWQ9XCJibGFja291dFwiIHN0eWxlPVwicG9zaXRpb246Zml4ZWQ7IGluc2V0OjA7IGRpc3BsYXk6bm9uZTsgYmFja2dyb3VuZDpyZ2JhKDAsIDAsIDAsIDAuNik7IHotaW5kZXg6OTk5OyBjb2xvcjojZmZmXCI+XG5cdFx0XHQ8ZGl2IGlkPVwiYmxhY2tvdXRfdGV4dF9jb250YWluZXJcIiBzdHlsZT1cInBvc2l0aW9uOiBhYnNvbHV0ZTsgaW5zZXQ6MzUlIDAgMCAwOyBkaXNwbGF5OiBub25lO1wiPlxuXHRcdFx0XHQ8ZGl2IGlkPVwiYmxhY2tvdXRfdGV4dFwiIHN0eWxlPVwiZm9udC1zaXplOiAxLjVlbTsgdGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiAzMHB4IDUlOyBiYWNrZ3JvdW5kOiMwMDA7IG1heC13aWR0aDogOTAwcHg7IG1hcmdpbjogMCBhdXRvO1wiPlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PmApO1xuXHR9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbG9zZUJsYWNrb3V0KCk6IHZvaWQge1xuXHR3aW5kb3cuY3dUb2FzdCA9IGZhbHNlO1xuXHRjbGVhclRpbWVvdXQod2luZG93LmJsYWNrb3V0VGltZW91dCk7XG5cdCQoXCIjYmxhY2tvdXRcIikuc3RvcCgpLmhpZGUoKS5yZW1vdmVDbGFzcyhcInJlbW92YWJsZVwiKTtcblx0JChcIiNibGFja291dF90ZXh0XCIpLmh0bWwoXCJcIik7XG5cdCQoXCIjYmxhY2tvdXRfdGV4dF9jb250YWluZXJcIikuaGlkZSgpLnJlbW92ZUNsYXNzKFwiYWN0aXZpdHlcIikuY3NzKFwidG9wXCIsIFwiMzUlXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxhY2tvdXRBY3Rpdml0eShzaG93OiBib29sZWFuID0gdHJ1ZSwgdGV4dDogc3RyaW5nID0gXCJcIiwgYW5pbWF0aW9uU3BlZWQ6IEZhZGVTcGVlZCA9IFwic2xvd1wiKTogUHJvbWlzZTx2b2lkPntcblx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0Y3JlYXRlQmxhY2tvdXQoKTtcblx0XHRpZihzaG93KXtcblx0XHRcdCQoXCIjYmxhY2tvdXRcIikuZmFkZUluKGFuaW1hdGlvblNwZWVkLCBmdW5jdGlvbigpOiB2b2lke1xuXHRcdFx0XHRpZih0ZXh0KXtcblx0XHRcdFx0XHQkKFwiI2JsYWNrb3V0X3RleHRfY29udGFpbmVyXCIpLmFkZENsYXNzKFwiYWN0aXZpdHlcIikuY3NzKFwidG9wXCIsIFwiNTAlXCIpO1xuXHRcdFx0XHRcdCQoXCIjYmxhY2tvdXRfdGV4dFwiKS5odG1sKHRleHQpO1xuXHRcdFx0XHRcdCQoXCIjYmxhY2tvdXRfdGV4dF9jb250YWluZXJcIikuc2hvdygpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdCgkKFwiI2JsYWNrb3V0XCIpIGFzIHVua25vd24gYXMgeyBhY3Rpdml0eTogKCkgPT4gdm9pZCB9KS5hY3Rpdml0eT8uKCk7XG5cdFx0XHRcdHJlc29sdmUoKTtcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdCgkKFwiI2JsYWNrb3V0XCIpIGFzIHVua25vd24gYXMgeyBhY3Rpdml0eTogKGVuYWJsZWQ/OiBib29sZWFuKSA9PiB2b2lkIH0pLmFjdGl2aXR5Py4oZmFsc2UpO1xuXHRcdGlmKCF3aW5kb3cuY3dUb2FzdCl7XG5cdFx0XHRjbG9zZUJsYWNrb3V0KCk7XG5cdFx0fVxuXHRcdFx0cmVzb2x2ZSgpO1xuXHRcdH0pO1xuXHR9XG4iXSwibmFtZXMiOlsiX193ZWJwYWNrX3JlcXVpcmVfXyIsImV4cG9ydHMiLCJkZWZpbml0aW9uIiwia2V5IiwibyIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsImciLCJnbG9iYWxUaGlzIiwidGhpcyIsIk
2Z1bmN0aW9uIiwiZSIsIndpbmRvdyIsIm9iaiIsInByb3AiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzZWxmIiwic3VwcG9ydCIsIlN5bWJvbCIsIkJsb2IiLCJ2aWV3Q2xhc3NlcyIsImlzQXJyYXlCdWZmZXJWaWV3IiwiQXJyYXlCdWZmZXIiLCJpc1ZpZXciLCJpbmRleE9mIiwidG9TdHJpbmciLCJub3JtYWxpemVOYW1lIiwibmFtZSIsIlN0cmluZyIsInRlc3QiLCJUeXBlRXJyb3IiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZVZhbHVlIiwidmFsdWUiLCJpdGVyYXRvckZvciIsIml0ZW1zIiwiaXRlcmF0b3IiLCJuZXh0Iiwic2hpZnQiLCJkb25lIiwidW5kZWZpbmVkIiwiSGVhZGVycyIsImhlYWRlcnMiLCJtYXAiLCJmb3JFYWNoIiwiYXBwZW5kIiwiQXJyYXkiLCJpc0FycmF5IiwiaGVhZGVyIiwibGVuZ3RoIiwiZ2V0T3duUHJvcGVydHlOYW1lcyIsImNvbnN1bWVkIiwiYm9keSIsIl9ub0JvZHkiLCJib2R5VXNlZCIsIlByb21pc2UiLCJyZWplY3QiLCJmaWxlUmVhZGVyUmVhZHkiLCJyZWFkZXIiLCJyZXNvbHZlIiwib25sb2FkIiwicmVzdWx0Iiwib25lcnJvciIsImVycm9yIiwicmVhZEJsb2JBc0FycmF5QnVmZmVyIiwiYmxvYiIsIkZpbGVSZWFkZXIiLCJwcm9taXNlIiwicmVhZEFzQXJyYXlCdWZmZXIiLCJidWZmZXJDbG9uZSIsImJ1ZiIsInNsaWNlIiwidmlldyIsIlVpbnQ4QXJyYXkiLCJieXRlTGVuZ3RoIiwic2V0IiwiYnVmZmVyIiwiQm9keSIsIl9pbml0Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsImlzUHJvdG90eXBlT2YiLCJfYm9keUJsb2IiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJVUkxTZWFyY2hQYXJhbXMiLCJEYXRhVmlldyIsIl9ib2R5QXJyYXlCdWZmZXIiLCJ0eXBlIiwicmVqZWN0ZWQiLCJFcnJvciIsImFycmF5QnVmZmVyIiwiYnl0ZU9mZnNldCIsInRoZW4iLCJ0ZXh0IiwibWF0Y2giLCJlbmNvZGluZyIsImV4ZWMiLCJyZWFkQXNUZXh0IiwiY2hhcnMiLCJpIiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsInJlYWRBcnJheUJ1ZmZlckFzVGV4dCIsImZvcm1EYXRhIiwiZGVjb2RlIiwianNvbiIsIkpTT04iLCJwYXJzZSIsIm9sZFZhbHVlIiwiaGFzIiwiY2FsbGJhY2siLCJ0aGlzQXJnIiwia2V5cyIsInB1c2giLCJ2YWx1ZXMiLCJlbnRyaWVzIiwibWV0aG9kcyIsIlJlcXVlc3QiLCJpbnB1dCIsIm9wdGlvbnMiLCJtZXRob2QiLCJ1cGNhc2VkIiwidXJsIiwiY3JlZGVudGlhbHMiLCJtb2RlIiwic2lnbmFsIiwidG9VcHBlckNhc2UiLCJBYm9ydENvbnRyb2xsZXIiLCJyZWZlcnJlciIsImNhY2hlIiwicmVQYXJhbVNlYXJjaCIsInJlcGxhY2UiLCJEYXRlIiwiZ2V0VGltZSIsImZvcm0iLCJ0cmltIiwic3BsaXQiLCJieXRlcyIsImRlY29kZVVSSUNvbXBvbmVudCIsIlJlc3BvbnNlIiwiYm9keUluaXQiLCJzdGF0dXMiLCJSYW5nZUVycm9yIiwib2siLCJzdGF0dXNUZXh0IiwiY2xvbmUiLCJyZXNwb25zZSIsInJlZGlyZWN0U3RhdHVzZXMiLCJyZWRpcmVjdCIsImxvY2F0aW9uIiwiRE9NRXhjZXB0aW9uIiwiZXJyIiwibWVzc2FnZSIsInN0YWNrIiwiY3JlYXRlIiwiY29uc3RydWN0b3IiLCJmZXRjaCIsImluaXQiLCJyZXF1ZXN0IiwiYWJvcnRlZCIsInhociIsIlhNTEh0dHBSZXF1
2ZXN0IiwiYWJvcnRYaHIiLCJhYm9ydCIsInJhd0hlYWRlcnMiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJzdWJzdHIiLCJsaW5lIiwicGFydHMiLCJjb25zb2xlIiwid2FybiIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2VUZXh0Iiwic2V0VGltZW91dCIsIm9udGltZW91dCIsIm9uYWJvcnQiLCJvcGVuIiwiaHJlZiIsImZpeFVybCIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsIm5hbWVzIiwic2V0UmVxdWVzdEhlYWRlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJvbnJlYWR5c3RhdGVjaGFuZ2UiLCJyZWFkeVN0YXRlIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNlbmQiLCJwb2x5ZmlsbCIsInNjcm9sbFRvQW5jaG9yRnJvbUhhc2giLCJoYXNoIiwidXBkYXRlSGlzdG9yeSIsInJhd0lkIiwidGFyZ2V0SWQiLCJfYSIsImlkIiwidGFyZ2V0IiwiYnlJZCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJzYWZlSWQiLCJDU1MiLCJlc2NhcGUiLCJxdWVyeVNlbGVjdG9yIiwiY3VycmVudCIsInBhbmVsIiwiY2xvc2VzdCIsIndpZGdldCIsIm9mZnNldFBhcmVudCIsImdldEF0dHJpYnV0ZSIsInBhcmVudEVsZW1lbnQiLCJtYXRjaGluZ0hlYWRpbmciLCJmcm9tIiwicXVlcnlTZWxlY3RvckFsbCIsImZpbmQiLCJoZWFkaW5nIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJidWJibGVzIiwiY2FuY2VsYWJsZSIsInJldmVhbFRhcmdldEluVGFiV2lkZ2V0cyIsImhpc3RvcnkiLCJyZXBsYWNlU3RhdGUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJvZmZzZXQiLCJfaSIsImNhbmRpZGF0ZXNfMSIsImVsZW1lbnQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGVpZ2h0IiwiZ2V0Rmlyc3RWaXNpYmxlSGVhZGVySGVpZ2h0IiwidGFyZ2V0VG9wIiwiTWF0aCIsIm1heCIsInRvcCIsInNjcm9sbFkiLCIkIiwic3RvcCIsImFuaW1hdGUiLCJzY3JvbGxUb3AiLCJoYXNUYWJJbmRleCIsImhhc0F0dHJpYnV0ZSIsInByZXZpb3VzVGFiSW5kZXgiLCJzZXRBdHRyaWJ1dGUiLCJmb2N1cyIsInByZXZlbnRTY3JvbGwiLCJoYW5kbGVCbHVyIiwicmVtb3ZlQXR0cmlidXRlIiwiZm9jdXNUYXJnZXRBZnRlclNjcm9sbCIsImhhbmRsZUFuY2hvckNsaWNrIiwiZXZlbnQiLCJkZWZhdWx0UHJldmVudGVkIiwiYnV0dG9uIiwibWV0YUtleSIsImN0cmxLZXkiLCJzaGlmdEtleSIsImFsdEtleSIsImlzTW9
2kaWZpZWRDbGljayIsIkVsZW1lbnQiLCJsaW5rIiwicHJldmVudERlZmF1bHQiLCJpbml0QW5jaG9yU2Nyb2xsIiwiX19hbmNob3JTY3JvbGxJbml0aWFsaXplZCIsImluaXRpYWxIYXNoIiwic2Nyb2xsUmVzdG9yYXRpb24iLCJzY3JvbGxUbyIsInNjcm9sbEluaXRpYWxIYXNoIiwib25jZSIsInNjcm9sbFRvQW5jaG9yRnJvbUhhc2hUcyIsInRvYXN0IiwidGltZSIsImFkZENsYXNzIiwiaHRtbCIsInNob3ciLCJmYWRlSW4iLCJibGFja291dFRpbWVvdXQiLCJmYWRlT3V0IiwiY3dUb2FzdCIsImNsZWFyVGltZW91dCIsImhpZGUiLCJyZW1vdmVDbGFzcyIsImNzcyJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.