@datagrok/eda 1.1.8 → 1.1.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- var eda;(()=>{"use strict";var e,r,t={7632:(e,r,t)=>{var o=t(2786),a=t(2128);onmessage=async function(e){(0,o.P)().then((r=>{let t=e.data,o=(0,a.Gz)(r,t,"trainLSSVM","number");postMessage({callResult:o,args:t})}))}}},o={};function a(e){var r=o[e];if(void 0!==r)return r.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return t[e](n,n.exports,a),n.loaded=!0,n.exports}a.m=t,a.x=()=>{var e=a.O(void 0,[146],(()=>a(7632)));return a.O(e)},a.amdO={},e=[],a.O=(r,t,o,n)=>{if(!t){var i=1/0;for(l=0;l<e.length;l++){for(var[t,o,n]=e[l],s=!0,c=0;c<t.length;c++)(!1&n||i>=n)&&Object.keys(a.O).every((e=>a.O[e](t[c])))?t.splice(c--,1):(s=!1,n<i&&(i=n));if(s){e.splice(l--,1);var p=o();void 0!==p&&(r=p)}}return r}n=n||0;for(var l=e.length;l>0&&e[l-1][2]>n;l--)e[l]=e[l-1];e[l]=[t,o,n]},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>e+".js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var r=a.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!e;)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{a.b=self.location+"";var e={632:1};a.f.i=(r,t)=>{e[r]||importScripts(a.p+a.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[o,n,i]=r;for(var s in n)a.o(n,s)&&(a.m[s]=n[s]);for(i&&i(a);o.length;)e[o.pop()]=1;t(r)}})(),r=a.x,a.x=()=>a.e(146).then(r);var n=a.x();eda=n})();
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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bUJFLEtBQUtDLEtBQUtILEdBQzlEQSxFQUFtQkUsS0F2QkM1RSxJQUNuQixJQUFLaUIsRUFBVTZELEVBQWFDLEdBQVcvRSxFQUN2QyxJQUFJLElBQUlLLEtBQVl5RSxFQUNoQjFFLEVBQW9COEIsRUFBRTRDLEVBQWF6RSxLQUNyQ0QsRUFBb0JRLEVBQUVQLEdBQVl5RSxFQUFZekUsSUFJaEQsSUFERzBFLEdBQVNBLEVBQVEzRSxHQUNkYSxFQUFTTSxRQUNka0QsRUFBZ0J4RCxFQUFTK0QsT0FBUyxFQUNuQ0wsRUFBMkIzRSxFQUFLLEMsS1huQjdCUCxFQUFPVyxFQUFvQlMsRUFDL0JULEVBQW9CUyxFQUFJLElBQ2hCVCxFQUFvQm1DLEVBQUUsS0FBSzFDLEtBQUtKLEdZRHhDLElBQUlxQixFQUFzQlYsRUFBb0JTLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL2VkYS8uL3dhc20vd29ya2Vycy90cmFpbkxTU1ZNV29ya2VyLmpzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2FtZCBvcHRpb25zIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9lbnN1cmUgY2h1bmsiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2hhcm1vbnkgbW9kdWxlIGRlY29yYXRvciIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9pbXBvcnRTY3JpcHRzIGNodW5rIGxvYWRpbmciLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVmZXJyZWQgPSBbXTtcbl9fd2VicGFja19yZXF1aXJlX18uTyA9IChyZXN1bHQsIGNodW5rSWRzLCBmbiwgcHJpb3JpdHkpID0+IHtcblx0aWYoY2h1bmtJZHMpIHtcblx0XHRwcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG5cdFx0Zm9yKHZhciBpID0gZGVmZXJyZWQubGVuZ3RoOyBpID4gMCAmJiBkZWZlcnJlZFtpIC0gMV1bMl0gPiBwcmlvcml0eTsgaS0tKSBkZWZlcnJlZFtpXSA9IGRlZmVycmVkW2kgLSAxXTtcblx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcblx0XHRyZXR1cm47XG5cdH1cblx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGRlZmVycmVkLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIFtjaHVua0lkcywgZm4sIHByaW9yaXR5XSA9IGRlZmVycmVkW2ldO1xuXHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuXHRcdGZvciAodmFyIGogPSAwOyBqIDwgY2h1bmtJZHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdGlmICgocHJpb3JpdHkgJiAxID09PSAwIHx8IG5vdEZ1bGZpbGxlZCA+PSBwcmlvcml0eSkgJiYgT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5PKS5ldmVyeSgoa2V5KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5PW2tleV0oY2h1bmtJZHNbal0pKSkpIHtcblx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmdWxmaWxsZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihmdWxmaWxsZWQpIHtcblx0XHRcdGRlZmVycmVkLnNwbGljZShpLS0sIDEpXG5cdFx0XHR2YXIgciA9IGZuKCk7XG5cdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTsiLCJ2YXIgbmV4dCA9IF9fd2VicGFja19yZXF1aXJlX18ueDtcbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZSgxNDYpLnRoZW4obmV4dCk7XG59OyIsIi8vIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cblxuaW1wb3J0IHtleHBvcnRFREF9IGZyb20gJy4uLy4uL3dhc20vRURBRm9yV2ViV29ya2VyJztcbmltcG9ydCB7Y3BwV3JhcHBlcn0gZnJvbSAnLi4vLi4vd2FzbS9jYWxsV2FzbUZvcldlYldvcmtlci5qcyc7XG5cbm9ubWVzc2FnZSA9IGFzeW5jIGZ1bmN0aW9uIChldnQpIHtcbiAgZXhwb3J0RURBKCkudGhlbihtb2R1bGUgPT4gXG4gICAge1xuICAgICAgbGV0IGFyZ3MgPSBldnQuZGF0YTtcbiAgICAgIGxldCByZXN1bHQgPSBjcHBXcmFwcGVyKG1vZHVsZSwgYXJncywgJ3RyYWluTFNTVk0nLCAnbnVtYmVyJyk7XG4gICAgICBwb3N0TWVzc2FnZSh7J2NhbGxSZXN1bHQnOiByZXN1bHQsICdhcmdzJzogYXJnc30pO1xuICAgIH0gKVxufSIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdGxvYWRlZDogZmFsc2UsXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuXHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4vLyB0aGUgc3RhcnR1cCBmdW5jdGlvblxuX193ZWJwYWNrX3JlcXVpcmVfXy54ID0gKCkgPT4ge1xuXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcblx0Ly8gVGhpcyBlbnRyeSBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBsb2FkZWQgY2h1bmtzIGFuZCBleGVjdXRpb24gbmVlZCB0byBiZSBkZWxheWVkXG5cdHZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHVuZGVmaW5lZCwgWzE0Nl0sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDc2MzIpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmFtZE8gPSB7fTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18uaG1kID0gKG1vZHVsZSkgPT4ge1xuXHRtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG1vZHVsZSk7XG5cdGlmICghbW9kdWxlLmNoaWxkcmVuKSBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgJ2V4cG9ydHMnLCB7XG5cdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRzZXQ6ICgpID0+IHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdClcblx0XHRzY3JpcHRVcmwgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYztcblx0aWYgKCFzY3JpcHRVcmwpIHtcblx0XHR2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xuXHRcdGlmKHNjcmlwdHMubGVuZ3RoKSB7XG5cdFx0XHR2YXIgaSA9IHNjcmlwdHMubGVuZ3RoIC0gMTtcblx0XHRcdHdoaWxlIChpID4gLTEgJiYgIXNjcmlwdFVybCkgc2NyaXB0VXJsID0gc2NyaXB0c1tpLS1dLnNyYztcblx0XHR9XG5cdH1cbn1cbi8vIFdoZW4gc3VwcG9ydGluZyBicm93c2VycyB3aGVyZSBhbiBhdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0LnB1YmxpY1BhdGggbWFudWFsbHkgdmlhIGNvbmZpZ3VyYXRpb25cbi8vIG9yIHBhc3MgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBhbmQgc2V0IHRoZSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyB2YXJpYWJsZSBmcm9tIHlvdXIgY29kZSB0byB1c2UgeW91ciBvd24gbG9naWMuXG5pZiAoIXNjcmlwdFVybCkgdGhyb3cgbmV3IEVycm9yKFwiQXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XG5zY3JpcHRVcmwgPSBzY3JpcHRVcmwucmVwbGFjZSgvIy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcPy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLywgXCIvXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2NyaXB0VXJsOyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IHNlbGYubG9jYXRpb24gKyBcIlwiO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRlZFwiXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQ2MzI6IDFcbn07XG5cbi8vIGltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZ1xudmFyIGluc3RhbGxDaHVuayA9IChkYXRhKSA9PiB7XG5cdHZhciBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0d2hpbGUoY2h1bmtJZHMubGVuZ3RoKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkcy5wb3AoKV0gPSAxO1xuXHRwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcbn07XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaSA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRpbXBvcnRTY3JpcHRzKF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShjaHVua0lkKSk7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtlZGFcIl0gfHwgW107XG52YXIgcGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24gPSBjaHVua0xvYWRpbmdHbG9iYWwucHVzaC5iaW5kKGNodW5rTG9hZGluZ0dsb2JhbCk7XG5jaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IGluc3RhbGxDaHVuaztcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdCIsIi8vIHJ1biBzdGFydHVwXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18ueCgpO1xuIl0sIm5hbWVzIjpbImRlZmVycmVkIiwibmV4dCIsIm9ubWVzc2FnZSIsImFzeW5jIiwiZXZ0IiwidGhlbiIsIm1vZHVsZSIsImFyZ3MiLCJkYXRhIiwicmVzdWx0IiwicG9zdE1lc3NhZ2UiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJleHBvcnRzIiwiaWQiLCJsb2FkZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwibSIsIngiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsImFtZE8iLCJjaHVua0lkcyIsImZuIiwicHJpb3JpdHkiLCJub3RGdWxmaWxsZWQiLCJJbmZpbml0eSIsImkiLCJsZW5ndGgiLCJmdWxmaWxsZWQiLCJqIiwiT2JqZWN0Iiwia2V5cyIsImV2ZXJ5Iiwia2V5Iiwic3BsaWNlIiwiciIsImQiLCJkZWZpbml0aW9uIiwibyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsImYiLCJlIiwiY2h1bmtJZCIsIlByb21pc2UiLCJhbGwiLCJyZWR1Y2UiLCJwcm9taXNlcyIsInUiLCJnIiwiZ2xvYmFsVGhpcyIsInRoaXMiLCJGdW5jdGlvbiIsIndpbmRvdyIsImhtZCIsImNyZWF0ZSIsImNoaWxkcmVuIiwic2V0IiwiRXJyb3IiLCJvYmoiLCJwcm9wIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwic2NyaXB0VXJsIiwiaW1wb3J0U2NyaXB0cyIsImxvY2F0aW9uIiwiZG9jdW1lbnQiLCJjdXJyZW50U2NyaXB0Iiwic3JjIiwic2NyaXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicmVwbGFjZSIsInAiLCJiIiwic2VsZiIsImluc3RhbGxlZENodW5rcyIsImNodW5rTG9hZGluZ0dsb2JhbCIsInBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uIiwicHVzaCIsImJpbmQiLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiLCJwb3AiXSwic291cmNlUm9vdCI6IiJ9
1
+ var eda;(()=>{"use strict";var e,r,t={5533:(e,r,t)=>{var o=t(6845),a=t(2086);onmessage=async function(e){(0,o.P)().then((r=>{let t=e.data,o=(0,a.Gz)(r,t,"trainLSSVM","number");postMessage({callResult:o,args:t})}))}}},o={};function a(e){var r=o[e];if(void 0!==r)return r.exports;var n=o[e]={id:e,loaded:!1,exports:{}};return t[e](n,n.exports,a),n.loaded=!0,n.exports}a.m=t,a.x=()=>{var e=a.O(void 0,[902],(()=>a(5533)));return a.O(e)},a.amdO={},e=[],a.O=(r,t,o,n)=>{if(!t){var i=1/0;for(l=0;l<e.length;l++){for(var[t,o,n]=e[l],s=!0,c=0;c<t.length;c++)(!1&n||i>=n)&&Object.keys(a.O).every((e=>a.O[e](t[c])))?t.splice(c--,1):(s=!1,n<i&&(i=n));if(s){e.splice(l--,1);var p=o();void 0!==p&&(r=p)}}return r}n=n||0;for(var l=e.length;l>0&&e[l-1][2]>n;l--)e[l]=e[l-1];e[l]=[t,o,n]},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>e+".js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.hmd=e=>((e=Object.create(e)).children||(e.children=[]),Object.defineProperty(e,"exports",{enumerable:!0,set:()=>{throw new Error("ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: "+e.id)}}),e),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var r=a.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!e;)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{a.b=self.location+"";var e={533:1};a.f.i=(r,t)=>{e[r]||importScripts(a.p+a.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[o,n,i]=r;for(var s in n)a.o(n,s)&&(a.m[s]=n[s]);for(i&&i(a);o.length;)e[o.pop()]=1;t(r)}})(),r=a.x,a.x=()=>a.e(902).then(r);var n=a.x();eda=n})();
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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bUJFLEtBQUtDLEtBQUtILEdBQzlEQSxFQUFtQkUsS0F2QkM1RSxJQUNuQixJQUFLaUIsRUFBVTZELEVBQWFDLEdBQVcvRSxFQUN2QyxJQUFJLElBQUlLLEtBQVl5RSxFQUNoQjFFLEVBQW9COEIsRUFBRTRDLEVBQWF6RSxLQUNyQ0QsRUFBb0JRLEVBQUVQLEdBQVl5RSxFQUFZekUsSUFJaEQsSUFERzBFLEdBQVNBLEVBQVEzRSxHQUNkYSxFQUFTTSxRQUNka0QsRUFBZ0J4RCxFQUFTK0QsT0FBUyxFQUNuQ0wsRUFBMkIzRSxFQUFLLEMsS1huQjdCUCxFQUFPVyxFQUFvQlMsRUFDL0JULEVBQW9CUyxFQUFJLElBQ2hCVCxFQUFvQm1DLEVBQUUsS0FBSzFDLEtBQUtKLEdZRHhDLElBQUlxQixFQUFzQlYsRUFBb0JTLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL2VkYS8uL3dhc20vd29ya2Vycy90cmFpbkxTU1ZNV29ya2VyLmpzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2FtZCBvcHRpb25zIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9lbnN1cmUgY2h1bmsiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nZXQgamF2YXNjcmlwdCBjaHVuayBmaWxlbmFtZSIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2hhcm1vbnkgbW9kdWxlIGRlY29yYXRvciIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3B1YmxpY1BhdGgiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9pbXBvcnRTY3JpcHRzIGNodW5rIGxvYWRpbmciLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svc3RhcnR1cCJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZGVmZXJyZWQgPSBbXTtcbl9fd2VicGFja19yZXF1aXJlX18uTyA9IChyZXN1bHQsIGNodW5rSWRzLCBmbiwgcHJpb3JpdHkpID0+IHtcblx0aWYoY2h1bmtJZHMpIHtcblx0XHRwcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG5cdFx0Zm9yKHZhciBpID0gZGVmZXJyZWQubGVuZ3RoOyBpID4gMCAmJiBkZWZlcnJlZFtpIC0gMV1bMl0gPiBwcmlvcml0eTsgaS0tKSBkZWZlcnJlZFtpXSA9IGRlZmVycmVkW2kgLSAxXTtcblx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcblx0XHRyZXR1cm47XG5cdH1cblx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGRlZmVycmVkLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIFtjaHVua0lkcywgZm4sIHByaW9yaXR5XSA9IGRlZmVycmVkW2ldO1xuXHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuXHRcdGZvciAodmFyIGogPSAwOyBqIDwgY2h1bmtJZHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdGlmICgocHJpb3JpdHkgJiAxID09PSAwIHx8IG5vdEZ1bGZpbGxlZCA+PSBwcmlvcml0eSkgJiYgT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5PKS5ldmVyeSgoa2V5KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5PW2tleV0oY2h1bmtJZHNbal0pKSkpIHtcblx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmdWxmaWxsZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihmdWxmaWxsZWQpIHtcblx0XHRcdGRlZmVycmVkLnNwbGljZShpLS0sIDEpXG5cdFx0XHR2YXIgciA9IGZuKCk7XG5cdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTsiLCJ2YXIgbmV4dCA9IF9fd2VicGFja19yZXF1aXJlX18ueDtcbl9fd2VicGFja19yZXF1aXJlX18ueCA9ICgpID0+IHtcblx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18uZSg5MDIpLnRoZW4obmV4dCk7XG59OyIsIi8vIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseS5cblxuaW1wb3J0IHtleHBvcnRFREF9IGZyb20gJy4uLy4uL3dhc20vRURBRm9yV2ViV29ya2VyJztcbmltcG9ydCB7Y3BwV3JhcHBlcn0gZnJvbSAnLi4vLi4vd2FzbS9jYWxsV2FzbUZvcldlYldvcmtlci5qcyc7XG5cbm9ubWVzc2FnZSA9IGFzeW5jIGZ1bmN0aW9uIChldnQpIHtcbiAgZXhwb3J0RURBKCkudGhlbihtb2R1bGUgPT4gXG4gICAge1xuICAgICAgbGV0IGFyZ3MgPSBldnQuZGF0YTtcbiAgICAgIGxldCByZXN1bHQgPSBjcHBXcmFwcGVyKG1vZHVsZSwgYXJncywgJ3RyYWluTFNTVk0nLCAnbnVtYmVyJyk7XG4gICAgICBwb3N0TWVzc2FnZSh7J2NhbGxSZXN1bHQnOiByZXN1bHQsICdhcmdzJzogYXJnc30pO1xuICAgIH0gKVxufSIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdGxvYWRlZDogZmFsc2UsXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuXHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4vLyB0aGUgc3RhcnR1cCBmdW5jdGlvblxuX193ZWJwYWNrX3JlcXVpcmVfXy54ID0gKCkgPT4ge1xuXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcblx0Ly8gVGhpcyBlbnRyeSBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBsb2FkZWQgY2h1bmtzIGFuZCBleGVjdXRpb24gbmVlZCB0byBiZSBkZWxheWVkXG5cdHZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHVuZGVmaW5lZCwgWzkwMl0sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDU1MzMpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmFtZE8gPSB7fTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18uaG1kID0gKG1vZHVsZSkgPT4ge1xuXHRtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG1vZHVsZSk7XG5cdGlmICghbW9kdWxlLmNoaWxkcmVuKSBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgJ2V4cG9ydHMnLCB7XG5cdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRzZXQ6ICgpID0+IHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsInZhciBzY3JpcHRVcmw7XG5pZiAoX193ZWJwYWNrX3JlcXVpcmVfXy5nLmltcG9ydFNjcmlwdHMpIHNjcmlwdFVybCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5sb2NhdGlvbiArIFwiXCI7XG52YXIgZG9jdW1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcuZG9jdW1lbnQ7XG5pZiAoIXNjcmlwdFVybCAmJiBkb2N1bWVudCkge1xuXHRpZiAoZG9jdW1lbnQuY3VycmVudFNjcmlwdClcblx0XHRzY3JpcHRVcmwgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYztcblx0aWYgKCFzY3JpcHRVcmwpIHtcblx0XHR2YXIgc2NyaXB0cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwic2NyaXB0XCIpO1xuXHRcdGlmKHNjcmlwdHMubGVuZ3RoKSB7XG5cdFx0XHR2YXIgaSA9IHNjcmlwdHMubGVuZ3RoIC0gMTtcblx0XHRcdHdoaWxlIChpID4gLTEgJiYgIXNjcmlwdFVybCkgc2NyaXB0VXJsID0gc2NyaXB0c1tpLS1dLnNyYztcblx0XHR9XG5cdH1cbn1cbi8vIFdoZW4gc3VwcG9ydGluZyBicm93c2VycyB3aGVyZSBhbiBhdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0LnB1YmxpY1BhdGggbWFudWFsbHkgdmlhIGNvbmZpZ3VyYXRpb25cbi8vIG9yIHBhc3MgYW4gZW1wdHkgc3RyaW5nIChcIlwiKSBhbmQgc2V0IHRoZSBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyB2YXJpYWJsZSBmcm9tIHlvdXIgY29kZSB0byB1c2UgeW91ciBvd24gbG9naWMuXG5pZiAoIXNjcmlwdFVybCkgdGhyb3cgbmV3IEVycm9yKFwiQXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIGJyb3dzZXJcIik7XG5zY3JpcHRVcmwgPSBzY3JpcHRVcmwucmVwbGFjZSgvIy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcPy4qJC8sIFwiXCIpLnJlcGxhY2UoL1xcL1teXFwvXSskLywgXCIvXCIpO1xuX193ZWJwYWNrX3JlcXVpcmVfXy5wID0gc2NyaXB0VXJsOyIsIl9fd2VicGFja19yZXF1aXJlX18uYiA9IHNlbGYubG9jYXRpb24gKyBcIlwiO1xuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRlZFwiXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQ1MzM6IDFcbn07XG5cbi8vIGltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZ1xudmFyIGluc3RhbGxDaHVuayA9IChkYXRhKSA9PiB7XG5cdHZhciBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0d2hpbGUoY2h1bmtJZHMubGVuZ3RoKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkcy5wb3AoKV0gPSAxO1xuXHRwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcbn07XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaSA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRpbXBvcnRTY3JpcHRzKF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShjaHVua0lkKSk7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtlZGFcIl0gfHwgW107XG52YXIgcGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24gPSBjaHVua0xvYWRpbmdHbG9iYWwucHVzaC5iaW5kKGNodW5rTG9hZGluZ0dsb2JhbCk7XG5jaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IGluc3RhbGxDaHVuaztcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdCIsIi8vIHJ1biBzdGFydHVwXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18ueCgpO1xuIl0sIm5hbWVzIjpbImRlZmVycmVkIiwibmV4dCIsIm9ubWVzc2FnZSIsImFzeW5jIiwiZXZ0IiwidGhlbiIsIm1vZHVsZSIsImFyZ3MiLCJkYXRhIiwicmVzdWx0IiwicG9zdE1lc3NhZ2UiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJleHBvcnRzIiwiaWQiLCJsb2FkZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwibSIsIngiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsImFtZE8iLCJjaHVua0lkcyIsImZuIiwicHJpb3JpdHkiLCJub3RGdWxmaWxsZWQiLCJJbmZpbml0eSIsImkiLCJsZW5ndGgiLCJmdWxmaWxsZWQiLCJqIiwiT2JqZWN0Iiwia2V5cyIsImV2ZXJ5Iiwia2V5Iiwic3BsaWNlIiwiciIsImQiLCJkZWZpbml0aW9uIiwibyIsImRlZmluZVByb3BlcnR5IiwiZW51bWVyYWJsZSIsImdldCIsImYiLCJlIiwiY2h1bmtJZCIsIlByb21pc2UiLCJhbGwiLCJyZWR1Y2UiLCJwcm9taXNlcyIsInUiLCJnIiwiZ2xvYmFsVGhpcyIsInRoaXMiLCJGdW5jdGlvbiIsIndpbmRvdyIsImhtZCIsImNyZWF0ZSIsImNoaWxkcmVuIiwic2V0IiwiRXJyb3IiLCJvYmoiLCJwcm9wIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwic2NyaXB0VXJsIiwiaW1wb3J0U2NyaXB0cyIsImxvY2F0aW9uIiwiZG9jdW1lbnQiLCJjdXJyZW50U2NyaXB0Iiwic3JjIiwic2NyaXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwicmVwbGFjZSIsInAiLCJiIiwic2VsZiIsImluc3RhbGxlZENodW5rcyIsImNodW5rTG9hZGluZ0dsb2JhbCIsInBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uIiwicHVzaCIsImJpbmQiLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiLCJwb3AiXSwic291cmNlUm9vdCI6IiJ9
package/dist/664.js CHANGED
@@ -1,2 +1,2 @@
1
- var eda;(()=>{"use strict";var e,r,t={4664:(e,r,t)=>{var n;!function(e){e.EUCLIDEAN="EUCLIDEAN",e.MANHATTAN="MANHATTAN"}(n||(n={}));const a=e=>null==e;function o(e,r,t,n){if(t>e[e.length-1])return;const a=e.findIndex((e=>t<e));e.pop(),e.splice(a,0,t),r.pop(),r.splice(a,0,n)}var l=t(6361),s=t(9657);onmessage=async e=>{const{values:r,startIdx:t,endIdx:i,fnNames:c,opts:p,nNeighbours:f,weights:h,aggregationMethod:u}=e.data;try{const e=new Array(r[0].length).fill(null).map((()=>new Array(f).fill(-1))),g=new Array(r[0].length).fill(null).map((()=>new Array(f).fill(999999))),d=function(e,r){return e===n.MANHATTAN?e=>e.reduce(((e,t,n)=>e+t*r[n]),0):e=>{const t=e.reduce(((e,t,n)=>e+(t*r[n])**2),0);return Math.sqrt(t)}}(u,h),v=i-t;r.forEach(((e,t)=>{if((0,l.sQ)(c[t]))for(let n=0;n<e.length;++n)a(e[n])||(r[t][n]=new s.Z(r[t][n]._data,r[t][n]._length))}));let w=0;const m=new Array(c.length).fill(null).map(((e,r)=>new l.UH(c[r]).getMeasure(p[r]))),y=r[0].length-2-Math.floor(Math.sqrt(-8*t+4*r[0].length*(r[0].length-1)-7)/2-.5),A=t-r[0].length*y+Math.floor((y+1)*(y+2)/2);let b=y,x=A;for(;w<v;){const t=m.map(((e,t)=>a(r[t][b])||a(r[t][x])?1:e(r[t][b],r[t][x]))),n=1===t.length?t[0]:d(t);o(g[b],e[b],n,x),o(g[x],e[x],n,b),w++,x++,x===r[0].length&&(b++,x=b+1)}postMessage({knnDistances:g,knnIndexes:e})}catch(e){postMessage({error:e})}}}},n={};function a(e){var r=n[e];if(void 0!==r)return r.exports;var o=n[e]={exports:{}};return t[e](o,o.exports,a),o.exports}a.m=t,a.x=()=>{var e=a.O(void 0,[44,861,727],(()=>a(4664)));return a.O(e)},e=[],a.O=(r,t,n,o)=>{if(!t){var l=1/0;for(p=0;p<e.length;p++){for(var[t,n,o]=e[p],s=!0,i=0;i<t.length;i++)(!1&o||l>=o)&&Object.keys(a.O).every((e=>a.O[e](t[i])))?t.splice(i--,1):(s=!1,o<l&&(l=o));if(s){e.splice(p--,1);var c=n();void 0!==c&&(r=c)}}return r}o=o||0;for(var p=e.length;p>0&&e[p-1][2]>o;p--)e[p]=e[p-1];e[p]=[t,n,o]},a.d=(e,r)=>{for(var t in r)a.o(r,t)&&!a.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((r,t)=>(a.f[t](e,r),r)),[])),a.u=e=>e+".js",a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),a.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;a.g.importScripts&&(e=a.g.location+"");var r=a.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&!e;)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),a.p=e})(),(()=>{var e={664:1};a.f.i=(r,t)=>{e[r]||importScripts(a.p+a.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[n,o,l]=r;for(var s in o)a.o(o,s)&&(a.m[s]=o[s]);for(l&&l(a);n.length;)e[n.pop()]=1;t(r)}})(),r=a.x,a.x=()=>Promise.all([44,861,727].map(a.e,a)).then(r);var o=a.x();eda=o})();
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QVMvRCxPQUFTLEVBQ25DOEcsRUFBMkJqRyxFQUFLLEMsS1huQjdCMUIsRUFBT2lFLEVBQW9COUQsRUFDL0I4RCxFQUFvQjlELEVBQUksSUFDaEI0RixRQUFRQyxJQUFJLENBQUMsR0FBRyxJQUFJLEtBQUtsRSxJQUFJbUMsRUFBb0JILEVBQUdHLElBQXNCK0QsS0FBS2hJLEdZRHZGLElBQUl5RSxFQUFzQlIsRUFBb0I5RCxJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9jaHVuayBsb2FkZWQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9zdGFydHVwIGNodW5rIGRlcGVuZGVuY2llcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4L3R5cGVzLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9kaXN0YW5jZS1tYXRyaXgvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9rbm4td29ya2VyLmpzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbNDQsODYxLDcyN10ubWFwKF9fd2VicGFja19yZXF1aXJlX18uZSwgX193ZWJwYWNrX3JlcXVpcmVfXykpLnRoZW4obmV4dCk7XG59OyIsImV4cG9ydCB2YXIgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHM7XG4oZnVuY3Rpb24gKERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzKSB7XG4gICAgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHNbXCJFVUNMSURFQU5cIl0gPSBcIkVVQ0xJREVBTlwiO1xuICAgIERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzW1wiTUFOSEFUVEFOXCJdID0gXCJNQU5IQVRUQU5cIjtcbn0pKERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzIHx8IChEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcyA9IHt9KSk7XG47XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkSGx3WlhNdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUowZVhCbGN5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4TlFVRk5MRU5CUVU0c1NVRkJXU3d3UWtGSFZEdEJRVWhJTEZkQlFWa3NNRUpCUVRCQ08wbEJRMnhETEhGRVFVRjFRaXhEUVVGQk8wbEJRM1pDTEhGRVFVRjFRaXhEUVVGQk8wRkJRM3BDTEVOQlFVTXNSVUZJVXl3d1FrRkJNRUlzUzBGQk1VSXNNRUpCUVRCQ0xGRkJSMjVETzBGQlFVRXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltVjRjRzl5ZENCbGJuVnRJRVJwYzNSaGJtTmxRV2RuY21WbllYUnBiMjVOWlhSb2IyUnpJSHRjYmlBZ0lDQkZWVU5NU1VSRlFVNGdQU0FuUlZWRFRFbEVSVUZPSnl4Y2JpQWdJQ0JOUVU1SVFWUlVRVTRnUFNBblRVRk9TRUZVVkVGT0p5eGNiaUFnZlR0Y2JseHVaWGh3YjNKMElIUjVjR1VnUkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaQ0E5SUd0bGVXOW1JSFI1Y0dWdlppQkVhWE4wWVc1alpVRm5aM0psWjJGMGFXOXVUV1YwYUc5a2N6dGNiaUpkZlE9PSIsImltcG9ydCB7IERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzIH0gZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgY29uc3QgaXNOaWwgPSAoeCkgPT4geCA9PT0gbnVsbCB8fCB4ID09PSB1bmRlZmluZWQ7XG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0U21hbGxlcihkaXN0YW5jZXNBciwgaW5kZXhlcywgbnVtLCBpbmRleCkge1xuICAgIGlmIChudW0gPiBkaXN0YW5jZXNBcltkaXN0YW5jZXNBci5sZW5ndGggLSAxXSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IG5ld1Bvc2l0aW9uID0gZGlzdGFuY2VzQXIuZmluZEluZGV4KCh2KSA9PiBudW0gPCB2KTtcbiAgICBkaXN0YW5jZXNBci5wb3AoKTtcbiAgICBkaXN0YW5jZXNBci5zcGxpY2UobmV3UG9zaXRpb24sIDAsIG51bSk7XG4gICAgaW5kZXhlcy5wb3AoKTtcbiAgICBpbmRleGVzLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgaW5kZXgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydExhcmdlcihkaXN0YW5jZXNBciwgaW5kZXhlcywgbnVtLCBpbmRleCkge1xuICAgIGlmIChudW0gPCBkaXN0YW5jZXNBcltkaXN0YW5jZXNBci5sZW5ndGggLSAxXSlcbiAgICAgICAgcmV0dXJuO1xuICAgIGNvbnN0IG5ld1Bvc2l0aW9uID0gZGlzdGFuY2VzQXIuZmluZEluZGV4KCh2KSA9PiBudW0gPiB2KTtcbiAgICBkaXN0YW5jZXNBci5wb3AoKTtcbiAgICBkaXN0YW5jZXNBci5zcGxpY2UobmV3UG9zaXRpb24sIDAsIG51bSk7XG4gICAgaW5kZXhlcy5wb3AoKTtcbiAgICBpbmRleGVzLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgaW5kZXgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEFnZ3JlZ2F0aW9uRnVuY3Rpb24oYWdncmVnYXRpb25NZXRob2QsIHdlaWdodHMpIHtcbiAgICBzd2l0Y2ggKGFnZ3JlZ2F0aW9uTWV0aG9kKSB7XG4gICAgICAgIGNhc2UgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMuTUFOSEFUVEFOOlxuICAgICAgICAgICAgcmV0dXJuICh2cykgPT4gdnMucmVkdWNlKChhY2MsIHZhbCwgaWR4KSA9PiBhY2MgKyB2YWwgKiB3ZWlnaHRzW2lkeF0sIDApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICh2cykgPT4ge1xuICAgICAgICAgICAgICAgIC8vIGV1Y2xpZGVhblxuICAgICAgICAgICAgICAgIGNvbnN0IHN1bSA9IHZzLnJlZHVjZSgoYWNjLCB2YWwsIGlkeCkgPT4gYWNjICsgKHZhbCAqIHdlaWdodHNbaWR4XSkgKiogMiwgMCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydChzdW0pO1xuICAgICAgICAgICAgfTtcbiAgICB9XG59XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lkWFJwYkhNdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUoxZEdsc2N5NTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lRVUZCUVN4UFFVRlBMRVZCUVRSQ0xEQkNRVUV3UWl4RlFVRkRMRTFCUVUwc1UwRkJVeXhEUVVGRE8wRkJSVGxGTEUxQlFVMHNRMEZCUXl4TlFVRk5MRXRCUVVzc1IwRkJSeXhEUVVGRExFTkJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUXl4TFFVRkxMRWxCUVVrc1NVRkJTU3hEUVVGRExFdEJRVXNzVTBGQlV5eERRVUZETzBGQlJTOUVMRTFCUVUwc1ZVRkJWU3hoUVVGaExFTkJRVU1zVjBGQmNVSXNSVUZCUlN4UFFVRnBRaXhGUVVGRkxFZEJRVmNzUlVGQlJTeExRVUZoTzBsQlEyaEhMRWxCUVVrc1IwRkJSeXhIUVVGSExGZEJRVmNzUTBGQlF5eFhRVUZYTEVOQlFVTXNUVUZCVFN4SFFVRkRMRU5CUVVNc1EwRkJRenRSUVVONlF5eFBRVUZQTzBsQlJWUXNUVUZCVFN4WFFVRlhMRWRCUVVjc1YwRkJWeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzBsQlF6RkVMRmRCUVZjc1EwRkJReXhIUVVGSExFVkJRVVVzUTBGQlF6dEpRVU5zUWl4WFFVRlhMRU5CUVVNc1RVRkJUU3hEUVVGRExGZEJRVmNzUlVGQlJTeERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRlRU1zVDBGQlR5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMGxCUTJRc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1EwRkJReXhEUVVGRE8wRkJRM2hETEVOQlFVTTdRVUZGUkN4TlFVRk5MRlZCUVZVc1dVRkJXU3hEUVVGRExGZEJRWEZDTEVWQlFVVXNUMEZCYVVJc1JVRkJSU3hIUVVGWExFVkJRVVVzUzBGQllUdEpRVU12Uml4SlFVRkpMRWRCUVVjc1IwRkJSeXhYUVVGWExFTkJRVU1zVjBGQlZ5eERRVUZETEUxQlFVMHNSMEZCUXl4RFFVRkRMRU5CUVVNN1VVRkRla01zVDBGQlR6dEpRVVZVTEUxQlFVMHNWMEZCVnl4SFFVRkhMRmRCUVZjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU14UkN4WFFVRlhMRU5CUVVNc1IwRkJSeXhGUVVGRkxFTkJRVU03U1VGRGJFSXNWMEZCVnl4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWExFVkJRVVVzUTBGQlF5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTNoRExFOUJRVThzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTmtMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zVjBGQlZ5eEZRVUZGTEVOQlFVTXNSVUZCUlN4TFFVRkxMRU5CUVVNc1EwRkJRenRCUVVONFF5eERRVUZETzBGQlJVUXNUVUZCVFN4VlFVRlZMSE5DUVVGelFpeERRVU53UXl4cFFrRkJORU1zUlVGQlJTeFBRVUZwUWp0SlFVVXZSQ3hSUVVGUkxHbENRVUZwUWl4RlFVRkZPMUZCUTNwQ0xFdEJRVXNzTUVKQlFUQkNMRU5CUVVNc1UwRkJVenRaUVVOMlF5eFBRVUZQTEVOQlFVTXNSVUZCV1N4RlFVRkZMRVZCUVVVc1EwRkJReXhGUVVGRkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzUlVGQlJTeERRVUZETEVkQlFVY3NSMEZCUnl4SFFVRkhMRWRCUVVjc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eEZRVUZGTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTNKR08xbEJRMFVzVDBGQlR5eERRVUZETEVWQlFWa3NSVUZCUlN4RlFVRkZPMmRDUVVOMFFpeFpRVUZaTzJkQ1FVTmFMRTFCUVUwc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEZRVUZGTEVOQlFVTXNSMEZCUnl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF6dG5Ra0ZETjBVc1QwRkJUeXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMWxCUTNoQ0xFTkJRVU1zUTBGQlF6dExRVU5NTzBGQlEwZ3NRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCN1JHbHpkR0Z1WTJWQloyZHlaV2RoZEdsdmJrMWxkR2h2WkN3Z1JHbHpkR0Z1WTJWQloyZHlaV2RoZEdsdmJrMWxkR2h2WkhOOUlHWnliMjBnSnk0dmRIbHdaWE1uTzF4dVhHNWxlSEJ2Y25RZ1kyOXVjM1FnYVhOT2FXd2dQU0FvZURvZ1lXNTVLU0E5UGlCNElEMDlQU0J1ZFd4c0lIeDhJSGdnUFQwOUlIVnVaR1ZtYVc1bFpEdGNibHh1Wlhod2IzSjBJR1oxYm1OMGFXOXVJR2x1YzJWeWRGTnRZV3hzWlhJb1pHbHpkR0Z1WTJWelFYSTZJRzUxYldKbGNsdGRMQ0JwYm1SbGVHVnpPaUJ1ZFcxaVpYSmJYU3dnYm5WdE9pQnVkVzFpWlhJc0lHbHVaR1Y0T2lCdWRXMWlaWElwSUh0Y2JpQWdhV1lnS0c1MWJTQStJR1JwYzNSaGJtTmxjMEZ5VzJScGMzUmhibU5sYzBGeUxteGxibWQwYUMweFhTbGNiaUFnSUNCeVpYUjFjbTQ3WEc1Y2JpQWdZMjl1YzNRZ2JtVjNVRzl6YVhScGIyNGdQU0JrYVhOMFlXNWpaWE5CY2k1bWFXNWtTVzVrWlhnb0tIWXBJRDArSUc1MWJTQThJSFlwTzF4dUlDQmthWE4wWVc1alpYTkJjaTV3YjNBb0tUdGNiaUFnWkdsemRHRnVZMlZ6UVhJdWMzQnNhV05sS0c1bGQxQnZjMmwwYVc5dUxDQXdMQ0J1ZFcwcE8xeHVJQ0JwYm1SbGVHVnpMbkJ2Y0NncE8xeHVJQ0JwYm1SbGVHVnpMbk53YkdsalpTaHVaWGRRYjNOcGRHbHZiaXdnTUN3Z2FXNWtaWGdwTzF4dWZWeHVYRzVsZUhCdmNuUWdablZ1WTNScGIyNGdhVzV6WlhKMFRHRnlaMlZ5S0dScGMzUmhibU5sYzBGeU9pQnVkVzFpWlhKYlhTd2dhVzVrWlhobGN6b2diblZ0WW1WeVcxMHNJRzUxYlRvZ2JuVnRZbVZ5TENCcGJtUmxlRG9nYm5WdFltVnlLU0I3WEc0Z0lHbG1JQ2h1ZFcwZ1BDQmthWE4wWVc1alpYTkJjbHRrYVhOMFlXNWpaWE5CY2k1c1pXNW5kR2d0TVYwcFhHNGdJQ0FnY21WMGRYSnVPMXh1WEc0Z0lHTnZibk4wSUc1bGQxQnZjMmwwYVc5dUlEMGdaR2x6ZEdGdVkyVnpRWEl1Wm1sdVpFbHVaR1Y0S0NoMktTQTlQaUJ1ZFcwZ1BpQjJLVHRjYmlBZ1pHbHpkR0Z1WTJWelFYSXVjRzl3S0NrN1hHNGdJR1JwYzNSaGJtTmxjMEZ5TG5Od2JHbGpaU2h1WlhkUWIzTnBkR2x2Yml3Z01Dd2diblZ0S1R0Y2JpQWdhVzVrWlhobGN5NXdiM0FvS1R0Y2JpQWdhVzVrWlhobGN5NXpjR3hwWTJVb2JtVjNVRzl6YVhScGIyNHNJREFzSUdsdVpHVjRLVHRjYm4xY2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHZGxkRUZuWjNKbFoyRjBhVzl1Um5WdVkzUnBiMjRvWEc0Z0lHRm5aM0psWjJGMGFXOXVUV1YwYUc5a09pQkVhWE4wWVc1alpVRm5aM0psWjJGMGFXOXVUV1YwYUc5a0xDQjNaV2xuYUhSek9pQnVkVzFpWlhKYlhWeHVLVG9nS0haaGJIVmxjem9nYm5WdFltVnlXMTBwSUQwK0lHNTFiV0psY2lCN1hHNGdJSE4zYVhSamFDQW9ZV2RuY21WbllYUnBiMjVOWlhSb2IyUXBJSHRjYmlBZ0lDQmpZWE5sSUVScGMzUmhibU5sUVdkbmNtVm5ZWFJwYjI1TlpYUm9iMlJ6TGsxQlRraEJWRlJCVGpwY2JpQWdJQ0FnSUhKbGRIVnliaUFvZG5NNklHNTFiV0psY2x0ZEtTQTlQaUIyY3k1eVpXUjFZMlVvS0dGall5d2dkbUZzTENCcFpIZ3BJRDArSUdGall5QXJJSFpoYkNBcUlIZGxhV2RvZEhOYmFXUjRYU3dnTUNrN1hHNGdJQ0FnWkdWbVlYVnNkRHBjYmlBZ0lDQWdJSEpsZEhWeWJpQW9kbk02SUc1MWJXSmxjbHRkS1NBOVBpQjdYRzRnSUNBZ0lDQWdJQzh2SUdWMVkyeHBaR1ZoYmx4dUlDQWdJQ0FnSUNCamIyNXpkQ0J6ZFcwZ1BTQjJjeTV5WldSMVkyVW9LR0ZqWXl3Z2RtRnNMQ0JwWkhncElEMCtJR0ZqWXlBcklDaDJZV3dnS2lCM1pXbG5hSFJ6VzJsa2VGMHBJQ29xSURJc0lEQXBPMXh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdUV0YwYUM1emNYSjBLSE4xYlNrN1hHNGdJQ0FnSUNCOU8xeHVJQ0I5WEc1OVhHNGlYWDA9IiwiaW1wb3J0IHsgZ2V0QWdncmVnYXRpb25GdW5jdGlvbiwgaW5zZXJ0U21hbGxlciwgaXNOaWwgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IE1lYXN1cmUsIGlzQml0QXJyYXlNZXRyaWMgfSBmcm9tICcuLi90eXBlZC1tZXRyaWNzJztcbmltcG9ydCBCaXRBcnJheSBmcm9tICdAZGF0YWdyb2stbGlicmFyaWVzL3V0aWxzL3NyYy9iaXQtYXJyYXknO1xub25tZXNzYWdlID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgY29uc3QgeyB2YWx1ZXMsIHN0YXJ0SWR4LCBlbmRJZHgsIGZuTmFtZXMsIG9wdHMsIG5OZWlnaGJvdXJzLCB3ZWlnaHRzLCBhZ2dyZWdhdGlvbk1ldGhvZCB9ID0gZXZlbnQuZGF0YTtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBrbm5JbmRleGVzID0gbmV3IEFycmF5KHZhbHVlc1swXS5sZW5ndGgpLmZpbGwobnVsbCkubWFwKCgpID0+IG5ldyBBcnJheShuTmVpZ2hib3VycykuZmlsbCgtMSkpO1xuICAgICAgICBjb25zdCBrbm5EaXN0YW5jZXMgPSBuZXcgQXJyYXkodmFsdWVzWzBdLmxlbmd0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gbmV3IEFycmF5KG5OZWlnaGJvdXJzKS5maWxsKDk5OTk5OSkpO1xuICAgICAgICBjb25zdCBhZ2dyZWdhdGUgPSBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uKGFnZ3JlZ2F0aW9uTWV0aG9kLCB3ZWlnaHRzKTtcbiAgICAgICAgY29uc3QgY2h1bmtTaXplID0gZW5kSWR4IC0gc3RhcnRJZHg7XG4gICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2LCBjb2xJZHgpID0+IHtcbiAgICAgICAgICAgIGlmIChpc0JpdEFycmF5TWV0cmljKGZuTmFtZXNbY29sSWR4XSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHYubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmlsKHZbaV0pKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlc1tjb2xJZHhdW2ldID0gbmV3IEJpdEFycmF5KHZhbHVlc1tjb2xJZHhdW2ldLl9kYXRhLCB2YWx1ZXNbY29sSWR4XVtpXS5fbGVuZ3RoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBsZXQgY250ID0gMDtcbiAgICAgICAgY29uc3QgZGlzdGFuY2VGbnMgPSBuZXcgQXJyYXkoZm5OYW1lcy5sZW5ndGgpLmZpbGwobnVsbCkubWFwKChfLCBpKSA9PiBuZXcgTWVhc3VyZShmbk5hbWVzW2ldKS5nZXRNZWFzdXJlKG9wdHNbaV0pKTtcbiAgICAgICAgY29uc3Qgc3RhcnRSb3cgPSB2YWx1ZXNbMF0ubGVuZ3RoIC0gMiAtIE1hdGguZmxvb3IoTWF0aC5zcXJ0KC04ICogc3RhcnRJZHggKyA0ICogdmFsdWVzWzBdLmxlbmd0aCAqICh2YWx1ZXNbMF0ubGVuZ3RoIC0gMSkgLSA3KSAvIDIgLSAwLjUpO1xuICAgICAgICBjb25zdCBzdGFydENvbCA9IHN0YXJ0SWR4IC0gdmFsdWVzWzBdLmxlbmd0aCAqIHN0YXJ0Um93ICsgTWF0aC5mbG9vcigoc3RhcnRSb3cgKyAxKSAqIChzdGFydFJvdyArIDIpIC8gMik7XG4gICAgICAgIGxldCBtaSA9IHN0YXJ0Um93O1xuICAgICAgICBsZXQgbWogPSBzdGFydENvbDtcbiAgICAgICAgd2hpbGUgKGNudCA8IGNodW5rU2l6ZSkge1xuICAgICAgICAgICAgLy9jb25zdCB2YWx1ZSA9IHNlcTFMaXN0W21pXSAmJiBzZXExTGlzdFttal0gPyBoYW1taW5nKHNlcTFMaXN0W21pXSwgc2VxMUxpc3RbbWpdKSA6IDA7XG4gICAgICAgICAgICBjb25zdCBkaXN0YW5jZVZhbHVlcyA9IGRpc3RhbmNlRm5zLm1hcCgoZm4sIGlkeCkgPT4gIWlzTmlsKHZhbHVlc1tpZHhdW21pXSkgJiYgIWlzTmlsKHZhbHVlc1tpZHhdW21qXSkgP1xuICAgICAgICAgICAgICAgIGZuKHZhbHVlc1tpZHhdW21pXSwgdmFsdWVzW2lkeF1bbWpdKSA6IDEpO1xuICAgICAgICAgICAgLy8gY29uc3QgdmFsdWUgPSAhaXNOaWwodmFsdWVzW21pXSkgJiYgIWlzTmlsKHZhbHVlc1ttal0pID9cbiAgICAgICAgICAgIC8vICAgZGlzdGFuY2VGbih2YWx1ZXNbbWldLCB2YWx1ZXNbbWpdKSA6IDE7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGRpc3RhbmNlVmFsdWVzLmxlbmd0aCA9PT0gMSA/IGRpc3RhbmNlVmFsdWVzWzBdIDogYWdncmVnYXRlKGRpc3RhbmNlVmFsdWVzKTtcbiAgICAgICAgICAgIGluc2VydFNtYWxsZXIoa25uRGlzdGFuY2VzW21pXSwga25uSW5kZXhlc1ttaV0sIHZhbHVlLCBtaik7XG4gICAgICAgICAgICBpbnNlcnRTbWFsbGVyKGtubkRpc3RhbmNlc1ttal0sIGtubkluZGV4ZXNbbWpdLCB2YWx1ZSwgbWkpO1xuICAgICAgICAgICAgY250Kys7XG4gICAgICAgICAgICBtaisrO1xuICAgICAgICAgICAgaWYgKG1qID09PSB2YWx1ZXNbMF0ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgbWkrKztcbiAgICAgICAgICAgICAgICBtaiA9IG1pICsgMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwb3N0TWVzc2FnZSh7IGtubkRpc3RhbmNlcywga25uSW5kZXhlcyB9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGUpIHtcbiAgICAgICAgcG9zdE1lc3NhZ2UoeyBlcnJvcjogZSB9KTtcbiAgICB9XG59O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYTI1dUxYZHZjbXRsY2k1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJbXR1YmkxM2IzSnJaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWtGQlFVRXNUMEZCVHl4RlFVRkRMSE5DUVVGelFpeEZRVUZGTEdGQlFXRXNSVUZCUlN4TFFVRkxMRVZCUVVNc1RVRkJUU3hUUVVGVExFTkJRVU03UVVGRGNrVXNUMEZCVHl4RlFVRmxMRTlCUVU4c1JVRkJSU3huUWtGQlowSXNSVUZCUXl4TlFVRk5MR3RDUVVGclFpeERRVUZETzBGQlEzcEZMRTlCUVU4c1VVRkJVU3hOUVVGTkxIbERRVUY1UXl4RFFVRkRPMEZCUnk5RUxGTkJRVk1zUjBGQlJ5eExRVUZMTEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVN1NVRkRNVUlzVFVGQlRTeEZRVUZETEUxQlFVMHNSVUZCUlN4UlFVRlJMRVZCUVVVc1RVRkJUU3hGUVVGRkxFOUJRVThzUlVGQlJTeEpRVUZKTEVWQlFVVXNWMEZCVnl4RlFVRkZMRTlCUVU4c1JVRkJSU3hwUWtGQmFVSXNSVUZCUXl4SFFVVnBRaXhMUVVGTExFTkJRVU1zU1VGQlNTeERRVUZETzBsQlEzQklMRWxCUVVrN1VVRkRSaXhOUVVGTkxGVkJRVlVzUjBGQlJ5eEpRVUZKTEV0QlFVc3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNTVUZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXl4SlFVRkpMRXRCUVVzc1EwRkJVeXhYUVVGWExFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRemRITEUxQlFVMHNXVUZCV1N4SFFVRkhMRWxCUVVrc1MwRkJTeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNSMEZCUnl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRExFbEJRVWtzUzBGQlN5eERRVUZUTEZkQlFWY3NRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEyNUlMRTFCUVUwc1UwRkJVeXhIUVVGSExITkNRVUZ6UWl4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNKRkxFMUJRVTBzVTBGQlV5eEhRVUZITEUxQlFVMHNSMEZCUnl4UlFVRlJMRU5CUVVNN1VVRkRjRU1zVFVGQlRTeERRVUZETEU5QlFVOHNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hOUVVGTkxFVkJRVVVzUlVGQlJUdFpRVU16UWl4SlFVRkpMR2RDUVVGblFpeERRVUZETEU5QlFVOHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhGUVVGRk8yZENRVU55UXl4TFFVRkxMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUlVGQlJTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRTFCUVUwc1JVRkJSU3hGUVVGRkxFTkJRVU1zUlVGQlJUdHZRa0ZEYWtNc1NVRkJTU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRPM2RDUVVGRkxGTkJRVk03YjBKQlF6RkNMRTFCUVUwc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNSMEZCUnl4SlFVRkpMRkZCUVZFc1EwRkJReXhOUVVGTkxFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhGUVVGRkxFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF6dHBRa0ZEZEVZN1lVRkRSanRSUVVOSUxFTkJRVU1zUTBGQlF5eERRVUZETzFGQlEwZ3NTVUZCU1N4SFFVRkhMRWRCUVVjc1EwRkJReXhEUVVGRE8xRkJRMW9zVFVGQlRTeFhRVUZYTEVkQlFVY3NTVUZCU1N4TFFVRkxMRU5CUVVNc1QwRkJUeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRVZCUVVVc1EwRkJReXhKUVVGSkxFOUJRVThzUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhWUVVGVkxFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRSUVVOd1NDeE5RVUZOTEZGQlFWRXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVOb1JDeEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhIUVVGSExGRkJRVkVzUjBGQlJ5eERRVUZETEVkQlFVY3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUjBGQlJ5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFZEJRVWNzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlF6RkdMRTFCUVUwc1VVRkJVU3hIUVVGSExGRkJRVkVzUjBGQlJ5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1RVRkJUU3hIUVVGSExGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNTMEZCU3l4RFFVRkRMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNVVUZCVVN4SFFVRkhMRU5CUVVNc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6RkhMRWxCUVVrc1JVRkJSU3hIUVVGSExGRkJRVkVzUTBGQlF6dFJRVU5zUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhSUVVGUkxFTkJRVU03VVVGRGJFSXNUMEZCVHl4SFFVRkhMRWRCUVVjc1UwRkJVeXhGUVVGRk8xbEJRM1JDTEhWR1FVRjFSanRaUVVOMlJpeE5RVUZOTEdOQlFXTXNSMEZCUnl4WFFVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zVFVGQlRTeERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkRkRWNzUlVGQlJTeERRVUZETEUxQlFVMHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhGUVVGRkxFTkJRVU1zUlVGQlJTeE5RVUZOTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1JVRkJSU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1dVRkROVU1zTWtSQlFUSkVPMWxCUXpORUxEUkRRVUUwUXp0WlFVTTFReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eGpRVUZqTEVOQlFVTXNUVUZCVFN4TFFVRkxMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhUUVVGVExFTkJRVU1zWTBGQll5eERRVUZETEVOQlFVTTdXVUZETVVZc1lVRkJZU3hEUVVGRExGbEJRVmtzUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4VlFVRlZMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzUzBGQlN5eEZRVUZGTEVWQlFVVXNRMEZCUXl4RFFVRkRPMWxCUXpORUxHRkJRV0VzUTBGQlF5eFpRVUZaTEVOQlFVTXNSVUZCUlN4RFFVRkRMRVZCUVVVc1ZVRkJWU3hEUVVGRExFVkJRVVVzUTBGQlF5eEZRVUZGTEV0QlFVc3NSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRaUVVVelJDeEhRVUZITEVWQlFVVXNRMEZCUXp0WlFVTk9MRVZCUVVVc1JVRkJSU3hEUVVGRE8xbEJRMHdzU1VGQlNTeEZRVUZGTEV0QlFVc3NUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJUdG5Ra0ZETTBJc1JVRkJSU3hGUVVGRkxFTkJRVU03WjBKQlEwd3NSVUZCUlN4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03WVVGRFlqdFRRVU5HTzFGQlJVUXNWMEZCVnl4RFFVRkRMRVZCUVVNc1dVRkJXU3hGUVVGRkxGVkJRVlVzUlVGQlF5eERRVUZETEVOQlFVTTdTMEZEZWtNN1NVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdFJRVU5XTEZkQlFWY3NRMEZCUXl4RlFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRExFVkJRVU1zUTBGQlF5eERRVUZETzB0QlEzcENPMEZCUTBnc1EwRkJReXhEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIdG5aWFJCWjJkeVpXZGhkR2x2YmtaMWJtTjBhVzl1TENCcGJuTmxjblJUYldGc2JHVnlMQ0JwYzA1cGJIMGdabkp2YlNBbkxpOTFkR2xzY3ljN1hHNXBiWEJ2Y25RZ2UwdHViM2R1VFdWMGNtbGpjeXdnVFdWaGMzVnlaU3dnYVhOQ2FYUkJjbkpoZVUxbGRISnBZMzBnWm5KdmJTQW5MaTR2ZEhsd1pXUXRiV1YwY21samN5YzdYRzVwYlhCdmNuUWdRbWwwUVhKeVlYa2dabkp2YlNBblFHUmhkR0ZuY205ckxXeHBZbkpoY21sbGN5OTFkR2xzY3k5emNtTXZZbWwwTFdGeWNtRjVKenRjYm1sdGNHOXlkQ0I3UkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaSDBnWm5KdmJTQW5MaTkwZVhCbGN5YzdYRzVjYm05dWJXVnpjMkZuWlNBOUlHRnplVzVqSUNobGRtVnVkQ2tnUFQ0Z2UxeHVJQ0JqYjI1emRDQjdkbUZzZFdWekxDQnpkR0Z5ZEVsa2VDd2daVzVrU1dSNExDQm1iazVoYldWekxDQnZjSFJ6TENCdVRtVnBaMmhpYjNWeWN5d2dkMlZwWjJoMGN5d2dZV2RuY21WbllYUnBiMjVOWlhSb2IyUjlPbHh1SUNBZ0lIdDJZV3gxWlhNNklFRnljbUY1UEdGdWVWdGRQaXdnYzNSaGNuUkpaSGc2SUc1MWJXSmxjaXdnWlc1a1NXUjRPaUJ1ZFcxaVpYSXNJR1p1VG1GdFpYTTZJRXR1YjNkdVRXVjBjbWxqYzF0ZExGeHVJQ0FnSUNBZ2IzQjBjem9nWVc1NVcxMHNJRzVPWldsbmFHSnZkWEp6T2lCdWRXMWlaWElzSUhkbGFXZG9kSE02SUc1MWJXSmxjbHRkTENCaFoyZHlaV2RoZEdsdmJrMWxkR2h2WkRvZ1JHbHpkR0Z1WTJWQloyZHlaV2RoZEdsdmJrMWxkR2h2WkgwZ1BTQmxkbVZ1ZEM1a1lYUmhPMXh1SUNCMGNua2dlMXh1SUNBZ0lHTnZibk4wSUd0dWJrbHVaR1Y0WlhNZ1BTQnVaWGNnUVhKeVlYa29kbUZzZFdWeld6QmRMbXhsYm1kMGFDa3VabWxzYkNodWRXeHNLUzV0WVhBb0tDa2dQVDRnYm1WM0lFRnljbUY1UEc1MWJXSmxjajRvYms1bGFXZG9ZbTkxY25NcExtWnBiR3dvTFRFcEtUdGNiaUFnSUNCamIyNXpkQ0JyYm01RWFYTjBZVzVqWlhNZ1BTQnVaWGNnUVhKeVlYa29kbUZzZFdWeld6QmRMbXhsYm1kMGFDa3VabWxzYkNodWRXeHNLUzV0WVhBb0tDa2dQVDRnYm1WM0lFRnljbUY1UEc1MWJXSmxjajRvYms1bGFXZG9ZbTkxY25NcExtWnBiR3dvT1RrNU9UazVLU2s3WEc0Z0lDQWdZMjl1YzNRZ1lXZG5jbVZuWVhSbElEMGdaMlYwUVdkbmNtVm5ZWFJwYjI1R2RXNWpkR2x2YmloaFoyZHlaV2RoZEdsdmJrMWxkR2h2WkN3Z2QyVnBaMmgwY3lrN1hHNGdJQ0FnWTI5dWMzUWdZMmgxYm10VGFYcGxJRDBnWlc1a1NXUjRJQzBnYzNSaGNuUkpaSGc3WEc0Z0lDQWdkbUZzZFdWekxtWnZja1ZoWTJnb0tIWXNJR052YkVsa2VDa2dQVDRnZTF4dUlDQWdJQ0FnYVdZZ0tHbHpRbWwwUVhKeVlYbE5aWFJ5YVdNb1ptNU9ZVzFsYzF0amIyeEpaSGhkS1NrZ2UxeHVJQ0FnSUNBZ0lDQm1iM0lnS0d4bGRDQnBJRDBnTURzZ2FTQThJSFl1YkdWdVozUm9PeUFySzJrcElIdGNiaUFnSUNBZ0lDQWdJQ0JwWmlBb2FYTk9hV3dvZGx0cFhTa3BJR052Ym5ScGJuVmxPMXh1SUNBZ0lDQWdJQ0FnSUhaaGJIVmxjMXRqYjJ4SlpIaGRXMmxkSUQwZ2JtVjNJRUpwZEVGeWNtRjVLSFpoYkhWbGMxdGpiMnhKWkhoZFcybGRMbDlrWVhSaExDQjJZV3gxWlhOYlkyOXNTV1I0WFZ0cFhTNWZiR1Z1WjNSb0tUdGNiaUFnSUNBZ0lDQWdmVnh1SUNBZ0lDQWdmVnh1SUNBZ0lIMHBPMXh1SUNBZ0lHeGxkQ0JqYm5RZ1BTQXdPMXh1SUNBZ0lHTnZibk4wSUdScGMzUmhibU5sUm01eklEMGdibVYzSUVGeWNtRjVLR1p1VG1GdFpYTXViR1Z1WjNSb0tTNW1hV3hzS0c1MWJHd3BMbTFoY0Nnb1h5d2dhU2tnUFQ0Z2JtVjNJRTFsWVhOMWNtVW9abTVPWVcxbGMxdHBYU2t1WjJWMFRXVmhjM1Z5WlNodmNIUnpXMmxkS1NrN1hHNGdJQ0FnWTI5dWMzUWdjM1JoY25SU2IzY2dQU0IyWVd4MVpYTmJNRjB1YkdWdVozUm9JQzBnTWlBdElFMWhkR2d1Wm14dmIzSW9YRzRnSUNBZ0lDQk5ZWFJvTG5OeGNuUW9MVGdnS2lCemRHRnlkRWxrZUNBcklEUWdLaUIyWVd4MVpYTmJNRjB1YkdWdVozUm9JQ29nS0haaGJIVmxjMXN3WFM1c1pXNW5kR2dnTFNBeEtTQXRJRGNwSUM4Z01pQXRJREF1TlNrN1hHNGdJQ0FnWTI5dWMzUWdjM1JoY25SRGIyd2dQU0J6ZEdGeWRFbGtlQ0F0SUhaaGJIVmxjMXN3WFM1c1pXNW5kR2dnS2lCemRHRnlkRkp2ZHlBcklFMWhkR2d1Wm14dmIzSW9LSE4wWVhKMFVtOTNJQ3NnTVNrZ0tpQW9jM1JoY25SU2IzY2dLeUF5S1NBdklESXBPMXh1SUNBZ0lHeGxkQ0J0YVNBOUlITjBZWEowVW05M08xeHVJQ0FnSUd4bGRDQnRhaUE5SUhOMFlYSjBRMjlzTzF4dUlDQWdJSGRvYVd4bElDaGpiblFnUENCamFIVnVhMU5wZW1VcElIdGNiaUFnSUNBZ0lDOHZZMjl1YzNRZ2RtRnNkV1VnUFNCelpYRXhUR2x6ZEZ0dGFWMGdKaVlnYzJWeE1VeHBjM1JiYldwZElEOGdhR0Z0YldsdVp5aHpaWEV4VEdsemRGdHRhVjBzSUhObGNURk1hWE4wVzIxcVhTa2dPaUF3TzF4dUlDQWdJQ0FnWTI5dWMzUWdaR2x6ZEdGdVkyVldZV3gxWlhNZ1BTQmthWE4wWVc1alpVWnVjeTV0WVhBb0tHWnVMQ0JwWkhncElEMCtJQ0ZwYzA1cGJDaDJZV3gxWlhOYmFXUjRYVnR0YVYwcElDWW1JQ0ZwYzA1cGJDaDJZV3gxWlhOYmFXUjRYVnR0YWwwcElEOWNiaUFnSUNBZ0lDQWdabTRvZG1Gc2RXVnpXMmxrZUYxYmJXbGRMQ0IyWVd4MVpYTmJhV1I0WFZ0dGFsMHBJRG9nTVNrN1hHNGdJQ0FnSUNBdkx5QmpiMjV6ZENCMllXeDFaU0E5SUNGcGMwNXBiQ2gyWVd4MVpYTmJiV2xkS1NBbUppQWhhWE5PYVd3b2RtRnNkV1Z6VzIxcVhTa2dQMXh1SUNBZ0lDQWdMeThnSUNCa2FYTjBZVzVqWlVadUtIWmhiSFZsYzF0dGFWMHNJSFpoYkhWbGMxdHRhbDBwSURvZ01UdGNiaUFnSUNBZ0lHTnZibk4wSUhaaGJIVmxJRDBnWkdsemRHRnVZMlZXWVd4MVpYTXViR1Z1WjNSb0lEMDlQU0F4SUQ4Z1pHbHpkR0Z1WTJWV1lXeDFaWE5iTUYwZ09pQmhaMmR5WldkaGRHVW9aR2x6ZEdGdVkyVldZV3gxWlhNcE8xeHVJQ0FnSUNBZ2FXNXpaWEowVTIxaGJHeGxjaWhyYm01RWFYTjBZVzVqWlhOYmJXbGRMQ0JyYm01SmJtUmxlR1Z6VzIxcFhTd2dkbUZzZFdVc0lHMXFLVHRjYmlBZ0lDQWdJR2x1YzJWeWRGTnRZV3hzWlhJb2EyNXVSR2x6ZEdGdVkyVnpXMjFxWFN3Z2EyNXVTVzVrWlhobGMxdHRhbDBzSUhaaGJIVmxMQ0J0YVNrN1hHNWNiaUFnSUNBZ0lHTnVkQ3NyTzF4dUlDQWdJQ0FnYldvckt6dGNiaUFnSUNBZ0lHbG1JQ2h0YWlBOVBUMGdkbUZzZFdWeld6QmRMbXhsYm1kMGFDa2dlMXh1SUNBZ0lDQWdJQ0J0YVNzck8xeHVJQ0FnSUNBZ0lDQnRhaUE5SUcxcElDc2dNVHRjYmlBZ0lDQWdJSDFjYmlBZ0lDQjlYRzVjYmlBZ0lDQndiM04wVFdWemMyRm5aU2g3YTI1dVJHbHpkR0Z1WTJWekxDQnJibTVKYm1SbGVHVnpmU2s3WEc0Z0lIMGdZMkYwWTJnZ0tHVXBJSHRjYmlBZ0lDQndiM04wVFdWemMyRm5aU2g3WlhKeWIzSTZJR1Y5S1R0Y2JpQWdmVnh1ZlR0Y2JpSmRmUT09IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4vLyB0aGUgc3RhcnR1cCBmdW5jdGlvblxuX193ZWJwYWNrX3JlcXVpcmVfXy54ID0gKCkgPT4ge1xuXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcblx0Ly8gVGhpcyBlbnRyeSBtb2R1bGUgZGVwZW5kcyBvbiBvdGhlciBsb2FkZWQgY2h1bmtzIGFuZCBleGVjdXRpb24gbmVlZCB0byBiZSBkZWxheWVkXG5cdHZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHVuZGVmaW5lZCwgWzQ0LDg2MSw3MjddLCAoKSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXyg0NjY0KSkpXG5cdF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8oX193ZWJwYWNrX2V4cG9ydHNfXyk7XG5cdHJldHVybiBfX3dlYnBhY2tfZXhwb3J0c19fO1xufTtcblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5mID0ge307XG4vLyBUaGlzIGZpbGUgY29udGFpbnMgb25seSB0aGUgZW50cnkgY2h1bmsuXG4vLyBUaGUgY2h1bmsgbG9hZGluZyBmdW5jdGlvbiBmb3IgYWRkaXRpb25hbCBjaHVua3Ncbl9fd2VicGFja19yZXF1aXJlX18uZSA9IChjaHVua0lkKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChPYmplY3Qua2V5cyhfX3dlYnBhY2tfcmVxdWlyZV9fLmYpLnJlZHVjZSgocHJvbWlzZXMsIGtleSkgPT4ge1xuXHRcdF9fd2VicGFja19yZXF1aXJlX18uZltrZXldKGNodW5rSWQsIHByb21pc2VzKTtcblx0XHRyZXR1cm4gcHJvbWlzZXM7XG5cdH0sIFtdKSk7XG59OyIsIi8vIFRoaXMgZnVuY3Rpb24gYWxsb3cgdG8gcmVmZXJlbmNlIGFzeW5jIGNodW5rcyBhbmQgc2libGluZyBjaHVua3MgZm9yIHRoZSBlbnRyeXBvaW50XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnUgPSAoY2h1bmtJZCkgPT4ge1xuXHQvLyByZXR1cm4gdXJsIGZvciBmaWxlbmFtZXMgYmFzZWQgb24gdGVtcGxhdGVcblx0cmV0dXJuIFwiXCIgKyBjaHVua0lkICsgXCIuanNcIjtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwidmFyIHNjcmlwdFVybDtcbmlmIChfX3dlYnBhY2tfcmVxdWlyZV9fLmcuaW1wb3J0U2NyaXB0cykgc2NyaXB0VXJsID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmxvY2F0aW9uICsgXCJcIjtcbnZhciBkb2N1bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18uZy5kb2N1bWVudDtcbmlmICghc2NyaXB0VXJsICYmIGRvY3VtZW50KSB7XG5cdGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KVxuXHRcdHNjcmlwdFVybCA9IGRvY3VtZW50LmN1cnJlbnRTY3JpcHQuc3JjO1xuXHRpZiAoIXNjcmlwdFVybCkge1xuXHRcdHZhciBzY3JpcHRzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJzY3JpcHRcIik7XG5cdFx0aWYoc2NyaXB0cy5sZW5ndGgpIHtcblx0XHRcdHZhciBpID0gc2NyaXB0cy5sZW5ndGggLSAxO1xuXHRcdFx0d2hpbGUgKGkgPiAtMSAmJiAhc2NyaXB0VXJsKSBzY3JpcHRVcmwgPSBzY3JpcHRzW2ktLV0uc3JjO1xuXHRcdH1cblx0fVxufVxuLy8gV2hlbiBzdXBwb3J0aW5nIGJyb3dzZXJzIHdoZXJlIGFuIGF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgeW91IG11c3Qgc3BlY2lmeSBhbiBvdXRwdXQucHVibGljUGF0aCBtYW51YWxseSB2aWEgY29uZmlndXJhdGlvblxuLy8gb3IgcGFzcyBhbiBlbXB0eSBzdHJpbmcgKFwiXCIpIGFuZCBzZXQgdGhlIF9fd2VicGFja19wdWJsaWNfcGF0aF9fIHZhcmlhYmxlIGZyb20geW91ciBjb2RlIHRvIHVzZSB5b3VyIG93biBsb2dpYy5cbmlmICghc2NyaXB0VXJsKSB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvbWF0aWMgcHVibGljUGF0aCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3NlclwiKTtcbnNjcmlwdFVybCA9IHNjcmlwdFVybC5yZXBsYWNlKC8jLiokLywgXCJcIikucmVwbGFjZSgvXFw/LiokLywgXCJcIikucmVwbGFjZSgvXFwvW15cXC9dKyQvLCBcIi9cIik7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBzY3JpcHRVcmw7IiwiLy8gbm8gYmFzZVVSSVxuXG4vLyBvYmplY3QgdG8gc3RvcmUgbG9hZGVkIGNodW5rc1xuLy8gXCIxXCIgbWVhbnMgXCJhbHJlYWR5IGxvYWRlZFwiXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHQ2NjQ6IDFcbn07XG5cbi8vIGltcG9ydFNjcmlwdHMgY2h1bmsgbG9hZGluZ1xudmFyIGluc3RhbGxDaHVuayA9IChkYXRhKSA9PiB7XG5cdHZhciBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdGZvcih2YXIgbW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8obW9yZU1vZHVsZXMsIG1vZHVsZUlkKSkge1xuXHRcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tW21vZHVsZUlkXSA9IG1vcmVNb2R1bGVzW21vZHVsZUlkXTtcblx0XHR9XG5cdH1cblx0aWYocnVudGltZSkgcnVudGltZShfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblx0d2hpbGUoY2h1bmtJZHMubGVuZ3RoKVxuXHRcdGluc3RhbGxlZENodW5rc1tjaHVua0lkcy5wb3AoKV0gPSAxO1xuXHRwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcbn07XG5fX3dlYnBhY2tfcmVxdWlyZV9fLmYuaSA9IChjaHVua0lkLCBwcm9taXNlcykgPT4ge1xuXHQvLyBcIjFcIiBpcyB0aGUgc2lnbmFsIGZvciBcImFscmVhZHkgbG9hZGVkXCJcblx0aWYoIWluc3RhbGxlZENodW5rc1tjaHVua0lkXSkge1xuXHRcdGlmKHRydWUpIHsgLy8gYWxsIGNodW5rcyBoYXZlIEpTXG5cdFx0XHRpbXBvcnRTY3JpcHRzKF9fd2VicGFja19yZXF1aXJlX18ucCArIF9fd2VicGFja19yZXF1aXJlX18udShjaHVua0lkKSk7XG5cdFx0fVxuXHR9XG59O1xuXG52YXIgY2h1bmtMb2FkaW5nR2xvYmFsID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSA9IHNlbGZbXCJ3ZWJwYWNrQ2h1bmtlZGFcIl0gfHwgW107XG52YXIgcGFyZW50Q2h1bmtMb2FkaW5nRnVuY3Rpb24gPSBjaHVua0xvYWRpbmdHbG9iYWwucHVzaC5iaW5kKGNodW5rTG9hZGluZ0dsb2JhbCk7XG5jaHVua0xvYWRpbmdHbG9iYWwucHVzaCA9IGluc3RhbGxDaHVuaztcblxuLy8gbm8gSE1SXG5cbi8vIG5vIEhNUiBtYW5pZmVzdCIsIi8vIHJ1biBzdGFydHVwXG52YXIgX193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18ueCgpO1xuIl0sIm5hbWVzIjpbImRlZmVycmVkIiwibmV4dCIsIkRpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzIiwiaXNOaWwiLCJ4IiwiaW5zZXJ0U21hbGxlciIsImRpc3RhbmNlc0FyIiwiaW5kZXhlcyIsIm51bSIsImluZGV4IiwibGVuZ3RoIiwibmV3UG9zaXRpb24iLCJmaW5kSW5kZXgiLCJ2IiwicG9wIiwic3BsaWNlIiwib25tZXNzYWdlIiwiYXN5bmMiLCJldmVudCIsInZhbHVlcyIsInN0YXJ0SWR4IiwiZW5kSWR4IiwiZm5OYW1lcyIsIm9wdHMiLCJuTmVpZ2hib3VycyIsIndlaWdodHMiLCJhZ2dyZWdhdGlvbk1ldGhvZCIsImRhdGEiLCJrbm5JbmRleGVzIiwiQXJyYXkiLCJmaWxsIiwibWFwIiwia25uRGlzdGFuY2VzIiwiYWdncmVnYXRlIiwiTUFOSEFUVEFOIiwidnMiLCJyZWR1Y2UiLCJhY2MiLCJ2YWwiLCJpZHgiLCJzdW0iLCJNYXRoIiwic3FydCIsImdldEFnZ3JlZ2F0aW9uRnVuY3Rpb24iLCJjaHVua1NpemUiLCJmb3JFYWNoIiwiY29sSWR4IiwiaSIsIl9kYXRhIiwiX2xlbmd0aCIsImNudCIsImRpc3RhbmNlRm5zIiwiXyIsImdldE1lYXN1cmUiLCJzdGFydFJvdyIsImZsb29yIiwic3RhcnRDb2wiLCJtaSIsIm1qIiwiZGlzdGFuY2VWYWx1ZXMiLCJmbiIsInZhbHVlIiwicG9zdE1lc3NhZ2UiLCJlIiwiZXJyb3IiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJleHBvcnRzIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIm0iLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsInJlc3VsdCIsImNodW5rSWRzIiwicHJpb3JpdHkiLCJub3RGdWxmaWxsZWQiLCJJbmZpbml0eSIsImZ1bGZpbGxlZCIsImoiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJyIiwiZCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImNodW5rSWQiLCJQcm9taXNlIiwiYWxsIiwicHJvbWlzZXMiLCJ1IiwiZyIsImdsb2JhbFRoaXMiLCJ0aGlzIiwiRnVuY3Rpb24iLCJ3aW5kb3ciLCJvYmoiLCJwcm9wIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwic2NyaXB0VXJsIiwiaW1wb3J0U2NyaXB0cyIsImxvY2F0aW9uIiwiZG9jdW1lbnQiLCJjdXJyZW50U2NyaXB0Iiwic3JjIiwic2NyaXB0cyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiRXJyb3IiLCJyZXBsYWNlIiwicCIsImluc3RhbGxlZENodW5rcyIsImNodW5rTG9hZGluZ0dsb2JhbCIsInNlbGYiLCJwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiIsInB1c2giLCJiaW5kIiwibW9yZU1vZHVsZXMiLCJydW50aW1lIiwidGhlbiJdLCJzb3VyY2VSb290IjoiIn0=
1
+ var eda;(()=>{"use strict";var e,r,t={4664:(e,r,t)=>{var n;!function(e){e.EUCLIDEAN="EUCLIDEAN",e.MANHATTAN="MANHATTAN"}(n||(n={}));const o=e=>null==e;function a(e,r,t,n){if(t>e[e.length-1])return;const o=e.findIndex((e=>t<e));e.pop(),e.splice(o,0,t),r.pop(),r.splice(o,0,n)}var l=t(6361),s=t(9657);onmessage=async e=>{const{values:r,startIdx:t,endIdx:i,fnNames:c,opts:p,nNeighbours:f,weights:h,aggregationMethod:u}=e.data;try{const e=new Array(r[0].length).fill(null).map((()=>new Array(f).fill(-1))),g=new Array(r[0].length).fill(null).map((()=>new Array(f).fill(999999))),d=function(e,r){return e===n.MANHATTAN?e=>e.reduce(((e,t,n)=>e+t*r[n]),0):e=>{const t=e.reduce(((e,t,n)=>e+(t*r[n])**2),0);return Math.sqrt(t)}}(u,h),v=i-t;r.forEach(((e,t)=>{if((0,l.sQ)(c[t]))for(let n=0;n<e.length;++n)o(e[n])||(r[t][n]=new s.Z(r[t][n]._data,r[t][n]._length))}));let w=0;const m=new Array(c.length).fill(null).map(((e,r)=>new l.UH(c[r]).getMeasure(p[r]))),y=r[0].length-2-Math.floor(Math.sqrt(-8*t+4*r[0].length*(r[0].length-1)-7)/2-.5),A=t-r[0].length*y+Math.floor((y+1)*(y+2)/2);let b=y,x=A;for(;w<v;){const t=m.map(((e,t)=>o(r[t][b])||o(r[t][x])?1:e(r[t][b],r[t][x]))),n=1===t.length?t[0]:d(t);a(g[b],e[b],n,x),a(g[x],e[x],n,b),w++,x++,x===r[0].length&&(b++,x=b+1)}postMessage({knnDistances:g,knnIndexes:e})}catch(e){postMessage({error:e})}}}},n={};function o(e){var r=n[e];if(void 0!==r)return r.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,o),a.exports}o.m=t,o.x=()=>{var e=o.O(void 0,[483,361],(()=>o(4664)));return o.O(e)},e=[],o.O=(r,t,n,a)=>{if(!t){var l=1/0;for(p=0;p<e.length;p++){for(var[t,n,a]=e[p],s=!0,i=0;i<t.length;i++)(!1&a||l>=a)&&Object.keys(o.O).every((e=>o.O[e](t[i])))?t.splice(i--,1):(s=!1,a<l&&(l=a));if(s){e.splice(p--,1);var c=n();void 0!==c&&(r=c)}}return r}a=a||0;for(var p=e.length;p>0&&e[p-1][2]>a;p--)e[p]=e[p-1];e[p]=[t,n,a]},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce(((r,t)=>(o.f[t](e,r),r)),[])),o.u=e=>e+".js",o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),(()=>{var e;o.g.importScripts&&(e=o.g.location+"");var r=o.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&!e;)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{var e={664:1};o.f.i=(r,t)=>{e[r]||importScripts(o.p+o.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[n,a,l]=r;for(var s in a)o.o(a,s)&&(o.m[s]=a[s]);for(l&&l(o);n.length;)e[n.pop()]=1;t(r)}})(),r=o.x,o.x=()=>Promise.all([o.e(483),o.e(361)]).then(r);var a=o.x();eda=a})();
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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T0FBUyxFQUNuQzhHLEVBQTJCakcsRUFBSyxDLEtYbkI3QjFCLEVBQU9pRSxFQUFvQjlELEVBQy9COEQsRUFBb0I5RCxFQUFJLElBQ2hCNEYsUUFBUUMsSUFBSSxDQUNsQi9CLEVBQW9CSCxFQUFFLEtBQ3RCRyxFQUFvQkgsRUFBRSxPQUNwQmtFLEtBQUtoSSxHWUpULElBQUl5RSxFQUFzQlIsRUFBb0I5RCxJIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9jaHVuayBsb2FkZWQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9zdGFydHVwIGNodW5rIGRlcGVuZGVuY2llcyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGRhdGFncm9rLWxpYnJhcmllcy9tbC9zcmMvZGlzdGFuY2UtbWF0cml4L3R5cGVzLmpzIiwid2VicGFjazovL2VkYS8uL25vZGVfbW9kdWxlcy9AZGF0YWdyb2stbGlicmFyaWVzL21sL3NyYy9kaXN0YW5jZS1tYXRyaXgvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BkYXRhZ3Jvay1saWJyYXJpZXMvbWwvc3JjL2Rpc3RhbmNlLW1hdHJpeC9rbm4td29ya2VyLmpzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDQ4MyksXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDM2MSlcblx0XSkudGhlbihuZXh0KTtcbn07IiwiZXhwb3J0IHZhciBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcztcbihmdW5jdGlvbiAoRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMpIHtcbiAgICBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kc1tcIkVVQ0xJREVBTlwiXSA9IFwiRVVDTElERUFOXCI7XG4gICAgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHNbXCJNQU5IQVRUQU5cIl0gPSBcIk1BTkhBVFRBTlwiO1xufSkoRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMgfHwgKERpc3RhbmNlQWdncmVnYXRpb25NZXRob2RzID0ge30pKTtcbjtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRIbHdaWE11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjBlWEJsY3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hOUVVGTkxFTkJRVTRzU1VGQldTd3dRa0ZIVkR0QlFVaElMRmRCUVZrc01FSkJRVEJDTzBsQlEyeERMSEZFUVVGMVFpeERRVUZCTzBsQlEzWkNMSEZFUVVGMVFpeERRVUZCTzBGQlEzcENMRU5CUVVNc1JVRklVeXd3UWtGQk1FSXNTMEZCTVVJc01FSkJRVEJDTEZGQlIyNURPMEZCUVVFc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1WNGNHOXlkQ0JsYm5WdElFUnBjM1JoYm1ObFFXZG5jbVZuWVhScGIyNU5aWFJvYjJSeklIdGNiaUFnSUNCRlZVTk1TVVJGUVU0Z1BTQW5SVlZEVEVsRVJVRk9KeXhjYmlBZ0lDQk5RVTVJUVZSVVFVNGdQU0FuVFVGT1NFRlVWRUZPSnl4Y2JpQWdmVHRjYmx4dVpYaHdiM0owSUhSNWNHVWdSR2x6ZEdGdVkyVkJaMmR5WldkaGRHbHZiazFsZEdodlpDQTlJR3RsZVc5bUlIUjVjR1Z2WmlCRWFYTjBZVzVqWlVGblozSmxaMkYwYVc5dVRXVjBhRzlrY3p0Y2JpSmRmUT09IiwiaW1wb3J0IHsgRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMgfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCBjb25zdCBpc05pbCA9ICh4KSA9PiB4ID09PSBudWxsIHx8IHggPT09IHVuZGVmaW5lZDtcbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRTbWFsbGVyKGRpc3RhbmNlc0FyLCBpbmRleGVzLCBudW0sIGluZGV4KSB7XG4gICAgaWYgKG51bSA+IGRpc3RhbmNlc0FyW2Rpc3RhbmNlc0FyLmxlbmd0aCAtIDFdKVxuICAgICAgICByZXR1cm47XG4gICAgY29uc3QgbmV3UG9zaXRpb24gPSBkaXN0YW5jZXNBci5maW5kSW5kZXgoKHYpID0+IG51bSA8IHYpO1xuICAgIGRpc3RhbmNlc0FyLnBvcCgpO1xuICAgIGRpc3RhbmNlc0FyLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgbnVtKTtcbiAgICBpbmRleGVzLnBvcCgpO1xuICAgIGluZGV4ZXMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpbmRleCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0TGFyZ2VyKGRpc3RhbmNlc0FyLCBpbmRleGVzLCBudW0sIGluZGV4KSB7XG4gICAgaWYgKG51bSA8IGRpc3RhbmNlc0FyW2Rpc3RhbmNlc0FyLmxlbmd0aCAtIDFdKVxuICAgICAgICByZXR1cm47XG4gICAgY29uc3QgbmV3UG9zaXRpb24gPSBkaXN0YW5jZXNBci5maW5kSW5kZXgoKHYpID0+IG51bSA+IHYpO1xuICAgIGRpc3RhbmNlc0FyLnBvcCgpO1xuICAgIGRpc3RhbmNlc0FyLnNwbGljZShuZXdQb3NpdGlvbiwgMCwgbnVtKTtcbiAgICBpbmRleGVzLnBvcCgpO1xuICAgIGluZGV4ZXMuc3BsaWNlKG5ld1Bvc2l0aW9uLCAwLCBpbmRleCk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0QWdncmVnYXRpb25GdW5jdGlvbihhZ2dyZWdhdGlvbk1ldGhvZCwgd2VpZ2h0cykge1xuICAgIHN3aXRjaCAoYWdncmVnYXRpb25NZXRob2QpIHtcbiAgICAgICAgY2FzZSBEaXN0YW5jZUFnZ3JlZ2F0aW9uTWV0aG9kcy5NQU5IQVRUQU46XG4gICAgICAgICAgICByZXR1cm4gKHZzKSA9PiB2cy5yZWR1Y2UoKGFjYywgdmFsLCBpZHgpID0+IGFjYyArIHZhbCAqIHdlaWdodHNbaWR4XSwgMCk7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gKHZzKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZXVjbGlkZWFuXG4gICAgICAgICAgICAgICAgY29uc3Qgc3VtID0gdnMucmVkdWNlKChhY2MsIHZhbCwgaWR4KSA9PiBhY2MgKyAodmFsICogd2VpZ2h0c1tpZHhdKSAqKiAyLCAwKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0KHN1bSk7XG4gICAgICAgICAgICB9O1xuICAgIH1cbn1cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRYUnBiSE11YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SjFkR2xzY3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaVFVRkJRU3hQUVVGUExFVkJRVFJDTERCQ1FVRXdRaXhGUVVGRExFMUJRVTBzVTBGQlV5eERRVUZETzBGQlJUbEZMRTFCUVUwc1EwRkJReXhOUVVGTkxFdEJRVXNzUjBGQlJ5eERRVUZETEVOQlFVMHNSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJReXhMUVVGTExFbEJRVWtzU1VGQlNTeERRVUZETEV0QlFVc3NVMEZCVXl4RFFVRkRPMEZCUlM5RUxFMUJRVTBzVlVGQlZTeGhRVUZoTEVOQlFVTXNWMEZCY1VJc1JVRkJSU3hQUVVGcFFpeEZRVUZGTEVkQlFWY3NSVUZCUlN4TFFVRmhPMGxCUTJoSExFbEJRVWtzUjBGQlJ5eEhRVUZITEZkQlFWY3NRMEZCUXl4WFFVRlhMRU5CUVVNc1RVRkJUU3hIUVVGRExFTkJRVU1zUTBGQlF6dFJRVU42UXl4UFFVRlBPMGxCUlZRc1RVRkJUU3hYUVVGWExFZEJRVWNzVjBGQlZ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1JVRkJSU3hGUVVGRkxFTkJRVU1zUjBGQlJ5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUXpGRUxGZEJRVmNzUTBGQlF5eEhRVUZITEVWQlFVVXNRMEZCUXp0SlFVTnNRaXhYUVVGWExFTkJRVU1zVFVGQlRTeERRVUZETEZkQlFWY3NSVUZCUlN4RFFVRkRMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRGVFTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1JVRkJSU3hEUVVGRE8wbEJRMlFzVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlhMRVZCUVVVc1EwRkJReXhGUVVGRkxFdEJRVXNzUTBGQlF5eERRVUZETzBGQlEzaERMRU5CUVVNN1FVRkZSQ3hOUVVGTkxGVkJRVlVzV1VGQldTeERRVUZETEZkQlFYRkNMRVZCUVVVc1QwRkJhVUlzUlVGQlJTeEhRVUZYTEVWQlFVVXNTMEZCWVR0SlFVTXZSaXhKUVVGSkxFZEJRVWNzUjBGQlJ5eFhRVUZYTEVOQlFVTXNWMEZCVnl4RFFVRkRMRTFCUVUwc1IwRkJReXhEUVVGRExFTkJRVU03VVVGRGVrTXNUMEZCVHp0SlFVVlVMRTFCUVUwc1YwRkJWeXhIUVVGSExGZEJRVmNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1JVRkJSU3hEUVVGRExFZEJRVWNzUjBGQlJ5eERRVUZETEVOQlFVTXNRMEZCUXp0SlFVTXhSQ3hYUVVGWExFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdTVUZEYkVJc1YwRkJWeXhEUVVGRExFMUJRVTBzUTBGQlF5eFhRVUZYTEVWQlFVVXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRM2hETEU5QlFVOHNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJRenRKUVVOa0xFOUJRVThzUTBGQlF5eE5RVUZOTEVOQlFVTXNWMEZCVnl4RlFVRkZMRU5CUVVNc1JVRkJSU3hMUVVGTExFTkJRVU1zUTBGQlF6dEJRVU40UXl4RFFVRkRPMEZCUlVRc1RVRkJUU3hWUVVGVkxITkNRVUZ6UWl4RFFVTndReXhwUWtGQk5FTXNSVUZCUlN4UFFVRnBRanRKUVVVdlJDeFJRVUZSTEdsQ1FVRnBRaXhGUVVGRk8xRkJRM3BDTEV0QlFVc3NNRUpCUVRCQ0xFTkJRVU1zVTBGQlV6dFpRVU4yUXl4UFFVRlBMRU5CUVVNc1JVRkJXU3hGUVVGRkxFVkJRVVVzUTBGQlF5eEZRVUZGTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNSVUZCUlN4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFZEJRVWNzVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJReXhEUVVGRE8xRkJRM0pHTzFsQlEwVXNUMEZCVHl4RFFVRkRMRVZCUVZrc1JVRkJSU3hGUVVGRk8yZENRVU4wUWl4WlFVRlpPMmRDUVVOYUxFMUJRVTBzUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eEZRVUZGTEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1IwRkJSeXhIUVVGSExFTkJRVU1zUjBGQlJ5eEhRVUZITEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXp0blFrRkROMFVzVDBGQlR5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM2hDTEVOQlFVTXNRMEZCUXp0TFFVTk1PMEZCUTBnc1EwRkJReUlzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0I3UkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaQ3dnUkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaSE45SUdaeWIyMGdKeTR2ZEhsd1pYTW5PMXh1WEc1bGVIQnZjblFnWTI5dWMzUWdhWE5PYVd3Z1BTQW9lRG9nWVc1NUtTQTlQaUI0SUQwOVBTQnVkV3hzSUh4OElIZ2dQVDA5SUhWdVpHVm1hVzVsWkR0Y2JseHVaWGh3YjNKMElHWjFibU4wYVc5dUlHbHVjMlZ5ZEZOdFlXeHNaWElvWkdsemRHRnVZMlZ6UVhJNklHNTFiV0psY2x0ZExDQnBibVJsZUdWek9pQnVkVzFpWlhKYlhTd2diblZ0T2lCdWRXMWlaWElzSUdsdVpHVjRPaUJ1ZFcxaVpYSXBJSHRjYmlBZ2FXWWdLRzUxYlNBK0lHUnBjM1JoYm1ObGMwRnlXMlJwYzNSaGJtTmxjMEZ5TG14bGJtZDBhQzB4WFNsY2JpQWdJQ0J5WlhSMWNtNDdYRzVjYmlBZ1kyOXVjM1FnYm1WM1VHOXphWFJwYjI0Z1BTQmthWE4wWVc1alpYTkJjaTVtYVc1a1NXNWtaWGdvS0hZcElEMCtJRzUxYlNBOElIWXBPMXh1SUNCa2FYTjBZVzVqWlhOQmNpNXdiM0FvS1R0Y2JpQWdaR2x6ZEdGdVkyVnpRWEl1YzNCc2FXTmxLRzVsZDFCdmMybDBhVzl1TENBd0xDQnVkVzBwTzF4dUlDQnBibVJsZUdWekxuQnZjQ2dwTzF4dUlDQnBibVJsZUdWekxuTndiR2xqWlNodVpYZFFiM05wZEdsdmJpd2dNQ3dnYVc1a1pYZ3BPMXh1ZlZ4dVhHNWxlSEJ2Y25RZ1puVnVZM1JwYjI0Z2FXNXpaWEowVEdGeVoyVnlLR1JwYzNSaGJtTmxjMEZ5T2lCdWRXMWlaWEpiWFN3Z2FXNWtaWGhsY3pvZ2JuVnRZbVZ5VzEwc0lHNTFiVG9nYm5WdFltVnlMQ0JwYm1SbGVEb2diblZ0WW1WeUtTQjdYRzRnSUdsbUlDaHVkVzBnUENCa2FYTjBZVzVqWlhOQmNsdGthWE4wWVc1alpYTkJjaTVzWlc1bmRHZ3RNVjBwWEc0Z0lDQWdjbVYwZFhKdU8xeHVYRzRnSUdOdmJuTjBJRzVsZDFCdmMybDBhVzl1SUQwZ1pHbHpkR0Z1WTJWelFYSXVabWx1WkVsdVpHVjRLQ2gyS1NBOVBpQnVkVzBnUGlCMktUdGNiaUFnWkdsemRHRnVZMlZ6UVhJdWNHOXdLQ2s3WEc0Z0lHUnBjM1JoYm1ObGMwRnlMbk53YkdsalpTaHVaWGRRYjNOcGRHbHZiaXdnTUN3Z2JuVnRLVHRjYmlBZ2FXNWtaWGhsY3k1d2IzQW9LVHRjYmlBZ2FXNWtaWGhsY3k1emNHeHBZMlVvYm1WM1VHOXphWFJwYjI0c0lEQXNJR2x1WkdWNEtUdGNibjFjYmx4dVpYaHdiM0owSUdaMWJtTjBhVzl1SUdkbGRFRm5aM0psWjJGMGFXOXVSblZ1WTNScGIyNG9YRzRnSUdGblozSmxaMkYwYVc5dVRXVjBhRzlrT2lCRWFYTjBZVzVqWlVGblozSmxaMkYwYVc5dVRXVjBhRzlrTENCM1pXbG5hSFJ6T2lCdWRXMWlaWEpiWFZ4dUtUb2dLSFpoYkhWbGN6b2diblZ0WW1WeVcxMHBJRDArSUc1MWJXSmxjaUI3WEc0Z0lITjNhWFJqYUNBb1lXZG5jbVZuWVhScGIyNU5aWFJvYjJRcElIdGNiaUFnSUNCallYTmxJRVJwYzNSaGJtTmxRV2RuY21WbllYUnBiMjVOWlhSb2IyUnpMazFCVGtoQlZGUkJUanBjYmlBZ0lDQWdJSEpsZEhWeWJpQW9kbk02SUc1MWJXSmxjbHRkS1NBOVBpQjJjeTV5WldSMVkyVW9LR0ZqWXl3Z2RtRnNMQ0JwWkhncElEMCtJR0ZqWXlBcklIWmhiQ0FxSUhkbGFXZG9kSE5iYVdSNFhTd2dNQ2s3WEc0Z0lDQWdaR1ZtWVhWc2REcGNiaUFnSUNBZ0lISmxkSFZ5YmlBb2RuTTZJRzUxYldKbGNsdGRLU0E5UGlCN1hHNGdJQ0FnSUNBZ0lDOHZJR1YxWTJ4cFpHVmhibHh1SUNBZ0lDQWdJQ0JqYjI1emRDQnpkVzBnUFNCMmN5NXlaV1IxWTJVb0tHRmpZeXdnZG1Gc0xDQnBaSGdwSUQwK0lHRmpZeUFySUNoMllXd2dLaUIzWldsbmFIUnpXMmxrZUYwcElDb3FJRElzSURBcE8xeHVJQ0FnSUNBZ0lDQnlaWFIxY200Z1RXRjBhQzV6Y1hKMEtITjFiU2s3WEc0Z0lDQWdJQ0I5TzF4dUlDQjlYRzU5WEc0aVhYMD0iLCJpbXBvcnQgeyBnZXRBZ2dyZWdhdGlvbkZ1bmN0aW9uLCBpbnNlcnRTbWFsbGVyLCBpc05pbCB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IHsgTWVhc3VyZSwgaXNCaXRBcnJheU1ldHJpYyB9IGZyb20gJy4uL3R5cGVkLW1ldHJpY3MnO1xuaW1wb3J0IEJpdEFycmF5IGZyb20gJ0BkYXRhZ3Jvay1saWJyYXJpZXMvdXRpbHMvc3JjL2JpdC1hcnJheSc7XG5vbm1lc3NhZ2UgPSBhc3luYyAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7IHZhbHVlcywgc3RhcnRJZHgsIGVuZElkeCwgZm5OYW1lcywgb3B0cywgbk5laWdoYm91cnMsIHdlaWdodHMsIGFnZ3JlZ2F0aW9uTWV0aG9kIH0gPSBldmVudC5kYXRhO1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGtubkluZGV4ZXMgPSBuZXcgQXJyYXkodmFsdWVzWzBdLmxlbmd0aCkuZmlsbChudWxsKS5tYXAoKCkgPT4gbmV3IEFycmF5KG5OZWlnaGJvdXJzKS5maWxsKC0xKSk7XG4gICAgICAgIGNvbnN0IGtubkRpc3RhbmNlcyA9IG5ldyBBcnJheSh2YWx1ZXNbMF0ubGVuZ3RoKS5maWxsKG51bGwpLm1hcCgoKSA9PiBuZXcgQXJyYXkobk5laWdoYm91cnMpLmZpbGwoOTk5OTk5KSk7XG4gICAgICAgIGNvbnN0IGFnZ3JlZ2F0ZSA9IGdldEFnZ3JlZ2F0aW9uRnVuY3Rpb24oYWdncmVnYXRpb25NZXRob2QsIHdlaWdodHMpO1xuICAgICAgICBjb25zdCBjaHVua1NpemUgPSBlbmRJZHggLSBzdGFydElkeDtcbiAgICAgICAgdmFsdWVzLmZvckVhY2goKHYsIGNvbElkeCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzQml0QXJyYXlNZXRyaWMoZm5OYW1lc1tjb2xJZHhdKSkge1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdi5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNOaWwodltpXSkpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVzW2NvbElkeF1baV0gPSBuZXcgQml0QXJyYXkodmFsdWVzW2NvbElkeF1baV0uX2RhdGEsIHZhbHVlc1tjb2xJZHhdW2ldLl9sZW5ndGgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGxldCBjbnQgPSAwO1xuICAgICAgICBjb25zdCBkaXN0YW5jZUZucyA9IG5ldyBBcnJheShmbk5hbWVzLmxlbmd0aCkuZmlsbChudWxsKS5tYXAoKF8sIGkpID0+IG5ldyBNZWFzdXJlKGZuTmFtZXNbaV0pLmdldE1lYXN1cmUob3B0c1tpXSkpO1xuICAgICAgICBjb25zdCBzdGFydFJvdyA9IHZhbHVlc1swXS5sZW5ndGggLSAyIC0gTWF0aC5mbG9vcihNYXRoLnNxcnQoLTggKiBzdGFydElkeCArIDQgKiB2YWx1ZXNbMF0ubGVuZ3RoICogKHZhbHVlc1swXS5sZW5ndGggLSAxKSAtIDcpIC8gMiAtIDAuNSk7XG4gICAgICAgIGNvbnN0IHN0YXJ0Q29sID0gc3RhcnRJZHggLSB2YWx1ZXNbMF0ubGVuZ3RoICogc3RhcnRSb3cgKyBNYXRoLmZsb29yKChzdGFydFJvdyArIDEpICogKHN0YXJ0Um93ICsgMikgLyAyKTtcbiAgICAgICAgbGV0IG1pID0gc3RhcnRSb3c7XG4gICAgICAgIGxldCBtaiA9IHN0YXJ0Q29sO1xuICAgICAgICB3aGlsZSAoY250IDwgY2h1bmtTaXplKSB7XG4gICAgICAgICAgICAvL2NvbnN0IHZhbHVlID0gc2VxMUxpc3RbbWldICYmIHNlcTFMaXN0W21qXSA/IGhhbW1pbmcoc2VxMUxpc3RbbWldLCBzZXExTGlzdFttal0pIDogMDtcbiAgICAgICAgICAgIGNvbnN0IGRpc3RhbmNlVmFsdWVzID0gZGlzdGFuY2VGbnMubWFwKChmbiwgaWR4KSA9PiAhaXNOaWwodmFsdWVzW2lkeF1bbWldKSAmJiAhaXNOaWwodmFsdWVzW2lkeF1bbWpdKSA/XG4gICAgICAgICAgICAgICAgZm4odmFsdWVzW2lkeF1bbWldLCB2YWx1ZXNbaWR4XVttal0pIDogMSk7XG4gICAgICAgICAgICAvLyBjb25zdCB2YWx1ZSA9ICFpc05pbCh2YWx1ZXNbbWldKSAmJiAhaXNOaWwodmFsdWVzW21qXSkgP1xuICAgICAgICAgICAgLy8gICBkaXN0YW5jZUZuKHZhbHVlc1ttaV0sIHZhbHVlc1ttal0pIDogMTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZGlzdGFuY2VWYWx1ZXMubGVuZ3RoID09PSAxID8gZGlzdGFuY2VWYWx1ZXNbMF0gOiBhZ2dyZWdhdGUoZGlzdGFuY2VWYWx1ZXMpO1xuICAgICAgICAgICAgaW5zZXJ0U21hbGxlcihrbm5EaXN0YW5jZXNbbWldLCBrbm5JbmRleGVzW21pXSwgdmFsdWUsIG1qKTtcbiAgICAgICAgICAgIGluc2VydFNtYWxsZXIoa25uRGlzdGFuY2VzW21qXSwga25uSW5kZXhlc1ttal0sIHZhbHVlLCBtaSk7XG4gICAgICAgICAgICBjbnQrKztcbiAgICAgICAgICAgIG1qKys7XG4gICAgICAgICAgICBpZiAobWogPT09IHZhbHVlc1swXS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBtaSsrO1xuICAgICAgICAgICAgICAgIG1qID0gbWkgKyAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBvc3RNZXNzYWdlKHsga25uRGlzdGFuY2VzLCBrbm5JbmRleGVzIH0pO1xuICAgIH1cbiAgICBjYXRjaCAoZSkge1xuICAgICAgICBwb3N0TWVzc2FnZSh7IGVycm9yOiBlIH0pO1xuICAgIH1cbn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhMjV1TFhkdmNtdGxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYkltdHViaTEzYjNKclpYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJa0ZCUVVFc1QwRkJUeXhGUVVGRExITkNRVUZ6UWl4RlFVRkZMR0ZCUVdFc1JVRkJSU3hMUVVGTExFVkJRVU1zVFVGQlRTeFRRVUZUTEVOQlFVTTdRVUZEY2tVc1QwRkJUeXhGUVVGbExFOUJRVThzUlVGQlJTeG5Ra0ZCWjBJc1JVRkJReXhOUVVGTkxHdENRVUZyUWl4RFFVRkRPMEZCUTNwRkxFOUJRVThzVVVGQlVTeE5RVUZOTEhsRFFVRjVReXhEUVVGRE8wRkJSeTlFTEZOQlFWTXNSMEZCUnl4TFFVRkxMRVZCUVVVc1MwRkJTeXhGUVVGRkxFVkJRVVU3U1VGRE1VSXNUVUZCVFN4RlFVRkRMRTFCUVUwc1JVRkJSU3hSUVVGUkxFVkJRVVVzVFVGQlRTeEZRVUZGTEU5QlFVOHNSVUZCUlN4SlFVRkpMRVZCUVVVc1YwRkJWeXhGUVVGRkxFOUJRVThzUlVGQlJTeHBRa0ZCYVVJc1JVRkJReXhIUVVWcFFpeExRVUZMTEVOQlFVTXNTVUZCU1N4RFFVRkRPMGxCUTNCSUxFbEJRVWs3VVVGRFJpeE5RVUZOTEZWQlFWVXNSMEZCUnl4SlFVRkpMRXRCUVVzc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1NVRkJTU3hEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhKUVVGSkxFdEJRVXNzUTBGQlV5eFhRVUZYTEVOQlFVTXNRMEZCUXl4SlFVRkpMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETzFGQlF6ZEhMRTFCUVUwc1dVRkJXU3hIUVVGSExFbEJRVWtzUzBGQlN5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeERRVUZETEVsQlFVa3NTMEZCU3l4RFFVRlRMRmRCUVZjc1EwRkJReXhEUVVGRExFbEJRVWtzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTI1SUxFMUJRVTBzVTBGQlV5eEhRVUZITEhOQ1FVRnpRaXhEUVVGRExHbENRVUZwUWl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRM0pGTEUxQlFVMHNVMEZCVXl4SFFVRkhMRTFCUVUwc1IwRkJSeXhSUVVGUkxFTkJRVU03VVVGRGNFTXNUVUZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRExFTkJRVU1zUlVGQlJTeE5RVUZOTEVWQlFVVXNSVUZCUlR0WlFVTXpRaXhKUVVGSkxHZENRVUZuUWl4RFFVRkRMRTlCUVU4c1EwRkJReXhOUVVGTkxFTkJRVU1zUTBGQlF5eEZRVUZGTzJkQ1FVTnlReXhMUVVGTExFbEJRVWtzUTBGQlF5eEhRVUZITEVOQlFVTXNSVUZCUlN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFMUJRVTBzUlVGQlJTeEZRVUZGTEVOQlFVTXNSVUZCUlR0dlFrRkRha01zU1VGQlNTeExRVUZMTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRE8zZENRVUZGTEZOQlFWTTdiMEpCUXpGQ0xFMUJRVTBzUTBGQlF5eE5RVUZOTEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1IwRkJSeXhKUVVGSkxGRkJRVkVzUTBGQlF5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eEZRVUZGTEUxQlFVMHNRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFBRVUZQTEVOQlFVTXNRMEZCUXp0cFFrRkRkRVk3WVVGRFJqdFJRVU5JTEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUTBnc1NVRkJTU3hIUVVGSExFZEJRVWNzUTBGQlF5eERRVUZETzFGQlExb3NUVUZCVFN4WFFVRlhMRWRCUVVjc1NVRkJTU3hMUVVGTExFTkJRVU1zVDBGQlR5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRMRVZCUVVVc1EwRkJReXhGUVVGRkxFVkJRVVVzUTBGQlF5eEpRVUZKTEU5QlFVOHNRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFZRVUZWTEVOQlFVTXNTVUZCU1N4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF6dFJRVU53U0N4TlFVRk5MRkZCUVZFc1IwRkJSeXhOUVVGTkxFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNUVUZCVFN4SFFVRkhMRU5CUVVNc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVU5vUkN4SlFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITEZGQlFWRXNSMEZCUnl4RFFVRkRMRWRCUVVjc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSMEZCUnl4RFFVRkRMRTFCUVUwc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eE5RVUZOTEVkQlFVY3NRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpGR0xFMUJRVTBzVVVGQlVTeEhRVUZITEZGQlFWRXNSMEZCUnl4TlFVRk5MRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zVFVGQlRTeEhRVUZITEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zVVVGQlVTeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXl4RFFVRkRPMUZCUXpGSExFbEJRVWtzUlVGQlJTeEhRVUZITEZGQlFWRXNRMEZCUXp0UlFVTnNRaXhKUVVGSkxFVkJRVVVzUjBGQlJ5eFJRVUZSTEVOQlFVTTdVVUZEYkVJc1QwRkJUeXhIUVVGSExFZEJRVWNzVTBGQlV5eEZRVUZGTzFsQlEzUkNMSFZHUVVGMVJqdFpRVU4yUml4TlFVRk5MR05CUVdNc1IwRkJSeXhYUVVGWExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTXNSVUZCUlN4RlFVRkZMRWRCUVVjc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF5eExRVUZMTEVOQlFVTXNUVUZCVFN4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVsQlFVa3NRMEZCUXl4TFFVRkxMRU5CUVVNc1RVRkJUU3hEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRuUWtGRGRFY3NSVUZCUlN4RFFVRkRMRTFCUVUwc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEZRVUZGTEVOQlFVTXNSVUZCUlN4TlFVRk5MRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU1zUlVGQlJTeERRVUZETEVOQlFVTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03V1VGRE5VTXNNa1JCUVRKRU8xbEJRek5FTERSRFFVRTBRenRaUVVNMVF5eE5RVUZOTEV0QlFVc3NSMEZCUnl4alFVRmpMRU5CUVVNc1RVRkJUU3hMUVVGTExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlF5eFRRVUZUTEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNN1dVRkRNVVlzWVVGQllTeERRVUZETEZsQlFWa3NRMEZCUXl4RlFVRkZMRU5CUVVNc1JVRkJSU3hWUVVGVkxFTkJRVU1zUlVGQlJTeERRVUZETEVWQlFVVXNTMEZCU3l4RlFVRkZMRVZCUVVVc1EwRkJReXhEUVVGRE8xbEJRek5FTEdGQlFXRXNRMEZCUXl4WlFVRlpMRU5CUVVNc1JVRkJSU3hEUVVGRExFVkJRVVVzVlVGQlZTeERRVUZETEVWQlFVVXNRMEZCUXl4RlFVRkZMRXRCUVVzc1JVRkJSU3hGUVVGRkxFTkJRVU1zUTBGQlF6dFpRVVV6UkN4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVOT0xFVkJRVVVzUlVGQlJTeERRVUZETzFsQlEwd3NTVUZCU1N4RlFVRkZMRXRCUVVzc1RVRkJUU3hEUVVGRExFTkJRVU1zUTBGQlF5eERRVUZETEUxQlFVMHNSVUZCUlR0blFrRkRNMElzUlVGQlJTeEZRVUZGTEVOQlFVTTdaMEpCUTB3c1JVRkJSU3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdZVUZEWWp0VFFVTkdPMUZCUlVRc1YwRkJWeXhEUVVGRExFVkJRVU1zV1VGQldTeEZRVUZGTEZWQlFWVXNSVUZCUXl4RFFVRkRMRU5CUVVNN1MwRkRla003U1VGQlF5eFBRVUZQTEVOQlFVTXNSVUZCUlR0UlFVTldMRmRCUVZjc1EwRkJReXhGUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETEVWQlFVTXNRMEZCUXl4RFFVRkRPMHRCUTNwQ08wRkJRMGdzUTBGQlF5eERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUh0blpYUkJaMmR5WldkaGRHbHZia1oxYm1OMGFXOXVMQ0JwYm5ObGNuUlRiV0ZzYkdWeUxDQnBjMDVwYkgwZ1puSnZiU0FuTGk5MWRHbHNjeWM3WEc1cGJYQnZjblFnZTB0dWIzZHVUV1YwY21samN5d2dUV1ZoYzNWeVpTd2dhWE5DYVhSQmNuSmhlVTFsZEhKcFkzMGdabkp2YlNBbkxpNHZkSGx3WldRdGJXVjBjbWxqY3ljN1hHNXBiWEJ2Y25RZ1FtbDBRWEp5WVhrZ1puSnZiU0FuUUdSaGRHRm5jbTlyTFd4cFluSmhjbWxsY3k5MWRHbHNjeTl6Y21NdlltbDBMV0Z5Y21GNUp6dGNibWx0Y0c5eWRDQjdSR2x6ZEdGdVkyVkJaMmR5WldkaGRHbHZiazFsZEdodlpIMGdabkp2YlNBbkxpOTBlWEJsY3ljN1hHNWNibTl1YldWemMyRm5aU0E5SUdGemVXNWpJQ2hsZG1WdWRDa2dQVDRnZTF4dUlDQmpiMjV6ZENCN2RtRnNkV1Z6TENCemRHRnlkRWxrZUN3Z1pXNWtTV1I0TENCbWJrNWhiV1Z6TENCdmNIUnpMQ0J1VG1WcFoyaGliM1Z5Y3l3Z2QyVnBaMmgwY3l3Z1lXZG5jbVZuWVhScGIyNU5aWFJvYjJSOU9seHVJQ0FnSUh0MllXeDFaWE02SUVGeWNtRjVQR0Z1ZVZ0ZFBpd2djM1JoY25SSlpIZzZJRzUxYldKbGNpd2daVzVrU1dSNE9pQnVkVzFpWlhJc0lHWnVUbUZ0WlhNNklFdHViM2R1VFdWMGNtbGpjMXRkTEZ4dUlDQWdJQ0FnYjNCMGN6b2dZVzU1VzEwc0lHNU9aV2xuYUdKdmRYSnpPaUJ1ZFcxaVpYSXNJSGRsYVdkb2RITTZJRzUxYldKbGNsdGRMQ0JoWjJkeVpXZGhkR2x2YmsxbGRHaHZaRG9nUkdsemRHRnVZMlZCWjJkeVpXZGhkR2x2YmsxbGRHaHZaSDBnUFNCbGRtVnVkQzVrWVhSaE8xeHVJQ0IwY25rZ2UxeHVJQ0FnSUdOdmJuTjBJR3R1YmtsdVpHVjRaWE1nUFNCdVpYY2dRWEp5WVhrb2RtRnNkV1Z6V3pCZExteGxibWQwYUNrdVptbHNiQ2h1ZFd4c0tTNXRZWEFvS0NrZ1BUNGdibVYzSUVGeWNtRjVQRzUxYldKbGNqNG9iazVsYVdkb1ltOTFjbk1wTG1acGJHd29MVEVwS1R0Y2JpQWdJQ0JqYjI1emRDQnJibTVFYVhOMFlXNWpaWE1nUFNCdVpYY2dRWEp5WVhrb2RtRnNkV1Z6V3pCZExteGxibWQwYUNrdVptbHNiQ2h1ZFd4c0tTNXRZWEFvS0NrZ1BUNGdibVYzSUVGeWNtRjVQRzUxYldKbGNqNG9iazVsYVdkb1ltOTFjbk1wTG1acGJHd29PVGs1T1RrNUtTazdYRzRnSUNBZ1kyOXVjM1FnWVdkbmNtVm5ZWFJsSUQwZ1oyVjBRV2RuY21WbllYUnBiMjVHZFc1amRHbHZiaWhoWjJkeVpXZGhkR2x2YmsxbGRHaHZaQ3dnZDJWcFoyaDBjeWs3WEc0Z0lDQWdZMjl1YzNRZ1kyaDFibXRUYVhwbElEMGdaVzVrU1dSNElDMGdjM1JoY25SSlpIZzdYRzRnSUNBZ2RtRnNkV1Z6TG1admNrVmhZMmdvS0hZc0lHTnZiRWxrZUNrZ1BUNGdlMXh1SUNBZ0lDQWdhV1lnS0dselFtbDBRWEp5WVhsTlpYUnlhV01vWm01T1lXMWxjMXRqYjJ4SlpIaGRLU2tnZTF4dUlDQWdJQ0FnSUNCbWIzSWdLR3hsZENCcElEMGdNRHNnYVNBOElIWXViR1Z1WjNSb095QXJLMmtwSUh0Y2JpQWdJQ0FnSUNBZ0lDQnBaaUFvYVhOT2FXd29kbHRwWFNrcElHTnZiblJwYm5WbE8xeHVJQ0FnSUNBZ0lDQWdJSFpoYkhWbGMxdGpiMnhKWkhoZFcybGRJRDBnYm1WM0lFSnBkRUZ5Y21GNUtIWmhiSFZsYzF0amIyeEpaSGhkVzJsZExsOWtZWFJoTENCMllXeDFaWE5iWTI5c1NXUjRYVnRwWFM1ZmJHVnVaM1JvS1R0Y2JpQWdJQ0FnSUNBZ2ZWeHVJQ0FnSUNBZ2ZWeHVJQ0FnSUgwcE8xeHVJQ0FnSUd4bGRDQmpiblFnUFNBd08xeHVJQ0FnSUdOdmJuTjBJR1JwYzNSaGJtTmxSbTV6SUQwZ2JtVjNJRUZ5Y21GNUtHWnVUbUZ0WlhNdWJHVnVaM1JvS1M1bWFXeHNLRzUxYkd3cExtMWhjQ2dvWHl3Z2FTa2dQVDRnYm1WM0lFMWxZWE4xY21Vb1ptNU9ZVzFsYzF0cFhTa3VaMlYwVFdWaGMzVnlaU2h2Y0hSelcybGRLU2s3WEc0Z0lDQWdZMjl1YzNRZ2MzUmhjblJTYjNjZ1BTQjJZV3gxWlhOYk1GMHViR1Z1WjNSb0lDMGdNaUF0SUUxaGRHZ3VabXh2YjNJb1hHNGdJQ0FnSUNCTllYUm9Mbk54Y25Rb0xUZ2dLaUJ6ZEdGeWRFbGtlQ0FySURRZ0tpQjJZV3gxWlhOYk1GMHViR1Z1WjNSb0lDb2dLSFpoYkhWbGMxc3dYUzVzWlc1bmRHZ2dMU0F4S1NBdElEY3BJQzhnTWlBdElEQXVOU2s3WEc0Z0lDQWdZMjl1YzNRZ2MzUmhjblJEYjJ3Z1BTQnpkR0Z5ZEVsa2VDQXRJSFpoYkhWbGMxc3dYUzVzWlc1bmRHZ2dLaUJ6ZEdGeWRGSnZkeUFySUUxaGRHZ3VabXh2YjNJb0tITjBZWEowVW05M0lDc2dNU2tnS2lBb2MzUmhjblJTYjNjZ0t5QXlLU0F2SURJcE8xeHVJQ0FnSUd4bGRDQnRhU0E5SUhOMFlYSjBVbTkzTzF4dUlDQWdJR3hsZENCdGFpQTlJSE4wWVhKMFEyOXNPMXh1SUNBZ0lIZG9hV3hsSUNoamJuUWdQQ0JqYUhWdWExTnBlbVVwSUh0Y2JpQWdJQ0FnSUM4dlkyOXVjM1FnZG1Gc2RXVWdQU0J6WlhFeFRHbHpkRnR0YVYwZ0ppWWdjMlZ4TVV4cGMzUmJiV3BkSUQ4Z2FHRnRiV2x1WnloelpYRXhUR2x6ZEZ0dGFWMHNJSE5sY1RGTWFYTjBXMjFxWFNrZ09pQXdPMXh1SUNBZ0lDQWdZMjl1YzNRZ1pHbHpkR0Z1WTJWV1lXeDFaWE1nUFNCa2FYTjBZVzVqWlVadWN5NXRZWEFvS0dadUxDQnBaSGdwSUQwK0lDRnBjMDVwYkNoMllXeDFaWE5iYVdSNFhWdHRhVjBwSUNZbUlDRnBjMDVwYkNoMllXeDFaWE5iYVdSNFhWdHRhbDBwSUQ5Y2JpQWdJQ0FnSUNBZ1ptNG9kbUZzZFdWelcybGtlRjFiYldsZExDQjJZV3gxWlhOYmFXUjRYVnR0YWwwcElEb2dNU2s3WEc0Z0lDQWdJQ0F2THlCamIyNXpkQ0IyWVd4MVpTQTlJQ0ZwYzA1cGJDaDJZV3gxWlhOYmJXbGRLU0FtSmlBaGFYTk9hV3dvZG1Gc2RXVnpXMjFxWFNrZ1AxeHVJQ0FnSUNBZ0x5OGdJQ0JrYVhOMFlXNWpaVVp1S0haaGJIVmxjMXR0YVYwc0lIWmhiSFZsYzF0dGFsMHBJRG9nTVR0Y2JpQWdJQ0FnSUdOdmJuTjBJSFpoYkhWbElEMGdaR2x6ZEdGdVkyVldZV3gxWlhNdWJHVnVaM1JvSUQwOVBTQXhJRDhnWkdsemRHRnVZMlZXWVd4MVpYTmJNRjBnT2lCaFoyZHlaV2RoZEdVb1pHbHpkR0Z1WTJWV1lXeDFaWE1wTzF4dUlDQWdJQ0FnYVc1elpYSjBVMjFoYkd4bGNpaHJibTVFYVhOMFlXNWpaWE5iYldsZExDQnJibTVKYm1SbGVHVnpXMjFwWFN3Z2RtRnNkV1VzSUcxcUtUdGNiaUFnSUNBZ0lHbHVjMlZ5ZEZOdFlXeHNaWElvYTI1dVJHbHpkR0Z1WTJWelcyMXFYU3dnYTI1dVNXNWtaWGhsYzF0dGFsMHNJSFpoYkhWbExDQnRhU2s3WEc1Y2JpQWdJQ0FnSUdOdWRDc3JPMXh1SUNBZ0lDQWdiV29yS3p0Y2JpQWdJQ0FnSUdsbUlDaHRhaUE5UFQwZ2RtRnNkV1Z6V3pCZExteGxibWQwYUNrZ2UxeHVJQ0FnSUNBZ0lDQnRhU3NyTzF4dUlDQWdJQ0FnSUNCdGFpQTlJRzFwSUNzZ01UdGNiaUFnSUNBZ0lIMWNiaUFnSUNCOVhHNWNiaUFnSUNCd2IzTjBUV1Z6YzJGblpTaDdhMjV1UkdsemRHRnVZMlZ6TENCcmJtNUpibVJsZUdWemZTazdYRzRnSUgwZ1kyRjBZMmdnS0dVcElIdGNiaUFnSUNCd2IzTjBUV1Z6YzJGblpTaDdaWEp5YjNJNklHVjlLVHRjYmlBZ2ZWeHVmVHRjYmlKZGZRPT0iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbi8vIHRoZSBzdGFydHVwIGZ1bmN0aW9uXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuXHQvLyBUaGlzIGVudHJ5IG1vZHVsZSBkZXBlbmRzIG9uIG90aGVyIGxvYWRlZCBjaHVua3MgYW5kIGV4ZWN1dGlvbiBuZWVkIHRvIGJlIGRlbGF5ZWRcblx0dmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbNDgzLDM2MV0sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2NjQpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDY2NDogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rZWRhXCJdID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSB8fCBbXTtcbnZhciBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiA9IGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gaW5zdGFsbENodW5rO1xuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0IiwiLy8gcnVuIHN0YXJ0dXBcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy54KCk7XG4iXSwibmFtZXMiOlsiZGVmZXJyZWQiLCJuZXh0IiwiRGlzdGFuY2VBZ2dyZWdhdGlvbk1ldGhvZHMiLCJpc05pbCIsIngiLCJpbnNlcnRTbWFsbGVyIiwiZGlzdGFuY2VzQXIiLCJpbmRleGVzIiwibnVtIiwiaW5kZXgiLCJsZW5ndGgiLCJuZXdQb3NpdGlvbiIsImZpbmRJbmRleCIsInYiLCJwb3AiLCJzcGxpY2UiLCJvbm1lc3NhZ2UiLCJhc3luYyIsImV2ZW50IiwidmFsdWVzIiwic3RhcnRJZHgiLCJlbmRJZHgiLCJmbk5hbWVzIiwib3B0cyIsIm5OZWlnaGJvdXJzIiwid2VpZ2h0cyIsImFnZ3JlZ2F0aW9uTWV0aG9kIiwiZGF0YSIsImtubkluZGV4ZXMiLCJBcnJheSIsImZpbGwiLCJtYXAiLCJrbm5EaXN0YW5jZXMiLCJhZ2dyZWdhdGUiLCJNQU5IQVRUQU4iLCJ2cyIsInJlZHVjZSIsImFjYyIsInZhbCIsImlkeCIsInN1bSIsIk1hdGgiLCJzcXJ0IiwiZ2V0QWdncmVnYXRpb25GdW5jdGlvbiIsImNodW5rU2l6ZSIsImZvckVhY2giLCJjb2xJZHgiLCJpIiwiX2RhdGEiLCJfbGVuZ3RoIiwiY250IiwiZGlzdGFuY2VGbnMiLCJfIiwiZ2V0TWVhc3VyZSIsInN0YXJ0Um93IiwiZmxvb3IiLCJzdGFydENvbCIsIm1pIiwibWoiLCJkaXN0YW5jZVZhbHVlcyIsImZuIiwidmFsdWUiLCJwb3N0TWVzc2FnZSIsImUiLCJlcnJvciIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsInVuZGVmaW5lZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwibSIsIl9fd2VicGFja19leHBvcnRzX18iLCJPIiwicmVzdWx0IiwiY2h1bmtJZHMiLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiZnVsZmlsbGVkIiwiaiIsIk9iamVjdCIsImtleXMiLCJldmVyeSIsImtleSIsInIiLCJkIiwiZGVmaW5pdGlvbiIsIm8iLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJmIiwiY2h1bmtJZCIsIlByb21pc2UiLCJhbGwiLCJwcm9taXNlcyIsInUiLCJnIiwiZ2xvYmFsVGhpcyIsInRoaXMiLCJGdW5jdGlvbiIsIndpbmRvdyIsIm9iaiIsInByb3AiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJkb2N1bWVudCIsImN1cnJlbnRTY3JpcHQiLCJzcmMiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJFcnJvciIsInJlcGxhY2UiLCJwIiwiaW5zdGFsbGVkQ2h1bmtzIiwiY2h1bmtMb2FkaW5nR2xvYmFsIiwic2VsZiIsInBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uIiwicHVzaCIsImJpbmQiLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiLCJ0aGVuIl0sInNvdXJjZVJvb3QiOiIifQ==
package/dist/694.js CHANGED
@@ -1,2 +1,2 @@
1
- var eda;(()=>{"use strict";var e,r,t={7694:(e,r,t)=>{var o=t(4221);onmessage=function(e){return r=this,t=void 0,a=function*(){const r=new o.u(e.data.options).fit(e.data.data);postMessage({embeddings:r})},new((n=void 0)||(n=Promise))((function(e,o){function i(e){try{s(a.next(e))}catch(e){o(e)}}function c(e){try{s(a.throw(e))}catch(e){o(e)}}function s(r){var t;r.done?e(r.value):(t=r.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}s((a=a.apply(r,t||[])).next())}));var r,t,n,a}}},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var a=o[e]={exports:{}};return t[e].call(a.exports,a,a.exports,n),a.exports}n.m=t,n.x=()=>{var e=n.O(void 0,[972,221],(()=>n(7694)));return n.O(e)},e=[],n.O=(r,t,o,a)=>{if(!t){var i=1/0;for(p=0;p<e.length;p++){for(var[t,o,a]=e[p],c=!0,s=0;s<t.length;s++)(!1&a||i>=a)&&Object.keys(n.O).every((e=>n.O[e](t[s])))?t.splice(s--,1):(c=!1,a<i&&(i=a));if(c){e.splice(p--,1);var u=o();void 0!==u&&(r=u)}}return r}a=a||0;for(var p=e.length;p>0&&e[p-1][2]>a;p--)e[p]=e[p-1];e[p]=[t,o,a]},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>e+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var r=n.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!e;)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={694:1};n.f.i=(r,t)=>{e[r]||importScripts(n.p+n.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[o,a,i]=r;for(var c in a)n.o(a,c)&&(n.m[c]=a[c]);for(i&&i(n);o.length;)e[o.pop()]=1;t(r)}})(),r=n.x,n.x=()=>Promise.all([n.e(972),n.e(221)]).then(r);var a=n.x();eda=a})();
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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VixJQURBLElBQUlELEVBQUlxQyxFQUFRcEMsT0FBUyxFQUNsQkQsR0FBSyxJQUFNK0IsR0FBV0EsRUFBWU0sRUFBUXJDLEtBQUtvQyxHQUV4RCxDQUlELElBQUtMLEVBQVcsTUFBTSxJQUFJUSxNQUFNLHlEQUNoQ1IsRUFBWUEsRUFBVVMsUUFBUSxPQUFRLElBQUlBLFFBQVEsUUFBUyxJQUFJQSxRQUFRLFlBQWEsS0FDcEZ6RCxFQUFvQjBELEVBQUlWLEMsV0NkeEIsSUFBSVcsRUFBa0IsQ0FDckIsSUFBSyxHQWdCTjNELEVBQW9CZ0MsRUFBRWYsRUFBSSxDQUFDZ0IsRUFBU0csS0FFL0J1QixFQUFnQjFCLElBRWxCZ0IsY0FBY2pELEVBQW9CMEQsRUFBSTFELEVBQW9CcUMsRUFBRUosR0FFOUQsRUFHRCxJQUFJMkIsRUFBcUJDLEtBQXNCLGdCQUFJQSxLQUFzQixpQkFBSyxHQUMxRUMsRUFBNkJGLEVBQW1CRyxLQUFLQyxLQUFLSixHQUM5REEsRUFBbUJHLEtBdkJDakYsSUFDbkIsSUFBSzhCLEVBQVVxRCxFQUFhQyxHQUFXcEYsRUFDdkMsSUFBSSxJQUFJbUIsS0FBWWdFLEVBQ2hCakUsRUFBb0I0QixFQUFFcUMsRUFBYWhFLEtBQ3JDRCxFQUFvQlEsRUFBRVAsR0FBWWdFLEVBQVloRSxJQUloRCxJQURHaUUsR0FBU0EsRUFBUWxFLEdBQ2RZLEVBQVNNLFFBQ2R5QyxFQUFnQi9DLEVBQVN1RCxPQUFTLEVBQ25DTCxFQUEyQmhGLEVBQUssQyxLVm5CN0JSLEVBQU8wQixFQUFvQlMsRUFDL0JULEVBQW9CUyxFQUFJLElBQ2hCdEIsUUFBUStDLElBQUksQ0FDbEJsQyxFQUFvQlAsRUFBRSxLQUN0Qk8sRUFBb0JQLEVBQUUsT0FDcEJJLEtBQUt2QixHV0pULElBQUlvQyxFQUFzQlYsRUFBb0JTLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL2VkYS8uL3NyYy93b3JrZXJzL3VtYXAtd29ya2VyLnRzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDk3MiksXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDIyMSlcblx0XSkudGhlbihuZXh0KTtcbn07IiwiLy8gV29ya2VyIGZvciB0aGUgbWV0aG9kIFVNQVBcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgVU1BUCB9IGZyb20gJ3VtYXAtanMnO1xub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHVtYXAgPSBuZXcgVU1BUChldnQuZGF0YS5vcHRpb25zKTtcbiAgICAgICAgY29uc3QgZW1iZWRkaW5ncyA9IHVtYXAuZml0KGV2dC5kYXRhLmRhdGEpO1xuICAgICAgICBwb3N0TWVzc2FnZSh7ICdlbWJlZGRpbmdzJzogZW1iZWRkaW5ncyB9KTtcbiAgICB9KTtcbn07XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbi8vIHRoZSBzdGFydHVwIGZ1bmN0aW9uXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuXHQvLyBUaGlzIGVudHJ5IG1vZHVsZSBkZXBlbmRzIG9uIG90aGVyIGxvYWRlZCBjaHVua3MgYW5kIGV4ZWN1dGlvbiBuZWVkIHRvIGJlIGRlbGF5ZWRcblx0dmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbOTcyLDIyMV0sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDc2OTQpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDY5NDogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rZWRhXCJdID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSB8fCBbXTtcbnZhciBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiA9IGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gaW5zdGFsbENodW5rO1xuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0IiwiLy8gcnVuIHN0YXJ0dXBcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy54KCk7XG4iXSwibmFtZXMiOlsiZGVmZXJyZWQiLCJuZXh0Iiwib25tZXNzYWdlIiwiZXZ0IiwidGhpc0FyZyIsInRoaXMiLCJfYXJndW1lbnRzIiwiZ2VuZXJhdG9yIiwiZW1iZWRkaW5ncyIsImRhdGEiLCJvcHRpb25zIiwiZml0IiwicG9zdE1lc3NhZ2UiLCJQIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJ2YWx1ZSIsInN0ZXAiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiZXhwb3J0cyIsIm1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJjYWxsIiwibSIsIngiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsImNodW5rSWRzIiwiZm4iLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiaSIsImxlbmd0aCIsImoiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJzcGxpY2UiLCJyIiwiZCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImNodW5rSWQiLCJhbGwiLCJyZWR1Y2UiLCJwcm9taXNlcyIsInUiLCJnIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIiwid2luZG93Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJkb2N1bWVudCIsImN1cnJlbnRTY3JpcHQiLCJzcmMiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJFcnJvciIsInJlcGxhY2UiLCJwIiwiaW5zdGFsbGVkQ2h1bmtzIiwiY2h1bmtMb2FkaW5nR2xvYmFsIiwic2VsZiIsInBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uIiwicHVzaCIsImJpbmQiLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiLCJwb3AiXSwic291cmNlUm9vdCI6IiJ9
1
+ var eda;(()=>{"use strict";var e,r,t={7694:(e,r,t)=>{var o=t(4221);onmessage=function(e){return r=this,t=void 0,a=function*(){const r=new o.u(e.data.options).fit(e.data.data);postMessage({embeddings:r})},new((n=void 0)||(n=Promise))((function(e,o){function i(e){try{s(a.next(e))}catch(e){o(e)}}function c(e){try{s(a.throw(e))}catch(e){o(e)}}function s(r){var t;r.done?e(r.value):(t=r.value,t instanceof n?t:new n((function(e){e(t)}))).then(i,c)}s((a=a.apply(r,t||[])).next())}));var r,t,n,a}}},o={};function n(e){var r=o[e];if(void 0!==r)return r.exports;var a=o[e]={exports:{}};return t[e].call(a.exports,a,a.exports,n),a.exports}n.m=t,n.x=()=>{var e=n.O(void 0,[352,221],(()=>n(7694)));return n.O(e)},e=[],n.O=(r,t,o,a)=>{if(!t){var i=1/0;for(p=0;p<e.length;p++){for(var[t,o,a]=e[p],c=!0,s=0;s<t.length;s++)(!1&a||i>=a)&&Object.keys(n.O).every((e=>n.O[e](t[s])))?t.splice(s--,1):(c=!1,a<i&&(i=a));if(c){e.splice(p--,1);var u=o();void 0!==u&&(r=u)}}return r}a=a||0;for(var p=e.length;p>0&&e[p-1][2]>a;p--)e[p]=e[p-1];e[p]=[t,o,a]},n.d=(e,r)=>{for(var t in r)n.o(r,t)&&!n.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce(((r,t)=>(n.f[t](e,r),r)),[])),n.u=e=>e+".js",n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;n.g.importScripts&&(e=n.g.location+"");var r=n.g.document;if(!e&&r&&(r.currentScript&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var o=t.length-1;o>-1&&!e;)e=t[o--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),n.p=e})(),(()=>{var e={694:1};n.f.i=(r,t)=>{e[r]||importScripts(n.p+n.u(r))};var r=self.webpackChunkeda=self.webpackChunkeda||[],t=r.push.bind(r);r.push=r=>{var[o,a,i]=r;for(var c in a)n.o(a,c)&&(n.m[c]=a[c]);for(i&&i(n);o.length;)e[o.pop()]=1;t(r)}})(),r=n.x,n.x=()=>Promise.all([n.e(352),n.e(221)]).then(r);var a=n.x();eda=a})();
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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VixJQURBLElBQUlELEVBQUlxQyxFQUFRcEMsT0FBUyxFQUNsQkQsR0FBSyxJQUFNK0IsR0FBV0EsRUFBWU0sRUFBUXJDLEtBQUtvQyxHQUV4RCxDQUlELElBQUtMLEVBQVcsTUFBTSxJQUFJUSxNQUFNLHlEQUNoQ1IsRUFBWUEsRUFBVVMsUUFBUSxPQUFRLElBQUlBLFFBQVEsUUFBUyxJQUFJQSxRQUFRLFlBQWEsS0FDcEZ6RCxFQUFvQjBELEVBQUlWLEMsV0NkeEIsSUFBSVcsRUFBa0IsQ0FDckIsSUFBSyxHQWdCTjNELEVBQW9CZ0MsRUFBRWYsRUFBSSxDQUFDZ0IsRUFBU0csS0FFL0J1QixFQUFnQjFCLElBRWxCZ0IsY0FBY2pELEVBQW9CMEQsRUFBSTFELEVBQW9CcUMsRUFBRUosR0FFOUQsRUFHRCxJQUFJMkIsRUFBcUJDLEtBQXNCLGdCQUFJQSxLQUFzQixpQkFBSyxHQUMxRUMsRUFBNkJGLEVBQW1CRyxLQUFLQyxLQUFLSixHQUM5REEsRUFBbUJHLEtBdkJDakYsSUFDbkIsSUFBSzhCLEVBQVVxRCxFQUFhQyxHQUFXcEYsRUFDdkMsSUFBSSxJQUFJbUIsS0FBWWdFLEVBQ2hCakUsRUFBb0I0QixFQUFFcUMsRUFBYWhFLEtBQ3JDRCxFQUFvQlEsRUFBRVAsR0FBWWdFLEVBQVloRSxJQUloRCxJQURHaUUsR0FBU0EsRUFBUWxFLEdBQ2RZLEVBQVNNLFFBQ2R5QyxFQUFnQi9DLEVBQVN1RCxPQUFTLEVBQ25DTCxFQUEyQmhGLEVBQUssQyxLVm5CN0JSLEVBQU8wQixFQUFvQlMsRUFDL0JULEVBQW9CUyxFQUFJLElBQ2hCdEIsUUFBUStDLElBQUksQ0FDbEJsQyxFQUFvQlAsRUFBRSxLQUN0Qk8sRUFBb0JQLEVBQUUsT0FDcEJJLEtBQUt2QixHV0pULElBQUlvQyxFQUFzQlYsRUFBb0JTLEkiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2NodW5rIGxvYWRlZCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL3N0YXJ0dXAgY2h1bmsgZGVwZW5kZW5jaWVzIiwid2VicGFjazovL2VkYS8uL3NyYy93b3JrZXJzL3VtYXAtd29ya2VyLnRzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9lZGEvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZW5zdXJlIGNodW5rIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvZ2V0IGphdmFzY3JpcHQgY2h1bmsgZmlsZW5hbWUiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3J1bnRpbWUvaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nIiwid2VicGFjazovL2VkYS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlZmVycmVkID0gW107XG5fX3dlYnBhY2tfcmVxdWlyZV9fLk8gPSAocmVzdWx0LCBjaHVua0lkcywgZm4sIHByaW9yaXR5KSA9PiB7XG5cdGlmKGNodW5rSWRzKSB7XG5cdFx0cHJpb3JpdHkgPSBwcmlvcml0eSB8fCAwO1xuXHRcdGZvcih2YXIgaSA9IGRlZmVycmVkLmxlbmd0aDsgaSA+IDAgJiYgZGVmZXJyZWRbaSAtIDFdWzJdID4gcHJpb3JpdHk7IGktLSkgZGVmZXJyZWRbaV0gPSBkZWZlcnJlZFtpIC0gMV07XG5cdFx0ZGVmZXJyZWRbaV0gPSBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV07XG5cdFx0cmV0dXJuO1xuXHR9XG5cdHZhciBub3RGdWxmaWxsZWQgPSBJbmZpbml0eTtcblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBkZWZlcnJlZC5sZW5ndGg7IGkrKykge1xuXHRcdHZhciBbY2h1bmtJZHMsIGZuLCBwcmlvcml0eV0gPSBkZWZlcnJlZFtpXTtcblx0XHR2YXIgZnVsZmlsbGVkID0gdHJ1ZTtcblx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGNodW5rSWRzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRpZiAoKHByaW9yaXR5ICYgMSA9PT0gMCB8fCBub3RGdWxmaWxsZWQgPj0gcHJpb3JpdHkpICYmIE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uTykuZXZlcnkoKGtleSkgPT4gKF9fd2VicGFja19yZXF1aXJlX18uT1trZXldKGNodW5rSWRzW2pdKSkpKSB7XG5cdFx0XHRcdGNodW5rSWRzLnNwbGljZShqLS0sIDEpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZnVsZmlsbGVkID0gZmFsc2U7XG5cdFx0XHRcdGlmKHByaW9yaXR5IDwgbm90RnVsZmlsbGVkKSBub3RGdWxmaWxsZWQgPSBwcmlvcml0eTtcblx0XHRcdH1cblx0XHR9XG5cdFx0aWYoZnVsZmlsbGVkKSB7XG5cdFx0XHRkZWZlcnJlZC5zcGxpY2UoaS0tLCAxKVxuXHRcdFx0dmFyIHIgPSBmbigpO1xuXHRcdFx0aWYgKHIgIT09IHVuZGVmaW5lZCkgcmVzdWx0ID0gcjtcblx0XHR9XG5cdH1cblx0cmV0dXJuIHJlc3VsdDtcbn07IiwidmFyIG5leHQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLng7XG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdHJldHVybiBQcm9taXNlLmFsbChbXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDM1MiksXG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5lKDIyMSlcblx0XSkudGhlbihuZXh0KTtcbn07IiwiLy8gV29ya2VyIGZvciB0aGUgbWV0aG9kIFVNQVBcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IHsgVU1BUCB9IGZyb20gJ3VtYXAtanMnO1xub25tZXNzYWdlID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGNvbnN0IHVtYXAgPSBuZXcgVU1BUChldnQuZGF0YS5vcHRpb25zKTtcbiAgICAgICAgY29uc3QgZW1iZWRkaW5ncyA9IHVtYXAuZml0KGV2dC5kYXRhLmRhdGEpO1xuICAgICAgICBwb3N0TWVzc2FnZSh7ICdlbWJlZGRpbmdzJzogZW1iZWRkaW5ncyB9KTtcbiAgICB9KTtcbn07XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbl9fd2VicGFja19yZXF1aXJlX18ubSA9IF9fd2VicGFja19tb2R1bGVzX187XG5cbi8vIHRoZSBzdGFydHVwIGZ1bmN0aW9uXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnggPSAoKSA9PiB7XG5cdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuXHQvLyBUaGlzIGVudHJ5IG1vZHVsZSBkZXBlbmRzIG9uIG90aGVyIGxvYWRlZCBjaHVua3MgYW5kIGV4ZWN1dGlvbiBuZWVkIHRvIGJlIGRlbGF5ZWRcblx0dmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fLk8odW5kZWZpbmVkLCBbMzUyLDIyMV0sICgpID0+IChfX3dlYnBhY2tfcmVxdWlyZV9fKDc2OTQpKSlcblx0X193ZWJwYWNrX2V4cG9ydHNfXyA9IF9fd2VicGFja19yZXF1aXJlX18uTyhfX3dlYnBhY2tfZXhwb3J0c19fKTtcblx0cmV0dXJuIF9fd2VicGFja19leHBvcnRzX187XG59O1xuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmYgPSB7fTtcbi8vIFRoaXMgZmlsZSBjb250YWlucyBvbmx5IHRoZSBlbnRyeSBjaHVuay5cbi8vIFRoZSBjaHVuayBsb2FkaW5nIGZ1bmN0aW9uIGZvciBhZGRpdGlvbmFsIGNodW5rc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5lID0gKGNodW5rSWQpID0+IHtcblx0cmV0dXJuIFByb21pc2UuYWxsKE9iamVjdC5rZXlzKF9fd2VicGFja19yZXF1aXJlX18uZikucmVkdWNlKChwcm9taXNlcywga2V5KSA9PiB7XG5cdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5mW2tleV0oY2h1bmtJZCwgcHJvbWlzZXMpO1xuXHRcdHJldHVybiBwcm9taXNlcztcblx0fSwgW10pKTtcbn07IiwiLy8gVGhpcyBmdW5jdGlvbiBhbGxvdyB0byByZWZlcmVuY2UgYXN5bmMgY2h1bmtzIGFuZCBzaWJsaW5nIGNodW5rcyBmb3IgdGhlIGVudHJ5cG9pbnRcbl9fd2VicGFja19yZXF1aXJlX18udSA9IChjaHVua0lkKSA9PiB7XG5cdC8vIHJldHVybiB1cmwgZm9yIGZpbGVuYW1lcyBiYXNlZCBvbiB0ZW1wbGF0ZVxuXHRyZXR1cm4gXCJcIiArIGNodW5rSWQgKyBcIi5qc1wiO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmcgPSAoZnVuY3Rpb24oKSB7XG5cdGlmICh0eXBlb2YgZ2xvYmFsVGhpcyA9PT0gJ29iamVjdCcpIHJldHVybiBnbG9iYWxUaGlzO1xuXHR0cnkge1xuXHRcdHJldHVybiB0aGlzIHx8IG5ldyBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXHR9IGNhdGNoIChlKSB7XG5cdFx0aWYgKHR5cGVvZiB3aW5kb3cgPT09ICdvYmplY3QnKSByZXR1cm4gd2luZG93O1xuXHR9XG59KSgpOyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJ2YXIgc2NyaXB0VXJsO1xuaWYgKF9fd2VicGFja19yZXF1aXJlX18uZy5pbXBvcnRTY3JpcHRzKSBzY3JpcHRVcmwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fLmcubG9jYXRpb24gKyBcIlwiO1xudmFyIGRvY3VtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXy5nLmRvY3VtZW50O1xuaWYgKCFzY3JpcHRVcmwgJiYgZG9jdW1lbnQpIHtcblx0aWYgKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpXG5cdFx0c2NyaXB0VXJsID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7XG5cdGlmICghc2NyaXB0VXJsKSB7XG5cdFx0dmFyIHNjcmlwdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTtcblx0XHRpZihzY3JpcHRzLmxlbmd0aCkge1xuXHRcdFx0dmFyIGkgPSBzY3JpcHRzLmxlbmd0aCAtIDE7XG5cdFx0XHR3aGlsZSAoaSA+IC0xICYmICFzY3JpcHRVcmwpIHNjcmlwdFVybCA9IHNjcmlwdHNbaS0tXS5zcmM7XG5cdFx0fVxuXHR9XG59XG4vLyBXaGVuIHN1cHBvcnRpbmcgYnJvd3NlcnMgd2hlcmUgYW4gYXV0b21hdGljIHB1YmxpY1BhdGggaXMgbm90IHN1cHBvcnRlZCB5b3UgbXVzdCBzcGVjaWZ5IGFuIG91dHB1dC5wdWJsaWNQYXRoIG1hbnVhbGx5IHZpYSBjb25maWd1cmF0aW9uXG4vLyBvciBwYXNzIGFuIGVtcHR5IHN0cmluZyAoXCJcIikgYW5kIHNldCB0aGUgX193ZWJwYWNrX3B1YmxpY19wYXRoX18gdmFyaWFibGUgZnJvbSB5b3VyIGNvZGUgdG8gdXNlIHlvdXIgb3duIGxvZ2ljLlxuaWYgKCFzY3JpcHRVcmwpIHRocm93IG5ldyBFcnJvcihcIkF1dG9tYXRpYyBwdWJsaWNQYXRoIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhpcyBicm93c2VyXCIpO1xuc2NyaXB0VXJsID0gc2NyaXB0VXJsLnJlcGxhY2UoLyMuKiQvLCBcIlwiKS5yZXBsYWNlKC9cXD8uKiQvLCBcIlwiKS5yZXBsYWNlKC9cXC9bXlxcL10rJC8sIFwiL1wiKTtcbl9fd2VicGFja19yZXF1aXJlX18ucCA9IHNjcmlwdFVybDsiLCIvLyBubyBiYXNlVVJJXG5cbi8vIG9iamVjdCB0byBzdG9yZSBsb2FkZWQgY2h1bmtzXG4vLyBcIjFcIiBtZWFucyBcImFscmVhZHkgbG9hZGVkXCJcbnZhciBpbnN0YWxsZWRDaHVua3MgPSB7XG5cdDY5NDogMVxufTtcblxuLy8gaW1wb3J0U2NyaXB0cyBjaHVuayBsb2FkaW5nXG52YXIgaW5zdGFsbENodW5rID0gKGRhdGEpID0+IHtcblx0dmFyIFtjaHVua0lkcywgbW9yZU1vZHVsZXMsIHJ1bnRpbWVdID0gZGF0YTtcblx0Zm9yKHZhciBtb2R1bGVJZCBpbiBtb3JlTW9kdWxlcykge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLm1bbW9kdWxlSWRdID0gbW9yZU1vZHVsZXNbbW9kdWxlSWRdO1xuXHRcdH1cblx0fVxuXHRpZihydW50aW1lKSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR3aGlsZShjaHVua0lkcy5sZW5ndGgpXG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRzLnBvcCgpXSA9IDE7XG5cdHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKGRhdGEpO1xufTtcbl9fd2VicGFja19yZXF1aXJlX18uZi5pID0gKGNodW5rSWQsIHByb21pc2VzKSA9PiB7XG5cdC8vIFwiMVwiIGlzIHRoZSBzaWduYWwgZm9yIFwiYWxyZWFkeSBsb2FkZWRcIlxuXHRpZighaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0aWYodHJ1ZSkgeyAvLyBhbGwgY2h1bmtzIGhhdmUgSlNcblx0XHRcdGltcG9ydFNjcmlwdHMoX193ZWJwYWNrX3JlcXVpcmVfXy5wICsgX193ZWJwYWNrX3JlcXVpcmVfXy51KGNodW5rSWQpKTtcblx0XHR9XG5cdH1cbn07XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rZWRhXCJdID0gc2VsZltcIndlYnBhY2tDaHVua2VkYVwiXSB8fCBbXTtcbnZhciBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbiA9IGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKTtcbmNodW5rTG9hZGluZ0dsb2JhbC5wdXNoID0gaW5zdGFsbENodW5rO1xuXG4vLyBubyBITVJcblxuLy8gbm8gSE1SIG1hbmlmZXN0IiwiLy8gcnVuIHN0YXJ0dXBcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXy54KCk7XG4iXSwibmFtZXMiOlsiZGVmZXJyZWQiLCJuZXh0Iiwib25tZXNzYWdlIiwiZXZ0IiwidGhpc0FyZyIsInRoaXMiLCJfYXJndW1lbnRzIiwiZ2VuZXJhdG9yIiwiZW1iZWRkaW5ncyIsImRhdGEiLCJvcHRpb25zIiwiZml0IiwicG9zdE1lc3NhZ2UiLCJQIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJ2YWx1ZSIsInN0ZXAiLCJlIiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwiZXhwb3J0cyIsIm1vZHVsZSIsIl9fd2VicGFja19tb2R1bGVzX18iLCJjYWxsIiwibSIsIngiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiTyIsImNodW5rSWRzIiwiZm4iLCJwcmlvcml0eSIsIm5vdEZ1bGZpbGxlZCIsIkluZmluaXR5IiwiaSIsImxlbmd0aCIsImoiLCJPYmplY3QiLCJrZXlzIiwiZXZlcnkiLCJrZXkiLCJzcGxpY2UiLCJyIiwiZCIsImRlZmluaXRpb24iLCJvIiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiZiIsImNodW5rSWQiLCJhbGwiLCJyZWR1Y2UiLCJwcm9taXNlcyIsInUiLCJnIiwiZ2xvYmFsVGhpcyIsIkZ1bmN0aW9uIiwid2luZG93Iiwib2JqIiwicHJvcCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJzY3JpcHRVcmwiLCJpbXBvcnRTY3JpcHRzIiwibG9jYXRpb24iLCJkb2N1bWVudCIsImN1cnJlbnRTY3JpcHQiLCJzcmMiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJFcnJvciIsInJlcGxhY2UiLCJwIiwiaW5zdGFsbGVkQ2h1bmtzIiwiY2h1bmtMb2FkaW5nR2xvYmFsIiwic2VsZiIsInBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uIiwicHVzaCIsImJpbmQiLCJtb3JlTW9kdWxlcyIsInJ1bnRpbWUiLCJwb3AiXSwic291cmNlUm9vdCI6IiJ9
package/dist/729.js CHANGED
@@ -1,2 +1,2 @@
1
1
  var eda;(()=>{"use strict";var t,s,e={7659:(t,s,e)=>{s.Z=void 0;var i=e(6215);Object.defineProperty(s,"Z",{enumerable:!0,get:function(){return i.TSNE}})},6215:(t,s)=>{Object.defineProperty(s,"__esModule",{value:!0}),s.TSNE=void 0,s.TSNE=class{constructor(t){this.returnV=!1,this.vValue=0,this.iter=0,t=t||{},this.perplexity=this.getopt(t,"perplexity",30),this.dim=this.getopt(t,"dim",2),this.epsilon=this.getopt(t,"epsilon",10)}assert(t,s){if(!t)throw s||"Assertion failed"}getopt(t,s,e){return t.hasOwnProperty(s)?t[s]:e}gaussRandom(){if(this.returnV)return this.returnV=!1,this.vValue;const t=2*Math.random()-1,s=2*Math.random()-1,e=t*t+s*s;if(0===e||e>1)return this.gaussRandom();const i=Math.sqrt(-2*Math.log(e)/e);return this.vValue=s*i,this.returnV=!0,t*i}randn(t,s){return t+this.gaussRandom()*s}zeros(t){if(void 0===t||isNaN(t))return[];if("undefined"==typeof ArrayBuffer){const s=new Array(t);for(let e=0;e<t;e++)s[e]=0;return s}return new Float64Array(t)}randn2d(t,s,e){const i=void 0!==e,o=[];for(let r=0;r<t;r++){const t=[];for(let o=0;o<s;o++)i?t.push(e):t.push(this.randn(0,1e-4));o.push(t)}return o}L2(t,s){const e=t.length;let i=0;for(let o=0;o<e;o++){const e=t[o],r=s[o];i+=(e-r)*(e-r)}return i}xtod(t){const s=t.length,e=this.zeros(s*s);for(let i=0;i<s;i++)for(let o=i+1;o<s;o++){const r=this.L2(t[i],t[o]);e[i*s+o]=r,e[o*s+i]=r}return e}d2p(t,s,e){const i=Math.sqrt(t.length),o=Math.floor(i);this.assert(o===i,"D should have square number of elements.");const r=Math.log(s),n=this.zeros(o*o),h=this.zeros(o);for(let s=0;s<o;s++){let i=-1/0,a=1/0,l=1,c=!1;const d=50;let u=0;for(;!c;){let n=0;for(let e=0;e<o;e++){let i=Math.exp(-t[s*o+e]*l);s===e&&(i=0),h[e]=i,n+=i}let f=0;for(let t=0;t<o;t++){let s;s=0===n?0:h[t]/n,h[t]=s,s>1e-7&&(f-=s*Math.log(s))}f>r?(i=l,a===1/0?l*=2:l=(l+a)/2):(a=l,i===-1/0?l/=2:l=(l+i)/2),u++,Math.abs(f-r)<e&&(c=!0),u>=d&&(c=!0)}for(let t=0;t<o;t++)n[s*o+t]=h[t]}const a=this.zeros(o*o),l=2*o;for(let t=0;t<o;t++)for(let s=0;s<o;s++)a[t*o+s]=Math.max((n[t*o+s]+n[s*o+t])/l,1e-100);return a}sign(t){return t>0?1:t<0?-1:0}initDataRaw(t){const s=t.length,e=t[0].length;this.assert(s>0," X is empty? You must have some data!"),this.assert(e>0," X[0] is empty? Where is the data?");const i=this.xtod(t);this.P=this.d2p(i,this.perplexity,1e-4),this.N=s,this.initSolution()}initDataDist(t){const s=t.length;this.assert(s>0," X is empty? You must have some data!");const e=this.zeros(s*s);for(let i=0;i<s;i++)for(let o=i+1;o<s;o++){const r=t[i][o];e[i*s+o]=r,e[o*s+i]=r}this.P=this.d2p(e,this.perplexity,1e-4),this.N=s,this.initSolution()}initSolution(){this.Y=this.randn2d(this.N,this.dim),this.gains=this.randn2d(this.N,this.dim,1),this.ystep=this.randn2d(this.N,this.dim,0),this.iter=0}getSolution(){return this.Y}step(){this.iter+=1;const t=this.N,s=this.costGrad(this.Y),e=s.cost,i=s.grad,o=this.zeros(this.dim);for(let s=0;s<t;s++)for(let t=0;t<this.dim;t++){const e=i[s][t],r=this.ystep[s][t],n=this.gains[s][t];let h=this.sign(e)===this.sign(r)?.8*n:n+.2;h<.01&&(h=.01),this.gains[s][t]=h;const a=(this.iter<250?.5:.8)*r-this.epsilon*h*i[s][t];this.ystep[s][t]=a,this.Y[s][t]+=a,o[t]+=this.Y[s][t]}for(let s=0;s<t;s++)for(let e=0;e<this.dim;e++)this.Y[s][e]-=o[e]/t;return e}debugGrad(){const t=this.N,s=this.costGrad(this.Y),e=(s.cost,s.grad),i=1e-5;for(let s=0;s<t;s++)for(let t=0;t<this.dim;t++){const o=this.Y[s][t];this.Y[s][t]=o+i;const r=this.costGrad(this.Y);this.Y[s][t]=o-i;const n=this.costGrad(this.Y),h=e[s][t],a=(r.cost-n.cost)/(2*i);console.log(s+","+t+": gradcheck analytic: "+h+" vs. numerical: "+a),this.Y[s][t]=o}}costGrad(t){const s=this.N,e=this.dim,i=this.P,o=this.iter<100?4:1,r=this.zeros(s*s);let n=0;for(let i=0;i<s;i++)for(let o=i+1;o<s;o++){let h=0;for(let s=0;s<e;s++){const e=t[i][s]-t[o][s];h+=e*e}const a=1/(1+h);r[i*s+o]=a,r[o*s+i]=a,n+=2*a}const h=s*s,a=this.zeros(h);for(let t=0;t<h;t++)a[t]=Math.max(r[t]/n,1e-100);let l=0;const c=[];for(let n=0;n<s;n++){const h=new Array(e);for(let t=0;t<e;t++)h[t]=0;for(let c=0;c<s;c++){l+=-i[n*s+c]*Math.log(a[n*s+c]);const d=4*(o*i[n*s+c]-a[n*s+c])*r[n*s+c];for(let s=0;s<e;s++)h[s]+=d*(t[n][s]-t[c][s])}c.push(h)}return{cost:l,grad:c}}}}},i={};t=function t(s){var o=i[s];if(void 0!==o)return o.exports;var r=i[s]={exports:{}};return e[s](r,r.exports,t),r.exports}(7659),s=function(t,s,e,i){return new(e||(e=Promise))((function(o,r){function n(t){try{a(i.next(t))}catch(t){r(t)}}function h(t){try{a(i.throw(t))}catch(t){r(t)}}function a(t){var s;t.done?o(t.value):(s=t.value,s instanceof e?s:new e((function(t){t(s)}))).then(n,h)}a((i=i.apply(t,s||[])).next())}))},onmessage=function(e){return s(this,void 0,void 0,(function*(){const s=new t.Z({epsilon:e.data.options.learningRate,perplexity:e.data.options.perplexity,dim:e.data.options.components});s.initDataRaw(e.data.data);const i=e.data.options.iterations;for(let t=0;t<i;++t)s.step();postMessage({embeddings:s.getSolution()})}))},eda={}})();
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMxRixTQUFTaUMsRUFBU3BJLEdBQVMsSUFBTXVGLEVBQUt1QyxFQUFpQixNQUFFOUgsR0FBUyxDQUFFLE1BQU9tRyxHQUFLOEIsRUFBTzlCLEVBQUksQ0FBRSxDQUM3RixTQUFTWixFQUFLOEMsR0FKbEIsSUFBZXJJLEVBSWFxSSxFQUFPbEUsS0FBTzZELEVBQVFLLEVBQU9ySSxRQUoxQ0EsRUFJeURxSSxFQUFPckksTUFKaERBLGFBQWlCNkQsRUFBSTdELEVBQVEsSUFBSTZELEdBQUUsU0FBVW1FLEdBQVdBLEVBQVFoSSxFQUFRLEtBSWpCc0ksS0FBS0osRUFBV0UsRUFBVyxDQUM3RzdDLEdBQU11QyxFQUFZQSxFQUFVUyxNQUFNWCxFQUFTQyxHQUFjLEtBQUtNLE9BQ2xFLEdBQ0osRUFFQUssVUFBWSxTQUFVQyxHQUNsQixPQUFPakosRUFBVVcsVUFBTSxPQUFRLEdBQVEsWUFDbkMsTUFBTXVJLEVBQU8sSUFBSSxJQUFLLENBQ2xCaEksUUFBUytILEVBQUlFLEtBQUtDLFFBQVFDLGFBQzFCdEksV0FBWWtJLEVBQUlFLEtBQUtDLFFBQVFySSxXQUM3QkUsSUFBS2dJLEVBQUlFLEtBQUtDLFFBQVFFLGFBRTFCSixFQUFLM0QsWUFBWTBELEVBQUlFLEtBQUtBLE1BQzFCLE1BQU1JLEVBQVlOLEVBQUlFLEtBQUtDLFFBQVFJLFdBQ25DLElBQUssSUFBSTdHLEVBQUksRUFBR0EsRUFBSTRHLElBQWE1RyxFQUM3QnVHLEVBQUtuRCxPQUNUMEQsWUFBWSxDQUFFLFdBQWNQLEVBQUtwRCxlQUNyQyxHQUNKLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvLi9zcmMvd29ya2Vycy90c25lLXdvcmtlci50cyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGtlY2tlbHQvdHNuZS9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BrZWNrZWx0L3RzbmUvbGliL3RzbmUuanMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svYm9vdHN0cmFwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFdvcmtlciBmb3IgdGhlIG1ldGhvZCB0LVNORVxudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBUU05FIH0gZnJvbSAnQGtlY2tlbHQvdHNuZSc7XG5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdHNuZSA9IG5ldyBUU05FKHtcbiAgICAgICAgICAgIGVwc2lsb246IGV2dC5kYXRhLm9wdGlvbnMubGVhcm5pbmdSYXRlLFxuICAgICAgICAgICAgcGVycGxleGl0eTogZXZ0LmRhdGEub3B0aW9ucy5wZXJwbGV4aXR5LFxuICAgICAgICAgICAgZGltOiBldnQuZGF0YS5vcHRpb25zLmNvbXBvbmVudHNcbiAgICAgICAgfSk7XG4gICAgICAgIHRzbmUuaW5pdERhdGFSYXcoZXZ0LmRhdGEuZGF0YSk7XG4gICAgICAgIGNvbnN0IGl0ZXJDb3VudCA9IGV2dC5kYXRhLm9wdGlvbnMuaXRlcmF0aW9ucztcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpdGVyQ291bnQ7ICsraSlcbiAgICAgICAgICAgIHRzbmUuc3RlcCgpO1xuICAgICAgICBwb3N0TWVzc2FnZSh7ICdlbWJlZGRpbmdzJzogdHNuZS5nZXRTb2x1dGlvbigpIH0pO1xuICAgIH0pO1xufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UU05FID0gdm9pZCAwO1xudmFyIHRzbmVfMSA9IHJlcXVpcmUoXCIuL3RzbmVcIik7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJUU05FXCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiB0c25lXzEuVFNORTsgfSB9KTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5UU05FID0gdm9pZCAwO1xuY2xhc3MgVFNORSB7XG4gICAgY29uc3RydWN0b3Iob3B0KSB7XG4gICAgICAgIC8vIHJldHVybiAwIG1lYW4gdW5pdCBzdGFuZGFyZCBkZXZpYXRpb24gcmFuZG9tIG51bWJlclxuICAgICAgICB0aGlzLnJldHVyblYgPSBmYWxzZTtcbiAgICAgICAgdGhpcy52VmFsdWUgPSAwLjA7XG4gICAgICAgIHRoaXMuaXRlciA9IDA7XG4gICAgICAgIG9wdCA9IG9wdCB8fCB7fTtcbiAgICAgICAgdGhpcy5wZXJwbGV4aXR5ID0gdGhpcy5nZXRvcHQob3B0LCAncGVycGxleGl0eScsIDMwKTsgLy8gZWZmZWN0aXZlIG51bWJlciBvZiBuZWFyZXN0IG5laWdoYm9yc1xuICAgICAgICB0aGlzLmRpbSA9IHRoaXMuZ2V0b3B0KG9wdCwgJ2RpbScsIDIpOyAvLyBieSBkZWZhdWx0IDItRCB0U05FXG4gICAgICAgIHRoaXMuZXBzaWxvbiA9IHRoaXMuZ2V0b3B0KG9wdCwgJ2Vwc2lsb24nLCAxMCk7IC8vIGxlYXJuaW5nIHJhdGVcbiAgICB9XG4gICAgYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICAgICAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbWVzc2FnZSB8fCAnQXNzZXJ0aW9uIGZhaWxlZCc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gc3ludGF4IHN1Z2FyXG4gICAgZ2V0b3B0KG9wdCwgZmllbGQsIGRlZmF1bHR2YWwpIHtcbiAgICAgICAgaWYgKG9wdC5oYXNPd25Qcm9wZXJ0eShmaWVsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRbZmllbGRdO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHR2YWw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2F1c3NSYW5kb20oKSB7XG4gICAgICAgIGlmICh0aGlzLnJldHVyblYpIHtcbiAgICAgICAgICAgIHRoaXMucmV0dXJuViA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudlZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHUgPSAyICogTWF0aC5yYW5kb20oKSAtIDE7XG4gICAgICAgIGNvbnN0IHYgPSAyICogTWF0aC5yYW5kb20oKSAtIDE7XG4gICAgICAgIGNvbnN0IHIgPSB1ICogdSArIHYgKiB2O1xuICAgICAgICBpZiAociA9PT0gMCB8fCByID4gMSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2F1c3NSYW5kb20oKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjID0gTWF0aC5zcXJ0KC0yICogTWF0aC5sb2cocikgLyByKTtcbiAgICAgICAgdGhpcy52VmFsdWUgPSB2ICogYzsgLy8gY2FjaGUgdGhpcyBmb3IgbmV4dCBmdW5jdGlvbiBjYWxsIGZvciBlZmZpY2llbmN5XG4gICAgICAgIHRoaXMucmV0dXJuViA9IHRydWU7XG4gICAgICAgIHJldHVybiB1ICogYztcbiAgICB9XG4gICAgLy8gcmV0dXJuIHJhbmRvbSBub3JtYWwgbnVtYmVyXG4gICAgcmFuZG4obXUsIHN0ZCkgeyByZXR1cm4gbXUgKyB0aGlzLmdhdXNzUmFuZG9tKCkgKiBzdGQ7IH1cbiAgICAvLyB1dGlsaXRpdHkgdGhhdCBjcmVhdGVzIGNvbnRpZ3VvdXMgdmVjdG9yIG9mIHplcm9zIG9mIHNpemUgblxuICAgIHplcm9zKG4pIHtcbiAgICAgICAgaWYgKHR5cGVvZiAobikgPT09ICd1bmRlZmluZWQnIHx8IGlzTmFOKG4pKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIC8vIGxhY2tpbmcgYnJvd3NlciBzdXBwb3J0XG4gICAgICAgICAgICBjb25zdCBhcnIgPSBuZXcgQXJyYXkobik7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgICAgIGFycltpXSA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYXJyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkobik7IC8vIHR5cGVkIGFycmF5cyBhcmUgZmFzdGVyXG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gdXRpbGl0eSB0aGF0IHJldHVybnMgMmQgYXJyYXkgZmlsbGVkIHdpdGggcmFuZG9tIG51bWJlcnNcbiAgICAvLyBvciB3aXRoIHZhbHVlIHMsIGlmIHByb3ZpZGVkXG4gICAgcmFuZG4yZChuLCBkLCBzKSB7XG4gICAgICAgIGNvbnN0IHVzZXMgPSB0eXBlb2YgcyAhPT0gJ3VuZGVmaW5lZCc7XG4gICAgICAgIGNvbnN0IHggPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHhoZXJlID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGQ7IGorKykge1xuICAgICAgICAgICAgICAgIGlmICh1c2VzKSB7XG4gICAgICAgICAgICAgICAgICAgIHhoZXJlLnB1c2gocyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB4aGVyZS5wdXNoKHRoaXMucmFuZG4oMC4wLCAxZS00KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeC5wdXNoKHhoZXJlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSBMMiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzXG4gICAgTDIoeDEsIHgyKSB7XG4gICAgICAgIGNvbnN0IEQgPSB4MS5sZW5ndGg7XG4gICAgICAgIGxldCBkID0gMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBEOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHgxaSA9IHgxW2ldO1xuICAgICAgICAgICAgY29uc3QgeDJpID0geDJbaV07XG4gICAgICAgICAgICBkICs9ICh4MWkgLSB4MmkpICogKHgxaSAtIHgyaSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGQ7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgcGFpcndpc2UgZGlzdGFuY2UgaW4gYWxsIHZlY3RvcnMgaW4gWFxuICAgIHh0b2QoWCkge1xuICAgICAgICBjb25zdCBOID0gWC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IGRpc3QgPSB0aGlzLnplcm9zKE4gKiBOKTsgLy8gYWxsb2NhdGUgY29udGlndW91cyBhcnJheVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IHRoaXMuTDIoWFtpXSwgWFtqXSk7XG4gICAgICAgICAgICAgICAgZGlzdFtpICogTiArIGpdID0gZDtcbiAgICAgICAgICAgICAgICBkaXN0W2ogKiBOICsgaV0gPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkaXN0O1xuICAgIH1cbiAgICAvLyBjb21wdXRlIChwX3tpfGp9ICsgcF97anxpfSkvKDJuKVxuICAgIGQycChELCBwZXJwbGV4aXR5LCB0b2wpIHtcbiAgICAgICAgY29uc3QgbmYgPSBNYXRoLnNxcnQoRC5sZW5ndGgpOyAvLyB0aGlzIGJldHRlciBiZSBhbiBpbnRlZ2VyXG4gICAgICAgIGNvbnN0IG4gPSBNYXRoLmZsb29yKG5mKTtcbiAgICAgICAgdGhpcy5hc3NlcnQobiA9PT0gbmYsICdEIHNob3VsZCBoYXZlIHNxdWFyZSBudW1iZXIgb2YgZWxlbWVudHMuJyk7XG4gICAgICAgIGNvbnN0IGhUYXJnZXQgPSBNYXRoLmxvZyhwZXJwbGV4aXR5KTsgLy8gdGFyZ2V0IGVudHJvcHkgb2YgZGlzdHJpYnV0aW9uXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLnplcm9zKG4gKiBuKTsgLy8gdGVtcG9yYXJ5IHByb2JhYmlsaXR5IG1hdHJpeFxuICAgICAgICBjb25zdCBwcm93ID0gdGhpcy56ZXJvcyhuKTsgLy8gYSB0ZW1wb3Jhcnkgc3RvcmFnZSBjb21wYXJ0bWVudFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgbGV0IGJldGFtaW4gPSAtSW5maW5pdHk7XG4gICAgICAgICAgICBsZXQgYmV0YW1heCA9IEluZmluaXR5O1xuICAgICAgICAgICAgbGV0IGJldGEgPSAxOyAvLyBpbml0aWFsIHZhbHVlIG9mIHByZWNpc2lvblxuICAgICAgICAgICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGNvbnN0IG1heHRyaWVzID0gNTA7XG4gICAgICAgICAgICAvLyBwZXJmb3JtIGJpbmFyeSBzZWFyY2ggdG8gZmluZCBhIHN1aXRhYmxlIHByZWNpc2lvbiBiZXRhXG4gICAgICAgICAgICAvLyBzbyB0aGF0IHRoZSBlbnRyb3B5IG9mIHRoZSBkaXN0cmlidXRpb24gaXMgYXBwcm9wcmlhdGVcbiAgICAgICAgICAgIGxldCBudW0gPSAwO1xuICAgICAgICAgICAgd2hpbGUgKCFkb25lKSB7XG4gICAgICAgICAgICAgICAgLy9kZWJ1Z2dlcjtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGVudHJvcHkgYW5kIGtlcm5lbCByb3cgd2l0aCBiZXRhIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIGxldCBwc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwaiA9IE1hdGguZXhwKC1EW2kgKiBuICsgal0gKiBiZXRhKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IGopIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBqID0gMDtcbiAgICAgICAgICAgICAgICAgICAgfSAvLyB3ZSBkb250IGNhcmUgYWJvdXQgZGlhZ29uYWxzXG4gICAgICAgICAgICAgICAgICAgIHByb3dbal0gPSBwajtcbiAgICAgICAgICAgICAgICAgICAgcHN1bSArPSBwajtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gbm9ybWFsaXplIHAgYW5kIGNvbXB1dGUgZW50cm9weVxuICAgICAgICAgICAgICAgIGxldCBuSGVyZSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGo7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwc3VtID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IHByb3dbal0gLyBwc3VtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHByb3dbal0gPSBwajtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBqID4gMWUtNykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbkhlcmUgLT0gcGogKiBNYXRoLmxvZyhwaik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gYWRqdXN0IGJldGEgYmFzZWQgb24gcmVzdWx0XG4gICAgICAgICAgICAgICAgaWYgKG5IZXJlID4gaFRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICAvLyBlbnRyb3B5IHdhcyB0b28gaGlnaCAoZGlzdHJpYnV0aW9uIHRvbyBkaWZmdXNlKVxuICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGluY3JlYXNlIHRoZSBwcmVjaXNpb24gZm9yIG1vcmUgcGVha3kgZGlzdHJpYnV0aW9uXG4gICAgICAgICAgICAgICAgICAgIGJldGFtaW4gPSBiZXRhOyAvLyBtb3ZlIHVwIHRoZSBib3VuZHNcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJldGFtYXggPT09IEluZmluaXR5KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXRhID0gYmV0YSAqIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiZXRhID0gKGJldGEgKyBiZXRhbWF4KSAvIDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlcnNlIGNhc2UuIG1ha2UgZGlzdHJ1YnRpb24gbGVzcyBwZWFreVxuICAgICAgICAgICAgICAgICAgICBiZXRhbWF4ID0gYmV0YTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJldGFtaW4gPT09IC1JbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IGJldGEgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IChiZXRhICsgYmV0YW1pbikgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHN0b3BwaW5nIGNvbmRpdGlvbnM6IHRvbyBtYW55IHRyaWVzIG9yIGdvdCBhIGdvb2QgcHJlY2lzaW9uXG4gICAgICAgICAgICAgICAgbnVtKys7XG4gICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKG5IZXJlIC0gaFRhcmdldCkgPCB0b2wpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChudW0gPj0gbWF4dHJpZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2RhdGEgcG9pbnQgJyArIGkgKyAnIGdldHMgcHJlY2lzaW9uICcgKyBiZXRhICsgJyBhZnRlciAnICsgbnVtICsgJyBiaW5hcnkgc2VhcmNoIHN0ZXBzLicpO1xuICAgICAgICAgICAgLy8gY29weSBvdmVyIHRoZSBmaW5hbCBwcm93IHRvIFAgYXQgcm93IGlcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgUFtpICogbiArIGpdID0gcHJvd1tqXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSAvLyBlbmQgbG9vcCBvdmVyIGV4YW1wbGVzIGlcbiAgICAgICAgLy8gc3ltbWV0cml6ZSBQIGFuZCBub3JtYWxpemUgaXQgdG8gc3VtIHRvIDEgb3ZlciBhbGwgaWpcbiAgICAgICAgY29uc3QgcE91dCA9IHRoaXMuemVyb3MobiAqIG4pO1xuICAgICAgICBjb25zdCBOMiA9IG4gKiAyO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICBwT3V0W2kgKiBuICsgal0gPSBNYXRoLm1heCgoUFtpICogbiArIGpdICsgUFtqICogbiArIGldKSAvIE4yLCAxZS0xMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwT3V0O1xuICAgIH1cbiAgICAvLyBoZWxwZXIgZnVuY3Rpb25cbiAgICBzaWduKHgpIHsgcmV0dXJuIHggPiAwID8gMSA6IHggPCAwID8gLTEgOiAwOyB9XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIHNldCBvZiBoaWdoLWRpbWVuc2lvbmFsIHBvaW50c1xuICAgIC8vIGFuZCBjcmVhdGVzIG1hdHJpeCBQIGZyb20gdGhlbSB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICBpbml0RGF0YVJhdyhYKSB7XG4gICAgICAgIGNvbnN0IE4gPSBYLmxlbmd0aDtcbiAgICAgICAgY29uc3QgRCA9IFhbMF0ubGVuZ3RoO1xuICAgICAgICB0aGlzLmFzc2VydChOID4gMCwgJyBYIGlzIGVtcHR5PyBZb3UgbXVzdCBoYXZlIHNvbWUgZGF0YSEnKTtcbiAgICAgICAgdGhpcy5hc3NlcnQoRCA+IDAsICcgWFswXSBpcyBlbXB0eT8gV2hlcmUgaXMgdGhlIGRhdGE/Jyk7XG4gICAgICAgIGNvbnN0IGRpc3RzID0gdGhpcy54dG9kKFgpOyAvLyBjb252ZXJ0IFggdG8gZGlzdGFuY2VzIHVzaW5nIGdhdXNzaWFuIGtlcm5lbFxuICAgICAgICB0aGlzLlAgPSB0aGlzLmQycChkaXN0cywgdGhpcy5wZXJwbGV4aXR5LCAxZS00KTsgLy8gYXR0YWNoIHRvIG9iamVjdFxuICAgICAgICB0aGlzLk4gPSBOOyAvLyBiYWNrIHVwIHRoZSBzaXplIG9mIHRoZSBkYXRhc2V0XG4gICAgICAgIHRoaXMuaW5pdFNvbHV0aW9uKCk7IC8vIHJlZnJlc2ggdGhpc1xuICAgIH1cbiAgICAvLyB0aGlzIGZ1bmN0aW9uIHRha2VzIGEgZ2l2ZW4gZGlzdGFuY2UgbWF0cml4IGFuZCBjcmVhdGVzXG4gICAgLy8gbWF0cml4IFAgZnJvbSB0aGVtLlxuICAgIC8vIEQgaXMgYXNzdW1lZCB0byBiZSBwcm92aWRlZCBhcyBhIGxpc3Qgb2YgbGlzdHMsIGFuZCBzaG91bGQgYmUgc3ltbWV0cmljXG4gICAgaW5pdERhdGFEaXN0KEQpIHtcbiAgICAgICAgY29uc3QgTiA9IEQubGVuZ3RoO1xuICAgICAgICB0aGlzLmFzc2VydChOID4gMCwgJyBYIGlzIGVtcHR5PyBZb3UgbXVzdCBoYXZlIHNvbWUgZGF0YSEnKTtcbiAgICAgICAgLy8gY29udmVydCBEIHRvIGEgKGZhc3QpIHR5cGVkIGFycmF5IHZlcnNpb25cbiAgICAgICAgY29uc3QgZGlzdHMgPSB0aGlzLnplcm9zKE4gKiBOKTsgLy8gYWxsb2NhdGUgY29udGlndW91cyBhcnJheVxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZCA9IERbaV1bal07XG4gICAgICAgICAgICAgICAgZGlzdHNbaSAqIE4gKyBqXSA9IGQ7XG4gICAgICAgICAgICAgICAgZGlzdHNbaiAqIE4gKyBpXSA9IGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5QID0gdGhpcy5kMnAoZGlzdHMsIHRoaXMucGVycGxleGl0eSwgMWUtNCk7XG4gICAgICAgIHRoaXMuTiA9IE47XG4gICAgICAgIHRoaXMuaW5pdFNvbHV0aW9uKCk7IC8vIHJlZnJlc2ggdGhpc1xuICAgIH1cbiAgICAvLyAocmUpaW5pdGlhbGl6ZXMgdGhlIHNvbHV0aW9uIHRvIHJhbmRvbVxuICAgIGluaXRTb2x1dGlvbigpIHtcbiAgICAgICAgLy8gZ2VuZXJhdGUgcmFuZG9tIHNvbHV0aW9uIHRvIHQtU05FXG4gICAgICAgIHRoaXMuWSA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltKTsgLy8gdGhlIHNvbHV0aW9uXG4gICAgICAgIHRoaXMuZ2FpbnMgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSwgMS4wKTsgLy8gc3RlcCBnYWlucyB0byBhY2NlbGVyYXRlIHByb2dyZXNzIGluIHVuY2hhbmdpbmcgZGlyZWN0aW9uc1xuICAgICAgICB0aGlzLnlzdGVwID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0sIDAuMCk7IC8vIG1vbWVudHVtIGFjY3VtdWxhdG9yXG4gICAgICAgIHRoaXMuaXRlciA9IDA7XG4gICAgfVxuICAgIC8vIHJldHVybiBwb2ludGVyIHRvIGN1cnJlbnQgc29sdXRpb25cbiAgICBnZXRTb2x1dGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuWTtcbiAgICB9XG4gICAgLy8gcGVyZm9ybSBhIHNpbmdsZSBzdGVwIG9mIG9wdGltaXphdGlvbiB0byBpbXByb3ZlIHRoZSBlbWJlZGRpbmdcbiAgICBzdGVwKCkge1xuICAgICAgICB0aGlzLml0ZXIgKz0gMTtcbiAgICAgICAgY29uc3QgTiA9IHRoaXMuTjtcbiAgICAgICAgY29uc3QgY2cgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7IC8vIGV2YWx1YXRlIGdyYWRpZW50XG4gICAgICAgIGNvbnN0IGNvc3QgPSBjZy5jb3N0O1xuICAgICAgICBjb25zdCBncmFkID0gY2cuZ3JhZDtcbiAgICAgICAgLy8gcGVyZm9ybSBncmFkaWVudCBzdGVwXG4gICAgICAgIGNvbnN0IHltZWFuID0gdGhpcy56ZXJvcyh0aGlzLmRpbSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICBjb25zdCBnaWQgPSBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNpZCA9IHRoaXMueXN0ZXBbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3QgZ2FpbmlkID0gdGhpcy5nYWluc1tpXVtkXTtcbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIGdhaW4gdXBkYXRlXG4gICAgICAgICAgICAgICAgbGV0IG5ld2dhaW4gPSB0aGlzLnNpZ24oZ2lkKSA9PT0gdGhpcy5zaWduKHNpZCkgPyBnYWluaWQgKiAwLjggOiBnYWluaWQgKyAwLjI7XG4gICAgICAgICAgICAgICAgaWYgKG5ld2dhaW4gPCAwLjAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld2dhaW4gPSAwLjAxO1xuICAgICAgICAgICAgICAgIH0gLy8gY2xhbXBcbiAgICAgICAgICAgICAgICB0aGlzLmdhaW5zW2ldW2RdID0gbmV3Z2FpbjsgLy8gc3RvcmUgZm9yIG5leHQgdHVyblxuICAgICAgICAgICAgICAgIC8vIGNvbXB1dGUgbW9tZW50dW0gc3RlcCBkaXJlY3Rpb25cbiAgICAgICAgICAgICAgICBjb25zdCBtb212YWwgPSB0aGlzLml0ZXIgPCAyNTAgPyAwLjUgOiAwLjg7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3c2lkID0gbW9tdmFsICogc2lkIC0gdGhpcy5lcHNpbG9uICogbmV3Z2FpbiAqIGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgdGhpcy55c3RlcFtpXVtkXSA9IG5ld3NpZDsgLy8gcmVtZW1iZXIgdGhlIHN0ZXAgd2UgdG9va1xuICAgICAgICAgICAgICAgIC8vIHN0ZXAhXG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdICs9IG5ld3NpZDtcbiAgICAgICAgICAgICAgICB5bWVhbltkXSArPSB0aGlzLllbaV1bZF07IC8vIGFjY3VtdWxhdGUgbWVhbiBzbyB0aGF0IHdlIGNhbiBjZW50ZXIgbGF0ZXJcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyByZXByb2plY3QgWSB0byBiZSB6ZXJvIG1lYW5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSAtPSB5bWVhbltkXSAvIE47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9pZih0aGlzLml0ZXIlMTAwPT09MCkgY29uc29sZS5sb2coJ2l0ZXIgJyArIHRoaXMuaXRlciArICcsIGNvc3Q6ICcgKyBjb3N0KTtcbiAgICAgICAgcmV0dXJuIGNvc3Q7IC8vIHJldHVybiBjdXJyZW50IGNvc3RcbiAgICB9XG4gICAgLy8gZm9yIGRlYnVnZ2luZzogZ3JhZGllbnQgY2hlY2tcbiAgICBkZWJ1Z0dyYWQoKSB7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgICBjb25zdCBjb3N0ID0gY2cuY29zdDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IGNnLmdyYWQ7XG4gICAgICAgIGNvbnN0IGUgPSAxZS01O1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgeW9sZCA9IHRoaXMuWVtpXVtkXTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkICsgZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZzAgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCAtIGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY2cxID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFuYWx5dGljID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBudW1lcmljYWwgPSAoY2cwLmNvc3QgLSBjZzEuY29zdCkgLyAoMiAqIGUpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGkgKyAnLCcgKyBkICsgJzogZ3JhZGNoZWNrIGFuYWx5dGljOiAnICsgYW5hbHl0aWMgKyAnIHZzLiBudW1lcmljYWw6ICcgKyBudW1lcmljYWwpO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gcmV0dXJuIGNvc3QgYW5kIGdyYWRpZW50LCBnaXZlbiBhbiBhcnJhbmdlbWVudFxuICAgIGNvc3RHcmFkKFkpIHtcbiAgICAgICAgY29uc3QgTiA9IHRoaXMuTjtcbiAgICAgICAgY29uc3QgZGltID0gdGhpcy5kaW07IC8vIGRpbSBvZiBvdXRwdXQgc3BhY2VcbiAgICAgICAgY29uc3QgUCA9IHRoaXMuUDtcbiAgICAgICAgY29uc3QgcG11bCA9IHRoaXMuaXRlciA8IDEwMCA/IDQgOiAxOyAvLyB0cmljayB0aGF0IGhlbHBzIHdpdGggbG9jYWwgb3B0aW1hXG4gICAgICAgIC8vIGNvbXB1dGUgY3VycmVudCBRIGRpc3RyaWJ1dGlvbiwgdW5ub3JtYWxpemVkIGZpcnN0XG4gICAgICAgIGNvbnN0IHF1QXJyID0gdGhpcy56ZXJvcyhOICogTik7XG4gICAgICAgIGxldCBxc3VtID0gMC4wO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IGkgKyAxOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRzdW0gPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkaGVyZSA9IFlbaV1bZF0gLSBZW2pdW2RdO1xuICAgICAgICAgICAgICAgICAgICBkc3VtICs9IGRoZXJlICogZGhlcmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHF1ID0gMS4wIC8gKDEuMCArIGRzdW0pOyAvLyBTdHVkZW50IHQtZGlzdHJpYnV0aW9uXG4gICAgICAgICAgICAgICAgcXVBcnJbaSAqIE4gKyBqXSA9IHF1O1xuICAgICAgICAgICAgICAgIHF1QXJyW2ogKiBOICsgaV0gPSBxdTtcbiAgICAgICAgICAgICAgICBxc3VtICs9IDIgKiBxdTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBub3JtYWxpemUgUSBkaXN0cmlidXRpb24gdG8gc3VtIHRvIDFcbiAgICAgICAgY29uc3QgTk4gPSBOICogTjtcbiAgICAgICAgY29uc3QgUSA9IHRoaXMuemVyb3MoTk4pO1xuICAgICAgICBmb3IgKGxldCBxID0gMDsgcSA8IE5OOyBxKyspIHtcbiAgICAgICAgICAgIFFbcV0gPSBNYXRoLm1heChxdUFycltxXSAvIHFzdW0sIDFlLTEwMCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNvc3QgPSAwLjA7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGdzdW0gPSBuZXcgQXJyYXkoZGltKTsgLy8gaW5pdCBncmFkIGZvciBwb2ludCBpXG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgZ3N1bVtkXSA9IDAuMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgTjsgaisrKSB7XG4gICAgICAgICAgICAgICAgY29zdCArPSAtUFtpICogTiArIGpdICogTWF0aC5sb2coUVtpICogTiArIGpdKTsgLy8gYWNjdW11bGF0ZSBjb3N0ICh0aGUgbm9uLWNvbnN0YW50IHBvcnRpb24gYXQgbGVhc3QuLi4pXG4gICAgICAgICAgICAgICAgY29uc3QgcHJlbXVsdCA9IDQgKiAocG11bCAqIFBbaSAqIE4gKyBqXSAtIFFbaSAqIE4gKyBqXSkgKiBxdUFycltpICogTiArIGpdO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgZ3N1bVtkXSArPSBwcmVtdWx0ICogKFlbaV1bZF0gLSBZW2pdW2RdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBncmFkLnB1c2goZ3N1bSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgY29zdCwgZ3JhZCB9O1xuICAgIH1cbn1cbmV4cG9ydHMuVFNORSA9IFRTTkU7XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIl0sIm5hbWVzIjpbIl9fYXdhaXRlciIsImV4cG9ydHMiLCJ0c25lXzEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJUU05FIiwidmFsdWUiLCJjb25zdHJ1Y3RvciIsIm9wdCIsInRoaXMiLCJyZXR1cm5WIiwidlZhbHVlIiwiaXRlciIsInBlcnBsZXhpdHkiLCJnZXRvcHQiLCJkaW0iLCJlcHNpbG9uIiwiYXNzZXJ0IiwiY29uZGl0aW9uIiwibWVzc2FnZSIsImZpZWxkIiwiZGVmYXVsdHZhbCIsImhhc093blByb3BlcnR5IiwiZ2F1c3NSYW5kb20iLCJ1IiwiTWF0aCIsInJhbmRvbSIsInYiLCJyIiwiYyIsInNxcnQiLCJsb2ciLCJyYW5kbiIsIm11Iiwic3RkIiwiemVyb3MiLCJuIiwiaXNOYU4iLCJBcnJheUJ1ZmZlciIsImFyciIsIkFycmF5IiwiaSIsIkZsb2F0NjRBcnJheSIsInJhbmRuMmQiLCJkIiwicyIsInVzZXMiLCJ4IiwieGhlcmUiLCJqIiwicHVzaCIsIkwyIiwieDEiLCJ4MiIsIkQiLCJsZW5ndGgiLCJ4MWkiLCJ4MmkiLCJ4dG9kIiwiWCIsIk4iLCJkaXN0IiwiZDJwIiwidG9sIiwibmYiLCJmbG9vciIsImhUYXJnZXQiLCJQIiwicHJvdyIsImJldGFtaW4iLCJiZXRhbWF4IiwiSW5maW5pdHkiLCJiZXRhIiwiZG9uZSIsIm1heHRyaWVzIiwibnVtIiwicHN1bSIsInBqIiwiZXhwIiwibkhlcmUiLCJhYnMiLCJwT3V0IiwiTjIiLCJtYXgiLCJzaWduIiwiaW5pdERhdGFSYXciLCJkaXN0cyIsImluaXRTb2x1dGlvbiIsImluaXREYXRhRGlzdCIsIlkiLCJnYWlucyIsInlzdGVwIiwiZ2V0U29sdXRpb24iLCJzdGVwIiwiY2ciLCJjb3N0R3JhZCIsImNvc3QiLCJncmFkIiwieW1lYW4iLCJnaWQiLCJzaWQiLCJnYWluaWQiLCJuZXdnYWluIiwibmV3c2lkIiwiZGVidWdHcmFkIiwiZSIsInlvbGQiLCJjZzAiLCJjZzEiLCJhbmFseXRpYyIsIm51bWVyaWNhbCIsImNvbnNvbGUiLCJwbXVsIiwicXVBcnIiLCJxc3VtIiwiZHN1bSIsImRoZXJlIiwicXUiLCJOTiIsIlEiLCJxIiwiZ3N1bSIsInByZW11bHQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJtb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwidGhpc0FyZyIsIl9hcmd1bWVudHMiLCJnZW5lcmF0b3IiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsIm5leHQiLCJyZWplY3RlZCIsInJlc3VsdCIsInRoZW4iLCJhcHBseSIsIm9ubWVzc2FnZSIsImV2dCIsInRzbmUiLCJkYXRhIiwib3B0aW9ucyIsImxlYXJuaW5nUmF0ZSIsImNvbXBvbmVudHMiLCJpdGVyQ291bnQiLCJpdGVyYXRpb25zIiwicG9zdE1lc3NhZ2UiXSwic291cmNlUm9vdCI6IiJ9
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUMxRixTQUFTaUMsRUFBU3BJLEdBQVMsSUFBTXVGLEVBQUt1QyxFQUFpQixNQUFFOUgsR0FBUyxDQUFFLE1BQU9tRyxHQUFLOEIsRUFBTzlCLEVBQUksQ0FBRSxDQUM3RixTQUFTWixFQUFLOEMsR0FKbEIsSUFBZXJJLEVBSWFxSSxFQUFPbEUsS0FBTzZELEVBQVFLLEVBQU9ySSxRQUoxQ0EsRUFJeURxSSxFQUFPckksTUFKaERBLGFBQWlCNkQsRUFBSTdELEVBQVEsSUFBSTZELEdBQUUsU0FBVW1FLEdBQVdBLEVBQVFoSSxFQUFRLEtBSWpCc0ksS0FBS0osRUFBV0UsRUFBVyxDQUM3RzdDLEdBQU11QyxFQUFZQSxFQUFVUyxNQUFNWCxFQUFTQyxHQUFjLEtBQUtNLE9BQ2xFLEdBQ0osRUFFQUssVUFBWSxTQUFVQyxHQUNsQixPQUFPakosRUFBVVcsVUFBTSxPQUFRLEdBQVEsWUFDbkMsTUFBTXVJLEVBQU8sSUFBSSxJQUFLLENBQ2xCaEksUUFBUytILEVBQUlFLEtBQUtDLFFBQVFDLGFBQzFCdEksV0FBWWtJLEVBQUlFLEtBQUtDLFFBQVFySSxXQUM3QkUsSUFBS2dJLEVBQUlFLEtBQUtDLFFBQVFFLGFBRTFCSixFQUFLM0QsWUFBWTBELEVBQUlFLEtBQUtBLE1BQzFCLE1BQU1JLEVBQVlOLEVBQUlFLEtBQUtDLFFBQVFJLFdBQ25DLElBQUssSUFBSTdHLEVBQUksRUFBR0EsRUFBSTRHLElBQWE1RyxFQUM3QnVHLEVBQUtuRCxPQUNUMEQsWUFBWSxDQUFFLFdBQWNQLEVBQUtwRCxlQUNyQyxHQUNKLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9lZGEvLi9zcmMvd29ya2Vycy90c25lLXdvcmtlci50cyIsIndlYnBhY2s6Ly9lZGEvLi9ub2RlX21vZHVsZXMvQGtlY2tlbHQvdHNuZS9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vZWRhLy4vbm9kZV9tb2R1bGVzL0BrZWNrZWx0L3RzbmUvbGliL3RzbmUuanMiLCJ3ZWJwYWNrOi8vZWRhL3dlYnBhY2svYm9vdHN0cmFwIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFdvcmtlciBmb3IgdGhlIG1ldGhvZCB0LVNORVxudmFyIF9fYXdhaXRlciA9ICh0aGlzICYmIHRoaXMuX19hd2FpdGVyKSB8fCBmdW5jdGlvbiAodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcbiAgICB9KTtcbn07XG5pbXBvcnQgeyBUU05FIH0gZnJvbSAnQGtlY2tlbHQvdHNuZSc7XG5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgY29uc3QgdHNuZSA9IG5ldyBUU05FKHtcbiAgICAgICAgICAgIGVwc2lsb246IGV2dC5kYXRhLm9wdGlvbnMubGVhcm5pbmdSYXRlLFxuICAgICAgICAgICAgcGVycGxleGl0eTogZXZ0LmRhdGEub3B0aW9ucy5wZXJwbGV4aXR5LFxuICAgICAgICAgICAgZGltOiBldnQuZGF0YS5vcHRpb25zLmNvbXBvbmVudHMsXG4gICAgICAgIH0pO1xuICAgICAgICB0c25lLmluaXREYXRhUmF3KGV2dC5kYXRhLmRhdGEpO1xuICAgICAgICBjb25zdCBpdGVyQ291bnQgPSBldnQuZGF0YS5vcHRpb25zLml0ZXJhdGlvbnM7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlckNvdW50OyArK2kpXG4gICAgICAgICAgICB0c25lLnN0ZXAoKTtcbiAgICAgICAgcG9zdE1lc3NhZ2UoeyAnZW1iZWRkaW5ncyc6IHRzbmUuZ2V0U29sdXRpb24oKSB9KTtcbiAgICB9KTtcbn07XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbnZhciB0c25lXzEgPSByZXF1aXJlKFwiLi90c25lXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiVFNORVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHNuZV8xLlRTTkU7IH0gfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuVFNORSA9IHZvaWQgMDtcbmNsYXNzIFRTTkUge1xuICAgIGNvbnN0cnVjdG9yKG9wdCkge1xuICAgICAgICAvLyByZXR1cm4gMCBtZWFuIHVuaXQgc3RhbmRhcmQgZGV2aWF0aW9uIHJhbmRvbSBudW1iZXJcbiAgICAgICAgdGhpcy5yZXR1cm5WID0gZmFsc2U7XG4gICAgICAgIHRoaXMudlZhbHVlID0gMC4wO1xuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgICAgICBvcHQgPSBvcHQgfHwge307XG4gICAgICAgIHRoaXMucGVycGxleGl0eSA9IHRoaXMuZ2V0b3B0KG9wdCwgJ3BlcnBsZXhpdHknLCAzMCk7IC8vIGVmZmVjdGl2ZSBudW1iZXIgb2YgbmVhcmVzdCBuZWlnaGJvcnNcbiAgICAgICAgdGhpcy5kaW0gPSB0aGlzLmdldG9wdChvcHQsICdkaW0nLCAyKTsgLy8gYnkgZGVmYXVsdCAyLUQgdFNORVxuICAgICAgICB0aGlzLmVwc2lsb24gPSB0aGlzLmdldG9wdChvcHQsICdlcHNpbG9uJywgMTApOyAvLyBsZWFybmluZyByYXRlXG4gICAgfVxuICAgIGFzc2VydChjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgICAgICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG1lc3NhZ2UgfHwgJ0Fzc2VydGlvbiBmYWlsZWQnO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHN5bnRheCBzdWdhclxuICAgIGdldG9wdChvcHQsIGZpZWxkLCBkZWZhdWx0dmFsKSB7XG4gICAgICAgIGlmIChvcHQuaGFzT3duUHJvcGVydHkoZmllbGQpKSB7XG4gICAgICAgICAgICByZXR1cm4gb3B0W2ZpZWxkXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBkZWZhdWx0dmFsO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdhdXNzUmFuZG9tKCkge1xuICAgICAgICBpZiAodGhpcy5yZXR1cm5WKSB7XG4gICAgICAgICAgICB0aGlzLnJldHVyblYgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB1ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCB2ID0gMiAqIE1hdGgucmFuZG9tKCkgLSAxO1xuICAgICAgICBjb25zdCByID0gdSAqIHUgKyB2ICogdjtcbiAgICAgICAgaWYgKHIgPT09IDAgfHwgciA+IDEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdhdXNzUmFuZG9tKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYyA9IE1hdGguc3FydCgtMiAqIE1hdGgubG9nKHIpIC8gcik7XG4gICAgICAgIHRoaXMudlZhbHVlID0gdiAqIGM7IC8vIGNhY2hlIHRoaXMgZm9yIG5leHQgZnVuY3Rpb24gY2FsbCBmb3IgZWZmaWNpZW5jeVxuICAgICAgICB0aGlzLnJldHVyblYgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdSAqIGM7XG4gICAgfVxuICAgIC8vIHJldHVybiByYW5kb20gbm9ybWFsIG51bWJlclxuICAgIHJhbmRuKG11LCBzdGQpIHsgcmV0dXJuIG11ICsgdGhpcy5nYXVzc1JhbmRvbSgpICogc3RkOyB9XG4gICAgLy8gdXRpbGl0aXR5IHRoYXQgY3JlYXRlcyBjb250aWd1b3VzIHZlY3RvciBvZiB6ZXJvcyBvZiBzaXplIG5cbiAgICB6ZXJvcyhuKSB7XG4gICAgICAgIGlmICh0eXBlb2YgKG4pID09PSAndW5kZWZpbmVkJyB8fCBpc05hTihuKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAvLyBsYWNraW5nIGJyb3dzZXIgc3VwcG9ydFxuICAgICAgICAgICAgY29uc3QgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgICAgICBhcnJbaV0gPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGFycjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgRmxvYXQ2NEFycmF5KG4pOyAvLyB0eXBlZCBhcnJheXMgYXJlIGZhc3RlclxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHV0aWxpdHkgdGhhdCByZXR1cm5zIDJkIGFycmF5IGZpbGxlZCB3aXRoIHJhbmRvbSBudW1iZXJzXG4gICAgLy8gb3Igd2l0aCB2YWx1ZSBzLCBpZiBwcm92aWRlZFxuICAgIHJhbmRuMmQobiwgZCwgcykge1xuICAgICAgICBjb25zdCB1c2VzID0gdHlwZW9mIHMgIT09ICd1bmRlZmluZWQnO1xuICAgICAgICBjb25zdCB4ID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4aGVyZSA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBkOyBqKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodXNlcykge1xuICAgICAgICAgICAgICAgICAgICB4aGVyZS5wdXNoKHMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgeGhlcmUucHVzaCh0aGlzLnJhbmRuKDAuMCwgMWUtNCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHgucHVzaCh4aGVyZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHg7XG4gICAgfVxuICAgIC8vIGNvbXB1dGUgTDIgZGlzdGFuY2UgYmV0d2VlbiB0d28gdmVjdG9yc1xuICAgIEwyKHgxLCB4Mikge1xuICAgICAgICBjb25zdCBEID0geDEubGVuZ3RoO1xuICAgICAgICBsZXQgZCA9IDA7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgRDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCB4MWkgPSB4MVtpXTtcbiAgICAgICAgICAgIGNvbnN0IHgyaSA9IHgyW2ldO1xuICAgICAgICAgICAgZCArPSAoeDFpIC0geDJpKSAqICh4MWkgLSB4MmkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkO1xuICAgIH1cbiAgICAvLyBjb21wdXRlIHBhaXJ3aXNlIGRpc3RhbmNlIGluIGFsbCB2ZWN0b3JzIGluIFhcbiAgICB4dG9kKFgpIHtcbiAgICAgICAgY29uc3QgTiA9IFgubGVuZ3RoO1xuICAgICAgICBjb25zdCBkaXN0ID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSB0aGlzLkwyKFhbaV0sIFhbal0pO1xuICAgICAgICAgICAgICAgIGRpc3RbaSAqIE4gKyBqXSA9IGQ7XG4gICAgICAgICAgICAgICAgZGlzdFtqICogTiArIGldID0gZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGlzdDtcbiAgICB9XG4gICAgLy8gY29tcHV0ZSAocF97aXxqfSArIHBfe2p8aX0pLygybilcbiAgICBkMnAoRCwgcGVycGxleGl0eSwgdG9sKSB7XG4gICAgICAgIGNvbnN0IG5mID0gTWF0aC5zcXJ0KEQubGVuZ3RoKTsgLy8gdGhpcyBiZXR0ZXIgYmUgYW4gaW50ZWdlclxuICAgICAgICBjb25zdCBuID0gTWF0aC5mbG9vcihuZik7XG4gICAgICAgIHRoaXMuYXNzZXJ0KG4gPT09IG5mLCAnRCBzaG91bGQgaGF2ZSBzcXVhcmUgbnVtYmVyIG9mIGVsZW1lbnRzLicpO1xuICAgICAgICBjb25zdCBoVGFyZ2V0ID0gTWF0aC5sb2cocGVycGxleGl0eSk7IC8vIHRhcmdldCBlbnRyb3B5IG9mIGRpc3RyaWJ1dGlvblxuICAgICAgICBjb25zdCBQID0gdGhpcy56ZXJvcyhuICogbik7IC8vIHRlbXBvcmFyeSBwcm9iYWJpbGl0eSBtYXRyaXhcbiAgICAgICAgY29uc3QgcHJvdyA9IHRoaXMuemVyb3Mobik7IC8vIGEgdGVtcG9yYXJ5IHN0b3JhZ2UgY29tcGFydG1lbnRcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBiZXRhbWluID0gLUluZmluaXR5O1xuICAgICAgICAgICAgbGV0IGJldGFtYXggPSBJbmZpbml0eTtcbiAgICAgICAgICAgIGxldCBiZXRhID0gMTsgLy8gaW5pdGlhbCB2YWx1ZSBvZiBwcmVjaXNpb25cbiAgICAgICAgICAgIGxldCBkb25lID0gZmFsc2U7XG4gICAgICAgICAgICBjb25zdCBtYXh0cmllcyA9IDUwO1xuICAgICAgICAgICAgLy8gcGVyZm9ybSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgYSBzdWl0YWJsZSBwcmVjaXNpb24gYmV0YVxuICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgZW50cm9weSBvZiB0aGUgZGlzdHJpYnV0aW9uIGlzIGFwcHJvcHJpYXRlXG4gICAgICAgICAgICBsZXQgbnVtID0gMDtcbiAgICAgICAgICAgIHdoaWxlICghZG9uZSkge1xuICAgICAgICAgICAgICAgIC8vZGVidWdnZXI7XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBlbnRyb3B5IGFuZCBrZXJuZWwgcm93IHdpdGggYmV0YSBwcmVjaXNpb25cbiAgICAgICAgICAgICAgICBsZXQgcHN1bSA9IDAuMDtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgICAgICBsZXQgcGogPSBNYXRoLmV4cCgtRFtpICogbiArIGpdICogYmV0YSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSBqKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaiA9IDA7XG4gICAgICAgICAgICAgICAgICAgIH0gLy8gd2UgZG9udCBjYXJlIGFib3V0IGRpYWdvbmFsc1xuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIHBzdW0gKz0gcGo7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIG5vcm1hbGl6ZSBwIGFuZCBjb21wdXRlIGVudHJvcHlcbiAgICAgICAgICAgICAgICBsZXQgbkhlcmUgPSAwLjA7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBuOyBqKyspIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBqO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHN1bSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGogPSBwcm93W2pdIC8gcHN1bTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwaiA+IDFlLTcpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5IZXJlIC09IHBqICogTWF0aC5sb2cocGopO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIGFkanVzdCBiZXRhIGJhc2VkIG9uIHJlc3VsdFxuICAgICAgICAgICAgICAgIGlmIChuSGVyZSA+IGhUYXJnZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZW50cm9weSB3YXMgdG9vIGhpZ2ggKGRpc3RyaWJ1dGlvbiB0b28gZGlmZnVzZSlcbiAgICAgICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBpbmNyZWFzZSB0aGUgcHJlY2lzaW9uIGZvciBtb3JlIHBlYWt5IGRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgICAgICBiZXRhbWluID0gYmV0YTsgLy8gbW92ZSB1cCB0aGUgYm91bmRzXG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWF4ID09PSBJbmZpbml0eSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IGJldGEgKiAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmV0YSA9IChiZXRhICsgYmV0YW1heCkgLyAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJzZSBjYXNlLiBtYWtlIGRpc3RydWJ0aW9uIGxlc3MgcGVha3lcbiAgICAgICAgICAgICAgICAgICAgYmV0YW1heCA9IGJldGE7XG4gICAgICAgICAgICAgICAgICAgIGlmIChiZXRhbWluID09PSAtSW5maW5pdHkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSBiZXRhIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJldGEgPSAoYmV0YSArIGJldGFtaW4pIC8gMjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyBzdG9wcGluZyBjb25kaXRpb25zOiB0b28gbWFueSB0cmllcyBvciBnb3QgYSBnb29kIHByZWNpc2lvblxuICAgICAgICAgICAgICAgIG51bSsrO1xuICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhuSGVyZSAtIGhUYXJnZXQpIDwgdG9sKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobnVtID49IG1heHRyaWVzKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdkYXRhIHBvaW50ICcgKyBpICsgJyBnZXRzIHByZWNpc2lvbiAnICsgYmV0YSArICcgYWZ0ZXIgJyArIG51bSArICcgYmluYXJ5IHNlYXJjaCBzdGVwcy4nKTtcbiAgICAgICAgICAgIC8vIGNvcHkgb3ZlciB0aGUgZmluYWwgcHJvdyB0byBQIGF0IHJvdyBpXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IG47IGorKykge1xuICAgICAgICAgICAgICAgIFBbaSAqIG4gKyBqXSA9IHByb3dbal07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gLy8gZW5kIGxvb3Agb3ZlciBleGFtcGxlcyBpXG4gICAgICAgIC8vIHN5bW1ldHJpemUgUCBhbmQgbm9ybWFsaXplIGl0IHRvIHN1bSB0byAxIG92ZXIgYWxsIGlqXG4gICAgICAgIGNvbnN0IHBPdXQgPSB0aGlzLnplcm9zKG4gKiBuKTtcbiAgICAgICAgY29uc3QgTjIgPSBuICogMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbjsgaisrKSB7XG4gICAgICAgICAgICAgICAgcE91dFtpICogbiArIGpdID0gTWF0aC5tYXgoKFBbaSAqIG4gKyBqXSArIFBbaiAqIG4gKyBpXSkgLyBOMiwgMWUtMTAwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcE91dDtcbiAgICB9XG4gICAgLy8gaGVscGVyIGZ1bmN0aW9uXG4gICAgc2lnbih4KSB7IHJldHVybiB4ID4gMCA/IDEgOiB4IDwgMCA/IC0xIDogMDsgfVxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgYSBzZXQgb2YgaGlnaC1kaW1lbnNpb25hbCBwb2ludHNcbiAgICAvLyBhbmQgY3JlYXRlcyBtYXRyaXggUCBmcm9tIHRoZW0gdXNpbmcgZ2F1c3NpYW4ga2VybmVsXG4gICAgaW5pdERhdGFSYXcoWCkge1xuICAgICAgICBjb25zdCBOID0gWC5sZW5ndGg7XG4gICAgICAgIGNvbnN0IEQgPSBYWzBdLmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIHRoaXMuYXNzZXJ0KEQgPiAwLCAnIFhbMF0gaXMgZW1wdHk/IFdoZXJlIGlzIHRoZSBkYXRhPycpO1xuICAgICAgICBjb25zdCBkaXN0cyA9IHRoaXMueHRvZChYKTsgLy8gY29udmVydCBYIHRvIGRpc3RhbmNlcyB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICAgICAgdGhpcy5QID0gdGhpcy5kMnAoZGlzdHMsIHRoaXMucGVycGxleGl0eSwgMWUtNCk7IC8vIGF0dGFjaCB0byBvYmplY3RcbiAgICAgICAgdGhpcy5OID0gTjsgLy8gYmFjayB1cCB0aGUgc2l6ZSBvZiB0aGUgZGF0YXNldFxuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIGdpdmVuIGRpc3RhbmNlIG1hdHJpeCBhbmQgY3JlYXRlc1xuICAgIC8vIG1hdHJpeCBQIGZyb20gdGhlbS5cbiAgICAvLyBEIGlzIGFzc3VtZWQgdG8gYmUgcHJvdmlkZWQgYXMgYSBsaXN0IG9mIGxpc3RzLCBhbmQgc2hvdWxkIGJlIHN5bW1ldHJpY1xuICAgIGluaXREYXRhRGlzdChEKSB7XG4gICAgICAgIGNvbnN0IE4gPSBELmxlbmd0aDtcbiAgICAgICAgdGhpcy5hc3NlcnQoTiA+IDAsICcgWCBpcyBlbXB0eT8gWW91IG11c3QgaGF2ZSBzb21lIGRhdGEhJyk7XG4gICAgICAgIC8vIGNvbnZlcnQgRCB0byBhIChmYXN0KSB0eXBlZCBhcnJheSB2ZXJzaW9uXG4gICAgICAgIGNvbnN0IGRpc3RzID0gdGhpcy56ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGQgPSBEW2ldW2pdO1xuICAgICAgICAgICAgICAgIGRpc3RzW2kgKiBOICsgal0gPSBkO1xuICAgICAgICAgICAgICAgIGRpc3RzW2ogKiBOICsgaV0gPSBkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuUCA9IHRoaXMuZDJwKGRpc3RzLCB0aGlzLnBlcnBsZXhpdHksIDFlLTQpO1xuICAgICAgICB0aGlzLk4gPSBOO1xuICAgICAgICB0aGlzLmluaXRTb2x1dGlvbigpOyAvLyByZWZyZXNoIHRoaXNcbiAgICB9XG4gICAgLy8gKHJlKWluaXRpYWxpemVzIHRoZSBzb2x1dGlvbiB0byByYW5kb21cbiAgICBpbml0U29sdXRpb24oKSB7XG4gICAgICAgIC8vIGdlbmVyYXRlIHJhbmRvbSBzb2x1dGlvbiB0byB0LVNORVxuICAgICAgICB0aGlzLlkgPSB0aGlzLnJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSk7IC8vIHRoZSBzb2x1dGlvblxuICAgICAgICB0aGlzLmdhaW5zID0gdGhpcy5yYW5kbjJkKHRoaXMuTiwgdGhpcy5kaW0sIDEuMCk7IC8vIHN0ZXAgZ2FpbnMgdG8gYWNjZWxlcmF0ZSBwcm9ncmVzcyBpbiB1bmNoYW5naW5nIGRpcmVjdGlvbnNcbiAgICAgICAgdGhpcy55c3RlcCA9IHRoaXMucmFuZG4yZCh0aGlzLk4sIHRoaXMuZGltLCAwLjApOyAvLyBtb21lbnR1bSBhY2N1bXVsYXRvclxuICAgICAgICB0aGlzLml0ZXIgPSAwO1xuICAgIH1cbiAgICAvLyByZXR1cm4gcG9pbnRlciB0byBjdXJyZW50IHNvbHV0aW9uXG4gICAgZ2V0U29sdXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLlk7XG4gICAgfVxuICAgIC8vIHBlcmZvcm0gYSBzaW5nbGUgc3RlcCBvZiBvcHRpbWl6YXRpb24gdG8gaW1wcm92ZSB0aGUgZW1iZWRkaW5nXG4gICAgc3RlcCgpIHtcbiAgICAgICAgdGhpcy5pdGVyICs9IDE7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgICBjb25zdCBjb3N0ID0gY2cuY29zdDtcbiAgICAgICAgY29uc3QgZ3JhZCA9IGNnLmdyYWQ7XG4gICAgICAgIC8vIHBlcmZvcm0gZ3JhZGllbnQgc3RlcFxuICAgICAgICBjb25zdCB5bWVhbiA9IHRoaXMuemVyb3ModGhpcy5kaW0pO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IE47IGkrKykge1xuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCB0aGlzLmRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ2lkID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICAgICAgICBjb25zdCBzaWQgPSB0aGlzLnlzdGVwW2ldW2RdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdhaW5pZCA9IHRoaXMuZ2FpbnNbaV1bZF07XG4gICAgICAgICAgICAgICAgLy8gY29tcHV0ZSBnYWluIHVwZGF0ZVxuICAgICAgICAgICAgICAgIGxldCBuZXdnYWluID0gdGhpcy5zaWduKGdpZCkgPT09IHRoaXMuc2lnbihzaWQpID8gZ2FpbmlkICogMC44IDogZ2FpbmlkICsgMC4yO1xuICAgICAgICAgICAgICAgIGlmIChuZXdnYWluIDwgMC4wMSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdnYWluID0gMC4wMTtcbiAgICAgICAgICAgICAgICB9IC8vIGNsYW1wXG4gICAgICAgICAgICAgICAgdGhpcy5nYWluc1tpXVtkXSA9IG5ld2dhaW47IC8vIHN0b3JlIGZvciBuZXh0IHR1cm5cbiAgICAgICAgICAgICAgICAvLyBjb21wdXRlIG1vbWVudHVtIHN0ZXAgZGlyZWN0aW9uXG4gICAgICAgICAgICAgICAgY29uc3QgbW9tdmFsID0gdGhpcy5pdGVyIDwgMjUwID8gMC41IDogMC44O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld3NpZCA9IG1vbXZhbCAqIHNpZCAtIHRoaXMuZXBzaWxvbiAqIG5ld2dhaW4gKiBncmFkW2ldW2RdO1xuICAgICAgICAgICAgICAgIHRoaXMueXN0ZXBbaV1bZF0gPSBuZXdzaWQ7IC8vIHJlbWVtYmVyIHRoZSBzdGVwIHdlIHRvb2tcbiAgICAgICAgICAgICAgICAvLyBzdGVwIVxuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSArPSBuZXdzaWQ7XG4gICAgICAgICAgICAgICAgeW1lYW5bZF0gKz0gdGhpcy5ZW2ldW2RdOyAvLyBhY2N1bXVsYXRlIG1lYW4gc28gdGhhdCB3ZSBjYW4gY2VudGVyIGxhdGVyXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gcmVwcm9qZWN0IFkgdG8gYmUgemVybyBtZWFuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IHRoaXMuZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gLT0geW1lYW5bZF0gLyBOO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vaWYodGhpcy5pdGVyJTEwMD09PTApIGNvbnNvbGUubG9nKCdpdGVyICcgKyB0aGlzLml0ZXIgKyAnLCBjb3N0OiAnICsgY29zdCk7XG4gICAgICAgIHJldHVybiBjb3N0OyAvLyByZXR1cm4gY3VycmVudCBjb3N0XG4gICAgfVxuICAgIC8vIGZvciBkZWJ1Z2dpbmc6IGdyYWRpZW50IGNoZWNrXG4gICAgZGVidWdHcmFkKCkge1xuICAgICAgICBjb25zdCBOID0gdGhpcy5OO1xuICAgICAgICBjb25zdCBjZyA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTsgLy8gZXZhbHVhdGUgZ3JhZGllbnRcbiAgICAgICAgY29uc3QgY29zdCA9IGNnLmNvc3Q7XG4gICAgICAgIGNvbnN0IGdyYWQgPSBjZy5ncmFkO1xuICAgICAgICBjb25zdCBlID0gMWUtNTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgdGhpcy5kaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHlvbGQgPSB0aGlzLllbaV1bZF07XG4gICAgICAgICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCArIGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY2cwID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpO1xuICAgICAgICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQgLSBlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNnMSA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTtcbiAgICAgICAgICAgICAgICBjb25zdCBhbmFseXRpYyA9IGdyYWRbaV1bZF07XG4gICAgICAgICAgICAgICAgY29uc3QgbnVtZXJpY2FsID0gKGNnMC5jb3N0IC0gY2cxLmNvc3QpIC8gKDIgKiBlKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhpICsgJywnICsgZCArICc6IGdyYWRjaGVjayBhbmFseXRpYzogJyArIGFuYWx5dGljICsgJyB2cy4gbnVtZXJpY2FsOiAnICsgbnVtZXJpY2FsKTtcbiAgICAgICAgICAgICAgICB0aGlzLllbaV1bZF0gPSB5b2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIHJldHVybiBjb3N0IGFuZCBncmFkaWVudCwgZ2l2ZW4gYW4gYXJyYW5nZW1lbnRcbiAgICBjb3N0R3JhZChZKSB7XG4gICAgICAgIGNvbnN0IE4gPSB0aGlzLk47XG4gICAgICAgIGNvbnN0IGRpbSA9IHRoaXMuZGltOyAvLyBkaW0gb2Ygb3V0cHV0IHNwYWNlXG4gICAgICAgIGNvbnN0IFAgPSB0aGlzLlA7XG4gICAgICAgIGNvbnN0IHBtdWwgPSB0aGlzLml0ZXIgPCAxMDAgPyA0IDogMTsgLy8gdHJpY2sgdGhhdCBoZWxwcyB3aXRoIGxvY2FsIG9wdGltYVxuICAgICAgICAvLyBjb21wdXRlIGN1cnJlbnQgUSBkaXN0cmlidXRpb24sIHVubm9ybWFsaXplZCBmaXJzdFxuICAgICAgICBjb25zdCBxdUFyciA9IHRoaXMuemVyb3MoTiAqIE4pO1xuICAgICAgICBsZXQgcXN1bSA9IDAuMDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOOyBpKyspIHtcbiAgICAgICAgICAgIGZvciAobGV0IGogPSBpICsgMTsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGxldCBkc3VtID0gMC4wO1xuICAgICAgICAgICAgICAgIGZvciAobGV0IGQgPSAwOyBkIDwgZGltOyBkKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGhlcmUgPSBZW2ldW2RdIC0gWVtqXVtkXTtcbiAgICAgICAgICAgICAgICAgICAgZHN1bSArPSBkaGVyZSAqIGRoZXJlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBxdSA9IDEuMCAvICgxLjAgKyBkc3VtKTsgLy8gU3R1ZGVudCB0LWRpc3RyaWJ1dGlvblxuICAgICAgICAgICAgICAgIHF1QXJyW2kgKiBOICsgal0gPSBxdTtcbiAgICAgICAgICAgICAgICBxdUFycltqICogTiArIGldID0gcXU7XG4gICAgICAgICAgICAgICAgcXN1bSArPSAyICogcXU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy8gbm9ybWFsaXplIFEgZGlzdHJpYnV0aW9uIHRvIHN1bSB0byAxXG4gICAgICAgIGNvbnN0IE5OID0gTiAqIE47XG4gICAgICAgIGNvbnN0IFEgPSB0aGlzLnplcm9zKE5OKTtcbiAgICAgICAgZm9yIChsZXQgcSA9IDA7IHEgPCBOTjsgcSsrKSB7XG4gICAgICAgICAgICBRW3FdID0gTWF0aC5tYXgocXVBcnJbcV0gLyBxc3VtLCAxZS0xMDApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBjb3N0ID0gMC4wO1xuICAgICAgICBjb25zdCBncmFkID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgTjsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBnc3VtID0gbmV3IEFycmF5KGRpbSk7IC8vIGluaXQgZ3JhZCBmb3IgcG9pbnQgaVxuICAgICAgICAgICAgZm9yIChsZXQgZCA9IDA7IGQgPCBkaW07IGQrKykge1xuICAgICAgICAgICAgICAgIGdzdW1bZF0gPSAwLjA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IE47IGorKykge1xuICAgICAgICAgICAgICAgIGNvc3QgKz0gLVBbaSAqIE4gKyBqXSAqIE1hdGgubG9nKFFbaSAqIE4gKyBqXSk7IC8vIGFjY3VtdWxhdGUgY29zdCAodGhlIG5vbi1jb25zdGFudCBwb3J0aW9uIGF0IGxlYXN0Li4uKVxuICAgICAgICAgICAgICAgIGNvbnN0IHByZW11bHQgPSA0ICogKHBtdWwgKiBQW2kgKiBOICsgal0gLSBRW2kgKiBOICsgal0pICogcXVBcnJbaSAqIE4gKyBqXTtcbiAgICAgICAgICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8IGRpbTsgZCsrKSB7XG4gICAgICAgICAgICAgICAgICAgIGdzdW1bZF0gKz0gcHJlbXVsdCAqIChZW2ldW2RdIC0gWVtqXVtkXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZ3JhZC5wdXNoKGdzdW0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IGNvc3QsIGdyYWQgfTtcbiAgICB9XG59XG5leHBvcnRzLlRTTkUgPSBUU05FO1xuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJleHBvcnRzIiwidHNuZV8xIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiVFNORSIsInZhbHVlIiwiY29uc3RydWN0b3IiLCJvcHQiLCJ0aGlzIiwicmV0dXJuViIsInZWYWx1ZSIsIml0ZXIiLCJwZXJwbGV4aXR5IiwiZ2V0b3B0IiwiZGltIiwiZXBzaWxvbiIsImFzc2VydCIsImNvbmRpdGlvbiIsIm1lc3NhZ2UiLCJmaWVsZCIsImRlZmF1bHR2YWwiLCJoYXNPd25Qcm9wZXJ0eSIsImdhdXNzUmFuZG9tIiwidSIsIk1hdGgiLCJyYW5kb20iLCJ2IiwiciIsImMiLCJzcXJ0IiwibG9nIiwicmFuZG4iLCJtdSIsInN0ZCIsInplcm9zIiwibiIsImlzTmFOIiwiQXJyYXlCdWZmZXIiLCJhcnIiLCJBcnJheSIsImkiLCJGbG9hdDY0QXJyYXkiLCJyYW5kbjJkIiwiZCIsInMiLCJ1c2VzIiwieCIsInhoZXJlIiwiaiIsInB1c2giLCJMMiIsIngxIiwieDIiLCJEIiwibGVuZ3RoIiwieDFpIiwieDJpIiwieHRvZCIsIlgiLCJOIiwiZGlzdCIsImQycCIsInRvbCIsIm5mIiwiZmxvb3IiLCJoVGFyZ2V0IiwiUCIsInByb3ciLCJiZXRhbWluIiwiYmV0YW1heCIsIkluZmluaXR5IiwiYmV0YSIsImRvbmUiLCJtYXh0cmllcyIsIm51bSIsInBzdW0iLCJwaiIsImV4cCIsIm5IZXJlIiwiYWJzIiwicE91dCIsIk4yIiwibWF4Iiwic2lnbiIsImluaXREYXRhUmF3IiwiZGlzdHMiLCJpbml0U29sdXRpb24iLCJpbml0RGF0YURpc3QiLCJZIiwiZ2FpbnMiLCJ5c3RlcCIsImdldFNvbHV0aW9uIiwic3RlcCIsImNnIiwiY29zdEdyYWQiLCJjb3N0IiwiZ3JhZCIsInltZWFuIiwiZ2lkIiwic2lkIiwiZ2FpbmlkIiwibmV3Z2FpbiIsIm5ld3NpZCIsImRlYnVnR3JhZCIsImUiLCJ5b2xkIiwiY2cwIiwiY2cxIiwiYW5hbHl0aWMiLCJudW1lcmljYWwiLCJjb25zb2xlIiwicG11bCIsInF1QXJyIiwicXN1bSIsImRzdW0iLCJkaGVyZSIsInF1IiwiTk4iLCJRIiwicSIsImdzdW0iLCJwcmVtdWx0IiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIm1vZHVsZUlkIiwiY2FjaGVkTW9kdWxlIiwidW5kZWZpbmVkIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiZ2VuZXJhdG9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJuZXh0IiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJ0aGVuIiwiYXBwbHkiLCJvbm1lc3NhZ2UiLCJldnQiLCJ0c25lIiwiZGF0YSIsIm9wdGlvbnMiLCJsZWFybmluZ1JhdGUiLCJjb21wb25lbnRzIiwiaXRlckNvdW50IiwiaXRlcmF0aW9ucyIsInBvc3RNZXNzYWdlIl0sInNvdXJjZVJvb3QiOiIifQ==