@kulupu-linku/sona 0.3.0 → 0.3.1

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.
package/dist/client.js CHANGED
@@ -149,7 +149,7 @@ var l = (e, t) => new Proxy(() => {
149
149
  return o;
150
150
  }, []);
151
151
  const b = (e) => {
152
- const { baseUrl: t = "https://api.linku.la", fetch: r = global.fetch } = e;
152
+ const { baseUrl: t = "https://api.linku.la", fetch: r = globalThis.fetch } = e ?? {};
153
153
  return C(t, {
154
154
  fetch: r
155
155
  });
@@ -157,4 +157,4 @@ const b = (e) => {
157
157
  export {
158
158
  b as client
159
159
  };
160
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlcyI6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vaG9ub0A0LjIuNC9ub2RlX21vZHVsZXMvaG9uby9kaXN0L3V0aWxzL2Nvb2tpZS5qcyIsIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9ob25vQDQuMi40L25vZGVfbW9kdWxlcy9ob25vL2Rpc3QvY2xpZW50L3V0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2hvbm9ANC4yLjQvbm9kZV9tb2R1bGVzL2hvbm8vZGlzdC9jbGllbnQvY2xpZW50LmpzIiwiLi4vc3JjL2xpYi9jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL3V0aWxzL2Nvb2tpZS50c1xuaW1wb3J0IHsgZGVjb2RlVVJJQ29tcG9uZW50XyB9IGZyb20gXCIuL3VybC5qc1wiO1xudmFyIGFsZ29yaXRobSA9IHsgbmFtZTogXCJITUFDXCIsIGhhc2g6IFwiU0hBLTI1NlwiIH07XG52YXIgZ2V0Q3J5cHRvS2V5ID0gYXN5bmMgKHNlY3JldCkgPT4ge1xuICBjb25zdCBzZWNyZXRCdWYgPSB0eXBlb2Ygc2VjcmV0ID09PSBcInN0cmluZ1wiID8gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHNlY3JldCkgOiBzZWNyZXQ7XG4gIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcInJhd1wiLCBzZWNyZXRCdWYsIGFsZ29yaXRobSwgZmFsc2UsIFtcInNpZ25cIiwgXCJ2ZXJpZnlcIl0pO1xufTtcbnZhciBtYWtlU2lnbmF0dXJlID0gYXN5bmMgKHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgY29uc3Qga2V5ID0gYXdhaXQgZ2V0Q3J5cHRvS2V5KHNlY3JldCk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuc2lnbihhbGdvcml0aG0ubmFtZSwga2V5LCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgcmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5uZXcgVWludDhBcnJheShzaWduYXR1cmUpKSk7XG59O1xudmFyIHZlcmlmeVNpZ25hdHVyZSA9IGFzeW5jIChiYXNlNjRTaWduYXR1cmUsIHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzaWduYXR1cmVCaW5TdHIgPSBhdG9iKGJhc2U2NFNpZ25hdHVyZSk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlQmluU3RyLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHNpZ25hdHVyZUJpblN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgc2lnbmF0dXJlW2ldID0gc2lnbmF0dXJlQmluU3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLnZlcmlmeShhbGdvcml0aG0sIHNlY3JldCwgc2lnbmF0dXJlLCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcbnZhciB2YWxpZENvb2tpZU5hbWVSZWdFeCA9IC9eW1xcdyEjJCUmJyouXmB8fistXSskLztcbnZhciB2YWxpZENvb2tpZVZhbHVlUmVnRXggPSAvXlsgISMtOjwtW1xcXS1+XSokLztcbnZhciBwYXJzZSA9IChjb29raWUsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFpcnMgPSBjb29raWUudHJpbSgpLnNwbGl0KFwiO1wiKTtcbiAgcmV0dXJuIHBhaXJzLnJlZHVjZSgocGFyc2VkQ29va2llLCBwYWlyU3RyKSA9PiB7XG4gICAgcGFpclN0ciA9IHBhaXJTdHIudHJpbSgpO1xuICAgIGNvbnN0IHZhbHVlU3RhcnRQb3MgPSBwYWlyU3RyLmluZGV4T2YoXCI9XCIpO1xuICAgIGlmICh2YWx1ZVN0YXJ0UG9zID09PSAtMSkge1xuICAgICAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbiAgICB9XG4gICAgY29uc3QgY29va2llTmFtZSA9IHBhaXJTdHIuc3Vic3RyaW5nKDAsIHZhbHVlU3RhcnRQb3MpLnRyaW0oKTtcbiAgICBpZiAobmFtZSAmJiBuYW1lICE9PSBjb29raWVOYW1lIHx8ICF2YWxpZENvb2tpZU5hbWVSZWdFeC50ZXN0KGNvb2tpZU5hbWUpKSB7XG4gICAgICByZXR1cm4gcGFyc2VkQ29va2llO1xuICAgIH1cbiAgICBsZXQgY29va2llVmFsdWUgPSBwYWlyU3RyLnN1YnN0cmluZyh2YWx1ZVN0YXJ0UG9zICsgMSkudHJpbSgpO1xuICAgIGlmIChjb29raWVWYWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIGNvb2tpZVZhbHVlLmVuZHNXaXRoKCdcIicpKSB7XG4gICAgICBjb29raWVWYWx1ZSA9IGNvb2tpZVZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICB9XG4gICAgaWYgKHZhbGlkQ29va2llVmFsdWVSZWdFeC50ZXN0KGNvb2tpZVZhbHVlKSkge1xuICAgICAgcGFyc2VkQ29va2llW2Nvb2tpZU5hbWVdID0gZGVjb2RlVVJJQ29tcG9uZW50Xyhjb29raWVWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWRDb29raWU7XG4gIH0sIHt9KTtcbn07XG52YXIgcGFyc2VTaWduZWQgPSBhc3luYyAoY29va2llLCBzZWNyZXQsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFyc2VkQ29va2llID0ge307XG4gIGNvbnN0IHNlY3JldEtleSA9IGF3YWl0IGdldENyeXB0b0tleShzZWNyZXQpO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZShjb29raWUsIG5hbWUpKSkge1xuICAgIGNvbnN0IHNpZ25hdHVyZVN0YXJ0UG9zID0gdmFsdWUubGFzdEluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChzaWduYXR1cmVTdGFydFBvcyA8IDEpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBzaWduZWRWYWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBzaWduYXR1cmVTdGFydFBvcyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdmFsdWUuc3Vic3RyaW5nKHNpZ25hdHVyZVN0YXJ0UG9zICsgMSk7XG4gICAgaWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDQ0IHx8ICFzaWduYXR1cmUuZW5kc1dpdGgoXCI9XCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IHZlcmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIHNpZ25lZFZhbHVlLCBzZWNyZXRLZXkpO1xuICAgIHBhcnNlZENvb2tpZVtrZXldID0gaXNWZXJpZmllZCA/IHNpZ25lZFZhbHVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbn07XG52YXIgX3NlcmlhbGl6ZSA9IChuYW1lLCB2YWx1ZSwgb3B0ID0ge30pID0+IHtcbiAgbGV0IGNvb2tpZSA9IGAke25hbWV9PSR7dmFsdWV9YDtcbiAgaWYgKG5hbWUuc3RhcnRzV2l0aChcIl9fU2VjdXJlLVwiKSAmJiAhb3B0LnNlY3VyZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIl9fU2VjdXJlLSBDb29raWUgbXVzdCBoYXZlIFNlY3VyZSBhdHRyaWJ1dGVzXCIpO1xuICB9XG4gIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJfX0hvc3QtXCIpKSB7XG4gICAgaWYgKCFvcHQuc2VjdXJlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfX0hvc3QtIENvb2tpZSBtdXN0IGhhdmUgU2VjdXJlIGF0dHJpYnV0ZXNcIik7XG4gICAgfVxuICAgIGlmIChvcHQucGF0aCAhPT0gXCIvXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignX19Ib3N0LSBDb29raWUgbXVzdCBoYXZlIFBhdGggYXR0cmlidXRlcyB3aXRoIFwiL1wiJyk7XG4gICAgfVxuICAgIGlmIChvcHQuZG9tYWluKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfX0hvc3QtIENvb2tpZSBtdXN0IG5vdCBoYXZlIERvbWFpbiBhdHRyaWJ1dGVzXCIpO1xuICAgIH1cbiAgfVxuICBpZiAob3B0ICYmIHR5cGVvZiBvcHQubWF4QWdlID09PSBcIm51bWJlclwiICYmIG9wdC5tYXhBZ2UgPj0gMCkge1xuICAgIGlmIChvcHQubWF4QWdlID4gMzQ1NmU0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ29va2llcyBNYXgtQWdlIFNIT1VMRCBOT1QgYmUgZ3JlYXRlciB0aGFuIDQwMCBkYXlzICgzNDU2MDAwMCBzZWNvbmRzKSBpbiBkdXJhdGlvbi5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29va2llICs9IGA7IE1heC1BZ2U9JHtNYXRoLmZsb29yKG9wdC5tYXhBZ2UpfWA7XG4gIH1cbiAgaWYgKG9wdC5kb21haW4gJiYgb3B0LnByZWZpeCAhPT0gXCJob3N0XCIpIHtcbiAgICBjb29raWUgKz0gYDsgRG9tYWluPSR7b3B0LmRvbWFpbn1gO1xuICB9XG4gIGlmIChvcHQucGF0aCkge1xuICAgIGNvb2tpZSArPSBgOyBQYXRoPSR7b3B0LnBhdGh9YDtcbiAgfVxuICBpZiAob3B0LmV4cGlyZXMpIHtcbiAgICBpZiAob3B0LmV4cGlyZXMuZ2V0VGltZSgpIC0gRGF0ZS5ub3coKSA+IDM0NTZlNykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkNvb2tpZXMgRXhwaXJlcyBTSE9VTEQgTk9UIGJlIGdyZWF0ZXIgdGhhbiA0MDAgZGF5cyAoMzQ1NjAwMDAgc2Vjb25kcykgaW4gdGhlIGZ1dHVyZS5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29va2llICs9IGA7IEV4cGlyZXM9JHtvcHQuZXhwaXJlcy50b1VUQ1N0cmluZygpfWA7XG4gIH1cbiAgaWYgKG9wdC5odHRwT25seSkge1xuICAgIGNvb2tpZSArPSBcIjsgSHR0cE9ubHlcIjtcbiAgfVxuICBpZiAob3B0LnNlY3VyZSkge1xuICAgIGNvb2tpZSArPSBcIjsgU2VjdXJlXCI7XG4gIH1cbiAgaWYgKG9wdC5zYW1lU2l0ZSkge1xuICAgIGNvb2tpZSArPSBgOyBTYW1lU2l0ZT0ke29wdC5zYW1lU2l0ZX1gO1xuICB9XG4gIGlmIChvcHQucGFydGl0aW9uZWQpIHtcbiAgICBpZiAoIW9wdC5zZWN1cmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcnRpdGlvbmVkIENvb2tpZSBtdXN0IGhhdmUgU2VjdXJlIGF0dHJpYnV0ZXNcIik7XG4gICAgfVxuICAgIGNvb2tpZSArPSBcIjsgUGFydGl0aW9uZWRcIjtcbiAgfVxuICByZXR1cm4gY29va2llO1xufTtcbnZhciBzZXJpYWxpemUgPSAobmFtZSwgdmFsdWUsIG9wdCkgPT4ge1xuICB2YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gIHJldHVybiBfc2VyaWFsaXplKG5hbWUsIHZhbHVlLCBvcHQpO1xufTtcbnZhciBzZXJpYWxpemVTaWduZWQgPSBhc3luYyAobmFtZSwgdmFsdWUsIHNlY3JldCwgb3B0ID0ge30pID0+IHtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgbWFrZVNpZ25hdHVyZSh2YWx1ZSwgc2VjcmV0KTtcbiAgdmFsdWUgPSBgJHt2YWx1ZX0uJHtzaWduYXR1cmV9YDtcbiAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuICByZXR1cm4gX3NlcmlhbGl6ZShuYW1lLCB2YWx1ZSwgb3B0KTtcbn07XG5leHBvcnQge1xuICBwYXJzZSxcbiAgcGFyc2VTaWduZWQsXG4gIHNlcmlhbGl6ZSxcbiAgc2VyaWFsaXplU2lnbmVkXG59O1xuIiwiLy8gc3JjL2NsaWVudC91dGlscy50c1xudmFyIG1lcmdlUGF0aCA9IChiYXNlLCBwYXRoKSA9PiB7XG4gIGJhc2UgPSBiYXNlLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG4gIGJhc2UgPSBiYXNlICsgXCIvXCI7XG4gIHBhdGggPSBwYXRoLnJlcGxhY2UoL15cXC8rLywgXCJcIik7XG4gIHJldHVybiBiYXNlICsgcGF0aDtcbn07XG52YXIgcmVwbGFjZVVybFBhcmFtID0gKHVybFN0cmluZywgcGFyYW1zKSA9PiB7XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKFwiLzpcIiArIGsgKyBcIig/OntbXi9dK30pP1wiKTtcbiAgICB1cmxTdHJpbmcgPSB1cmxTdHJpbmcucmVwbGFjZShyZWcsIGAvJHt2fWApO1xuICB9XG4gIHJldHVybiB1cmxTdHJpbmc7XG59O1xudmFyIHJlcGxhY2VVcmxQcm90b2NvbCA9ICh1cmxTdHJpbmcsIHByb3RvY29sKSA9PiB7XG4gIHN3aXRjaCAocHJvdG9jb2wpIHtcbiAgICBjYXNlIFwid3NcIjpcbiAgICAgIHJldHVybiB1cmxTdHJpbmcucmVwbGFjZSgvXmh0dHAvLCBcIndzXCIpO1xuICAgIGNhc2UgXCJodHRwXCI6XG4gICAgICByZXR1cm4gdXJsU3RyaW5nLnJlcGxhY2UoL153cy8sIFwiaHR0cFwiKTtcbiAgfVxufTtcbnZhciByZW1vdmVJbmRleFN0cmluZyA9ICh1cmxTdGluZykgPT4ge1xuICByZXR1cm4gdXJsU3RpbmcucmVwbGFjZSgvXFwvaW5kZXgkLywgXCJcIik7XG59O1xuZnVuY3Rpb24gaXNPYmplY3QoaXRlbSkge1xuICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIgJiYgaXRlbSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShpdGVtKTtcbn1cbmZ1bmN0aW9uIGRlZXBNZXJnZSh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoIWlzT2JqZWN0KHRhcmdldCkgJiYgIWlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG4gIGNvbnN0IG1lcmdlZCA9IHsgLi4udGFyZ2V0IH07XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIGNvbnN0IHZhbHVlID0gc291cmNlW2tleV07XG4gICAgaWYgKGlzT2JqZWN0KG1lcmdlZFtrZXldKSAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIG1lcmdlZFtrZXldID0gZGVlcE1lcmdlKG1lcmdlZFtrZXldLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBtZXJnZWQ7XG59XG5leHBvcnQge1xuICBkZWVwTWVyZ2UsXG4gIG1lcmdlUGF0aCxcbiAgcmVtb3ZlSW5kZXhTdHJpbmcsXG4gIHJlcGxhY2VVcmxQYXJhbSxcbiAgcmVwbGFjZVVybFByb3RvY29sXG59O1xuIiwiLy8gc3JjL2NsaWVudC9jbGllbnQudHNcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gXCIuLi91dGlscy9jb29raWUuanNcIjtcbmltcG9ydCB7XG4gIGRlZXBNZXJnZSxcbiAgbWVyZ2VQYXRoLFxuICByZW1vdmVJbmRleFN0cmluZyxcbiAgcmVwbGFjZVVybFBhcmFtLFxuICByZXBsYWNlVXJsUHJvdG9jb2xcbn0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbnZhciBjcmVhdGVQcm94eSA9IChjYWxsYmFjaywgcGF0aCkgPT4ge1xuICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSgoKSA9PiB7XG4gIH0sIHtcbiAgICBnZXQoX29iaiwga2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSAhPT0gXCJzdHJpbmdcIiB8fCBrZXkgPT09IFwidGhlblwiKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlUHJveHkoY2FsbGJhY2ssIFsuLi5wYXRoLCBrZXldKTtcbiAgICB9LFxuICAgIGFwcGx5KF8xLCBfMiwgYXJncykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgYXJnc1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHByb3h5O1xufTtcbnZhciBDbGllbnRSZXF1ZXN0SW1wbCA9IGNsYXNzIHtcbiAgdXJsO1xuICBtZXRob2Q7XG4gIHF1ZXJ5UGFyYW1zID0gdm9pZCAwO1xuICBwYXRoUGFyYW1zID0ge307XG4gIHJCb2R5O1xuICBjVHlwZSA9IHZvaWQgMDtcbiAgY29uc3RydWN0b3IodXJsLCBtZXRob2QpIHtcbiAgICB0aGlzLnVybCA9IHVybDtcbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgfVxuICBmZXRjaCA9IGFzeW5jIChhcmdzLCBvcHQpID0+IHtcbiAgICBpZiAoYXJncykge1xuICAgICAgaWYgKGFyZ3MucXVlcnkpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoYXJncy5xdWVyeSkpIHtcbiAgICAgICAgICBpZiAodiA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyB8fD0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYyIG9mIHYpIHtcbiAgICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5hcHBlbmQoaywgdjIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnNldChrLCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChhcmdzLmZvcm0pIHtcbiAgICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhhcmdzLmZvcm0pKSB7XG4gICAgICAgICAgZm9ybS5hcHBlbmQoaywgdik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yQm9keSA9IGZvcm07XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5qc29uKSB7XG4gICAgICAgIHRoaXMuckJvZHkgPSBKU09OLnN0cmluZ2lmeShhcmdzLmpzb24pO1xuICAgICAgICB0aGlzLmNUeXBlID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5wYXJhbSkge1xuICAgICAgICB0aGlzLnBhdGhQYXJhbXMgPSBhcmdzLnBhcmFtO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgbWV0aG9kVXBwZXJDYXNlID0gdGhpcy5tZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBoZWFkZXJWYWx1ZXMgPSB7XG4gICAgICAuLi5hcmdzPy5oZWFkZXIgPz8ge30sXG4gICAgICAuLi50eXBlb2Ygb3B0Py5oZWFkZXJzID09PSBcImZ1bmN0aW9uXCIgPyBhd2FpdCBvcHQuaGVhZGVycygpIDogb3B0Py5oZWFkZXJzID8gb3B0LmhlYWRlcnMgOiB7fVxuICAgIH07XG4gICAgaWYgKGFyZ3M/LmNvb2tpZSkge1xuICAgICAgY29uc3QgY29va2llcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXJncy5jb29raWUpKSB7XG4gICAgICAgIGNvb2tpZXMucHVzaChzZXJpYWxpemUoa2V5LCB2YWx1ZSwgeyBwYXRoOiBcIi9cIiB9KSk7XG4gICAgICB9XG4gICAgICBoZWFkZXJWYWx1ZXNbXCJDb29raWVcIl0gPSBjb29raWVzLmpvaW4oXCIsXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jVHlwZSkge1xuICAgICAgaGVhZGVyVmFsdWVzW1wiQ29udGVudC1UeXBlXCJdID0gdGhpcy5jVHlwZTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlclZhbHVlcyA/PyB2b2lkIDApO1xuICAgIGxldCB1cmwgPSB0aGlzLnVybDtcbiAgICB1cmwgPSByZW1vdmVJbmRleFN0cmluZyh1cmwpO1xuICAgIHVybCA9IHJlcGxhY2VVcmxQYXJhbSh1cmwsIHRoaXMucGF0aFBhcmFtcyk7XG4gICAgaWYgKHRoaXMucXVlcnlQYXJhbXMpIHtcbiAgICAgIHVybCA9IHVybCArIFwiP1wiICsgdGhpcy5xdWVyeVBhcmFtcy50b1N0cmluZygpO1xuICAgIH1cbiAgICBtZXRob2RVcHBlckNhc2UgPSB0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IHNldEJvZHkgPSAhKG1ldGhvZFVwcGVyQ2FzZSA9PT0gXCJHRVRcIiB8fCBtZXRob2RVcHBlckNhc2UgPT09IFwiSEVBRFwiKTtcbiAgICByZXR1cm4gKG9wdD8uZmV0Y2ggfHwgZmV0Y2gpKHVybCwge1xuICAgICAgYm9keTogc2V0Qm9keSA/IHRoaXMuckJvZHkgOiB2b2lkIDAsXG4gICAgICBtZXRob2Q6IG1ldGhvZFVwcGVyQ2FzZSxcbiAgICAgIGhlYWRlcnNcbiAgICB9KTtcbiAgfTtcbn07XG52YXIgaGMgPSAoYmFzZVVybCwgb3B0aW9ucykgPT4gY3JlYXRlUHJveHkoKG9wdHMpID0+IHtcbiAgY29uc3QgcGFydHMgPSBbLi4ub3B0cy5wYXRoXTtcbiAgbGV0IG1ldGhvZCA9IFwiXCI7XG4gIGlmICgvXlxcJC8udGVzdChwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSkpIHtcbiAgICBjb25zdCBsYXN0ID0gcGFydHMucG9wKCk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIG1ldGhvZCA9IGxhc3QucmVwbGFjZSgvXlxcJC8sIFwiXCIpO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXRoID0gcGFydHMuam9pbihcIi9cIik7XG4gIGNvbnN0IHVybCA9IG1lcmdlUGF0aChiYXNlVXJsLCBwYXRoKTtcbiAgaWYgKG1ldGhvZCA9PT0gXCJ1cmxcIikge1xuICAgIGlmIChvcHRzLmFyZ3NbMF0gJiYgb3B0cy5hcmdzWzBdLnBhcmFtKSB7XG4gICAgICByZXR1cm4gbmV3IFVSTChyZXBsYWNlVXJsUGFyYW0odXJsLCBvcHRzLmFyZ3NbMF0ucGFyYW0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBVUkwodXJsKTtcbiAgfVxuICBpZiAobWV0aG9kID09PSBcIndzXCIpIHtcbiAgICBjb25zdCB0YXJnZXRVcmwgPSByZXBsYWNlVXJsUHJvdG9jb2woXG4gICAgICBvcHRzLmFyZ3NbMF0gJiYgb3B0cy5hcmdzWzBdLnBhcmFtID8gcmVwbGFjZVVybFBhcmFtKHVybCwgb3B0cy5hcmdzWzBdLnBhcmFtKSA6IHVybCxcbiAgICAgIFwid3NcIlxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBXZWJTb2NrZXQodGFyZ2V0VXJsKTtcbiAgfVxuICBjb25zdCByZXEgPSBuZXcgQ2xpZW50UmVxdWVzdEltcGwodXJsLCBtZXRob2QpO1xuICBpZiAobWV0aG9kKSB7XG4gICAgb3B0aW9ucyA/Pz0ge307XG4gICAgY29uc3QgYXJncyA9IGRlZXBNZXJnZShvcHRpb25zLCB7IC4uLm9wdHMuYXJnc1sxXSA/PyB7fSB9KTtcbiAgICByZXR1cm4gcmVxLmZldGNoKG9wdHMuYXJnc1swXSwgYXJncyk7XG4gIH1cbiAgcmV0dXJuIHJlcTtcbn0sIFtdKTtcbmV4cG9ydCB7XG4gIGhjXG59O1xuIiwiaW1wb3J0IHsgaGMgfSBmcm9tIFwiaG9uby9jbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgQXBwVHlwZSB9IGZyb20gXCIkc2VydmVyXCI7XG5cbmV4cG9ydCBjb25zdCBjbGllbnQgPSAoYXJncz86IHsgYmFzZVVybD86IHN0cmluZzsgZmV0Y2g/OiAodHlwZW9mIGdsb2JhbClbXCJmZXRjaFwiXSB9KSA9PiB7XG5cdGNvbnN0IHsgYmFzZVVybCA9IFwiaHR0cHM6Ly9hcGkubGlua3UubGFcIiwgZmV0Y2ggPSBnbG9iYWwuZmV0Y2ggfSA9IGFyZ3M7XG5cdHJldHVybiBoYzxBcHBUeXBlPihiYXNlVXJsLCB7XG5cdFx0ZmV0Y2gsXG5cdH0pO1xufTtcblxuZXhwb3J0IHR5cGUgQXBpVHlwZSA9IEFwcFR5cGU7XG4iXSwibmFtZXMiOlsiX3NlcmlhbGl6ZSIsIm5hbWUiLCJ2YWx1ZSIsIm9wdCIsImNvb2tpZSIsInNlcmlhbGl6ZSIsIm1lcmdlUGF0aCIsImJhc2UiLCJwYXRoIiwicmVwbGFjZVVybFBhcmFtIiwidXJsU3RyaW5nIiwicGFyYW1zIiwiayIsInYiLCJyZWciLCJyZXBsYWNlVXJsUHJvdG9jb2wiLCJwcm90b2NvbCIsInJlbW92ZUluZGV4U3RyaW5nIiwidXJsU3RpbmciLCJpc09iamVjdCIsIml0ZW0iLCJkZWVwTWVyZ2UiLCJ0YXJnZXQiLCJzb3VyY2UiLCJtZXJnZWQiLCJrZXkiLCJjcmVhdGVQcm94eSIsImNhbGxiYWNrIiwiX29iaiIsIl8xIiwiXzIiLCJhcmdzIiwiQ2xpZW50UmVxdWVzdEltcGwiLCJ1cmwiLCJtZXRob2QiLCJfX3B1YmxpY0ZpZWxkIiwidjIiLCJmb3JtIiwibWV0aG9kVXBwZXJDYXNlIiwiaGVhZGVyVmFsdWVzIiwiY29va2llcyIsImhlYWRlcnMiLCJzZXRCb2R5IiwiaGMiLCJiYXNlVXJsIiwib3B0aW9ucyIsIm9wdHMiLCJwYXJ0cyIsImxhc3QiLCJ0YXJnZXRVcmwiLCJyZXEiLCJjbGllbnQiLCJmZXRjaCJdLCJtYXBwaW5ncyI6Ijs7O0FBa0VBLElBQUlBLElBQWEsQ0FBQ0MsR0FBTUMsR0FBT0MsSUFBTSxDQUFBLE1BQU87QUFDMUMsTUFBSUMsSUFBUyxHQUFHSCxDQUFJLElBQUlDLENBQUs7QUFDN0IsTUFBSUQsRUFBSyxXQUFXLFdBQVcsS0FBSyxDQUFDRSxFQUFJO0FBQ3ZDLFVBQU0sSUFBSSxNQUFNLDhDQUE4QztBQUVoRSxNQUFJRixFQUFLLFdBQVcsU0FBUyxHQUFHO0FBQzlCLFFBQUksQ0FBQ0UsRUFBSTtBQUNQLFlBQU0sSUFBSSxNQUFNLDRDQUE0QztBQUU5RCxRQUFJQSxFQUFJLFNBQVM7QUFDZixZQUFNLElBQUksTUFBTSxtREFBbUQ7QUFFckUsUUFBSUEsRUFBSTtBQUNOLFlBQU0sSUFBSSxNQUFNLGdEQUFnRDtBQUFBLEVBRW5FO0FBQ0QsTUFBSUEsS0FBTyxPQUFPQSxFQUFJLFVBQVcsWUFBWUEsRUFBSSxVQUFVLEdBQUc7QUFDNUQsUUFBSUEsRUFBSSxTQUFTO0FBQ2YsWUFBTSxJQUFJO0FBQUEsUUFDUjtBQUFBLE1BQ1I7QUFFSSxJQUFBQyxLQUFVLGFBQWEsS0FBSyxNQUFNRCxFQUFJLE1BQU0sQ0FBQztBQUFBLEVBQzlDO0FBT0QsTUFOSUEsRUFBSSxVQUFVQSxFQUFJLFdBQVcsV0FDL0JDLEtBQVUsWUFBWUQsRUFBSSxNQUFNLEtBRTlCQSxFQUFJLFNBQ05DLEtBQVUsVUFBVUQsRUFBSSxJQUFJLEtBRTFCQSxFQUFJLFNBQVM7QUFDZixRQUFJQSxFQUFJLFFBQVEsUUFBTyxJQUFLLEtBQUssSUFBSyxJQUFHO0FBQ3ZDLFlBQU0sSUFBSTtBQUFBLFFBQ1I7QUFBQSxNQUNSO0FBRUksSUFBQUMsS0FBVSxhQUFhRCxFQUFJLFFBQVEsWUFBYSxDQUFBO0FBQUEsRUFDakQ7QUFVRCxNQVRJQSxFQUFJLGFBQ05DLEtBQVUsZUFFUkQsRUFBSSxXQUNOQyxLQUFVLGFBRVJELEVBQUksYUFDTkMsS0FBVSxjQUFjRCxFQUFJLFFBQVEsS0FFbENBLEVBQUksYUFBYTtBQUNuQixRQUFJLENBQUNBLEVBQUk7QUFDUCxZQUFNLElBQUksTUFBTSxnREFBZ0Q7QUFFbEUsSUFBQUMsS0FBVTtBQUFBLEVBQ1g7QUFDRCxTQUFPQTtBQUNULEdBQ0lDLElBQVksQ0FBQ0osR0FBTUMsR0FBT0MsT0FDNUJELElBQVEsbUJBQW1CQSxDQUFLLEdBQ3pCRixFQUFXQyxHQUFNQyxHQUFPQyxDQUFHLElDMUhoQ0csSUFBWSxDQUFDQyxHQUFNQyxPQUNyQkQsSUFBT0EsRUFBSyxRQUFRLFFBQVEsRUFBRSxHQUM5QkEsSUFBT0EsSUFBTyxLQUNkQyxJQUFPQSxFQUFLLFFBQVEsUUFBUSxFQUFFLEdBQ3ZCRCxJQUFPQyxJQUVaQyxJQUFrQixDQUFDQyxHQUFXQyxNQUFXO0FBQzNDLGFBQVcsQ0FBQ0MsR0FBR0MsQ0FBQyxLQUFLLE9BQU8sUUFBUUYsQ0FBTSxHQUFHO0FBQzNDLFVBQU1HLElBQU0sSUFBSSxPQUFPLE9BQU9GLElBQUksY0FBYztBQUNoRCxJQUFBRixJQUFZQSxFQUFVLFFBQVFJLEdBQUssSUFBSUQsQ0FBQyxFQUFFO0FBQUEsRUFDM0M7QUFDRCxTQUFPSDtBQUNULEdBQ0lLLElBQXFCLENBQUNMLEdBQVdNLE1BQWE7QUFDaEQsVUFBUUEsR0FBUTtBQUFBLElBQ2QsS0FBSztBQUNILGFBQU9OLEVBQVUsUUFBUSxTQUFTLElBQUk7QUFBQSxJQUN4QyxLQUFLO0FBQ0gsYUFBT0EsRUFBVSxRQUFRLE9BQU8sTUFBTTtBQUFBLEVBQ3pDO0FBQ0gsR0FDSU8sSUFBb0IsQ0FBQ0MsTUFDaEJBLEVBQVMsUUFBUSxZQUFZLEVBQUU7QUFFeEMsU0FBU0MsRUFBU0MsR0FBTTtBQUN0QixTQUFPLE9BQU9BLEtBQVMsWUFBWUEsTUFBUyxRQUFRLENBQUMsTUFBTSxRQUFRQSxDQUFJO0FBQ3pFO0FBQ0EsU0FBU0MsRUFBVUMsR0FBUUMsR0FBUTtBQUNqQyxNQUFJLENBQUNKLEVBQVNHLENBQU0sS0FBSyxDQUFDSCxFQUFTSSxDQUFNO0FBQ3ZDLFdBQU9BO0FBRVQsUUFBTUMsSUFBUyxFQUFFLEdBQUdGO0FBQ3BCLGFBQVdHLEtBQU9GLEdBQVE7QUFDeEIsVUFBTXJCLElBQVFxQixFQUFPRSxDQUFHO0FBQ3hCLElBQUlOLEVBQVNLLEVBQU9DLENBQUcsQ0FBQyxLQUFLTixFQUFTakIsQ0FBSyxJQUN6Q3NCLEVBQU9DLENBQUcsSUFBSUosRUFBVUcsRUFBT0MsQ0FBRyxHQUFHdkIsQ0FBSyxJQUUxQ3NCLEVBQU9DLENBQUcsSUFBSXZCO0FBQUEsRUFFakI7QUFDRCxTQUFPc0I7QUFDVDtBQ2pDQSxJQUFJRSxJQUFjLENBQUNDLEdBQVVuQixNQUNiLElBQUksTUFBTSxNQUFNO0FBQ2hDLEdBQUs7QUFBQSxFQUNELElBQUlvQixHQUFNSCxHQUFLO0FBQ2IsUUFBSSxTQUFPQSxLQUFRLFlBQVlBLE1BQVE7QUFHdkMsYUFBT0MsRUFBWUMsR0FBVSxDQUFDLEdBQUduQixHQUFNaUIsQ0FBRyxDQUFDO0FBQUEsRUFDNUM7QUFBQSxFQUNELE1BQU1JLEdBQUlDLEdBQUlDLEdBQU07QUFDbEIsV0FBT0osRUFBUztBQUFBLE1BQ2QsTUFBQW5CO0FBQUEsTUFDQSxNQUFBdUI7QUFBQSxJQUNSLENBQU87QUFBQSxFQUNGO0FBQ0wsQ0FBRyxHQUdDQyxJQUFvQixNQUFNO0FBQUEsRUFPNUIsWUFBWUMsR0FBS0MsR0FBUTtBQU56QixJQUFBQyxFQUFBO0FBQ0EsSUFBQUEsRUFBQTtBQUNBLElBQUFBLEVBQUE7QUFDQSxJQUFBQSxFQUFBLG9CQUFhLENBQUE7QUFDYixJQUFBQSxFQUFBO0FBQ0EsSUFBQUEsRUFBQTtBQUtBLElBQUFBLEVBQUEsZUFBUSxPQUFPSixHQUFNNUIsTUFBUTtBQUMzQixVQUFJNEIsR0FBTTtBQUNSLFlBQUlBLEVBQUs7QUFDUCxxQkFBVyxDQUFDbkIsR0FBR0MsQ0FBQyxLQUFLLE9BQU8sUUFBUWtCLEVBQUssS0FBSztBQUM1QyxnQkFBSWxCLE1BQU07QUFJVixrQkFEQSxLQUFLLGdCQUFMLEtBQUssY0FBZ0IsSUFBSSxvQkFDckIsTUFBTSxRQUFRQSxDQUFDO0FBQ2pCLDJCQUFXdUIsS0FBTXZCO0FBQ2YsdUJBQUssWUFBWSxPQUFPRCxHQUFHd0IsQ0FBRTtBQUFBO0FBRy9CLHFCQUFLLFlBQVksSUFBSXhCLEdBQUdDLENBQUM7QUFBQTtBQUkvQixZQUFJa0IsRUFBSyxNQUFNO0FBQ2IsZ0JBQU1NLElBQU8sSUFBSTtBQUNqQixxQkFBVyxDQUFDekIsR0FBR0MsQ0FBQyxLQUFLLE9BQU8sUUFBUWtCLEVBQUssSUFBSTtBQUMzQyxZQUFBTSxFQUFLLE9BQU96QixHQUFHQyxDQUFDO0FBRWxCLGVBQUssUUFBUXdCO0FBQUEsUUFDZDtBQUNELFFBQUlOLEVBQUssU0FDUCxLQUFLLFFBQVEsS0FBSyxVQUFVQSxFQUFLLElBQUksR0FDckMsS0FBSyxRQUFRLHFCQUVYQSxFQUFLLFVBQ1AsS0FBSyxhQUFhQSxFQUFLO0FBQUEsTUFFMUI7QUFDRCxVQUFJTyxJQUFrQixLQUFLLE9BQU8sWUFBVztBQUM3QyxZQUFNQyxJQUFlO0FBQUEsUUFDbkIsSUFBR1IsS0FBQSxnQkFBQUEsRUFBTSxXQUFVLENBQUU7QUFBQSxRQUNyQixHQUFHLFFBQU81QixLQUFBLGdCQUFBQSxFQUFLLFlBQVksYUFBYSxNQUFNQSxFQUFJLFFBQVMsSUFBR0EsS0FBQSxRQUFBQSxFQUFLLFVBQVVBLEVBQUksVUFBVSxDQUFFO0FBQUEsTUFDbkc7QUFDSSxVQUFJNEIsS0FBQSxRQUFBQSxFQUFNLFFBQVE7QUFDaEIsY0FBTVMsSUFBVSxDQUFBO0FBQ2hCLG1CQUFXLENBQUNmLEdBQUt2QixDQUFLLEtBQUssT0FBTyxRQUFRNkIsRUFBSyxNQUFNO0FBQ25ELFVBQUFTLEVBQVEsS0FBS25DLEVBQVVvQixHQUFLdkIsR0FBTyxFQUFFLE1BQU0sSUFBSyxDQUFBLENBQUM7QUFFbkQsUUFBQXFDLEVBQWEsU0FBWUMsRUFBUSxLQUFLLEdBQUc7QUFBQSxNQUMxQztBQUNELE1BQUksS0FBSyxVQUNQRCxFQUFhLGNBQWMsSUFBSSxLQUFLO0FBRXRDLFlBQU1FLElBQVUsSUFBSSxRQUFRRixLQUFnQixNQUFNO0FBQ2xELFVBQUlOLElBQU0sS0FBSztBQUNmLE1BQUFBLElBQU1oQixFQUFrQmdCLENBQUcsR0FDM0JBLElBQU14QixFQUFnQndCLEdBQUssS0FBSyxVQUFVLEdBQ3RDLEtBQUssZ0JBQ1BBLElBQU1BLElBQU0sTUFBTSxLQUFLLFlBQVksU0FBUSxJQUU3Q0ssSUFBa0IsS0FBSyxPQUFPO0FBQzlCLFlBQU1JLElBQVUsRUFBRUosTUFBb0IsU0FBU0EsTUFBb0I7QUFDbkUsZUFBUW5DLEtBQUEsZ0JBQUFBLEVBQUssVUFBUyxPQUFPOEIsR0FBSztBQUFBLFFBQ2hDLE1BQU1TLElBQVUsS0FBSyxRQUFRO0FBQUEsUUFDN0IsUUFBUUo7QUFBQSxRQUNSLFNBQUFHO0FBQUEsTUFDTixDQUFLO0FBQUEsSUFDTDtBQWhFSSxTQUFLLE1BQU1SLEdBQ1gsS0FBSyxTQUFTQztBQUFBLEVBQ2Y7QUErREgsR0FDSVMsSUFBSyxDQUFDQyxHQUFTQyxNQUFZbkIsRUFBWSxDQUFDb0IsTUFBUztBQUNuRCxRQUFNQyxJQUFRLENBQUMsR0FBR0QsRUFBSyxJQUFJO0FBQzNCLE1BQUlaLElBQVM7QUFDYixNQUFJLE1BQU0sS0FBS2EsRUFBTUEsRUFBTSxTQUFTLENBQUMsQ0FBQyxHQUFHO0FBQ3ZDLFVBQU1DLElBQU9ELEVBQU07QUFDbkIsSUFBSUMsTUFDRmQsSUFBU2MsRUFBSyxRQUFRLE9BQU8sRUFBRTtBQUFBLEVBRWxDO0FBQ0QsUUFBTXhDLElBQU91QyxFQUFNLEtBQUssR0FBRyxHQUNyQmQsSUFBTTNCLEVBQVVzQyxHQUFTcEMsQ0FBSTtBQUNuQyxNQUFJMEIsTUFBVztBQUNiLFdBQUlZLEVBQUssS0FBSyxDQUFDLEtBQUtBLEVBQUssS0FBSyxDQUFDLEVBQUUsUUFDeEIsSUFBSSxJQUFJckMsRUFBZ0J3QixHQUFLYSxFQUFLLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUVsRCxJQUFJLElBQUliLENBQUc7QUFFcEIsTUFBSUMsTUFBVyxNQUFNO0FBQ25CLFVBQU1lLElBQVlsQztBQUFBLE1BQ2hCK0IsRUFBSyxLQUFLLENBQUMsS0FBS0EsRUFBSyxLQUFLLENBQUMsRUFBRSxRQUFRckMsRUFBZ0J3QixHQUFLYSxFQUFLLEtBQUssQ0FBQyxFQUFFLEtBQUssSUFBSWI7QUFBQSxNQUNoRjtBQUFBLElBQ047QUFDSSxXQUFPLElBQUksVUFBVWdCLENBQVM7QUFBQSxFQUMvQjtBQUNELFFBQU1DLElBQU0sSUFBSWxCLEVBQWtCQyxHQUFLQyxDQUFNO0FBQzdDLE1BQUlBLEdBQVE7QUFDVixJQUFBVyxVQUFZLENBQUE7QUFDWixVQUFNZCxJQUFPVixFQUFVd0IsR0FBUyxFQUFFLEdBQUdDLEVBQUssS0FBSyxDQUFDLEtBQUssQ0FBRSxFQUFBLENBQUU7QUFDekQsV0FBT0ksRUFBSSxNQUFNSixFQUFLLEtBQUssQ0FBQyxHQUFHZixDQUFJO0FBQUEsRUFDcEM7QUFDRCxTQUFPbUI7QUFDVCxHQUFHLEVBQUU7QUNqSVEsTUFBQUMsSUFBUyxDQUFDcEIsTUFBa0U7QUFDeEYsUUFBTSxFQUFFLFNBQUFhLElBQVUsd0JBQXdCLE9BQUFRLElBQVEsT0FBTyxNQUFVLElBQUFyQjtBQUNuRSxTQUFPWSxFQUFZQyxHQUFTO0FBQUEsSUFDM0IsT0FBQVE7QUFBQSxFQUFBLENBQ0E7QUFDRjsiLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMCwxLDJdfQ==
160
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlcyI6WyIuLi9ub2RlX21vZHVsZXMvLnBucG0vaG9ub0A0LjIuNC9ub2RlX21vZHVsZXMvaG9uby9kaXN0L3V0aWxzL2Nvb2tpZS5qcyIsIi4uL25vZGVfbW9kdWxlcy8ucG5wbS9ob25vQDQuMi40L25vZGVfbW9kdWxlcy9ob25vL2Rpc3QvY2xpZW50L3V0aWxzLmpzIiwiLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2hvbm9ANC4yLjQvbm9kZV9tb2R1bGVzL2hvbm8vZGlzdC9jbGllbnQvY2xpZW50LmpzIiwiLi4vc3JjL2xpYi9jbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gc3JjL3V0aWxzL2Nvb2tpZS50c1xuaW1wb3J0IHsgZGVjb2RlVVJJQ29tcG9uZW50XyB9IGZyb20gXCIuL3VybC5qc1wiO1xudmFyIGFsZ29yaXRobSA9IHsgbmFtZTogXCJITUFDXCIsIGhhc2g6IFwiU0hBLTI1NlwiIH07XG52YXIgZ2V0Q3J5cHRvS2V5ID0gYXN5bmMgKHNlY3JldCkgPT4ge1xuICBjb25zdCBzZWNyZXRCdWYgPSB0eXBlb2Ygc2VjcmV0ID09PSBcInN0cmluZ1wiID8gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHNlY3JldCkgOiBzZWNyZXQ7XG4gIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleShcInJhd1wiLCBzZWNyZXRCdWYsIGFsZ29yaXRobSwgZmFsc2UsIFtcInNpZ25cIiwgXCJ2ZXJpZnlcIl0pO1xufTtcbnZhciBtYWtlU2lnbmF0dXJlID0gYXN5bmMgKHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgY29uc3Qga2V5ID0gYXdhaXQgZ2V0Q3J5cHRvS2V5KHNlY3JldCk7XG4gIGNvbnN0IHNpZ25hdHVyZSA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuc2lnbihhbGdvcml0aG0ubmFtZSwga2V5LCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgcmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5uZXcgVWludDhBcnJheShzaWduYXR1cmUpKSk7XG59O1xudmFyIHZlcmlmeVNpZ25hdHVyZSA9IGFzeW5jIChiYXNlNjRTaWduYXR1cmUsIHZhbHVlLCBzZWNyZXQpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBzaWduYXR1cmVCaW5TdHIgPSBhdG9iKGJhc2U2NFNpZ25hdHVyZSk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gbmV3IFVpbnQ4QXJyYXkoc2lnbmF0dXJlQmluU3RyLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHNpZ25hdHVyZUJpblN0ci5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgc2lnbmF0dXJlW2ldID0gc2lnbmF0dXJlQmluU3RyLmNoYXJDb2RlQXQoaSk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBjcnlwdG8uc3VidGxlLnZlcmlmeShhbGdvcml0aG0sIHNlY3JldCwgc2lnbmF0dXJlLCBuZXcgVGV4dEVuY29kZXIoKS5lbmNvZGUodmFsdWUpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcbnZhciB2YWxpZENvb2tpZU5hbWVSZWdFeCA9IC9eW1xcdyEjJCUmJyouXmB8fistXSskLztcbnZhciB2YWxpZENvb2tpZVZhbHVlUmVnRXggPSAvXlsgISMtOjwtW1xcXS1+XSokLztcbnZhciBwYXJzZSA9IChjb29raWUsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFpcnMgPSBjb29raWUudHJpbSgpLnNwbGl0KFwiO1wiKTtcbiAgcmV0dXJuIHBhaXJzLnJlZHVjZSgocGFyc2VkQ29va2llLCBwYWlyU3RyKSA9PiB7XG4gICAgcGFpclN0ciA9IHBhaXJTdHIudHJpbSgpO1xuICAgIGNvbnN0IHZhbHVlU3RhcnRQb3MgPSBwYWlyU3RyLmluZGV4T2YoXCI9XCIpO1xuICAgIGlmICh2YWx1ZVN0YXJ0UG9zID09PSAtMSkge1xuICAgICAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbiAgICB9XG4gICAgY29uc3QgY29va2llTmFtZSA9IHBhaXJTdHIuc3Vic3RyaW5nKDAsIHZhbHVlU3RhcnRQb3MpLnRyaW0oKTtcbiAgICBpZiAobmFtZSAmJiBuYW1lICE9PSBjb29raWVOYW1lIHx8ICF2YWxpZENvb2tpZU5hbWVSZWdFeC50ZXN0KGNvb2tpZU5hbWUpKSB7XG4gICAgICByZXR1cm4gcGFyc2VkQ29va2llO1xuICAgIH1cbiAgICBsZXQgY29va2llVmFsdWUgPSBwYWlyU3RyLnN1YnN0cmluZyh2YWx1ZVN0YXJ0UG9zICsgMSkudHJpbSgpO1xuICAgIGlmIChjb29raWVWYWx1ZS5zdGFydHNXaXRoKCdcIicpICYmIGNvb2tpZVZhbHVlLmVuZHNXaXRoKCdcIicpKSB7XG4gICAgICBjb29raWVWYWx1ZSA9IGNvb2tpZVZhbHVlLnNsaWNlKDEsIC0xKTtcbiAgICB9XG4gICAgaWYgKHZhbGlkQ29va2llVmFsdWVSZWdFeC50ZXN0KGNvb2tpZVZhbHVlKSkge1xuICAgICAgcGFyc2VkQ29va2llW2Nvb2tpZU5hbWVdID0gZGVjb2RlVVJJQ29tcG9uZW50Xyhjb29raWVWYWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWRDb29raWU7XG4gIH0sIHt9KTtcbn07XG52YXIgcGFyc2VTaWduZWQgPSBhc3luYyAoY29va2llLCBzZWNyZXQsIG5hbWUpID0+IHtcbiAgY29uc3QgcGFyc2VkQ29va2llID0ge307XG4gIGNvbnN0IHNlY3JldEtleSA9IGF3YWl0IGdldENyeXB0b0tleShzZWNyZXQpO1xuICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhwYXJzZShjb29raWUsIG5hbWUpKSkge1xuICAgIGNvbnN0IHNpZ25hdHVyZVN0YXJ0UG9zID0gdmFsdWUubGFzdEluZGV4T2YoXCIuXCIpO1xuICAgIGlmIChzaWduYXR1cmVTdGFydFBvcyA8IDEpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBzaWduZWRWYWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCBzaWduYXR1cmVTdGFydFBvcyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlID0gdmFsdWUuc3Vic3RyaW5nKHNpZ25hdHVyZVN0YXJ0UG9zICsgMSk7XG4gICAgaWYgKHNpZ25hdHVyZS5sZW5ndGggIT09IDQ0IHx8ICFzaWduYXR1cmUuZW5kc1dpdGgoXCI9XCIpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNWZXJpZmllZCA9IGF3YWl0IHZlcmlmeVNpZ25hdHVyZShzaWduYXR1cmUsIHNpZ25lZFZhbHVlLCBzZWNyZXRLZXkpO1xuICAgIHBhcnNlZENvb2tpZVtrZXldID0gaXNWZXJpZmllZCA/IHNpZ25lZFZhbHVlIDogZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHBhcnNlZENvb2tpZTtcbn07XG52YXIgX3NlcmlhbGl6ZSA9IChuYW1lLCB2YWx1ZSwgb3B0ID0ge30pID0+IHtcbiAgbGV0IGNvb2tpZSA9IGAke25hbWV9PSR7dmFsdWV9YDtcbiAgaWYgKG5hbWUuc3RhcnRzV2l0aChcIl9fU2VjdXJlLVwiKSAmJiAhb3B0LnNlY3VyZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcIl9fU2VjdXJlLSBDb29raWUgbXVzdCBoYXZlIFNlY3VyZSBhdHRyaWJ1dGVzXCIpO1xuICB9XG4gIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJfX0hvc3QtXCIpKSB7XG4gICAgaWYgKCFvcHQuc2VjdXJlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfX0hvc3QtIENvb2tpZSBtdXN0IGhhdmUgU2VjdXJlIGF0dHJpYnV0ZXNcIik7XG4gICAgfVxuICAgIGlmIChvcHQucGF0aCAhPT0gXCIvXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignX19Ib3N0LSBDb29raWUgbXVzdCBoYXZlIFBhdGggYXR0cmlidXRlcyB3aXRoIFwiL1wiJyk7XG4gICAgfVxuICAgIGlmIChvcHQuZG9tYWluKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJfX0hvc3QtIENvb2tpZSBtdXN0IG5vdCBoYXZlIERvbWFpbiBhdHRyaWJ1dGVzXCIpO1xuICAgIH1cbiAgfVxuICBpZiAob3B0ICYmIHR5cGVvZiBvcHQubWF4QWdlID09PSBcIm51bWJlclwiICYmIG9wdC5tYXhBZ2UgPj0gMCkge1xuICAgIGlmIChvcHQubWF4QWdlID4gMzQ1NmU0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ29va2llcyBNYXgtQWdlIFNIT1VMRCBOT1QgYmUgZ3JlYXRlciB0aGFuIDQwMCBkYXlzICgzNDU2MDAwMCBzZWNvbmRzKSBpbiBkdXJhdGlvbi5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29va2llICs9IGA7IE1heC1BZ2U9JHtNYXRoLmZsb29yKG9wdC5tYXhBZ2UpfWA7XG4gIH1cbiAgaWYgKG9wdC5kb21haW4gJiYgb3B0LnByZWZpeCAhPT0gXCJob3N0XCIpIHtcbiAgICBjb29raWUgKz0gYDsgRG9tYWluPSR7b3B0LmRvbWFpbn1gO1xuICB9XG4gIGlmIChvcHQucGF0aCkge1xuICAgIGNvb2tpZSArPSBgOyBQYXRoPSR7b3B0LnBhdGh9YDtcbiAgfVxuICBpZiAob3B0LmV4cGlyZXMpIHtcbiAgICBpZiAob3B0LmV4cGlyZXMuZ2V0VGltZSgpIC0gRGF0ZS5ub3coKSA+IDM0NTZlNykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkNvb2tpZXMgRXhwaXJlcyBTSE9VTEQgTk9UIGJlIGdyZWF0ZXIgdGhhbiA0MDAgZGF5cyAoMzQ1NjAwMDAgc2Vjb25kcykgaW4gdGhlIGZ1dHVyZS5cIlxuICAgICAgKTtcbiAgICB9XG4gICAgY29va2llICs9IGA7IEV4cGlyZXM9JHtvcHQuZXhwaXJlcy50b1VUQ1N0cmluZygpfWA7XG4gIH1cbiAgaWYgKG9wdC5odHRwT25seSkge1xuICAgIGNvb2tpZSArPSBcIjsgSHR0cE9ubHlcIjtcbiAgfVxuICBpZiAob3B0LnNlY3VyZSkge1xuICAgIGNvb2tpZSArPSBcIjsgU2VjdXJlXCI7XG4gIH1cbiAgaWYgKG9wdC5zYW1lU2l0ZSkge1xuICAgIGNvb2tpZSArPSBgOyBTYW1lU2l0ZT0ke29wdC5zYW1lU2l0ZX1gO1xuICB9XG4gIGlmIChvcHQucGFydGl0aW9uZWQpIHtcbiAgICBpZiAoIW9wdC5zZWN1cmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhcnRpdGlvbmVkIENvb2tpZSBtdXN0IGhhdmUgU2VjdXJlIGF0dHJpYnV0ZXNcIik7XG4gICAgfVxuICAgIGNvb2tpZSArPSBcIjsgUGFydGl0aW9uZWRcIjtcbiAgfVxuICByZXR1cm4gY29va2llO1xufTtcbnZhciBzZXJpYWxpemUgPSAobmFtZSwgdmFsdWUsIG9wdCkgPT4ge1xuICB2YWx1ZSA9IGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSk7XG4gIHJldHVybiBfc2VyaWFsaXplKG5hbWUsIHZhbHVlLCBvcHQpO1xufTtcbnZhciBzZXJpYWxpemVTaWduZWQgPSBhc3luYyAobmFtZSwgdmFsdWUsIHNlY3JldCwgb3B0ID0ge30pID0+IHtcbiAgY29uc3Qgc2lnbmF0dXJlID0gYXdhaXQgbWFrZVNpZ25hdHVyZSh2YWx1ZSwgc2VjcmV0KTtcbiAgdmFsdWUgPSBgJHt2YWx1ZX0uJHtzaWduYXR1cmV9YDtcbiAgdmFsdWUgPSBlbmNvZGVVUklDb21wb25lbnQodmFsdWUpO1xuICByZXR1cm4gX3NlcmlhbGl6ZShuYW1lLCB2YWx1ZSwgb3B0KTtcbn07XG5leHBvcnQge1xuICBwYXJzZSxcbiAgcGFyc2VTaWduZWQsXG4gIHNlcmlhbGl6ZSxcbiAgc2VyaWFsaXplU2lnbmVkXG59O1xuIiwiLy8gc3JjL2NsaWVudC91dGlscy50c1xudmFyIG1lcmdlUGF0aCA9IChiYXNlLCBwYXRoKSA9PiB7XG4gIGJhc2UgPSBiYXNlLnJlcGxhY2UoL1xcLyskLywgXCJcIik7XG4gIGJhc2UgPSBiYXNlICsgXCIvXCI7XG4gIHBhdGggPSBwYXRoLnJlcGxhY2UoL15cXC8rLywgXCJcIik7XG4gIHJldHVybiBiYXNlICsgcGF0aDtcbn07XG52YXIgcmVwbGFjZVVybFBhcmFtID0gKHVybFN0cmluZywgcGFyYW1zKSA9PiB7XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHBhcmFtcykpIHtcbiAgICBjb25zdCByZWcgPSBuZXcgUmVnRXhwKFwiLzpcIiArIGsgKyBcIig/OntbXi9dK30pP1wiKTtcbiAgICB1cmxTdHJpbmcgPSB1cmxTdHJpbmcucmVwbGFjZShyZWcsIGAvJHt2fWApO1xuICB9XG4gIHJldHVybiB1cmxTdHJpbmc7XG59O1xudmFyIHJlcGxhY2VVcmxQcm90b2NvbCA9ICh1cmxTdHJpbmcsIHByb3RvY29sKSA9PiB7XG4gIHN3aXRjaCAocHJvdG9jb2wpIHtcbiAgICBjYXNlIFwid3NcIjpcbiAgICAgIHJldHVybiB1cmxTdHJpbmcucmVwbGFjZSgvXmh0dHAvLCBcIndzXCIpO1xuICAgIGNhc2UgXCJodHRwXCI6XG4gICAgICByZXR1cm4gdXJsU3RyaW5nLnJlcGxhY2UoL153cy8sIFwiaHR0cFwiKTtcbiAgfVxufTtcbnZhciByZW1vdmVJbmRleFN0cmluZyA9ICh1cmxTdGluZykgPT4ge1xuICByZXR1cm4gdXJsU3RpbmcucmVwbGFjZSgvXFwvaW5kZXgkLywgXCJcIik7XG59O1xuZnVuY3Rpb24gaXNPYmplY3QoaXRlbSkge1xuICByZXR1cm4gdHlwZW9mIGl0ZW0gPT09IFwib2JqZWN0XCIgJiYgaXRlbSAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShpdGVtKTtcbn1cbmZ1bmN0aW9uIGRlZXBNZXJnZSh0YXJnZXQsIHNvdXJjZSkge1xuICBpZiAoIWlzT2JqZWN0KHRhcmdldCkgJiYgIWlzT2JqZWN0KHNvdXJjZSkpIHtcbiAgICByZXR1cm4gc291cmNlO1xuICB9XG4gIGNvbnN0IG1lcmdlZCA9IHsgLi4udGFyZ2V0IH07XG4gIGZvciAoY29uc3Qga2V5IGluIHNvdXJjZSkge1xuICAgIGNvbnN0IHZhbHVlID0gc291cmNlW2tleV07XG4gICAgaWYgKGlzT2JqZWN0KG1lcmdlZFtrZXldKSAmJiBpc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgIG1lcmdlZFtrZXldID0gZGVlcE1lcmdlKG1lcmdlZFtrZXldLCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lcmdlZFtrZXldID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiBtZXJnZWQ7XG59XG5leHBvcnQge1xuICBkZWVwTWVyZ2UsXG4gIG1lcmdlUGF0aCxcbiAgcmVtb3ZlSW5kZXhTdHJpbmcsXG4gIHJlcGxhY2VVcmxQYXJhbSxcbiAgcmVwbGFjZVVybFByb3RvY29sXG59O1xuIiwiLy8gc3JjL2NsaWVudC9jbGllbnQudHNcbmltcG9ydCB7IHNlcmlhbGl6ZSB9IGZyb20gXCIuLi91dGlscy9jb29raWUuanNcIjtcbmltcG9ydCB7XG4gIGRlZXBNZXJnZSxcbiAgbWVyZ2VQYXRoLFxuICByZW1vdmVJbmRleFN0cmluZyxcbiAgcmVwbGFjZVVybFBhcmFtLFxuICByZXBsYWNlVXJsUHJvdG9jb2xcbn0gZnJvbSBcIi4vdXRpbHMuanNcIjtcbnZhciBjcmVhdGVQcm94eSA9IChjYWxsYmFjaywgcGF0aCkgPT4ge1xuICBjb25zdCBwcm94eSA9IG5ldyBQcm94eSgoKSA9PiB7XG4gIH0sIHtcbiAgICBnZXQoX29iaiwga2V5KSB7XG4gICAgICBpZiAodHlwZW9mIGtleSAhPT0gXCJzdHJpbmdcIiB8fCBrZXkgPT09IFwidGhlblwiKSB7XG4gICAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gY3JlYXRlUHJveHkoY2FsbGJhY2ssIFsuLi5wYXRoLCBrZXldKTtcbiAgICB9LFxuICAgIGFwcGx5KF8xLCBfMiwgYXJncykge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgYXJnc1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIHByb3h5O1xufTtcbnZhciBDbGllbnRSZXF1ZXN0SW1wbCA9IGNsYXNzIHtcbiAgdXJsO1xuICBtZXRob2Q7XG4gIHF1ZXJ5UGFyYW1zID0gdm9pZCAwO1xuICBwYXRoUGFyYW1zID0ge307XG4gIHJCb2R5O1xuICBjVHlwZSA9IHZvaWQgMDtcbiAgY29uc3RydWN0b3IodXJsLCBtZXRob2QpIHtcbiAgICB0aGlzLnVybCA9IHVybDtcbiAgICB0aGlzLm1ldGhvZCA9IG1ldGhvZDtcbiAgfVxuICBmZXRjaCA9IGFzeW5jIChhcmdzLCBvcHQpID0+IHtcbiAgICBpZiAoYXJncykge1xuICAgICAgaWYgKGFyZ3MucXVlcnkpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoYXJncy5xdWVyeSkpIHtcbiAgICAgICAgICBpZiAodiA9PT0gdm9pZCAwKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcyB8fD0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpKSB7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHYyIG9mIHYpIHtcbiAgICAgICAgICAgICAgdGhpcy5xdWVyeVBhcmFtcy5hcHBlbmQoaywgdjIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnF1ZXJ5UGFyYW1zLnNldChrLCB2KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChhcmdzLmZvcm0pIHtcbiAgICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhhcmdzLmZvcm0pKSB7XG4gICAgICAgICAgZm9ybS5hcHBlbmQoaywgdik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yQm9keSA9IGZvcm07XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5qc29uKSB7XG4gICAgICAgIHRoaXMuckJvZHkgPSBKU09OLnN0cmluZ2lmeShhcmdzLmpzb24pO1xuICAgICAgICB0aGlzLmNUeXBlID0gXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICB9XG4gICAgICBpZiAoYXJncy5wYXJhbSkge1xuICAgICAgICB0aGlzLnBhdGhQYXJhbXMgPSBhcmdzLnBhcmFtO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgbWV0aG9kVXBwZXJDYXNlID0gdGhpcy5tZXRob2QudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBoZWFkZXJWYWx1ZXMgPSB7XG4gICAgICAuLi5hcmdzPy5oZWFkZXIgPz8ge30sXG4gICAgICAuLi50eXBlb2Ygb3B0Py5oZWFkZXJzID09PSBcImZ1bmN0aW9uXCIgPyBhd2FpdCBvcHQuaGVhZGVycygpIDogb3B0Py5oZWFkZXJzID8gb3B0LmhlYWRlcnMgOiB7fVxuICAgIH07XG4gICAgaWYgKGFyZ3M/LmNvb2tpZSkge1xuICAgICAgY29uc3QgY29va2llcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoYXJncy5jb29raWUpKSB7XG4gICAgICAgIGNvb2tpZXMucHVzaChzZXJpYWxpemUoa2V5LCB2YWx1ZSwgeyBwYXRoOiBcIi9cIiB9KSk7XG4gICAgICB9XG4gICAgICBoZWFkZXJWYWx1ZXNbXCJDb29raWVcIl0gPSBjb29raWVzLmpvaW4oXCIsXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jVHlwZSkge1xuICAgICAgaGVhZGVyVmFsdWVzW1wiQ29udGVudC1UeXBlXCJdID0gdGhpcy5jVHlwZTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIZWFkZXJzKGhlYWRlclZhbHVlcyA/PyB2b2lkIDApO1xuICAgIGxldCB1cmwgPSB0aGlzLnVybDtcbiAgICB1cmwgPSByZW1vdmVJbmRleFN0cmluZyh1cmwpO1xuICAgIHVybCA9IHJlcGxhY2VVcmxQYXJhbSh1cmwsIHRoaXMucGF0aFBhcmFtcyk7XG4gICAgaWYgKHRoaXMucXVlcnlQYXJhbXMpIHtcbiAgICAgIHVybCA9IHVybCArIFwiP1wiICsgdGhpcy5xdWVyeVBhcmFtcy50b1N0cmluZygpO1xuICAgIH1cbiAgICBtZXRob2RVcHBlckNhc2UgPSB0aGlzLm1ldGhvZC50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IHNldEJvZHkgPSAhKG1ldGhvZFVwcGVyQ2FzZSA9PT0gXCJHRVRcIiB8fCBtZXRob2RVcHBlckNhc2UgPT09IFwiSEVBRFwiKTtcbiAgICByZXR1cm4gKG9wdD8uZmV0Y2ggfHwgZmV0Y2gpKHVybCwge1xuICAgICAgYm9keTogc2V0Qm9keSA/IHRoaXMuckJvZHkgOiB2b2lkIDAsXG4gICAgICBtZXRob2Q6IG1ldGhvZFVwcGVyQ2FzZSxcbiAgICAgIGhlYWRlcnNcbiAgICB9KTtcbiAgfTtcbn07XG52YXIgaGMgPSAoYmFzZVVybCwgb3B0aW9ucykgPT4gY3JlYXRlUHJveHkoKG9wdHMpID0+IHtcbiAgY29uc3QgcGFydHMgPSBbLi4ub3B0cy5wYXRoXTtcbiAgbGV0IG1ldGhvZCA9IFwiXCI7XG4gIGlmICgvXlxcJC8udGVzdChwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXSkpIHtcbiAgICBjb25zdCBsYXN0ID0gcGFydHMucG9wKCk7XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIG1ldGhvZCA9IGxhc3QucmVwbGFjZSgvXlxcJC8sIFwiXCIpO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXRoID0gcGFydHMuam9pbihcIi9cIik7XG4gIGNvbnN0IHVybCA9IG1lcmdlUGF0aChiYXNlVXJsLCBwYXRoKTtcbiAgaWYgKG1ldGhvZCA9PT0gXCJ1cmxcIikge1xuICAgIGlmIChvcHRzLmFyZ3NbMF0gJiYgb3B0cy5hcmdzWzBdLnBhcmFtKSB7XG4gICAgICByZXR1cm4gbmV3IFVSTChyZXBsYWNlVXJsUGFyYW0odXJsLCBvcHRzLmFyZ3NbMF0ucGFyYW0pKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBVUkwodXJsKTtcbiAgfVxuICBpZiAobWV0aG9kID09PSBcIndzXCIpIHtcbiAgICBjb25zdCB0YXJnZXRVcmwgPSByZXBsYWNlVXJsUHJvdG9jb2woXG4gICAgICBvcHRzLmFyZ3NbMF0gJiYgb3B0cy5hcmdzWzBdLnBhcmFtID8gcmVwbGFjZVVybFBhcmFtKHVybCwgb3B0cy5hcmdzWzBdLnBhcmFtKSA6IHVybCxcbiAgICAgIFwid3NcIlxuICAgICk7XG4gICAgcmV0dXJuIG5ldyBXZWJTb2NrZXQodGFyZ2V0VXJsKTtcbiAgfVxuICBjb25zdCByZXEgPSBuZXcgQ2xpZW50UmVxdWVzdEltcGwodXJsLCBtZXRob2QpO1xuICBpZiAobWV0aG9kKSB7XG4gICAgb3B0aW9ucyA/Pz0ge307XG4gICAgY29uc3QgYXJncyA9IGRlZXBNZXJnZShvcHRpb25zLCB7IC4uLm9wdHMuYXJnc1sxXSA/PyB7fSB9KTtcbiAgICByZXR1cm4gcmVxLmZldGNoKG9wdHMuYXJnc1swXSwgYXJncyk7XG4gIH1cbiAgcmV0dXJuIHJlcTtcbn0sIFtdKTtcbmV4cG9ydCB7XG4gIGhjXG59O1xuIiwiaW1wb3J0IHsgaGMgfSBmcm9tIFwiaG9uby9jbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgQXBwVHlwZSB9IGZyb20gXCIkc2VydmVyXCI7XG5cbmV4cG9ydCBjb25zdCBjbGllbnQgPSAoYXJncz86IHsgYmFzZVVybD86IHN0cmluZzsgZmV0Y2g/OiAodHlwZW9mIGdsb2JhbFRoaXMpW1wiZmV0Y2hcIl0gfSkgPT4ge1xuXHRjb25zdCB7IGJhc2VVcmwgPSBcImh0dHBzOi8vYXBpLmxpbmt1LmxhXCIsIGZldGNoID0gZ2xvYmFsVGhpcy5mZXRjaCB9ID0gYXJncyA/PyB7fTtcblx0cmV0dXJuIGhjPEFwcFR5cGU+KGJhc2VVcmwsIHtcblx0XHRmZXRjaCxcblx0fSk7XG59O1xuXG5leHBvcnQgdHlwZSBBcGlUeXBlID0gQXBwVHlwZTtcbiJdLCJuYW1lcyI6WyJfc2VyaWFsaXplIiwibmFtZSIsInZhbHVlIiwib3B0IiwiY29va2llIiwic2VyaWFsaXplIiwibWVyZ2VQYXRoIiwiYmFzZSIsInBhdGgiLCJyZXBsYWNlVXJsUGFyYW0iLCJ1cmxTdHJpbmciLCJwYXJhbXMiLCJrIiwidiIsInJlZyIsInJlcGxhY2VVcmxQcm90b2NvbCIsInByb3RvY29sIiwicmVtb3ZlSW5kZXhTdHJpbmciLCJ1cmxTdGluZyIsImlzT2JqZWN0IiwiaXRlbSIsImRlZXBNZXJnZSIsInRhcmdldCIsInNvdXJjZSIsIm1lcmdlZCIsImtleSIsImNyZWF0ZVByb3h5IiwiY2FsbGJhY2siLCJfb2JqIiwiXzEiLCJfMiIsImFyZ3MiLCJDbGllbnRSZXF1ZXN0SW1wbCIsInVybCIsIm1ldGhvZCIsIl9fcHVibGljRmllbGQiLCJ2MiIsImZvcm0iLCJtZXRob2RVcHBlckNhc2UiLCJoZWFkZXJWYWx1ZXMiLCJjb29raWVzIiwiaGVhZGVycyIsInNldEJvZHkiLCJoYyIsImJhc2VVcmwiLCJvcHRpb25zIiwib3B0cyIsInBhcnRzIiwibGFzdCIsInRhcmdldFVybCIsInJlcSIsImNsaWVudCIsImZldGNoIl0sIm1hcHBpbmdzIjoiOzs7QUFrRUEsSUFBSUEsSUFBYSxDQUFDQyxHQUFNQyxHQUFPQyxJQUFNLENBQUEsTUFBTztBQUMxQyxNQUFJQyxJQUFTLEdBQUdILENBQUksSUFBSUMsQ0FBSztBQUM3QixNQUFJRCxFQUFLLFdBQVcsV0FBVyxLQUFLLENBQUNFLEVBQUk7QUFDdkMsVUFBTSxJQUFJLE1BQU0sOENBQThDO0FBRWhFLE1BQUlGLEVBQUssV0FBVyxTQUFTLEdBQUc7QUFDOUIsUUFBSSxDQUFDRSxFQUFJO0FBQ1AsWUFBTSxJQUFJLE1BQU0sNENBQTRDO0FBRTlELFFBQUlBLEVBQUksU0FBUztBQUNmLFlBQU0sSUFBSSxNQUFNLG1EQUFtRDtBQUVyRSxRQUFJQSxFQUFJO0FBQ04sWUFBTSxJQUFJLE1BQU0sZ0RBQWdEO0FBQUEsRUFFbkU7QUFDRCxNQUFJQSxLQUFPLE9BQU9BLEVBQUksVUFBVyxZQUFZQSxFQUFJLFVBQVUsR0FBRztBQUM1RCxRQUFJQSxFQUFJLFNBQVM7QUFDZixZQUFNLElBQUk7QUFBQSxRQUNSO0FBQUEsTUFDUjtBQUVJLElBQUFDLEtBQVUsYUFBYSxLQUFL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
@@ -2,7 +2,7 @@ import { AppType } from '../server';
2
2
 
3
3
  export declare const client: (args?: {
4
4
  baseUrl?: string;
5
- fetch?: (typeof global)["fetch"];
5
+ fetch?: (typeof globalThis)["fetch"];
6
6
  }) => {
7
7
  index: import('hono/client').ClientRequest<{
8
8
  $get: {
@@ -83,7 +83,7 @@ export declare const client: (args?: {
83
83
  jasima: import('hono/client').ClientRequest<{
84
84
  $get: {
85
85
  input: {};
86
- output: {};
86
+ output: never;
87
87
  };
88
88
  }>;
89
89
  } & {
@@ -343,6 +343,14 @@ export declare const client: (args?: {
343
343
  language: string;
344
344
  sign: string;
345
345
  }[];
346
+ translations: Record<string, {
347
+ parameters: {
348
+ handshape?: string | undefined;
349
+ movement?: string | undefined;
350
+ placement?: string | undefined;
351
+ orientation?: string | undefined;
352
+ };
353
+ }>;
346
354
  is_two_handed: boolean;
347
355
  signwriting: {
348
356
  fsw: string;
@@ -421,6 +429,15 @@ export declare const client: (args?: {
421
429
  language: string;
422
430
  sign?: string | undefined;
423
431
  }[];
432
+ translations: Record<string, {
433
+ parameters: {
434
+ handshape?: string | undefined;
435
+ movement?: string | undefined;
436
+ placement?: string | undefined;
437
+ orientation?: string | undefined;
438
+ };
439
+ icons: string;
440
+ }>;
424
441
  definition: string;
425
442
  is_two_handed: boolean;
426
443
  new_gloss: string;
@@ -6,7 +6,7 @@ import { Fingerspelling, Font, Fonts, Language, Languages, LocalizedFingerspelli
6
6
  type ResponseType<F> = F extends {
7
7
  $get: (...args: any[]) => Promise<ClientResponse<infer O>>;
8
8
  } ? O : never;
9
- type ClientType = typeof client;
9
+ type ClientType = ReturnType<typeof client>;
10
10
  type Result<T> = {
11
11
  ok: true;
12
12
  data: T;
@@ -299,6 +299,14 @@ declare const app: import('hono/hono-base').HonoBase<{}, {
299
299
  language: string;
300
300
  sign: string;
301
301
  }[];
302
+ translations: Record<string, {
303
+ parameters: {
304
+ handshape?: string | undefined;
305
+ movement?: string | undefined;
306
+ placement?: string | undefined;
307
+ orientation?: string | undefined;
308
+ };
309
+ }>;
302
310
  is_two_handed: boolean;
303
311
  signwriting: {
304
312
  fsw: string;
@@ -365,6 +373,15 @@ declare const app: import('hono/hono-base').HonoBase<{}, {
365
373
  language: string;
366
374
  sign?: string | undefined;
367
375
  }[];
376
+ translations: Record<string, {
377
+ parameters: {
378
+ handshape?: string | undefined;
379
+ movement?: string | undefined;
380
+ placement?: string | undefined;
381
+ orientation?: string | undefined;
382
+ };
383
+ icons: string;
384
+ }>;
368
385
  definition: string;
369
386
  is_two_handed: boolean;
370
387
  new_gloss: string;
@@ -477,7 +494,7 @@ declare const app: import('hono/hono-base').HonoBase<{}, {
477
494
  "/jasima": {
478
495
  $get: {
479
496
  input: {};
480
- output: {};
497
+ output: never;
481
498
  };
482
499
  };
483
500
  }, "/">;
@@ -14,7 +14,7 @@ export declare const keys: <const K extends PropertyKey>(o: Record<K, any>) => K
14
14
  export declare const filterObject: <const T extends object>(o: T, predicate: (o: [keyof T, T[keyof T]]) => boolean) => {
15
15
  [k: string]: T[keyof T];
16
16
  };
17
- export declare const langIdCoalesce: (lang: string, langs: Languages) => string | null;
17
+ export declare const langIdCoalesce: (lang: string, langs: Languages) => string | undefined;
18
18
  export declare const langValidator: import('hono').MiddlewareHandler<import('hono').Env, string, {
19
19
  in: {
20
20
  query: {
@@ -309,6 +309,14 @@ declare const app: Hono<{}, {
309
309
  language: string;
310
310
  sign: string;
311
311
  }[];
312
+ translations: Record<string, {
313
+ parameters: {
314
+ handshape?: string | undefined;
315
+ movement?: string | undefined;
316
+ placement?: string | undefined;
317
+ orientation?: string | undefined;
318
+ };
319
+ }>;
312
320
  is_two_handed: boolean;
313
321
  signwriting: {
314
322
  fsw: string;
@@ -377,6 +385,15 @@ declare const app: Hono<{}, {
377
385
  language: string;
378
386
  sign?: string | undefined;
379
387
  }[];
388
+ translations: Record<string, {
389
+ parameters: {
390
+ handshape?: string | undefined;
391
+ movement?: string | undefined;
392
+ placement?: string | undefined;
393
+ orientation?: string | undefined;
394
+ };
395
+ icons: string;
396
+ }>;
380
397
  definition: string;
381
398
  is_two_handed: boolean;
382
399
  new_gloss: string;
@@ -15,7 +15,7 @@ export type Versions = {
15
15
  };
16
16
  export declare const versions: {
17
17
  readonly v1: {
18
- readonly branch: any;
18
+ readonly branch: string;
19
19
  readonly schemas: {
20
20
  readonly words: z.ZodRecord<z.ZodString, z.ZodObject<{
21
21
  id: z.ZodString;
@@ -2046,6 +2046,14 @@ export declare const apps: {
2046
2046
  language: string;
2047
2047
  sign: string;
2048
2048
  }[];
2049
+ translations: Record<string, {
2050
+ parameters: {
2051
+ handshape?: string | undefined;
2052
+ movement?: string | undefined;
2053
+ placement?: string | undefined;
2054
+ orientation?: string | undefined;
2055
+ };
2056
+ }>;
2049
2057
  is_two_handed: boolean;
2050
2058
  signwriting: {
2051
2059
  fsw: string;
@@ -2114,6 +2122,15 @@ export declare const apps: {
2114
2122
  language: string;
2115
2123
  sign?: string | undefined;
2116
2124
  }[];
2125
+ translations: Record<string, {
2126
+ parameters: {
2127
+ handshape?: string | undefined;
2128
+ movement?: string | undefined;
2129
+ placement?: string | undefined;
2130
+ orientation?: string | undefined;
2131
+ };
2132
+ icons: string;
2133
+ }>;
2117
2134
  definition: string;
2118
2135
  is_two_handed: boolean;
2119
2136
  new_gloss: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kulupu-linku/sona",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "A library providing TypeScript types and Zod schemas for the sona API",
5
5
  "homepage": "https://linku.la/",
6
6
  "bugs": {
@@ -70,6 +70,7 @@
70
70
  "build": "vite build",
71
71
  "build:lib": "vite build --mode lib",
72
72
  "generate": "tsx ./generateSchemas.ts",
73
- "generate:watch": "tsx ./generateSchemas.ts --watch-path=./**/*.ts"
73
+ "generate:watch": "tsx ./generateSchemas.ts --watch-path=./**/*.ts",
74
+ "format": "prettier --write ."
74
75
  }
75
76
  }