{"version":3,"file":"pxv.cjs","sources":["../node_modules/tslib/tslib.es6.mjs","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Parser.js","../node_modules/stylis/src/Prefixer.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/styled-components/dist/styled-components.browser.esm.js","../src/core/types/queryVisualizationResponse.ts","../src/core/conversion/translations/defaultTranslations.ts","../src/core/conversion/translations/index.ts","../src/core/conversion/translations/translationManager.ts","../src/core/conversion/utilityFunctions.ts","../src/core/tables/tableUtils.ts","../src/core/chartOptions/Utility/formatters.ts","../src/core/types/view.ts","../src/core/chartOptions/Utility/tickPositionerUtilities.ts","../src/core/chartOptions/Utility/timeIntervals.ts","../src/core/chartOptions/Utility/ordinalIntervals.ts","../src/core/chartOptions/Utility/tickPositioners.ts","../src/core/highcharts/defaultColors.ts","../src/core/highcharts/fillPatterns.ts","../src/core/chartOptions/Utility/patternFill.ts","../src/core/chartOptions/Utility/seriesDataBuilder.ts","../src/core/chartOptions/chartOptions.ts","../src/core/chartOptions/scatterPlotOptions.ts","../src/core/conversion/pxGrafDataConverter.ts","../src/core/chartOptions/lineChartOptions.ts","../src/core/chartOptions/basicVerticalBarChartOptions.ts","../src/core/chartOptions/basicHorizontalBarchartOptions.ts","../src/core/chartOptions/groupVerticalBarChartOptions.ts","../src/core/chartOptions/groupHorizontalBarChartOptions.ts","../src/core/chartOptions/stackedVerticalBarChartOptions.ts","../src/core/chartOptions/stackedHorizontalBarChartOptions.ts","../src/core/chartOptions/percentVerticalBarChartOptions.ts","../src/core/chartOptions/percentHorizontalBarChartOptions.ts","../src/core/chartOptions/pieChartOptions.ts","../src/core/chartOptions/pyramidChartOptions.ts","../src/core/conversion/helpers.ts","../src/core/conversion/viewSorting.ts","../src/core/conversion/seriesBuilderUtilities.ts","../src/core/conversion/seriesBuilder.ts","../src/core/conversion/viewUtils.ts","../src/core/highcharts/themes.ts","../src/core/tables/htmlTable.ts","../src/core/tables/exportingUtils.ts","../src/core/tables/csvTable.ts","../src/core/tables/xlsx/xlsxPropertyConstants.ts","../src/core/tables/xlsx/xlsxWorksheetBuilder.ts","../src/core/tables/xlsx/xlsxTemplates.ts","../src/core/tables/xlsx/xlsxDataBuilder.ts","../src/core/tables/xlsx/xlsxBuilder.ts","../src/core/tables/xlsx/xlsxUtils.ts","../src/core/types/icon.ts","../src/react/components/icon/icon.tsx","../src/react/components/burgerMenu/menuItem/menuItem.tsx","../src/react/components/burgerMenu/burgerMenu.tsx","../node_modules/uuid/dist/stringify.js","../node_modules/uuid/dist/rng.js","../node_modules/uuid/dist/native.js","../src/react/components/globalStyle/globalStyle.ts","../src/react/components/chart/ErrorInfo.tsx","../src/react/components/chart/chart.tsx","../src/react/components/chart/tableView.tsx","../node_modules/uuid/dist/v4.js","../src/react/components/ErrorBoundary/ErrorBoundary.tsx","../src/core/highcharts/drawChart.ts"],"sourcesContent":["/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n","function memoize(fn) {\n  var cache = Object.create(null);\n  return function (arg) {\n    if (cache[arg] === undefined) cache[arg] = fn(arg);\n    return cache[arg];\n  };\n}\n\nexport { memoize as default };\n","import memoize from '@emotion/memoize';\n\n// eslint-disable-next-line no-undef\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|popover|popoverTarget|popoverTargetAction|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n  return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n  /* o */\n  && prop.charCodeAt(1) === 110\n  /* n */\n  && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport { isPropValid as default };\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\nexport var SCOPE = '@scope'\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @param {number} position\n * @return {number}\n */\nexport function indexof (value, search, position) {\n\treturn value.indexOf(search, position)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n\n/**\n * @param {string[]} array\n * @param {RegExp} pattern\n * @return {string[]}\n */\nexport function filter (array, pattern) {\n\treturn array.filter(function (value) { return !match(value, pattern) })\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {object[]} siblings\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length, siblings) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: '', siblings: siblings}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0, root.siblings), root, {length: -root.length}, props)\n}\n\n/**\n * @param {object} root\n */\nexport function lift (root) {\n\twhile (root.root)\n\t\troot = copy(root.root, {children: [root]})\n\n\tappend(root, root.siblings)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, token, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f', abs(index ? points[index - 1] : 0)) != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent, declarations), declarations)\n\t\t\t\t\t\tif ((token(previous || 1) == 5 || token(peek() || 1) == 5) && strlen(characters) && substr(characters, -1, void 0) !== ' ') characters += ' '\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length || (variable === 0 && previous === 47)))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1, declarations) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2, declarations), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length, rulesets), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tswitch (atrule) {\n\t\t\t\t\t\t\t\t\t// c(ontainer)\n\t\t\t\t\t\t\t\t\tcase 99:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 3) === 110) break\n\t\t\t\t\t\t\t\t\t// l(ayer)\n\t\t\t\t\t\t\t\t\tcase 108:\n\t\t\t\t\t\t\t\t\t\tif (charat(characters, 2) === 97) break\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\toffset = 0\n\t\t\t\t\t\t\t\t\t// d(ocument) m(edia) s(upports)\n\t\t\t\t\t\t\t\t\tcase 100: case 109: case 115:\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (offset) parse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length, children), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\telse parse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length, siblings) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length, siblings)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @param {object[]} siblings\n * @return {object}\n */\nexport function comment (value, root, parent, siblings) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0, siblings)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @param {object[]} siblings\n * @return {object}\n */\nexport function declaration (value, root, parent, length, siblings) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length, siblings)\n}\n","import {MS, MOZ, WEBKIT} from './Enum.js'\nimport {hash, charat, strlen, indexof, replace, substr, match} from './Utility.js'\n\n/**\n * @param {string} value\n * @param {number} length\n * @param {object[]} children\n * @return {string}\n */\nexport function prefix (value, length, children) {\n\tswitch (hash(value, length)) {\n\t\t// color-adjust\n\t\tcase 5103:\n\t\t\treturn WEBKIT + 'print-' + value + value\n\t\t// animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\t\tcase 5737: case 4201: case 3177: case 3433: case 1641: case 4457: case 2921:\n\t\t// text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\t\tcase 5572: case 6356: case 5844: case 3191: case 6645: case 3005:\n\t\t// background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\t\tcase 4215: case 6389: case 5109: case 5365: case 5621: case 3829:\n\t\t// mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position\n\t\tcase 6391: case 5879: case 5623: case 6135: case 4599:\n\t\t\treturn WEBKIT + value + value\n\t\t// mask-composite\n\t\tcase 4855:\n\t\t\treturn WEBKIT + value.replace('add', 'source-over').replace('substract', 'source-out').replace('intersect', 'source-in').replace('exclude', 'xor') + value\n\t\t// tab-size\n\t\tcase 4789:\n\t\t\treturn MOZ + value + value\n\t\t// appearance, user-select, transform, hyphens, text-size-adjust\n\t\tcase 5349: case 4246: case 4810: case 6968: case 2756:\n\t\t\treturn WEBKIT + value + MOZ + value + MS + value + value\n\t\t// writing-mode\n\t\tcase 5936:\n\t\t\tswitch (charat(value, length + 11)) {\n\t\t\t\t// vertical-l(r)\n\t\t\t\tcase 114:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value\n\t\t\t\t// vertical-r(l)\n\t\t\t\tcase 108:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value\n\t\t\t\t// horizontal(-)tb\n\t\t\t\tcase 45:\n\t\t\t\t\treturn WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value\n\t\t\t\t// default: fallthrough to below\n\t\t\t}\n\t\t// flex, flex-direction, scroll-snap-type, writing-mode\n\t\tcase 6828: case 4268: case 2903:\n\t\t\treturn WEBKIT + value + MS + value + value\n\t\t// order\n\t\tcase 6165:\n\t\t\treturn WEBKIT + value + MS + 'flex-' + value + value\n\t\t// align-items\n\t\tcase 5187:\n\t\t\treturn WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value\n\t\t// align-self\n\t\tcase 5443:\n\t\t\treturn WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/g, '') + (!match(value, /flex-|baseline/) ? MS + 'grid-row-' + replace(value, /flex-|-self/g, '') : '') + value\n\t\t// align-content\n\t\tcase 4675:\n\t\t\treturn WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/g, '') + value\n\t\t// flex-shrink\n\t\tcase 5548:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value\n\t\t// flex-basis\n\t\tcase 5292:\n\t\t\treturn WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value\n\t\t// flex-grow\n\t\tcase 6060:\n\t\t\treturn WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value\n\t\t// transition\n\t\tcase 4554:\n\t\t\treturn WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value\n\t\t// cursor\n\t\tcase 6187:\n\t\t\treturn replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value\n\t\t// background, background-image\n\t\tcase 5495: case 3959:\n\t\t\treturn replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1')\n\t\t// justify-content\n\t\tcase 4968:\n\t\t\treturn replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /space-between/, 'justify') + WEBKIT + value + value\n\t\t// justify-self\n\t\tcase 4200:\n\t\t\tif (!match(value, /flex-|baseline/)) return MS + 'grid-column-align' + substr(value, length) + value\n\t\t\tbreak\n\t\t// grid-template-(columns|rows)\n\t\tcase 2592: case 3360:\n\t\t\treturn MS + replace(value, 'template-', '') + value\n\t\t// grid-(row|column)-start\n\t\tcase 4384: case 3616:\n\t\t\tif (children && children.some(function (element, index) { return length = index, match(element.props, /grid-\\w+-end/) })) {\n\t\t\t\treturn ~indexof(value + (children = children[length].value), 'span', 0) ? value : (MS + replace(value, '-start', '') + value + MS + 'grid-row-span:' + (~indexof(children, 'span', 0) ? match(children, /\\d+/) : +match(children, /\\d+/) - +match(value, /\\d+/)) + ';')\n\t\t\t}\n\t\t\treturn MS + replace(value, '-start', '') + value\n\t\t// grid-(row|column)-end\n\t\tcase 4896: case 4128:\n\t\t\treturn (children && children.some(function (element) { return match(element.props, /grid-\\w+-start/) })) ? value : MS + replace(replace(value, '-end', '-span'), 'span ', '') + value\n\t\t// (margin|padding)-inline-(start|end)\n\t\tcase 4095: case 3583: case 4068: case 2532:\n\t\t\treturn replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value\n\t\t// (min|max)?(width|height|inline-size|block-size)\n\t\tcase 8116: case 7059: case 5753: case 5535:\n\t\tcase 5445: case 5701: case 4933: case 4677:\n\t\tcase 5533: case 5789: case 5021: case 4765:\n\t\t\t// stretch, max-content, min-content, fill-available\n\t\t\tif (strlen(value) - 1 - length > 6)\n\t\t\t\tswitch (charat(value, length + 1)) {\n\t\t\t\t\t// (m)ax-content, (m)in-content\n\t\t\t\t\tcase 109:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (charat(value, length + 4) !== 45)\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t// (f)ill-available, (f)it-content\n\t\t\t\t\tcase 102:\n\t\t\t\t\t\treturn replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value\n\t\t\t\t\t// (s)tretch\n\t\t\t\t\tcase 115:\n\t\t\t\t\t\treturn ~indexof(value, 'stretch', 0) ? prefix(replace(value, 'stretch', 'fill-available'), length, children) + value : value\n\t\t\t\t}\n\t\t\tbreak\n\t\t// grid-(column|row)\n\t\tcase 5152: case 5920:\n\t\t\treturn replace(value, /(.+?):(\\d+)(\\s*\\/\\s*(span)?\\s*(\\d+))?(.*)/, function (_, a, b, c, d, e, f) { return (MS + a + ':' + b + f) + (c ? (MS + a + '-span:' + (d ? e : +e - +b)) + f : '') + value })\n\t\t// position: sticky\n\t\tcase 4949:\n\t\t\t// stick(y)?\n\t\t\tif (charat(value, length + 6) === 121)\n\t\t\t\treturn replace(value, ':', ':' + WEBKIT) + value\n\t\t\tbreak\n\t\t// display: (flex|inline-flex|grid|inline-grid)\n\t\tcase 6444:\n\t\t\tswitch (charat(value, charat(value, 14) === 45 ? 18 : 11)) {\n\t\t\t\t// (inline-)?fle(x)\n\t\t\t\tcase 120:\n\t\t\t\t\treturn replace(value, /(.+:)([^;\\s!]+)(;|(\\s+)?!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value\n\t\t\t\t// (inline-)?gri(d)\n\t\t\t\tcase 100:\n\t\t\t\t\treturn replace(value, ':', ':' + MS) + value\n\t\t\t}\n\t\t\tbreak\n\t\t// scroll-margin, scroll-margin-(top|right|bottom|left)\n\t\tcase 5719: case 2647: case 2135: case 3927: case 2391:\n\t\t\treturn replace(value, 'scroll-', 'scroll-snap-') + value\n\t}\n\n\treturn value\n}\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES, NAMESPACE} from './Enum.js'\nimport {strlen} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\n\tfor (var i = 0; i < children.length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case NAMESPACE: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: if (!strlen(element.value = element.props.join(','))) return ''\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine, filter, assign} from './Utility.js'\nimport {copy, lift, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(children = element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, callback = /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]}))\n\t\t\t\t\t\t\t\t\tlift(copy(element, {props: [value]}))\n\t\t\t\t\t\t\t\t\tassign(element, {props: filter(children, callback)})\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var unitlessKeys = {\n  animationIterationCount: 1,\n  aspectRatio: 1,\n  borderImageOutset: 1,\n  borderImageSlice: 1,\n  borderImageWidth: 1,\n  boxFlex: 1,\n  boxFlexGroup: 1,\n  boxOrdinalGroup: 1,\n  columnCount: 1,\n  columns: 1,\n  flex: 1,\n  flexGrow: 1,\n  flexPositive: 1,\n  flexShrink: 1,\n  flexNegative: 1,\n  flexOrder: 1,\n  gridRow: 1,\n  gridRowEnd: 1,\n  gridRowSpan: 1,\n  gridRowStart: 1,\n  gridColumn: 1,\n  gridColumnEnd: 1,\n  gridColumnSpan: 1,\n  gridColumnStart: 1,\n  msGridRow: 1,\n  msGridRowSpan: 1,\n  msGridColumn: 1,\n  msGridColumnSpan: 1,\n  fontWeight: 1,\n  lineHeight: 1,\n  opacity: 1,\n  order: 1,\n  orphans: 1,\n  scale: 1,\n  tabSize: 1,\n  widows: 1,\n  zIndex: 1,\n  zoom: 1,\n  WebkitLineClamp: 1,\n  // SVG-related properties\n  fillOpacity: 1,\n  floodOpacity: 1,\n  stopOpacity: 1,\n  strokeDasharray: 1,\n  strokeDashoffset: 1,\n  strokeMiterlimit: 1,\n  strokeOpacity: 1,\n  strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","import{__spreadArray as e,__assign as t}from\"tslib\";import n from\"@emotion/is-prop-valid\";import o,{createElement as r}from\"react\";import*as s from\"stylis\";import i from\"@emotion/unitless\";var a=\"undefined\"!=typeof process&&void 0!==process.env&&(process.env.REACT_APP_SC_ATTR||process.env.SC_ATTR)||\"data-styled\",c=\"active\",u=\"data-styled-version\",l=\"6.3.11\",p=\"/*!sc*/\\n\",h=\"undefined\"!=typeof window&&\"undefined\"!=typeof document,d=Boolean(\"boolean\"==typeof SC_DISABLE_SPEEDY?SC_DISABLE_SPEEDY:\"undefined\"!=typeof process&&void 0!==process.env&&void 0!==process.env.REACT_APP_SC_DISABLE_SPEEDY&&\"\"!==process.env.REACT_APP_SC_DISABLE_SPEEDY?\"false\"!==process.env.REACT_APP_SC_DISABLE_SPEEDY&&process.env.REACT_APP_SC_DISABLE_SPEEDY:\"undefined\"!=typeof process&&void 0!==process.env&&void 0!==process.env.SC_DISABLE_SPEEDY&&\"\"!==process.env.SC_DISABLE_SPEEDY?\"false\"!==process.env.SC_DISABLE_SPEEDY&&process.env.SC_DISABLE_SPEEDY:\"production\"!==process.env.NODE_ENV),f={},m=\"production\"!==process.env.NODE_ENV?{1:\"Cannot create styled-component for component: %s.\\n\\n\",2:\"Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\\n\\n- Are you trying to reuse it across renders?\\n- Are you accidentally calling collectStyles twice?\\n\\n\",3:\"Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\\n\\n\",4:\"The `StyleSheetManager` expects a valid target or sheet prop!\\n\\n- Does this error occur on the client and is your target falsy?\\n- Does this error occur on the server and is the sheet falsy?\\n\\n\",5:\"The clone method cannot be used on the client!\\n\\n- Are you running in a client-like environment on the server?\\n- Are you trying to run SSR on the client?\\n\\n\",6:\"Trying to insert a new style tag, but the given Node is unmounted!\\n\\n- Are you using a custom target that isn't mounted?\\n- Does your document not have a valid head element?\\n- Have you accidentally removed a style tag manually?\\n\\n\",7:'ThemeProvider: Please return an object from your \"theme\" prop function, e.g.\\n\\n```js\\ntheme={() => ({})}\\n```\\n\\n',8:'ThemeProvider: Please make your \"theme\" prop an object.\\n\\n',9:\"Missing document `<head>`\\n\\n\",10:\"Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\\n\\n\",11:\"_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\\n\\n\",12:\"It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\\\`\\\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\\n\\n\",13:\"%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\\n\\n\",14:'ThemeProvider: \"theme\" prop is required.\\n\\n',15:\"A stylis plugin has been supplied that is not named. We need a name for each plugin to be able to prevent styling collisions between different stylis configurations within the same app. Before you pass your plugin to `<StyleSheetManager stylisPlugins={[]}>`, please make sure each plugin is uniquely-named, e.g.\\n\\n```js\\nObject.defineProperty(importedPlugin, 'name', { value: 'some-unique-name' });\\n```\\n\\n\",16:\"Reached the limit of how many styled components may be created at group %s.\\nYou may only create up to 1,073,741,824 components. If you're creating components dynamically,\\nas for instance in your render method then you may be running into this limitation.\\n\\n\",17:\"CSSStyleSheet could not be found on HTMLStyleElement.\\nHas styled-components' style tag been unmounted or altered by another script?\\n\",18:\"ThemeProvider: Please make sure your useTheme hook is within a `<ThemeProvider>`\"}:{};function y(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];for(var n=e[0],o=[],r=1,s=e.length;r<s;r+=1)o.push(e[r]);return o.forEach(function(e){n=n.replace(/%[a-z]/,e)}),n}function v(t){for(var n=[],o=1;o<arguments.length;o++)n[o-1]=arguments[o];return\"production\"===process.env.NODE_ENV?new Error(\"An error occurred. See https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#\".concat(t,\" for more information.\").concat(n.length>0?\" Args: \".concat(n.join(\", \")):\"\")):new Error(y.apply(void 0,e([m[t]],n,!1)).trim())}var g=1<<30,S=new Map,w=new Map,b=1,N=function(e){if(S.has(e))return S.get(e);for(;w.has(b);)b++;var t=b++;if(\"production\"!==process.env.NODE_ENV&&((0|t)<0||t>g))throw v(16,\"\".concat(t));return S.set(e,t),w.set(t,e),t},E=function(e,t){b=t+1,S.set(e,t),w.set(t,e)},C=/invalid hook call/i,A=new Set,_=function(t,n){if(\"production\"!==process.env.NODE_ENV){var r=n?' with the id of \"'.concat(n,'\"'):\"\",s=\"The component \".concat(t).concat(r,\" has been created dynamically.\\n\")+\"You may see this warning because you've called styled inside another component.\\nTo resolve this only create new StyledComponents outside of any render method and function component.\\nSee https://styled-components.com/docs/basics#define-styled-components-outside-of-the-render-method for more info.\\n\",i=console.error;try{var a=!0;console.error=function(t){for(var n=[],o=1;o<arguments.length;o++)n[o-1]=arguments[o];C.test(t)?(a=!1,A.delete(s)):i.apply(void 0,e([t],n,!1))},\"function\"==typeof o.useState&&o.useState(null),a&&!A.has(s)&&(console.warn(s),A.add(s))}catch(e){C.test(e.message)&&A.delete(s)}finally{console.error=i}}},P=Object.freeze([]),I=Object.freeze({});function O(e,t,n){return void 0===n&&(n=I),e.theme!==n.theme&&e.theme||t||n.theme}var D=new Set([\"a\",\"abbr\",\"address\",\"area\",\"article\",\"aside\",\"audio\",\"b\",\"bdi\",\"bdo\",\"blockquote\",\"body\",\"button\",\"br\",\"canvas\",\"caption\",\"cite\",\"code\",\"col\",\"colgroup\",\"data\",\"datalist\",\"dd\",\"del\",\"details\",\"dfn\",\"dialog\",\"div\",\"dl\",\"dt\",\"em\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"hr\",\"html\",\"i\",\"iframe\",\"img\",\"input\",\"ins\",\"kbd\",\"label\",\"legend\",\"li\",\"main\",\"map\",\"mark\",\"menu\",\"meter\",\"nav\",\"object\",\"ol\",\"optgroup\",\"option\",\"output\",\"p\",\"picture\",\"pre\",\"progress\",\"q\",\"rp\",\"rt\",\"ruby\",\"s\",\"samp\",\"search\",\"section\",\"select\",\"slot\",\"small\",\"span\",\"strong\",\"sub\",\"summary\",\"sup\",\"table\",\"tbody\",\"td\",\"template\",\"textarea\",\"tfoot\",\"th\",\"thead\",\"time\",\"tr\",\"u\",\"ul\",\"var\",\"video\",\"wbr\",\"circle\",\"clipPath\",\"defs\",\"ellipse\",\"feBlend\",\"feColorMatrix\",\"feComponentTransfer\",\"feComposite\",\"feConvolveMatrix\",\"feDiffuseLighting\",\"feDisplacementMap\",\"feDistantLight\",\"feDropShadow\",\"feFlood\",\"feFuncA\",\"feFuncB\",\"feFuncG\",\"feFuncR\",\"feGaussianBlur\",\"feImage\",\"feMerge\",\"feMergeNode\",\"feMorphology\",\"feOffset\",\"fePointLight\",\"feSpecularLighting\",\"feSpotLight\",\"feTile\",\"feTurbulence\",\"filter\",\"foreignObject\",\"g\",\"image\",\"line\",\"linearGradient\",\"marker\",\"mask\",\"path\",\"pattern\",\"polygon\",\"polyline\",\"radialGradient\",\"rect\",\"stop\",\"svg\",\"switch\",\"symbol\",\"text\",\"textPath\",\"tspan\",\"use\"]),R=/[!\"#$%&'()*+,./:;<=>?@[\\\\\\]^`{|}~-]+/g,T=/(^-|-$)/g;function x(e){return e.replace(R,\"-\").replace(T,\"\")}var j=/(a)(d)/gi,k=function(e){return String.fromCharCode(e+(e>25?39:97))};function M(e){var t,n=\"\";for(t=Math.abs(e);t>52;t=t/52|0)n=k(t%52)+n;return(k(t%52)+n).replace(j,\"$1-$2\")}var V,F=function(e,t){for(var n=t.length;n;)e=33*e^t.charCodeAt(--n);return e},G=function(e){return F(5381,e)};function L(e){return M(G(e)>>>0)}function B(e){return\"production\"!==process.env.NODE_ENV&&\"string\"==typeof e&&e||e.displayName||e.name||\"Component\"}function z(e){return\"string\"==typeof e&&(\"production\"===process.env.NODE_ENV||e.charAt(0)===e.charAt(0).toLowerCase())}var $=\"function\"==typeof Symbol&&Symbol.for,Y=$?Symbol.for(\"react.memo\"):60115,W=$?Symbol.for(\"react.forward_ref\"):60112,q={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},H={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},U={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},J=((V={})[W]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},V[Y]=U,V);function X(e){return(\"type\"in(t=e)&&t.type.$$typeof)===Y?U:\"$$typeof\"in e?J[e.$$typeof]:q;var t}var Z=Object.defineProperty,K=Object.getOwnPropertyNames,Q=Object.getOwnPropertySymbols,ee=Object.getOwnPropertyDescriptor,te=Object.getPrototypeOf,ne=Object.prototype;function oe(e,t,n){if(\"string\"!=typeof t){if(ne){var o=te(t);o&&o!==ne&&oe(e,o,n)}var r=K(t);Q&&(r=r.concat(Q(t)));for(var s=X(e),i=X(t),a=0;a<r.length;++a){var c=r[a];if(!(c in H||n&&n[c]||i&&c in i||s&&c in s)){var u=ee(t,c);try{Z(e,c,u)}catch(e){}}}}return e}function re(e){return\"function\"==typeof e}function se(e){return\"object\"==typeof e&&\"styledComponentId\"in e}function ie(e,t){return e&&t?\"\".concat(e,\" \").concat(t):e||t||\"\"}function ae(e,t){return e.join(t||\"\")}function ce(e){return null!==e&&\"object\"==typeof e&&e.constructor.name===Object.name&&!(\"props\"in e&&e.$$typeof)}function ue(e,t,n){if(void 0===n&&(n=!1),!n&&!ce(e)&&!Array.isArray(e))return t;if(Array.isArray(t))for(var o=0;o<t.length;o++)e[o]=ue(e[o],t[o]);else if(ce(t))for(var o in t)e[o]=ue(e[o],t[o]);return e}function le(e,t){Object.defineProperty(e,\"toString\",{value:t})}var pe=function(){function e(e){this.groupSizes=new Uint32Array(512),this.length=512,this.tag=e,this._cGroup=0,this._cIndex=0}return e.prototype.indexOfGroup=function(e){if(e===this._cGroup)return this._cIndex;var t=this._cIndex;if(e>this._cGroup)for(var n=this._cGroup;n<e;n++)t+=this.groupSizes[n];else for(n=this._cGroup-1;n>=e;n--)t-=this.groupSizes[n];return this._cGroup=e,this._cIndex=t,t},e.prototype.insertRules=function(e,t){if(e>=this.groupSizes.length){for(var n=this.groupSizes,o=n.length,r=o;e>=r;)if((r<<=1)<0)throw v(16,\"\".concat(e));this.groupSizes=new Uint32Array(r),this.groupSizes.set(n),this.length=r;for(var s=o;s<r;s++)this.groupSizes[s]=0}for(var i=this.indexOfGroup(e+1),a=0,c=(s=0,t.length);s<c;s++)this.tag.insertRule(i,t[s])&&(this.groupSizes[e]++,i++,a++);a>0&&this._cGroup>e&&(this._cIndex+=a)},e.prototype.clearGroup=function(e){if(e<this.length){var t=this.groupSizes[e],n=this.indexOfGroup(e),o=n+t;this.groupSizes[e]=0;for(var r=n;r<o;r++)this.tag.deleteRule(n);t>0&&this._cGroup>e&&(this._cIndex-=t)}},e.prototype.getGroup=function(e){var t=\"\";if(e>=this.length||0===this.groupSizes[e])return t;for(var n=this.groupSizes[e],o=this.indexOfGroup(e),r=o+n,s=o;s<r;s++)t+=this.tag.getRule(s)+p;return t},e}(),he=\"style[\".concat(a,\"][\").concat(u,'=\"').concat(l,'\"]'),de=new RegExp(\"^\".concat(a,'\\\\.g(\\\\d+)\\\\[id=\"([\\\\w\\\\d-]+)\"\\\\].*?\"([^\"]*)')),fe=function(e){return\"undefined\"!=typeof ShadowRoot&&e instanceof ShadowRoot||\"host\"in e&&11===e.nodeType},me=function(e){if(!e)return document;if(fe(e))return e;if(\"getRootNode\"in e){var t=e.getRootNode();if(fe(t))return t}return document},ye=function(e,t,n){for(var o,r=n.split(\",\"),s=0,i=r.length;s<i;s++)(o=r[s])&&e.registerName(t,o)},ve=function(e,t){for(var n,o=(null!==(n=t.textContent)&&void 0!==n?n:\"\").split(p),r=[],s=0,i=o.length;s<i;s++){var a=o[s].trim();if(a){var c=a.match(de);if(c){var u=0|parseInt(c[1],10),l=c[2];0!==u&&(E(l,u),ye(e,l,c[3]),e.getTag().insertRules(u,r)),r.length=0}else r.push(a)}}},ge=function(e){for(var t=me(e.options.target).querySelectorAll(he),n=0,o=t.length;n<o;n++){var r=t[n];r&&r.getAttribute(a)!==c&&(ve(e,r),r.parentNode&&r.parentNode.removeChild(r))}};function Se(){return\"undefined\"!=typeof __webpack_nonce__?__webpack_nonce__:null}var we=function(e){var t=document.head,n=e||t,o=document.createElement(\"style\"),r=function(e){var t=Array.from(e.querySelectorAll(\"style[\".concat(a,\"]\")));return t[t.length-1]}(n),s=void 0!==r?r.nextSibling:null;o.setAttribute(a,c),o.setAttribute(u,l);var i=Se();return i&&o.setAttribute(\"nonce\",i),n.insertBefore(o,s),o},be=function(){function e(e){this.element=we(e),this.element.appendChild(document.createTextNode(\"\")),this.sheet=function(e){var t;if(e.sheet)return e.sheet;for(var n=null!==(t=e.getRootNode().styleSheets)&&void 0!==t?t:document.styleSheets,o=0,r=n.length;o<r;o++){var s=n[o];if(s.ownerNode===e)return s}throw v(17)}(this.element),this.length=0}return e.prototype.insertRule=function(e,t){try{return this.sheet.insertRule(t,e),this.length++,!0}catch(e){return!1}},e.prototype.deleteRule=function(e){this.sheet.deleteRule(e),this.length--},e.prototype.getRule=function(e){var t=this.sheet.cssRules[e];return t&&t.cssText?t.cssText:\"\"},e}(),Ne=function(){function e(e){this.element=we(e),this.nodes=this.element.childNodes,this.length=0}return e.prototype.insertRule=function(e,t){if(e<=this.length&&e>=0){var n=document.createTextNode(t);return this.element.insertBefore(n,this.nodes[e]||null),this.length++,!0}return!1},e.prototype.deleteRule=function(e){this.element.removeChild(this.nodes[e]),this.length--},e.prototype.getRule=function(e){return e<this.length?this.nodes[e].textContent:\"\"},e}(),Ee=function(){function e(e){this.rules=[],this.length=0}return e.prototype.insertRule=function(e,t){return e<=this.length&&(e===this.length?this.rules.push(t):this.rules.splice(e,0,t),this.length++,!0)},e.prototype.deleteRule=function(e){this.rules.splice(e,1),this.length--},e.prototype.getRule=function(e){return e<this.length?this.rules[e]:\"\"},e}(),Ce=h,Ae={isServer:!h,useCSSOMInjection:!d},_e=function(){function e(e,n,o){void 0===e&&(e=I),void 0===n&&(n={});var r=this;this.options=t(t({},Ae),e),this.gs=n,this.names=new Map(o),this.server=!!e.isServer,!this.server&&h&&Ce&&(Ce=!1,ge(this)),le(this,function(){return function(e){for(var t=e.getTag(),n=t.length,o=\"\",r=function(n){var r=function(e){return w.get(e)}(n);if(void 0===r)return\"continue\";var s=e.names.get(r);if(void 0===s||!s.size)return\"continue\";var i=t.getGroup(n);if(0===i.length)return\"continue\";var c=a+\".g\"+n+'[id=\"'+r+'\"]',u=\"\";s.forEach(function(e){e.length>0&&(u+=e+\",\")}),o+=i+c+'{content:\"'+u+'\"}'+p},s=0;s<n;s++)r(s);return o}(r)})}return e.registerId=function(e){return N(e)},e.prototype.rehydrate=function(){!this.server&&h&&ge(this)},e.prototype.reconstructWithOptions=function(n,o){void 0===o&&(o=!0);var r=new e(t(t({},this.options),n),this.gs,o&&this.names||void 0);return!this.server&&h&&n.target!==this.options.target&&me(this.options.target)!==me(n.target)&&ge(r),r},e.prototype.allocateGSInstance=function(e){return this.gs[e]=(this.gs[e]||0)+1},e.prototype.getTag=function(){return this.tag||(this.tag=(e=function(e){var t=e.useCSSOMInjection,n=e.target;return e.isServer?new Ee(n):t?new be(n):new Ne(n)}(this.options),new pe(e)));var e},e.prototype.hasNameForId=function(e,t){var n,o;return null!==(o=null===(n=this.names.get(e))||void 0===n?void 0:n.has(t))&&void 0!==o&&o},e.prototype.registerName=function(e,t){N(e);var n=this.names.get(e);n?n.add(t):this.names.set(e,new Set([t]))},e.prototype.insertRules=function(e,t,n){this.registerName(e,t),this.getTag().insertRules(N(e),n)},e.prototype.clearNames=function(e){this.names.has(e)&&this.names.get(e).clear()},e.prototype.clearRules=function(e){this.getTag().clearGroup(N(e)),this.clearNames(e)},e.prototype.clearTag=function(){this.tag=void 0},e}(),Pe=/&/g,Ie=47,Oe=42;function De(e){if(-1===e.indexOf(\"}\"))return!1;for(var t=e.length,n=0,o=0,r=!1,s=0;s<t;s++){var i=e.charCodeAt(s);if(0!==o||r||i!==Ie||e.charCodeAt(s+1)!==Oe)if(r)i===Oe&&e.charCodeAt(s+1)===Ie&&(r=!1,s++);else if(34!==i&&39!==i||0!==s&&92===e.charCodeAt(s-1)){if(0===o)if(123===i)n++;else if(125===i&&--n<0)return!0}else 0===o?o=i:o===i&&(o=0);else r=!0,s++}return 0!==n||0!==o}function Re(e,t){return e.map(function(e){return\"rule\"===e.type&&(e.value=\"\".concat(t,\" \").concat(e.value),e.value=e.value.replaceAll(\",\",\",\".concat(t,\" \")),e.props=e.props.map(function(e){return\"\".concat(t,\" \").concat(e)})),Array.isArray(e.children)&&\"@keyframes\"!==e.type&&(e.children=Re(e.children,t)),e})}function Te(e){var t,n,o,r=void 0===e?I:e,i=r.options,a=void 0===i?I:i,c=r.plugins,u=void 0===c?P:c,l=function(e,o,r){return r.startsWith(n)&&r.endsWith(n)&&r.replaceAll(n,\"\").length>0?\".\".concat(t):e},p=u.slice();p.push(function(e){e.type===s.RULESET&&e.value.includes(\"&\")&&(o||(o=new RegExp(\"\\\\\".concat(n,\"\\\\b\"),\"g\")),e.props[0]=e.props[0].replace(Pe,n).replace(o,l))}),a.prefix&&p.push(s.prefixer),p.push(s.stringify);var h=[],d=s.middleware(p.concat(s.rulesheet(function(e){return h.push(e)}))),f=function(e,r,i,c){void 0===r&&(r=\"\"),void 0===i&&(i=\"\"),void 0===c&&(c=\"&\"),t=c,n=r,o=void 0;var u=function(e){if(!De(e))return e;for(var t=e.length,n=\"\",o=0,r=0,s=0,i=!1,a=0;a<t;a++){var c=e.charCodeAt(a);if(0!==s||i||c!==Ie||e.charCodeAt(a+1)!==Oe)if(i)c===Oe&&e.charCodeAt(a+1)===Ie&&(i=!1,a++);else if(34!==c&&39!==c||0!==a&&92===e.charCodeAt(a-1)){if(0===s)if(123===c)r++;else if(125===c){if(--r<0){for(var u=a+1;u<t;){var l=e.charCodeAt(u);if(59===l||10===l)break;u++}u<t&&59===e.charCodeAt(u)&&u++,r=0,a=u-1,o=u;continue}0===r&&(n+=e.substring(o,a+1),o=a+1)}else 59===c&&0===r&&(n+=e.substring(o,a+1),o=a+1)}else 0===s?s=c:s===c&&(s=0);else i=!0,a++}if(o<t){var p=e.substring(o);De(p)||(n+=p)}return n}(function(e){if(-1===e.indexOf(\"//\"))return e;for(var t=e.length,n=[],o=0,r=0,s=0,i=0;r<t;){var a=e.charCodeAt(r);if(34!==a&&39!==a||0!==r&&92===e.charCodeAt(r-1))if(0===s)if(a===Ie&&r+1<t&&e.charCodeAt(r+1)===Oe){for(r+=2;r+1<t&&(e.charCodeAt(r)!==Oe||e.charCodeAt(r+1)!==Ie);)r++;r+=2}else if(40===a&&r>=3&&108==(32|e.charCodeAt(r-1))&&114==(32|e.charCodeAt(r-2))&&117==(32|e.charCodeAt(r-3)))i=1,r++;else if(i>0)41===a?i--:40===a&&i++,r++;else if(a===Oe&&r+1<t&&e.charCodeAt(r+1)===Ie)r>o&&n.push(e.substring(o,r)),o=r+=2;else if(a===Ie&&r+1<t&&e.charCodeAt(r+1)===Ie){for(r>o&&n.push(e.substring(o,r));r<t&&10!==e.charCodeAt(r);)r++;o=r}else r++;else r++;else 0===s?s=a:s===a&&(s=0),r++}return 0===o?e:(o<t&&n.push(e.substring(o)),n.join(\"\"))}(e)),l=s.compile(i||r?\"\".concat(i,\" \").concat(r,\" { \").concat(u,\" }\"):u);return a.namespace&&(l=Re(l,a.namespace)),h=[],s.serialize(l,d),h};return f.hash=u.length?u.reduce(function(e,t){return t.name||v(15),F(e,t.name)},5381).toString():\"\",f}var xe=new _e,je=Te(),ke=o.createContext({shouldForwardProp:void 0,styleSheet:xe,stylis:je}),Me=ke.Consumer,Ve=o.createContext(void 0);function Fe(){return o.useContext(ke)}function Ge(e){if(!o.useMemo)return e.children;var t=Fe().styleSheet,n=o.useMemo(function(){var n=t;return e.sheet?n=e.sheet:e.target&&(n=n.reconstructWithOptions({target:e.target},!1)),e.disableCSSOMInjection&&(n=n.reconstructWithOptions({useCSSOMInjection:!1})),n},[e.disableCSSOMInjection,e.sheet,e.target,t]),r=o.useMemo(function(){return Te({options:{namespace:e.namespace,prefix:e.enableVendorPrefixes},plugins:e.stylisPlugins})},[e.enableVendorPrefixes,e.namespace,e.stylisPlugins]),s=o.useMemo(function(){return{shouldForwardProp:e.shouldForwardProp,styleSheet:n,stylis:r}},[e.shouldForwardProp,n,r]);return o.createElement(ke.Provider,{value:s},o.createElement(Ve.Provider,{value:r},e.children))}var Le=function(){function e(e,t){var n=this;this.inject=function(e,t){void 0===t&&(t=je);var o=n.name+t.hash;e.hasNameForId(n.id,o)||e.insertRules(n.id,o,t(n.rules,o,\"@keyframes\"))},this.name=e,this.id=\"sc-keyframes-\".concat(e),this.rules=t,le(this,function(){throw v(12,String(n.name))})}return e.prototype.getName=function(e){return void 0===e&&(e=je),this.name+e.hash},e}();function Be(e,t){return null==t||\"boolean\"==typeof t||\"\"===t?\"\":\"number\"!=typeof t||0===t||e in i||e.startsWith(\"--\")?String(t).trim():\"\".concat(t,\"px\")}var ze=function(e){return e>=\"A\"&&e<=\"Z\"};function $e(e){for(var t=\"\",n=0;n<e.length;n++){var o=e[n];if(1===n&&\"-\"===o&&\"-\"===e[0])return e;ze(o)?t+=\"-\"+o.toLowerCase():t+=o}return t.startsWith(\"ms-\")?\"-\"+t:t}var Ye=function(e){return null==e||!1===e||\"\"===e},We=function(t){var n=[];for(var o in t){var r=t[o];t.hasOwnProperty(o)&&!Ye(r)&&(Array.isArray(r)&&r.isCss||re(r)?n.push(\"\".concat($e(o),\":\"),r,\";\"):ce(r)?n.push.apply(n,e(e([\"\".concat(o,\" {\")],We(r),!1),[\"}\"],!1)):n.push(\"\".concat($e(o),\": \").concat(Be(o,r),\";\")))}return n};function qe(e,t,n,o,r){if(void 0===r&&(r=[]),\"string\"==typeof e)return e&&r.push(e),r;if(Ye(e))return r;if(se(e))return r.push(\".\".concat(e.styledComponentId)),r;if(re(e)){if(!re(i=e)||i.prototype&&i.prototype.isReactComponent||!t)return r.push(e),r;var s=e(t);return\"production\"===process.env.NODE_ENV||\"object\"!=typeof s||Array.isArray(s)||s instanceof Le||ce(s)||null===s||console.error(\"\".concat(B(e),\" is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\")),qe(s,t,n,o,r)}var i;if(e instanceof Le)return n?(e.inject(n,o),r.push(e.getName(o))):r.push(e),r;if(ce(e)){for(var a=We(e),c=0;c<a.length;c++)r.push(a[c]);return r}if(!Array.isArray(e))return r.push(e.toString()),r;for(c=0;c<e.length;c++)qe(e[c],t,n,o,r);return r}function He(e){for(var t=0;t<e.length;t+=1){var n=e[t];if(re(n)&&!se(n))return!1}return!0}var Ue=G(l),Je=function(){function e(e,t,n){this.rules=e,this.staticRulesId=\"\",this.isStatic=\"production\"===process.env.NODE_ENV&&(void 0===n||n.isStatic)&&He(e),this.componentId=t,this.baseHash=F(Ue,t),this.baseStyle=n,_e.registerId(t)}return e.prototype.generateAndInjectStyles=function(e,t,n){var o=this.baseStyle?this.baseStyle.generateAndInjectStyles(e,t,n).className:\"\";if(this.isStatic&&!n.hash)if(this.staticRulesId&&t.hasNameForId(this.componentId,this.staticRulesId))o=ie(o,this.staticRulesId);else{var r=ae(qe(this.rules,e,t,n)),s=M(F(this.baseHash,r)>>>0);if(!t.hasNameForId(this.componentId,s)){var i=n(r,\".\".concat(s),void 0,this.componentId);t.insertRules(this.componentId,s,i)}o=ie(o,s),this.staticRulesId=s}else{for(var a=F(this.baseHash,n.hash),c=\"\",u=0;u<this.rules.length;u++){var l=this.rules[u];if(\"string\"==typeof l)c+=l,\"production\"!==process.env.NODE_ENV&&(a=F(a,l));else if(l){var p=ae(qe(l,e,t,n));a=F(F(a,String(u)),p),c+=p}}if(c){var h=M(a>>>0);if(!t.hasNameForId(this.componentId,h)){var d=n(c,\".\".concat(h),void 0,this.componentId);t.insertRules(this.componentId,h,d)}o=ie(o,h)}}return{className:o,css:\"undefined\"==typeof window?t.getTag().getGroup(N(this.componentId)):\"\"}},e}(),Xe=o.createContext(void 0),Ze=Xe.Consumer;function Ke(){var e=o.useContext(Xe);if(!e)throw v(18);return e}function Qe(e){var n=o.useContext(Xe),r=o.useMemo(function(){return function(e,n){if(!e)throw v(14);if(re(e)){var o=e(n);if(\"production\"!==process.env.NODE_ENV&&(null===o||Array.isArray(o)||\"object\"!=typeof o))throw v(7);return o}if(Array.isArray(e)||\"object\"!=typeof e)throw v(8);return n?t(t({},n),e):e}(e.theme,n)},[e.theme,n]);return e.children?o.createElement(Xe.Provider,{value:r},e.children):null}var et={},tt=new Set;function nt(e,s,i){var a=se(e),c=e,u=!z(e),p=s.attrs,h=void 0===p?P:p,d=s.componentId,f=void 0===d?function(e,t){var n=\"string\"!=typeof e?\"sc\":x(e);et[n]=(et[n]||0)+1;var o=\"\".concat(n,\"-\").concat(L(l+n+et[n]));return t?\"\".concat(t,\"-\").concat(o):o}(s.displayName,s.parentComponentId):d,m=s.displayName,y=void 0===m?function(e){return z(e)?\"styled.\".concat(e):\"Styled(\".concat(B(e),\")\")}(e):m,v=s.displayName&&s.componentId?\"\".concat(x(s.displayName),\"-\").concat(s.componentId):s.componentId||f,g=a&&c.attrs?c.attrs.concat(h).filter(Boolean):h,S=s.shouldForwardProp;if(a&&c.shouldForwardProp){var w=c.shouldForwardProp;if(s.shouldForwardProp){var b=s.shouldForwardProp;S=function(e,t){return w(e,t)&&b(e,t)}}else S=w}var N=new Je(i,v,a?c.componentStyle:void 0);function E(e,s){return function(e,s,i){var a=e.attrs,c=e.componentStyle,u=e.defaultProps,l=e.foldedComponentIds,p=e.styledComponentId,h=e.target,d=o.useContext(Xe),f=Fe(),m=e.shouldForwardProp||f.shouldForwardProp;\"production\"!==process.env.NODE_ENV&&o.useDebugValue&&o.useDebugValue(p);var y=O(s,d,u)||I,v=function(e,n,o){for(var r,s=t(t({},n),{className:void 0,theme:o}),i=0;i<e.length;i+=1){var a=re(r=e[i])?r(s):r;for(var c in a)\"className\"===c?s.className=ie(s.className,a[c]):\"style\"===c?s.style=t(t({},s.style),a[c]):s[c]=a[c]}return\"className\"in n&&\"string\"==typeof n.className&&(s.className=ie(s.className,n.className)),s}(a,s,y),g=v.as||h,S={};for(var w in v)void 0===v[w]||\"$\"===w[0]||\"as\"===w||\"theme\"===w&&v.theme===y||(\"forwardedAs\"===w?S.as=v.forwardedAs:m&&!m(w,g)||(S[w]=v[w],m||\"development\"!==process.env.NODE_ENV||n(w)||tt.has(w)||!D.has(g)||(tt.add(w),console.warn('styled-components: it looks like an unknown prop \"'.concat(w,'\" is being sent through to the DOM, which will likely trigger a React console error. If you would like automatic filtering of unknown props, you can opt-into that behavior via `<StyleSheetManager shouldForwardProp={...}>` (connect an API like `@emotion/is-prop-valid`) or consider using transient props (`$` prefix for automatic filtering.)')))));var b=function(e,t){var n=Fe(),r=e.generateAndInjectStyles(t,n.styleSheet,n.stylis);return\"production\"!==process.env.NODE_ENV&&o.useDebugValue&&o.useDebugValue(r.className),r}(c,v),N=b.className;\"production\"!==process.env.NODE_ENV&&e.warnTooManyClasses&&e.warnTooManyClasses(N);var E=ie(l,p);return N&&(E+=\" \"+N),v.className&&(E+=\" \"+v.className),S[z(g)&&!D.has(g)?\"class\":\"className\"]=E,i&&(S.ref=i),r(g,S)}(C,e,s)}E.displayName=y;var C=o.forwardRef(E);return C.attrs=g,C.componentStyle=N,C.displayName=y,C.shouldForwardProp=S,C.foldedComponentIds=a?ie(c.foldedComponentIds,c.styledComponentId):\"\",C.styledComponentId=v,C.target=a?c.target:e,Object.defineProperty(C,\"defaultProps\",{get:function(){return this._foldedDefaultProps},set:function(e){this._foldedDefaultProps=a?function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];for(var o=0,r=t;o<r.length;o++)ue(e,r[o],!0);return e}({},c.defaultProps,e):e}}),\"production\"!==process.env.NODE_ENV&&(_(y,v),C.warnTooManyClasses=function(e,t){var n={},o=!1;return function(r){if(!o&&(n[r]=!0,Object.keys(n).length>=200)){var s=t?' with the id of \"'.concat(t,'\"'):\"\";console.warn(\"Over \".concat(200,\" classes were generated for component \").concat(e).concat(s,\".\\n\")+\"Consider using the attrs method, together with a style object for frequently changed styles.\\nExample:\\n  const Component = styled.div.attrs(props => ({\\n    style: {\\n      background: props.background,\\n    },\\n  }))`width: 100%;`\\n\\n  <Component />\"),o=!0,n={}}}}(y,v)),le(C,function(){return\".\".concat(C.styledComponentId)}),u&&oe(C,e,{attrs:!0,componentStyle:!0,displayName:!0,foldedComponentIds:!0,shouldForwardProp:!0,styledComponentId:!0,target:!0}),C}function ot(e,t){for(var n=[e[0]],o=0,r=t.length;o<r;o+=1)n.push(t[o],e[o+1]);return n}var rt=function(e){return Object.assign(e,{isCss:!0})};function st(t){for(var n=[],o=1;o<arguments.length;o++)n[o-1]=arguments[o];if(re(t)||ce(t))return rt(qe(ot(P,e([t],n,!0))));var r=t;return 0===n.length&&1===r.length&&\"string\"==typeof r[0]?qe(r):rt(qe(ot(r,n)))}function it(n,o,r){if(void 0===r&&(r=I),!o)throw v(1,o);var s=function(t){for(var s=[],i=1;i<arguments.length;i++)s[i-1]=arguments[i];return n(o,r,st.apply(void 0,e([t],s,!1)))};return s.attrs=function(e){return it(n,o,t(t({},r),{attrs:Array.prototype.concat(r.attrs,e).filter(Boolean)}))},s.withConfig=function(e){return it(n,o,t(t({},r),e))},s}var at=function(e){return it(nt,e)},ct=at;D.forEach(function(e){ct[e]=at(e)});var ut=function(){function e(e,t){this.rules=e,this.componentId=t,this.isStatic=He(e),_e.registerId(this.componentId+1)}return e.prototype.createStyles=function(e,t,n,o){var r=o(ae(qe(this.rules,t,n,o)),\"\"),s=this.componentId+e;n.insertRules(s,s,r)},e.prototype.removeStyles=function(e,t){t.clearRules(this.componentId+e)},e.prototype.renderStyles=function(e,t,n,o){e>2&&_e.registerId(this.componentId+e);var r=this.componentId+e;this.isStatic?n.hasNameForId(r,r)||this.createStyles(e,t,n,o):(this.removeStyles(e,n),this.createStyles(e,t,n,o))},e}();function lt(n){for(var r=[],s=1;s<arguments.length;s++)r[s-1]=arguments[s];var i=st.apply(void 0,e([n],r,!1)),a=\"sc-global-\".concat(L(JSON.stringify(i))),c=new ut(i,a);\"production\"!==process.env.NODE_ENV&&_(a);var u=new WeakMap,l=function(e){var t=Fe(),n=o.useContext(Xe),r=u.get(t.styleSheet);return void 0===r&&(r=t.styleSheet.allocateGSInstance(a),u.set(t.styleSheet,r)),\"production\"!==process.env.NODE_ENV&&o.Children.count(e.children)&&console.warn(\"The global style component \".concat(a,\" was given child JSX. createGlobalStyle does not render children.\")),\"production\"!==process.env.NODE_ENV&&i.some(function(e){return\"string\"==typeof e&&-1!==e.indexOf(\"@import\")})&&console.warn(\"Please do not use @import CSS syntax in createGlobalStyle at this time, as the CSSOM APIs we use in production do not handle it well. Instead, we recommend using a library such as react-helmet to inject a typical <link> meta tag to the stylesheet, or simply embedding it manually in your index.html <head> section for a simpler app.\"),(\"undefined\"==typeof window||!t.styleSheet.server)&&p(r,e,t.styleSheet,n,t.stylis),o.useLayoutEffect(function(){return t.styleSheet.server||p(r,e,t.styleSheet,n,t.stylis),function(){var e;c.removeStyles(r,t.styleSheet),e=t.styleSheet.options.target,\"undefined\"!=typeof document&&(null!=e?e:document).querySelectorAll('style[data-styled-global=\"'.concat(a,'\"]')).forEach(function(e){return e.remove()})}},[r,e,t.styleSheet,n,t.stylis]),null};function p(e,n,o,r,s){if(c.isStatic)c.renderStyles(e,f,o,s);else{var i=t(t({},n),{theme:O(n,r,l.defaultProps)});c.renderStyles(e,i,o,s)}}return o.memo(l)}function pt(t){for(var n=[],o=1;o<arguments.length;o++)n[o-1]=arguments[o];\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.\");var r=ae(st.apply(void 0,e([t],n,!1))),s=L(r);return new Le(s,r)}function ht(e){var n=o.forwardRef(function(n,r){var s=O(n,o.useContext(Xe),e.defaultProps);return\"production\"!==process.env.NODE_ENV&&void 0===s&&console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class \"'.concat(B(e),'\"')),o.createElement(e,t(t({},n),{theme:s,ref:r}))});return n.displayName=\"WithTheme(\".concat(B(e),\")\"),oe(n,e)}var dt=function(){function e(){var e=this;this._emitSheetCSS=function(){var t=e.instance.toString();if(!t)return\"\";var n=Se(),o=ae([n&&'nonce=\"'.concat(n,'\"'),\"\".concat(a,'=\"true\"'),\"\".concat(u,'=\"').concat(l,'\"')].filter(Boolean),\" \");return\"<style \".concat(o,\">\").concat(t,\"</style>\")},this.getStyleTags=function(){if(e.sealed)throw v(2);return e._emitSheetCSS()},this.getStyleElement=function(){var n;if(e.sealed)throw v(2);var r=e.instance.toString();if(!r)return[];var s=((n={})[a]=\"\",n[u]=l,n.dangerouslySetInnerHTML={__html:r},n),i=Se();return i&&(s.nonce=i),[o.createElement(\"style\",t({},s,{key:\"sc-0-0\"}))]},this.seal=function(){e.sealed=!0},this.instance=new _e({isServer:!0}),this.sealed=!1}return e.prototype.collectStyles=function(e){if(this.sealed)throw v(2);return o.createElement(Ge,{sheet:this.instance},e)},e.prototype.interleaveWithNodeStream=function(e){throw v(3)},e}(),ft={StyleSheet:_e,mainSheet:xe};\"production\"!==process.env.NODE_ENV&&\"undefined\"!=typeof navigator&&\"ReactNative\"===navigator.product&&console.warn(\"It looks like you've imported 'styled-components' on React Native.\\nPerhaps you're looking to import 'styled-components/native'?\\nRead more about this at https://www.styled-components.com/docs/basics#react-native\");var mt=\"__sc-\".concat(a,\"__\");\"production\"!==process.env.NODE_ENV&&\"test\"!==process.env.NODE_ENV&&\"undefined\"!=typeof window&&(window[mt]||(window[mt]=0),1===window[mt]&&console.warn(\"It looks like there are several instances of 'styled-components' initialized in this application. This may cause dynamic styles to not render properly, errors during the rehydration process, a missing theme prop, and makes your application bigger without good reason.\\n\\nSee https://styled-components.com/docs/faqs#why-am-i-getting-a-warning-about-several-instances-of-module-on-the-page for more info.\"),window[mt]+=1);export{dt as ServerStyleSheet,Me as StyleSheetConsumer,ke as StyleSheetContext,Ge as StyleSheetManager,Ze as ThemeConsumer,Xe as ThemeContext,Qe as ThemeProvider,ft as __PRIVATE__,lt as createGlobalStyle,st as css,ct as default,se as isStyledComponent,pt as keyframes,ct as styled,Ke as useTheme,l as version,ht as withTheme};\n//# sourceMappingURL=styled-components.browser.esm.js.map\n","export interface IQueryVisualizationResponse {\n    tableReference: ITableReference;\n    data: (number | null)[];\n    dataNotes: { [key: number]: TMultiLanguageString };\n    missingDataInfo: { [key: number]: number };\n    metaData: IVariableMeta[];\n    selectableVariableCodes: string[];\n    rowVariableCodes: string[];\n    columnVariableCodes: string[];\n    header: TMultiLanguageString;\n    visualizationSettings: IVisualizationSettings;\n}\n\nexport interface ITableReference {\n    name: string,\n    hierarchy: string[]\n}\n\nexport type TVisualizationType = \n'VerticalBarChart'\n| 'GroupVerticalBarChart'\n| 'StackedVerticalBarChart'\n| 'PercentVerticalBarChart'\n| 'HorizontalBarChart'\n| 'GroupHorizontalBarChart'\n| 'StackedHorizontalBarChart'\n| 'PercentHorizontalBarChart'\n| 'PyramidChart'\n| 'PieChart'\n| 'LineChart'\n| 'ScatterPlot'\n| 'Table'\n\n\nexport enum EVisualizationType {\n    VerticalBarChart = 'VerticalBarChart',\n    GroupVerticalBarChart = 'GroupVerticalBarChart',\n    StackedVerticalBarChart = 'StackedVerticalBarChart',\n    PercentVerticalBarChart = 'PercentVerticalBarChart',\n    HorizontalBarChart = 'HorizontalBarChart',\n    GroupHorizontalBarChart = 'GroupHorizontalBarChart',\n    StackedHorizontalBarChart = 'StackedHorizontalBarChart',\n    PercentHorizontalBarChart = 'PercentHorizontalBarChart',\n    PyramidChart = 'PyramidChart',\n    PieChart = 'PieChart',\n    LineChart = 'LineChart',\n    ScatterPlot = 'ScatterPlot',\n    Table = 'Table'\n}\n\nexport type TVariableType =\n// Unknown\n'N'\n// Time\n| 'T'\n// Ordinal\n| 'P'\n// Geological\n| 'G'\n// Content\n| 'C'\n// OtherClassificatory\n| 'F'\n\nexport enum EVariableType {\n    Unknown = 'N',\n    Time = 'T',\n    Ordinal = 'P',\n    Geological = 'G',\n    Content = 'C',\n    OtherClassificatory = 'F'\n}\n\nexport type TTimeVariableInterval =\n'Week'\n| 'Month'\n| 'Quarter'\n| 'HalfYear'\n| 'Year'\n| 'Decade'\n| 'Irregular'\n\nexport enum ETimeVariableInterval {\n    Week = 'Week',\n    Month = 'Month',\n    Quarter = 'Quarter',\n    HalfYear = 'HalfYear',\n    Year = 'Year',\n    Decade = 'Decade',\n    Irregular = 'Irregular'\n}\n\nexport type TMultiLanguageString = { [key: string]: string };\nexport type TMultiLanguageStringArray = { [key: string]: string[] };\n\nexport interface IVariableMeta {\n    code: string;\n    name: TMultiLanguageString;\n    note: TMultiLanguageString | null;\n    type: EVariableType;\n    values: IVariableValueMeta[];\n}\n\nexport interface IContentComponent {\n    unit: TMultiLanguageString;\n    source: TMultiLanguageString;\n    numberOfDecimals: number;\n    lastUpdated: string;\n}\n\nexport interface IVariableValueMeta {\n    code: string;\n    name: TMultiLanguageString;\n    note: TMultiLanguageString | null;\n    isSum: boolean;\n    contentComponent: IContentComponent | null;\n}\n\nexport interface IVisualizationSettings {\n    visualizationType: EVisualizationType;\n    defaultSelectableVariableCodes?: { [key: string]: string[] } | null;\n    multiselectableVariableCode?: string\n    timeVariableIntervals: ETimeVariableInterval,\n    timeSeriesStartingPoint?: string,\n    cutValueAxis?: boolean;\n    showLastLabel?: boolean;\n    sorting?: string;\n    markerSize?: number;\n    cutYAxis?: boolean;\n    showDataPoints?: boolean;\n}\n","import { TTranslations, TArrayTranslations } from './translationTypes';\n\nexport const DefaultTranslations: TTranslations = {\n    empty: {\n        'fi': '',\n        'sv': '',\n        'en': ''\n    },\n    preliminaryData: {\n        'fi': 'Ennakko',\n        'sv': 'Preliminär',\n        'en': 'Preliminary data'\n    },\n    source: {\n        'fi': 'Lähde',\n        'sv': 'Källa',\n        'en': 'Source'\n    },\n    unit: {\n        'fi': 'Yksikkö',\n        'sv': 'Enhet',\n        'en': 'Unit'\n    },\n    graphCreationError: {\n        'fi': 'Kuviota ei voitu muodostaa',\n        'sv': 'Diagrammet kunde inte skapas',\n        'en': 'The graph could not be created'\n    },\n    thousandsSep: {\n        'fi': ' ',\n        'sv': ' ',\n        'en': ','\n    },\n    thousandsSepAccessibility: {\n        'fi': '',\n        'sv': '',\n        'en': ','\n    },\n    decimalPoint: {\n        'fi': ',',\n        'sv': ',',\n        'en': '.'\n    },\n    barMultiple: { // sv inconsistent\n        'fi': 'Pystypylväskuvio, jossa {numPoints} {#eq numPoints 1}pylväs{else}pylvästä{/eq}.',\n        'sv': 'Flerdimensionellt vertikalt stapeldiagram.',\n        'en': 'Bar chart with {numSeries} data series.'\n    },\n    barSingle: { // sv inconsistent\n        'fi': 'Pystypylväskuvio, jossa {numPoints} {#eq numPoints 1}pylväs{else}pylvästä{/eq}.',\n        'sv': 'Vertikalt stapeldiagram.',\n        'en': 'Bar chart with {numPoints} {#eq numPoints 1}bar{else}bars{/eq}.'\n    },\n    columnSingle: { // sv inconsistent\n        'fi': 'Vaakapylväskuvio, jossa {numPoints} {#eq numPoints 1}pylväs{else}pylvästä{/eq}.',\n        'sv': 'Horisontellt stapeldiagram.',\n        'en': 'Bar chart with {numPoints} {#eq numPoints 1}bar{else}bars{/eq}.'\n    },\n    columnMultiple: { // sv inconsistent\n        'fi': 'Vaakapylväskuvio, jossa {numSeries} muuttujaa.',\n        'sv': 'Flerdimensionellt horisontellt stapeldiagram.',\n        'en': 'Bar chart with {numSeries} data series.'\n    },\n    lineSingle: { // sv inconsistent\n        'fi': 'Viivakuvio, jossa {numPoints} havainto{#eq numPoints 1}arvo{else}arvoa{/eq}.',\n        'sv': 'Linjediagram.',\n        'en': 'Line chart with {numPoints} data {#eq numPoints 1}point{else}points{/eq}.'\n    },\n    lineMultiple: { // sv inconsistent\n        'fi': 'Viivakuvio, jossa {numSeries} viivaa.',\n        'sv': 'Flerdimensionellt linjediagram.',\n        'en': 'Line chart with {numSeries} lines.'\n    },\n    pieSingle: { // sv inconsistent\n        'fi': 'Piirakkakuvio, jossa {numPoints} {#eq numPoints 1}lohko{else}lohkoa{/eq}.',\n        'sv': 'Cirkeldiagram.',\n        'en': 'Pie chart with {numPoints} {#eq numPoints 1}slice{else}slices{/eq}.'\n    },\n    pieMultiple: { // sv inconsistent\n        'fi': 'Piirakkakuvio, jossa {numSeries} piirakkaa.',\n        'sv': 'Flerdimensionellt cirkeldiagram.',\n        'en': 'Pie chart with {numSeries} pies.'\n    },\n    scatterSingle: { // sv inconsistent\n        'fi': 'Hajontakuvio, jossa {numPoints} {#eq numPoints 1}piste{else}pistettä{/eq}.',\n        'sv': 'Spridningsdiagram.',\n        'en': 'Scatter chart with {numPoints} {#eq numPoints 1}point{else}points{/eq}.'\n    },\n    scatterMultiple: { // sv inconsistent\n        'fi': 'Hajontakuvio,jossa {numSeries} datasarjaa.',\n        'sv': 'Flerdimensionellt spridningsdiagram.',\n        'en': 'Scatter chart with {numSeries} data series.'\n    },\n    defaultSingle: { // sv inconsistent\n        'fi': 'Kuvio, jossa {numPoints} data{#eq numPoints 1}piste{else}pistettä{/eq}.',\n        'sv': 'Endimensionellt diagram.',\n        'en': 'Chart with {numPoints} data {#eq numPoints 1}point{else}points{/eq}.'\n    },\n    defaultMultiple: { // sv inconsistent\n        'fi': 'Kuvio, jossa {numSeries} datasarjaa.',\n        'sv': 'Flerdimensionellt diagram.',\n        'en': 'Chart with {numSeries} data series.'\n    },\n    defaultChartTitle: { // sv inconsistent\n        'fi': 'Kuvio',\n        'sv': 'Diagrammets rubrik',\n        'en': 'Chart'\n    },\n    chartMenuLabel: {\n        'fi': 'Kuvion valikko',\n        'sv': 'Diagrammets meny',\n        'en': 'Chart menu'\n    },\n    menuButtonLabel: { // sv inconsistent\n        'fi': 'Katso valikko kuviosta {chartTitle}',\n        'sv': 'Visa diagrammets meny',\n        'en': 'View chart menu, {chartTitle}'\n    },\n    credits: {\n        'fi': '{creditsStr}',\n        'sv': '{creditsStr}',\n        'en': '{creditsStr}'\n    },\n    legendItem: { // sv inconsistent\n        'fi': 'Näytä {itemName}',\n        'sv': 'Variabelvärde',\n        'en': 'Show {itemName}'\n    },\n    legendLabel: { // sv inconsistent\n        'fi': 'Kuvion selite: {legendTitle}',\n        'sv': 'Bläddra visuellt i variabelvärden',\n        'en': 'Chart legend: {legendTitle}'\n    },\n    legendLabelNoTitle: { // sv inconsistent\n        'fi': 'Vaihda sarjojen näkyvyyttä, {chartTitle}',\n        'sv': 'Ingen etikett',\n        'en': 'Toggle series visibility, {chartTitle}'\n    },\n    contextButtonTitle: {\n        'fi': 'Kuvion valintamenu',\n        'sv': 'Diagrammets valmeny',\n        'en': 'Chart context menu'\n    },\n    downloadPNG: {\n        'fi': 'Lataa kuvio (png)',\n        'sv': 'Ladda ner figuren (png)',\n        'en': 'Download figure (png)'\n    },\n    downloadSVG: {\n        'fi': 'Lataa kuvio (svg)',\n        'sv': 'Ladda ner figuren (svg)',\n        'en': 'Download figure (svg)'\n    },\n    downloadXLSX: {\n        'fi': 'Lataa taulukko (xlsx)',\n        'sv': 'Ladda ner tabellen (xlsx)',\n        'en': 'Download table (xlsx)'\n    },\n    downloadCSV: {\n        'fi': 'Lataa taulukko (csv)',\n        'sv': 'Ladda ner tabellen (csv)',\n        'en': 'Download table (csv)'\n    },\n    rangeCategories: { // sv inconsistent\n        'fi': 'Datan arvoalue: {numCategories} luokkaa.',\n        'sv': 'Diagrammets värdeområde.',\n        'en': 'Data range: {numCategories} categories.'\n    },\n    rangeFromTo: {\n        'fi': 'Arvot alkavat {rangeFrom} ja päättyvät {rangeTo}.',\n        'sv': 'Värdena börjar från {rangeFrom} och slutar vid {rangeTo}.',\n        'en': 'Data ranges from {rangeFrom} to {rangeTo}.'\n    },\n    timeRangeDays: {\n        'fi': 'Arvoja päiviltä {range}.',\n        'sv': 'Värden för dagarna {range}.',\n        'en': 'Data range: {range} days.'\n    },\n    timeRangeHours: {\n        'fi': 'Arvoja tunneilta {range}',\n        'sv': 'Värden för timmarna {range}',\n        'en': 'Data range: {range} hours.'\n    },\n    timeRangeMinutes: {\n        'fi': 'Arvoja minuuteilta {range}',\n        'sv': 'Värden för minuterna {range}',\n        'en': 'Data range: {range} minutes.'\n    },\n    timeRangeSeconds: {\n        'fi': 'Arvoja sekunneilta {range}',\n        'sv': 'Värden för sekunderna {range}',\n        'en': 'Data range: {range} seconds.'\n    },\n    xAxisDescriptionPlural: {\n        'fi': 'Kuviolla on {numAxes} x-akselia muuttujille {#each names}{#unless @first},{/unless}{#if @last} ja{/if} {this}{/each}.',\n        'sv': 'Figuren har {numAxes} x-axlar för variablerna {#each names}{#unless @first},{/unless}{#if @last} och{/if} {this}{/each}.',\n        'en': 'The chart has {numAxes} X axes displaying {#each names}{#unless @first},{/unless}{#if @last} and{/if} {this}{/each}.'\n    },\n    xAxisDescriptionSingular: {\n        'fi': 'Kuviolla on 1 x-akseli muuttujalle {names[0]}. {ranges[0]}',\n        'sv': 'Figuren har en x-axel för variabeln {names[0]}. {ranges[0]}',\n        'en': 'The chart has 1 X axis displaying {names[0]}. {ranges[0]}'\n    },\n    yAxisDescriptionPlural: {\n        'fi': 'Kuviolla on {numAxes} y-akselia muuttujille {#each names}{#unless @first},{/unless}{#if @last} ja{/if} {this}{/each}.',\n        'sv': 'Figuren har {numAxes} y-axlar för variablerna {#each names}{#unless @first},{/unless}{#if @last} och{/if} {this}{/each}.',\n        'en': 'The chart has {numAxes} Y axes displaying {#each names}{#unless @first},{/unless}{#if @last} and{/if} {this}{/each}.'\n    },\n    yAxisDescriptionSingular: {\n        'fi': 'Kuviolla on 1 y-akseli muuttujalle {names[0]}. {ranges[0]}',\n        'sv': 'Figuren har en y-axel för variabeln {names[0]}. {ranges[0]}',\n        'en': 'The chart has 1 Y axis displaying {names[0]}. {ranges[0]}'\n    },\n    seriesSummaryBar: { // sv inconsistent\n        'fi': '{series.name}muuttujan {seriesNumber}/{chart.series.length}: {series.points.length} {#eq series.points.length 1}pylväs{else}pylvästä{/eq}.',\n        'sv': '..variabelns .. Stapel',\n        'en': '{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.'\n    },\n    seriesSummaryBarCombination: { // sv inconsistent\n        'fi': '{series.name}muuttuja  {seriesNumber}/{chart.series.length}. Pylvässarja, jossa {series.points.length} {#eq series.points.length 1}pylväs{else}pylvästä{/eq}.',\n        'sv': '..variabelns .. Stapel, ..variabelns .. Stapel',\n        'en': '{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.'\n    },\n    seriesSummaryColumn: { // sv inconsistent\n        'fi': '{series.name}muuttuja, pylvässarja {seriesNumber}/{chart.series.length}, jossa {series.points.length} {#eq series.points.length 1}pylväs{else}pylvästä{/eq}.',\n        'sv': '..variabelns .. Stapel',\n        'en': '{series.name}, bar series {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.'\n    },\n    seriesSummaryColumnCombination: { // sv inconsistent\n        'fi': '{series.name}muuttuja {seriesNumber}/{chart.series.length}. Pylvässarja, jossa {series.points.length} {#eq series.points.length 1}pylväs{else}pylvästä{/eq}.',\n        'sv': '..variabelns .. Stapel, ..variabelns .. Stapel',\n        'en': '{series.name}, series {seriesNumber} of {chart.series.length}. Bar series with {series.points.length} {#eq series.points.length 1}bar{else}bars{/eq}.'\n    },\n    seriesSummaryDefault: { // sv inconsistent\n        'fi': '{series.name}muuttuja {seriesNumber}/{chart.series.length}, jossa {series.points.length} {#eq series.points.length 1}datapiste{else}datapistettä{/eq}.',\n        'sv': '..variabelns .. Diagram',\n        'en': '{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.'\n    },\n    seriesSummaryDefaultCombination: { // sv inconsistent\n        'fi': '{series.name}muuttuja {seriesNumber}/{chart.series.length}, jossa {series.points.length} {#eq series.points.length 1}datapiste{else}datapistettä{/eq}.',\n        'sv': '..variabelns .. diagram, ..variabelns .. Diagram',\n        'en': '{series.name}, series {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.'\n    },\n    seriesSummaryLine: { // sv inconsistent\n        'fi': '{series.name}, viiva {seriesNumber}/{chart.series.length}, jossa {series.points.length} {#eq series.points.length 1}datapiste{else}datapistettä{/eq}.',\n        'sv': '..variabelns .. Linje',\n        'en': '{series.name}, line {seriesNumber} of {chart.series.length} with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.'\n    },\n    seriesSummaryLineCombination: { // sv inconsistent\n        'fi': '{series.name}, aikasarja {seriesNumber}/{chart.series.length}. Viivassa {series.points.length} {#eq series.points.length 1}datapiste{else}datapistettä{/eq}.',\n        'sv': '..variabelns .. linje, ..variabelns .. Linje',\n        'en': '{series.name}, series {seriesNumber} of {chart.series.length}. Line with {series.points.length} data {#eq series.points.length 1}point{else}points{/eq}.'\n    },\n    seriesSummaryPie: { // sv inconsistent\n        'fi': '{series.name}, piirakan {seriesNumber}/{chart.series.length}: {series.points.length} {#eq series.points.length 1} lohko {else}lohkoa{/eq}.',\n        'sv': '..variabelns .. Sektor',\n        'en': '{series.name}, pie {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}slice{else}slices{/eq}.'\n    },\n    seriesSummaryPieCombination: { // sv inconsistent\n        'fi': '{series.name}, sarja {seriesNumber}/{chart.series.length}. Piirakasta, jossa {series.points.length} {#eq series.points.length 1} lohko{else}lohkoa{/eq}.',\n        'sv': '..variabelns .. sektor, ..variabelns .. Sektor',\n        'en': '{series.name}, series {seriesNumber} of {chart.series.length}. Pie with {series.points.length} {#eq series.points.length 1}slice{else}slices{/eq}.'\n    },\n    seriesSummaryScatter: { // sv inconsistent\n        'fi': '{series.name}, hajontakuvio {seriesNumber}/{chart.series.length}: {series.points.length} {#eq series.points.length 1}piste{else}pisteet{/eq}.',\n        'sv': '..variabelns .. Punkt',\n        'en': '{series.name}, scatter plot {seriesNumber} of {chart.series.length} with {series.points.length} {#eq series.points.length 1}point{else}points{/eq}.'\n    },\n    seriesSummaryScatterCombination: { // sv inconsistent\n        'fi': '{series.name}, datasarja {seriesNumber}/{chart.series.length}, hajontakuviosta {series.points.length} {#eq series.points.length 1}piste{else}pisteet{/eq}.',\n        'sv': '..variabelns .. punkt, ..variabelns .. Punkt',\n        'en': '{series.name}, series {seriesNumber} of {chart.series.length}, scatter plot with {series.points.length} {#eq series.points.length 1}point{else}points{/eq}.'\n    },\n    xAxisDescription: {\n        'fi': 'Toisen X-akselin kuvaus, {name}',\n        'sv': 'Beskrivning av andra X-axeln, {name}',\n        'en': 'X axis, {name}'\n    },\n    yAxisDescription: {\n        'fi': 'Toisen Y-akselin kuvaus, {name}',\n        'sv': 'Beskrivning av andra Y-axeln, {name}',\n        'en': 'Y axis, {name}'\n    },\n    endOfChartMarker: {\n        'fi': 'Kuvion loppu.',\n        'sv': 'Diagrammets slut.',\n        'en': 'End of interactive chart.'\n    },\n    loading: {\n        'fi': 'Ladataan...',\n        'sv': 'Laddar...',\n        'en': 'Loading...'\n    },\n    chartContainerLabel: { // no translation\n        'fi': '{title}. Highcharts interactive chart.',\n        'sv': '{title}. Highcharts interactive chart.',\n        'en': '{title}. Highcharts interactive chart.'\n    },\n    toggleTableModeOnText: {\n        'fi': 'Näytä taulukko',\n        'sv': 'Visa tabell',\n        'en': 'View table'\n    },\n    toggleTableModeOffText: {\n        'fi': 'Näytä kuvio',\n        'sv': 'Visa figur',\n        'en': 'View chart'\n    },\n    externalLink: { // sv inconsistent\n        'fi': 'Ulkoinen linkki',\n        'sv': 'Ulkoinen linkki',\n        'en': 'External link'\n    },\n    quarter: {\n        'fi': 'vuosineljännes',\n        'sv': 'kvartal',\n        'en': 'quarter'\n    },\n    dataMissing: {\n        'fi': 'Tieto puuttuu',\n        'sv': 'Data saknas',\n        'en': 'Missing data'\n    },\n    toggleAccessibilityModeOn: {\n        'fi': 'Näytä kuviossa symbolit',\n        'sv': 'Visa symboler i diagrammet',\n        'en': 'Show symbols in the figure'\n    },\n    toggleAccessibilityModeOff: {\n        'fi': 'Poista kuviosta symbolit',\n        'sv': 'Ta bort symbolerna från diagrammet',\n        'en': 'Remove symbols from the figure'\n    },\n    lastUpdated: {\n        'fi': 'Päivitetty',\n        'sv': 'Uppdaterad',\n        'en': 'Updated'\n    }\n}\n\nexport const DefaultArrayTranslations: TArrayTranslations = {\n    months: {\n        'fi': ['tammikuu', 'helmikuu', 'maaliskuu', 'huhtikuu', 'toukokuu', 'kesäkuu', 'heinäkuu', 'elokuu', 'syyskuu', 'lokakuu', 'marraskuu', 'joulukuu'],\n        'sv': ['januari', 'februari', 'mars', 'april', 'maj', 'juni', 'juli', 'augusti', 'september', 'oktober', 'november', 'december'],\n        'en': ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n    },\n    shortMonths: {\n        'fi': ['tammi', 'helmi', 'maalis', 'huhti', 'touko', 'kesä', 'heinä', 'elo', 'syys', 'loka', 'marras', 'joulu'],\n        'sv': ['jan.', 'febr.', 'mars', 'april', 'maj', 'juni', 'juli', 'aug.', 'sept.', 'okt.', 'nov.', 'dec.'],\n        'en': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']\n    },\n    numericSymbols: {\n        'fi': ['k', 'M', 'G', 'T', 'P', 'E'],\n        'sv': ['k', 'M', 'G', 'T', 'P', 'E'],\n        'en': ['k', 'M', 'G', 'T', 'P', 'E']\n    },\n    weekdays: {\n        'fi': ['sunnuntai', 'maanantai', 'tiistai', 'keskiviikko', 'torstai', 'perjantai', 'lauantai'],\n        'sv': ['söndag', 'måndag', 'tisdag', 'onsdag', 'torsdag', 'fredag', 'lördag'],\n        'en': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n    },\n    ordinalSuffices: {\n        'en': ['st.', 'nd.', 'rd.', 'th.']\n    }\n}","import { TranslationManager } from './translationManager';\nimport { TTranslations, TArrayTranslations, TTranslationPackage } from './translationTypes';\n\nexport type { TTranslationPackage } from './translationTypes';\n\nconst Manager = new TranslationManager();\n\n// End points for other modules\nexport const Translations: TTranslations = Manager.Translations;\nexport const ArrayTranslations: TArrayTranslations = Manager.ArrayTranslations;\nexport const GetAllLanguages = Manager.GetAllLanguages;\n\n// End point for adding new translations outside of this module\nexport function AddTranslations(newTranslations: TTranslationPackage) {\n    Manager.AddTranslations(newTranslations);\n}","import { TTranslations, TArrayTranslations, TTranslationPackage } from './translationTypes';\nimport { DefaultTranslations, DefaultArrayTranslations } from './defaultTranslations';\nexport class TranslationManager {\n    Translations: TTranslations;\n    ArrayTranslations: TArrayTranslations;\n\n    constructor() {\n        this.Translations = DefaultTranslations;\n        this.ArrayTranslations = DefaultArrayTranslations;\n    }\n\n    GetAllLanguages = () => {\n        return Object.keys(this.Translations.empty);\n    }\n\n    AddTranslations(newTranslations: TTranslationPackage) {\n        for (const key in newTranslations.Translations) {\n            if (key in this.Translations) {\n                this.Translations[key as keyof TTranslations] = {\n                    ...this.Translations[key as keyof TTranslations],\n                    ...newTranslations.Translations[key as keyof TTranslations]\n                };\n            }\n        }\n\n        for (const key in newTranslations.ArrayTranslations) {\n            if (key in this.ArrayTranslations) {\n                this.ArrayTranslations[key as keyof TArrayTranslations] = {\n                    ...this.ArrayTranslations[key as keyof TArrayTranslations],\n                    ...newTranslations.ArrayTranslations[key as keyof TArrayTranslations]\n                };\n            }\n        }\n    }\n}","export const cartesianProduct = <T>(allEntries: T[][]): T[][] => {\n    return allEntries.reduce<T[][]>(\n        (results, entries) =>\n            results\n                .map(result => entries.map(entry => result.concat([entry])))\n                .reduce((subResults, result) => subResults.concat(result), []),\n        [[]]\n    )\n}\n\ntype TNestedScalarArray = TNestedScalarArray[] | string[] | number[];\n\nexport const compareScalarArrays = (a: TNestedScalarArray, b: TNestedScalarArray): boolean => {\n    if(a.length !== b.length) return false;\n\n    for(let i = 0; i < a.length; i++) {\n        if(Array.isArray(a[i]) && Array.isArray(b[i])) {\n            if(!compareScalarArrays(a[i] as TNestedScalarArray, b[i] as TNestedScalarArray)) return false;\n        } else if (a[i] !== b[i]) return false;\n    }\n    return true;\n}\n\nexport function onlyUnique<T>(value: T, index: number, array: T[]) {\n    return array.findIndex(t => JSON.stringify(t) === JSON.stringify(value)) === index;\n};","import { Translations } from \"../conversion/translations\";\n\nconst indexedDotCodes = [\n    '',\n    '.',\n    '..',\n    '...',\n    '....',\n    '.....',\n    '......',\n    '-'\n];\n\nexport function formatNumericValue(value: number | null, precision: number, locale: string, addThousandSeparator: boolean = false) {\n    if (value === null) throw new Error('Can not produce a localized numeric formatting for missing data');\n\n    // Use locale to format the number with the number of decimals specified in the data cell and an optional thousand separator\n    return new Intl.NumberFormat(\n        locale, {\n            maximumFractionDigits: precision,\n            minimumFractionDigits: precision,\n            useGrouping: addThousandSeparator\n    }).format(value);\n}\n\nexport function formatMissingData(missingCode: number | undefined, locale:string, htmlTable: boolean = false) {\n    if (!missingCode) throw new Error('Invalid missing code. Can not generate table presentation'); // OBS: If we end up here with 0 (the should be data), it must be handled as error\n    else if (htmlTable) return Translations.dataMissing[locale];\n    else return indexedDotCodes[missingCode];\n}","import { AxisLabelsFormatterCallbackFunction, DataLabelsFormatterCallbackFunction, FormatterCallbackFunction, Point, ScreenReaderFormatterCallbackFunction, Series, TooltipFormatterCallbackFunction } from \"highcharts\";\nimport { Translations, GetAllLanguages, ArrayTranslations } from \"../../conversion/translations\";\nimport { IUnitInfo, View } from \"../../types/view\";\nimport { EVisualizationType } from \"../../types\";\nimport { onlyUnique } from \"../../conversion/utilityFunctions\";\nimport { formatNumericValue } from \"../../tables/tableUtils\";\n\nexport function getToolTipFormatterFunction(view: View, locale: string): TooltipFormatterCallbackFunction {\n    return function () {\n        const tooltipLines = [];\n\n        if (view.rowVarNames && view.rowVarNames.length > 0 && this.series.name) {\n            tooltipLines.push(`${view.rowVarNames?.map(rvn => rvn[locale]).join(', ')}: ${this.series.name}`);\n        }\n\n        if (view.colVarNames && view.colVarNames.length > 0 && this.name) {\n            tooltipLines.push(`${view.colVarNames?.map(cvn => cvn[locale]).join(', ')}: ${this.name}`);\n        }\n\n        const precision: number = this.options.custom?.['precision'] ?? 0;\n        tooltipLines.push(getDataFormattedForChartType(view, this, locale, precision))\n\n        if (this.options.custom?.['preliminary']) {\n            tooltipLines.push(Translations.preliminaryData[locale]);\n        }\n\n        return tooltipLines.join('<br/>');\n    };\n}\n\n// ignored functions run deeply in the context of highcharts, and are difficult to test\n// Some of these seem to be testable, we should try to test them when modifying / working with them in the future\n\n/* c8 ignore start */\nexport function getScreenReaderFormatterCallbackFunction(view: View, locale: string): ScreenReaderFormatterCallbackFunction<Point> {\n    return function (point) {\n        const tooltipLines = [];\n\n        if (view.rowVarNames && view.rowVarNames.length > 0 && point.series.name) {\n            tooltipLines.push(`${view.rowVarNames?.map(rvn => rvn[locale]).join(', ')}: ${parseScreenReaderFriendlyTimePeriods(point.series.name, locale)}`);\n        }\n\n        if (view.colVarNames && view.colVarNames.length > 0 && point.name) {\n            tooltipLines.push(`${view.colVarNames?.map(cvn => cvn[locale]).join(', ')}: ${parseScreenReaderFriendlyTimePeriods(point.name, locale)}`);\n        }\n\n        const precision: number = point.options.custom?.['precision'] ?? 0;\n        tooltipLines.push(getDataFormattedForChartType(view, point, locale, precision))\n\n        if (point.options.custom?.['preliminary']) {\n            tooltipLines.push(Translations.preliminaryData[locale]);\n        }\n\n        return tooltipLines.join(', ');\n    };\n}\n/* c8 ignore end */\n\n/* c8 ignore start */\nexport function getAxisLabelFormatterFunction(locale: string): AxisLabelsFormatterCallbackFunction {        \n    return function () {\n        return this.value.toLocaleString(locale);\n    }\n}\n/* c8 ignore end */\n\nexport const formatLocale = (locale: string): string => {\n    return GetAllLanguages().indexOf(locale.toLowerCase().trim()) > -1 ? locale.toLowerCase().trim() : GetAllLanguages()[0];\n}\n\n/* c8 ignore start */\nexport function getAxisLabelShorteningFunction(valueAmount: number | null = null): AxisLabelsFormatterCallbackFunction {\n    const VALUE_AMOUNT_LIMIT = 15;\n    const MAX_LENGTH = (valueAmount && valueAmount >= VALUE_AMOUNT_LIMIT) ? 25 : 50;\n    return function () {\n        return shortenStringValue(this.value, MAX_LENGTH);\n    }\n}\n/* c8 ignore end */\n\n/* c8 ignore start */\nexport function getDataLabelShorteningFunction(showData: boolean): DataLabelsFormatterCallbackFunction {\n    return function () {\n        const value: string = showData ? ` (${Math.round(this.percentage ?? 0)}%)` : \"\";\n        return shortenStringValue(this.name, 20) + value;\n    }\n}\n/* c8 ignore end */\n\nexport function getDataLabelFormatterFunction(locale: string): DataLabelsFormatterCallbackFunction {\n    return function () {\n        if (!this.y) return '';\n\n        const precision: number = this.options.custom?.['precision'] ?? 0;\n        return formatNumericValue(this.y, precision, locale, true);\n    }\n}\n\n/* c8 ignore start */\nexport function getLegendLabelShorteningFunction(): FormatterCallbackFunction<Series | Point> {\n    return function () {\n        return shortenStringValue(this.name, 200);\n    }\n}\n/* c8 ignore end */\n\nexport const shortenStringValue = (value: string | number, limit: number = 50) => {\n    const totalLength = value.toString().length;\n    const parsedString = `${value.toString().slice(0, limit).trim()}${totalLength > limit ? '...' : ''}`;\n    return parsedString;\n}\n\n/* c8 ignore start */\nexport function getScatterPlotScreenReaderFormatterCallbackFunction(view: View, locale: string): ScreenReaderFormatterCallbackFunction<Point> {\n    return function (point) {\n        const xVarValue = view.series[1].rowNameGroup.map(s => s[locale]).join(', ');\n        const yVarValue = view.series[0].rowNameGroup.map(s => s[locale]).join(', ');\n        const colVarName = view.colVarNames?.map(cvn => cvn[locale]).join(', ');\n        let renderString = '';\n        if (xVarValue && xVarValue.length > 0 && point.series.name) {\n            const rowVar = `${xVarValue}: ${parseScreenReaderFriendlyTimePeriods(point.x.toLocaleString(locale), locale)}, `;\n            renderString += rowVar;\n        }\n\n        if (yVarValue && yVarValue.length > 0) {\n            const colVar = `${yVarValue}: ${point.y && parseScreenReaderFriendlyTimePeriods(point.y.toLocaleString(locale), locale)}, `;\n            renderString += colVar;\n        }\n\n        if (colVarName && colVarName.length > 0 && view.columnNameGroups && view.columnNameGroups.length > 0) {\n            const colVar = `${colVarName}: ${parseScreenReaderFriendlyTimePeriods(view.columnNameGroups[point.index].map((cng) => cng[locale]).join(', '), locale)}`;\n            renderString += colVar;\n        }\n\n        if (point.options.custom?.['preliminary']) {\n            renderString += `, ${Translations.preliminaryData[locale]}`;\n        }\n\n        return renderString;\n    }\n}\n/* c8 ignore end */\n\n/* c8 ignore start */\nexport function getScatterPlotTooltipFormatterFunction(view: View, locale: string): TooltipFormatterCallbackFunction {\n    return function () {\n        const xVarValue = view.series[1].rowNameGroup.map(s => s[locale]).join(', ');\n        const yVarValue = view.series[0].rowNameGroup.map(s => s[locale]).join(', ');\n        const colVarName = view.colVarNames?.map(cvn => cvn[locale]).join(', ');\n        let renderString = '';\n        if (xVarValue && xVarValue.length > 0 && this.series.name) {\n            const rowVar = `${xVarValue}: ${this.x.toLocaleString(locale)}<br />`;\n            renderString += rowVar;\n        }\n\n        if (yVarValue && yVarValue.length > 0 && this.key) {\n            const colVar = `${yVarValue}: ${this.y?.toLocaleString(locale)}<br />`;\n            renderString += colVar;\n        }\n\n        if (colVarName && colVarName.length > 0 && view.columnNameGroups && view.columnNameGroups.length > 0) {\n            const colVar = `${colVarName}: ${view.columnNameGroups[this.index].map((cng) => cng[locale]).join(', ')}`;\n            renderString += colVar;\n        }\n\n        if (this.options.custom?.['preliminary']) {\n            renderString += `<br />${Translations.preliminaryData[locale]}`;\n        }\n\n        return renderString;\n    }\n}\n/* c8 ignore end */\n\nexport function getLineChartToolTipFormatterFunction(view: View, locale: string): Highcharts.TooltipFormatterCallbackFunction {\n    return function () {\n        const tooltipLines = [];\n\n        if (view.rowVarNames && view.rowVarNames.length > 0) {\n            for (let i = 0; i < view.rowVarNames.length; i++) {\n                const rowVarName = view.rowVarNames[i];\n                const rowVarValue = view.series[this.series.index].rowNameGroup[i];\n                tooltipLines.push(`${rowVarName[locale]}: ${rowVarValue[locale]}`);\n            }\n        }\n\n        if (view.colVarNames && view.colVarNames.length > 0 && this.name) {\n            tooltipLines.push(`${view.colVarNames?.map(cvn => cvn[locale]).join(', ')}: ${this.name}`);\n        }\n\n        const precision: number = this.options.custom?.['precision'] ?? 0;\n        tooltipLines.push(getDataFormattedForChartType(view, this, locale, precision))\n\n        if (this.options.custom?.['preliminary']) {\n            tooltipLines.push(Translations.preliminaryData[locale]);\n        }\n\n        return tooltipLines.join('<br/>');\n    };\n}\n\nexport function getFormattedUnits(unitInfos: IUnitInfo[], locale: string): string {\n    const uniqueUnits = unitInfos.map(ui => ui.unit).filter(onlyUnique)\n    if(uniqueUnits.length === 1) {\n        return uniqueUnits[0][locale];\n    }\n    else if(uniqueUnits.length > 1) {\n        return unitInfos.map(ui => `${ui.name[locale]}: ${ui.unit[locale]}`).join(', ');\n    }\n    else throw new Error('Missing required unit data');\n}\n\nexport function getDataFormattedForChartType(view: View, point: Point, locale: string, precision: number): string {\n    if (point.y === null || point.y === undefined) return '';\n    const value = Number(point.y.toFixed(precision));\n\n    if (view.visualizationSettings.visualizationType === EVisualizationType.PyramidChart) {\n        return Math.abs(value).toLocaleString(locale);\n    }\n    else if (view.visualizationSettings.visualizationType == EVisualizationType.PercentHorizontalBarChart ||\n        view.visualizationSettings.visualizationType == EVisualizationType.PercentVerticalBarChart) {\n        return `${formatNumericValue(point.percentage ?? 0, 1, locale)}% (${value.toLocaleString(locale)} ${getFormattedUnits(view.units, locale)})`;\n    } \n    else {\n        return value.toLocaleString(locale) ?? '';\n    }\n}\n\nexport function parseScreenReaderFriendlyTimePeriods(value: string, locale: string) {\n    const generalRegex = /^\\d{4}[M,Q]\\d{1,2}\\*?$/; // regex for checking matching patterns for month series and quarter series strings, including preliminary data\n\n    if (generalRegex.test(value)) {\n        const strippedValue = value.split('*')[0];\n        const monthRegex = /^\\d{4}M\\d{1,2}$/; // month regex pattern\n        const quarterRegex = /^\\d{4}Q\\d{1,2}$/; // quarter regex pattern\n        if (monthRegex.test(strippedValue)) {\n            const splitValues = strippedValue.split('M');\n            return `${splitValues[0]} ${ArrayTranslations.months[locale][Number(splitValues[1]) - 1]}`;\n        } else if (quarterRegex.test(strippedValue)) {\n            const splitValues = strippedValue.split('Q');\n            return `${splitValues[0]} ${parsePlacementSuffix(splitValues[1], locale)} ${Translations.quarter[locale]}`;\n        } else {\n            console.log('Unsupported time pattern');\n        }\n    }\n    return value;\n}\n\nfunction parsePlacementSuffix(value: string, locale: string) {\n    // If the language has ordinal suffices, use them, otherwise use a dot\n    // The value is expected to be a string representation of a number. Its parsed value is reduced by one to match the index of the ordinal suffix in the array\n    const ordinalSuffices = ArrayTranslations.ordinalSuffices[locale];\n    const index = parseInt(value) - 1;\n    if (ordinalSuffices?.[index]) {\n        return `${value}${ordinalSuffices[index]}`;\n    } else {\n        return `${value}.`;\n    }\n}\n\n/**\n * Formats the last updated text based on the provided date string and locale.\n * @param lastUpdated Date string representing the last updated date.\n * @param locale Locale string for formatting the date.\n * @returns Formatted last updated text or undefined if input is invalid.\n */\nexport function getFormattedLastUpdatedText(lastUpdated: string | undefined, locale: string): string | undefined {\n    if (!lastUpdated) return undefined;\n\n    try {\n        const date = new Date(lastUpdated);\n        if (Number.isNaN(date.getTime())) return undefined;\n\n        const dateLocale = locale === 'en' ? 'en-GB' : locale; // Use en-GB for English to get DD/MM/YYYY format if not specified\n        const formattedDate: string = Intl.DateTimeFormat(dateLocale).format(date);\n\n        return `${Translations.lastUpdated[locale]}: ${formattedDate}`;\n    } catch (error) {\n        console.error('Error formatting date:', error);\n        return undefined;\n    }\n}","import { IVisualizationSettings, TMultiLanguageString } from \"./queryVisualizationResponse\"\n\nexport enum ESeriesType {\n    Time,\n    Ordinal,\n    Nominal\n}\n\nexport interface IUnitInfo {\n    name: TMultiLanguageString;\n    unit: TMultiLanguageString;\n}\n\nexport interface View {\n    tableReferenceName: string,\n    header: TMultiLanguageString,\n    subheaderValues: TMultiLanguageString[],\n    units: IUnitInfo[],\n    sources: TMultiLanguageString[],\n    lastUpdated?: string,\n    columnNameGroups: TMultiLanguageString[][],\n    series: IDataSeries[],\n    colVarNames: TMultiLanguageString[],\n    rowVarNames: TMultiLanguageString[],\n    selectableVarNames: TMultiLanguageString[],\n    visualizationSettings: IVisualizationSettings,\n    seriesType: ESeriesType\n}\n\nexport interface IDataCell {\n    value: number | null;\n    missingCode?: number;\n    precision: number;\n    preliminary: boolean;\n}\n\nexport interface IDataSeries {\n    rowNameGroup: TMultiLanguageString[],\n    series: IDataCell[]\n}\n\nexport type TValueSelectionAmounts = { [key: string]: number };","import Decimal from 'decimal.js';\n\n// The treshold when the lower power step function is used to determine segment length\n// Values must be: between 1 and 10.\n// Example: If the data is between 100 and 999, and this const is 2, any value under 200 would use lower power step function.\nconst LOWER_POWER_SCALE_TRESHOLD = 1.5;\n\n// The treshold when the half scale step function is used to determine segment length\n// Values must be: between 1 and 10.\n// Example: If the data is between 100 and 999, and this const is 5, any value under 500 would use half scale step function.\n// Note: Lower power step function limit is considered before this limit, therefore this value must be greater than\n// LOWER_POWER_SCALE_TRESHOLD in order to affect anything.\nconst HALF_SCALE_TRESHOLD = 3;\n\n// The treshold when the higher power step function is used to determine segment length\n// Values must be: between 1 and 10.\n// Example: If the data is between 100 and 999, and this const is 8, any value over 800 would use higer power step function.\nconst HIGHER_POWER_SCALE_TRESHOLD = 8;\n\n// Keep this amount (%) of candidates when using the candidate elimination algorithm.\n// Elimination is done based on the divisibility score.\nconst SEGMENT_CANDIDATE_ELIMINATION_TRESHOLD = 0.5;\n\n// This portion of the tick positioner building is here to separate the types of the highchart and view objects from the tick positioner algorithm.\n// Eliminate the need to refactor all of the unit tests if any of the highchart or view objects change.\nexport function buildLinearAxisTickPositioner(dataMin: Decimal, dataMax: Decimal, precision: Decimal): (this: { chart: { plotWidth: number } }) => number[] {\n\n    const CHAR_WIDTH_ESTIMATE = 12;\n    const HARD_MARGIN_PX = 25; // This is added to the length of every label when calculating the maximum number of segments\n\n    const getMaxNumberOfSegments = (axisLength: number) => {\n        // largestSmallerPowerOf10: this provides a clean estimate of the number of digits in the largest number excluding decimals when over 1\n        const largestSmallerPowerOf10 = Decimal.pow(10, Decimal.log10(Decimal.max(dataMin.abs(), dataMax.abs())).floor());\n        const max = Math.ceil(axisLength / ((largestSmallerPowerOf10.toString().length + (dataMin.isNeg() ? 1 : 0)) * CHAR_WIDTH_ESTIMATE + HARD_MARGIN_PX) - 1); // There are always 1 more label than segments\n        return Math.max(max, dataMin.isNegative() && dataMax.isPositive() ? 2 : 1);\n    };\n\n    return function () {\n        const segmentLength = getInterval(dataMin, dataMax, getMaxNumberOfSegments(this.chart.plotWidth), precision);\n        const lowerBound: Decimal = dataMin.greaterThanOrEqualTo(0) ? new Decimal(0) : dataMin.div(segmentLength).floor().mul(segmentLength);\n        const upperBound: Decimal = dataMax.lessThanOrEqualTo(0) ? new Decimal(0) : dataMax.div(segmentLength).ceil().mul(segmentLength);\n        return Array.from({ length: upperBound.minus(lowerBound).div(segmentLength).plus(1).toNumber() }, (_, i) => segmentLength.mul(i).plus(lowerBound).toNumber());\n    }\n}\n\n/*\n    Brief summary of the algorithm:\n    1. If delta between min and max divided by the maximum number of segments is less than the precision, return the precision\n    2. Use the aboslute maximum between min and max to calculate a set of candidate segements\n        2.1 The initial set is calculated by dividing the input value by all possible number of segments and running this value through the step function\n        2.2 The set is then reduced by eliminating the candidates with the lowest divisibility score\n        2.3 The set is then sorted by the length of the segments\n    3. If the min is negative and max is positive, return the first candidate that fits within the maximum number of segments\n    4. Otherwise return the first (shortest) candidate\n*/\nexport function getInterval(dataMinValue: Decimal, dataMaxValue: Decimal, maxNumberOfSegments: number, precision: Decimal = new Decimal(0)): Decimal {\n    if (dataMinValue.greaterThan(dataMaxValue)) throw new Error('dataMinValue must me smaller or equal than dataMaxValue');\n\n    const iterate: (delta: Decimal) => [number, Decimal][] = (delta) => {\n        const candidates = Array.from({ length: maxNumberOfSegments }, (_, i) => maxNumberOfSegments - i)\n            .reduce((accum: [number, Decimal][], candidateNumOfSegs: number) => {\n                const segmentLength = linearAxisIntervalStepFunction(delta.div(candidateNumOfSegs));\n                if (segmentLength.greaterThanOrEqualTo(precision)) accum.push([getDivisibilityScore(segmentLength), segmentLength]);\n                return accum;\n            }, [])\n            .sort(([scoreA, _lengthA], [scoreB, _lengthB]) => scoreB - scoreA);\n        // Math.max(2, something) is to ensure that there are at least 2 candidates to choose from even in cases when we can fit only 1 or 2 segments\n        return candidates.slice(0, Math.max(2, Math.ceil(candidates.length * SEGMENT_CANDIDATE_ELIMINATION_TRESHOLD)))\n            .sort(([_scoreA, lengthA], [_scoreB, lengthB]) => lengthA.minus(lengthB).toNumber());\n    }\n\n    const delta = dataMinValue.lessThan(0) && dataMaxValue.greaterThan(0)\n        ? dataMaxValue.minus(dataMinValue)\n        : Decimal.max(dataMinValue.abs(), dataMaxValue.abs());\n\n    if (delta.div(maxNumberOfSegments).lessThanOrEqualTo(precision)) return precision;\n\n    const candidates = iterate(Decimal.max(dataMinValue.abs(), dataMaxValue.abs()));\n    if (dataMinValue.lessThan(0) && dataMaxValue.greaterThan(0)) return candidates\n        .map(([_score, length]) => length)\n        // ceil(|dataMinValue| / length) + ceil(dataMaxValue / length) <= maxNumberOfSegments\n        .find((length: Decimal) => dataMinValue.abs().div(length).ceil().plus(dataMaxValue.div(length).ceil()).lessThanOrEqualTo(maxNumberOfSegments))\n        ?? new Decimal(NaN);\n    else return candidates[0][1];\n}\n\nexport function linearAxisIntervalStepFunction(segmentDelta: Decimal): Decimal {\n    // Log10(0) returns NaN\n    if (segmentDelta.equals(0)) return new Decimal(0);\n\n    const pow10Step = Decimal.pow(10, Decimal.log10(segmentDelta).floor());\n\n    if (segmentDelta.div(pow10Step).lessThan(LOWER_POWER_SCALE_TRESHOLD)) {\n        // Reducing the power to reduce the relative gap between the data value and the boundary.\n        return pow10Step.div(10).mul(segmentDelta.div((pow10Step.div(10))).ceil());\n    }\n\n    if (segmentDelta.div(pow10Step).lessThan(HALF_SCALE_TRESHOLD)) {\n        // Rounding to nearest half halves the step length\n        return  segmentDelta.mul(2).div(pow10Step).ceil().mul(pow10Step).div(2);\n    }\n\n    if (segmentDelta.div(pow10Step).lessThan(HIGHER_POWER_SCALE_TRESHOLD)) {\n        return segmentDelta.div(pow10Step).ceil().mul(pow10Step);\n    }\n\n    // Increasing the power to make round numbers more likely without increasing the gaps to bounds too much.\n    return segmentDelta.div((pow10Step.mul(10))).ceil().mul(10).mul(pow10Step);\n}\n\n\n// Returns a value that enables comparing the divisibility of two values.\n// Larger return value implies better divisibility.\nexport function getDivisibilityScore(input: Decimal): number {\n    if (input.equals(0)) return 0;\n\n    if (input.isInteger()) return getIntegerDivisibilityScore(input);\n    else return getFloatDivisibilityScore(input);\n}\n\nfunction getIntegerDivisibilityScore(input: Decimal): number {\n    let score = 0;\n    let divider = 5;\n    while (score < 50) { // Just in case to prevent endless looping\n        if (!input.mod(divider).equals(0)) break;\n        score++;\n        divider *= 2;\n\n        if (!input.mod(divider).equals(0)) break;\n        score++;\n        divider *= 5;\n    }\n    return score;\n}\n\nfunction getFloatDivisibilityScore(input: Decimal) {\n    const text = input.toString(); // Convert back to string and check for \"1e-8\" numbers\n    if (text.includes('e-')) {\n        const strings = text.split('e-');\n        const decimals = Number.parseInt(strings[1]);\n        // Values ending with 5 are preferred over other values with the same number of decimals\n        if (strings[0].endsWith('5')) return -2 * decimals + 1;\n        else return -2 * decimals;\n    } else {\n        const decimalString = text.split(\".\")[1];\n        // Values ending with 5 are preferred over other values with the same number of decimals\n        if (decimalString.endsWith('5')) return -2 * decimalString.length + 1;\n        else return -2 * decimalString.length;\n    }\n}","import { ETimeVariableInterval } from \"../../types/queryVisualizationResponse\"\nimport Highcharts, { PlotSeriesOptions, XAxisOptions } from \"highcharts\";\nimport { ESeriesType, View } from \"../../types/view\";\nimport { getBiannualSeriesTickPositionerFunction, getQuarterlySeriesTickPositionerFunction } from \"./tickPositioners\";\nimport { getOrdinalOptions } from \"./ordinalIntervals\";\n\nexport function getTimeSeriesOptions(interval: ETimeVariableInterval, startingPoint: string | null | undefined): PlotSeriesOptions | undefined {\n    if (!startingPoint) return undefined;\n    else {\n        const startingDate = new Date(startingPoint);\n        switch (interval) {\n            case ETimeVariableInterval.Irregular:\n                return undefined;\n            case ETimeVariableInterval.Week:\n                return undefined;\n            case ETimeVariableInterval.Month:\n                return {\n                    pointStart: startingDate.getTime(),\n                    pointIntervalUnit: 'month'\n                };\n            case ETimeVariableInterval.Quarter:\n                return undefined;\n            case ETimeVariableInterval.HalfYear:\n                return undefined;\n            case ETimeVariableInterval.Year:\n                return {\n                    pointStart: startingDate.getTime(),\n                    pointIntervalUnit: 'year'\n                };\n        }\n    }\n}\n\nexport function getXAxisOptions(view: View, locale: string): XAxisOptions {\n    if (view.seriesType === ESeriesType.Time) {\n        switch (view.visualizationSettings.timeVariableIntervals) {\n            case ETimeVariableInterval.Week:\n                return weeklyOptions(view, locale);\n            case ETimeVariableInterval.Month:\n                return monthlyOptions(view, locale);\n            case ETimeVariableInterval.Quarter:\n                return quarterlyOptions(view, locale);\n            case ETimeVariableInterval.HalfYear:\n                return biannualOptions(view, locale);\n            case ETimeVariableInterval.Year:\n                return {\n                    type: 'datetime'\n                };\n            default:\n                return {\n                    type: 'category',\n                    categories: view.columnNameGroups.map(cng => cng.map(n => n[locale]).join(', '))\n                };\n        }\n    }\n    else {\n        const labels: string[] = view.columnNameGroups.map(cng => cng.map(n => n[locale]).join(', '));\n        const numeric: boolean = labels.every(l => !Number.isNaN(Number.parseFloat(l)));\n        if (view.seriesType === ESeriesType.Ordinal && numeric) {\n            return getOrdinalOptions(view, locale);\n        }\n        else { // Nominal or non-numeric ordinal\n            return {\n                ordinal: view.seriesType == ESeriesType.Ordinal,\n                type: 'category',\n                categories: labels,\n                labels: {\n                    autoRotation: [-45]\n                }\n            };\n        }\n    }\n}\n\nconst weeklyOptions: (view: View, locale: string) => XAxisOptions = (view, locale) => {\n    return {\n        type: 'linear',\n        ordinal: false,\n        labels: {\n            formatter: function () {\n                return view.columnNameGroups[Number(this.value)].map(n => n[locale]).join(', ');\n            }\n        }\n    };\n};\n\nconst monthlyOptions: (view: View, locale: string) => XAxisOptions = (view, locale) => {\n    return {\n        type: 'datetime',\n        ordinal: false,\n        labels: {\n            formatter: function () {\n                /* c8 ignore start */\n                return Highcharts.dateFormat(`%YM%m`, Number(this.value));\n                /* c8 ignore end */\n            }\n        }\n    };\n};\n\nconst quarterlyOptions: (view: View, locale: string) => XAxisOptions = (view, locale) => {\n    return {\n        type: 'linear',\n        ordinal: false,\n        labels: {\n            formatter: function () {\n                return Number.isInteger(this.value)\n                    ? view.columnNameGroups[Number(this.value)].map(n => n[locale]).join(', ')\n                    : '';\n            }\n        },\n        tickPositioner: getQuarterlySeriesTickPositionerFunction(\n            Math.max(...view.series.map(s => s.series.length)),\n            new Date(view.visualizationSettings.timeSeriesStartingPoint ?? \"\"))\n    };\n};\n\nconst biannualOptions: (view: View, locale: string) => XAxisOptions = (view, locale) => {\n    return {\n        type: 'linear',\n        ordinal: false,\n        labels: {\n            formatter: function () {\n                return Number.isInteger(this.value)\n                    ? view.columnNameGroups[Number(this.value)].map(n => n[locale]).join(', ')\n                    : '';\n            }\n        },\n        tickPositioner: getBiannualSeriesTickPositionerFunction(\n            Math.max(...view.series.map(s => s.series.length)),\n            new Date(view.visualizationSettings.timeSeriesStartingPoint ?? \"\"))\n    };\n};","import { XAxisOptions } from \"highcharts\";\nimport { View } from \"../../types/view\";\nimport { getOrdinalAxisTickPositionerFunction } from \"./tickPositioners\";\nimport { TMultiLanguageString } from \"../../types/queryVisualizationResponse\";\n\nexport const getOrdinalOptions: (view: View, locale: string) => XAxisOptions = (view, locale) => {\n    return {\n        type: 'category',\n        categories: view.columnNameGroups.map(cng => cng.map(n => n[locale]).join(', ')),\n        ordinal: true,\n        tickPositioner: getOrdinalAxisTickPositionerFunction(\n            Math.max(...view.series.map(s => s.series.length)),\n            Math.max(...view.columnNameGroups.map(cng =>\n                cng.reduce((acc: number, mls: TMultiLanguageString) => {\n                    return (acc > 0 ? 1 : 0) + acc + mls[locale].length\n                }, 0))))\n    };\n};","import { Axis, AxisTickPositionsArray} from \"highcharts\";\nimport { buildLinearAxisTickPositioner } from \"./tickPositionerUtilities\";\nimport Decimal from 'decimal.js';\nimport { IDataCell } from \"../../types/view\";\n\nexport function getQuarterlySeriesTickPositionerFunction(seriesLength: number, timeSeriesStartingPoint: Date): (this: Axis) => AxisTickPositionsArray {\n    const LABEL_WIDTH_PX = 60;\n    const stepFunc = function (x: number): number {\n        if (x <= 2) return Math.ceil(x);\n        else if (x <= 4) return 4;\n        else if (x <= 20) return 4 * Math.ceil(x / 4);\n        else if (x <= 40) return 20 * Math.ceil(x / 20);\n        else return 40 * Math.ceil(x / 40);\n    }\n\n    const shiftFunc = function (interval: number, startingDate: Date): number {\n        const distFromPrevMatching: number = (startingDate.getFullYear() * 4 + Math.floor(startingDate.getMonth() / 3)) % interval;\n        if (distFromPrevMatching > 0) return interval - distFromPrevMatching;\n        else return 0;\n    }\n\n    return function () {\n        const interval = stepFunc(seriesLength * LABEL_WIDTH_PX / this.chart.plotWidth);\n        const shift = shiftFunc(interval, timeSeriesStartingPoint)\n        const numOfLabels = Math.ceil((seriesLength - shift) / interval);\n        return Array.from({ length: numOfLabels }, (_, index) => shift + index * interval)\n    }\n}\n\nexport function getBiannualSeriesTickPositionerFunction(seriesLength: number, timeSeriesStartingPoint: Date): (this: Axis) => AxisTickPositionsArray {\n    const LABEL_WIDTH_PX = 60;\n    const stepFunc = function (x: number): number {\n        if (x <= 2) return Math.ceil(x);\n        else if (x <= 10) return 2 * Math.ceil(x / 2);\n        else if (x <= 20) return 10 * Math.ceil(x / 10);\n        else return 20 * Math.ceil(x / 20);\n    }\n\n    const shiftFunc = function (interval: number, startingDate: Date): number {\n        const distFromPrevMatching: number = (startingDate.getFullYear() * 2 + Math.floor(startingDate.getMonth() / 6)) % interval;\n        if (distFromPrevMatching > 0) return interval - distFromPrevMatching;\n        else return 0;\n    }\n\n    return function () {\n        const interval = stepFunc(seriesLength * LABEL_WIDTH_PX / this.chart.plotWidth);\n        const shift = shiftFunc(interval, timeSeriesStartingPoint)\n        const numOfLabels = Math.ceil((seriesLength - shift) / interval);\n        return Array.from({ length: numOfLabels }, (_, index) => shift + index * interval)\n    }\n}\n\nexport function getLinearAxisTickPositionerFunction(series: IDataCell[][]): (this: Axis) => AxisTickPositionsArray {\n\n    let min: number | null = null;\n    let max: number | null = null;\n    let mostPrecise: number = 0;\n\n    series.forEach((innerSeries) => {\n        innerSeries.forEach((cell) => {\n            if (cell.value && (!min || cell.value < min)) min = cell.value;\n            if (cell.value && (!max || cell.value > max)) max = cell.value;\n            if (cell.precision > mostPrecise) mostPrecise = cell.precision;\n        })\n    });\n\n    // If all values are null\n    if (!min || !max) return () => [];\n    return buildLinearAxisTickPositioner(new Decimal(min), new Decimal(max), new Decimal(Math.pow(10, -mostPrecise)));\n}\n\nexport function getLinearSumAxisTickPositionerFunction(series: IDataCell[][]): (this: Axis) => AxisTickPositionsArray {\n\n    let min: number | null = null;\n    let max: number | null = null;\n    let mostPrecise: number = 0;\n\n    series[0].forEach((cell, index) => {\n        const sum = series.reduce((acc, curr) => acc + (curr[index].value ?? 0), 0);\n        if (sum && (!min || sum < min)) min = sum;\n        if (sum && (!max || sum > max)) max = sum;\n        if (cell.precision > mostPrecise) mostPrecise = cell.precision;\n    });\n\n    // If all values are null\n    if (!min || !max) return () => [];\n    return buildLinearAxisTickPositioner(new Decimal(min), new Decimal(max), new Decimal(Math.pow(10, -mostPrecise)));\n}\n\nexport function getOrdinalAxisTickPositionerFunction(seriesLength: number, maxLabelLen: number): (this: Axis) => AxisTickPositionsArray {\n    const CHAR_WIDTH_PX = 10;\n\n    return function () {\n        const interval = Math.ceil(seriesLength * maxLabelLen * CHAR_WIDTH_PX / this.chart.plotWidth);\n        const numOfLabels = Math.ceil(seriesLength / interval);\n        return Array.from({ length: numOfLabels }, (_, index) => index * interval)\n    }\n}","/**\n * Default colors for the chart\n * If you need to change the colors, do it here and here only.\n */\nexport const defaultColors : string[] = ['#1a56ec', '#f2644c', '#1b3160', '#9c8d87', '#26625d', '#7791e8', '#8c1131', '#878eaf', '#c73268', '#288c72'];","export const defaultFillPatterns = [\n    // Grid (Crosshatch)\n    'M 0 5 L 10 5 M 5 0 L 5 10',\n\n    // Diagonal grid (Crosshatch)\n    'M 0 0 L 10 10 M 10 0 L 0 10',\n\n    // Small grid\n    'M 2,2 h1 v1 h-1 z M 7,7 h1 v1 h-1 z M 2,7 h1 v1 h-1 z M 7,2 h1 v1 h-1 z',\n\n    // Dots\n    'M 2,2 h1 v1 h-1 z M 7,7 h1 v1 h-1 z',\n\n    // Diagonal stripes (right)\n    'M -2 -2 L 12 12 M -12 -2 L 2 12 M -2 -12 L 12 2',\n\n    // Diagonal stripes (left)\n    'M -2 12 L 12 -2 M -12 12 L 2 -2 M -2 22 L 12 8',\n\n    // Concentric circles\n    'M 5,5 m -3,0 a 3,3 0 1,0 6,0 a 3,3 0 1,0 -6,0',\n\n    // Dot grid\n    'M 2 2 L 3 3 M 7 7 L 8 8 M 2 7 L 3 8 M 7 2 L 8 3',\n\n    // Diamonds\n    'M 5 0 L 10 5 L 5 10 L 0 5 Z',\n\n    // Crosses\n    'M 2 5 L 8 5 M 5 2 L 5 8',\n\n    // Vertical stripes\n    'M 5 0 L 5 10',\n\n    // Horizontal stripes\n    'M 0 5 L 10 5',\n\n    // Waves\n    'M 0 5 Q 2.5 0, 5 5 T 10 5', \n\n    // Thiccc bars\n    'M 0 2 L 10 2 M 0 8 L 10 8',\n\n    // Triangles\n    'M 0 10 L 5 0 L 10 10 Z',\n];","import { PatternObject } from \"highcharts\";\nimport { defaultColors } from \"../../highcharts/defaultColors\";\nimport { defaultFillPatterns } from \"../../highcharts/fillPatterns\";\n\nexport function buildPatternObject(index: number): { color: PatternObject } {\n    return {\n        color: {\n            pattern: {\n                backgroundColor: defaultColors[index % defaultColors.length],\n                path: {\n                    stroke: \"white\",\n                    d: defaultFillPatterns[index % defaultFillPatterns.length],\n                    strokeWidth: 2\n                },\n                width: 10,\n                height: 10\n            }\n        }\n    }\n}","import { SeriesBarOptions, SeriesColumnOptions, SeriesLineOptions } from \"highcharts\";\nimport { IDataSeries, View } from \"../../types/view\";\nimport { buildPatternObject } from \"./patternFill\";\n\nexport const buildLineChartSeries = (view: View, locale: string): SeriesLineOptions[] =>\n    view.series.map((s, sIndex) => ({\n        ...commonSeriesOptions(s, view, locale),\n        index: sIndex,\n        type: 'line',\n    }));\n\nexport const buildBarChartSeries = (view: View, locale: string, reverseOrder: boolean = false, patternFill: boolean = false): SeriesBarOptions[] =>\n    view.series.map((s, sIndex) => ({\n        ...commonSeriesOptions(s, view, locale),\n        ...(patternFill && buildPatternObject(sIndex)),\n        index: reverseOrder ? view.series.length - 1 - sIndex : sIndex,\n        type: 'bar',\n    }));\n\nexport const buildColumnChartSeries = (view: View, locale: string, reverseOrder: boolean = false, patternFill: boolean = false): SeriesColumnOptions[] =>\n    view.series.map((s, sIndex) => ({\n        ...commonSeriesOptions(s, view, locale),\n        ...(patternFill && buildPatternObject(sIndex)),\n        index: reverseOrder ? view.series.length - 1 - sIndex : sIndex,\n        type: 'column'\n    }));\n\nfunction commonSeriesOptions(ser: IDataSeries, view: View, locale: string) {\n    return {\n        animation: false,\n        name: ser.rowNameGroup.map(n => n[locale]).join(', '),\n        data: ser.series.map((dataPoint, dIndex) => ({\n            y: dataPoint.value,\n            name: view.columnNameGroups[dIndex].map(n => n[locale]).join(', '),\n            custom: { preliminary: dataPoint.preliminary, precision: dataPoint.precision },\n        }))\n    }\n};","import { LegendOptions, Options, PlotSeriesDataLabelsOptions, YAxisOptions } from 'highcharts';\nimport { View } from \"../types/view\";\nimport { getAxisLabelShorteningFunction, getFormattedUnits, getToolTipFormatterFunction, getScreenReaderFormatterCallbackFunction, getDataLabelFormatterFunction, getFormattedLastUpdatedText } from './Utility/formatters';\nimport { getXAxisOptions } from './Utility/timeIntervals';\nimport { getLinearAxisTickPositionerFunction } from './Utility/tickPositioners';\nimport { IChartOptions } from '../types/chartOptions';\nimport { buildBarChartSeries, buildColumnChartSeries } from './Utility/seriesDataBuilder';\nimport { Translations } from \"../conversion/translations\";\n\nexport const commonChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    const showTitles: boolean = options?.showTitles ?? true;\n\n    const sourceText = Translations.source[locale];\n    let creditsText = `${sourceText}: ${view.sources.map(s => s[locale]).join(', ')}`;\n    const hasLastUpdated = options?.showLastUpdated && view.lastUpdated;\n    \n    if (hasLastUpdated) {\n        const lastUpdatedText = getFormattedLastUpdatedText(view.lastUpdated, locale);\n        if (lastUpdatedText) {\n            creditsText = `${lastUpdatedText}<br>${sourceText}: ${view.sources.map(s => s[locale]).join(', ')}`;\n        }\n    }\n\n    return {\n        chart: {\n            spacingBottom: hasLastUpdated ? 50 : 30  // Conditional spacing based on lastUpdated presence\n        },\n        accessibility: {\n            point: {\n                descriptionFormatter: getScreenReaderFormatterCallbackFunction(view, locale)\n            }\n        },\n        title: { text: showTitles ? view.header[locale] : undefined },\n        subtitle: { text: view.subheaderValues.map(sv => sv[locale]).join(' | ') },\n        credits: { enabled: false },\n        caption: { text: creditsText },\n        tooltip: {\n            formatter: getToolTipFormatterFunction(view, locale)\n        },\n        yAxis: [commonYAxisOptions]\n    };\n}\n\nexport const commonYAxisOptions: YAxisOptions = {\n    plotLines: [\n        {\n            value: 0,\n            color: '#000',\n            width: 1\n        }\n    ],\n}\n\nexport const commonDatalabelsOptions = (view: View, locale: string): PlotSeriesDataLabelsOptions => {\n    const dataLabelOptions = {\n        enabled: view.visualizationSettings.showDataPoints,\n        style: {\n            color: '#000',\n            fontSize: '1rem',\n            fontWeight: '400',\n        },\n        formatter: getDataLabelFormatterFunction(locale)\n    }\n    return dataLabelOptions;\n}\n\nexport const commonBasicHorizontalBarChartYAxisOptions = (view: View, locale: string): YAxisOptions => {\n    const yAxisOptions: YAxisOptions = {\n        ...commonYAxisOptions,\n        tickPositioner: getLinearAxisTickPositionerFunction(view.series.map(s => s.series)),\n        title: {\n            text: getFormattedUnits(view.units, locale),\n            style: {\n                textAlign: 'center',\n            },\n            align: 'middle',\n            textAlign: \"center\",\n            y: 10,\n            x: 0,\n        }\n    }\n    return yAxisOptions;\n}\n\nexport const commonHorizontalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonChartOptions(view, locale, options),\n        chart: { type: 'bar' },\n        xAxis: {\n            categories: view.columnNameGroups.map(cng => cng.map(n => n[locale]).join(', ')),\n            labels: {\n                formatter: getAxisLabelShorteningFunction(view.columnNameGroups.length),\n                style: {\n                    width: 200\n                }\n            }\n        },\n    };\n}\n\nexport const commonStackedHorizontalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonHorizontalBarChartOptions(view, locale, options),\n        series: buildBarChartSeries(view, locale, true, options?.accessibilityMode),\n        legend: {\n            ...commonLegendStyleOptions,\n            enabled: true,\n            layout: 'horizontal',\n            reversed: true,\n            margin: 30\n        }\n    };\n}\n\nexport const commonVerticalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    const result = {\n        ...commonChartOptions(view, locale, options),\n        chart: { type: 'column' },\n        xAxis: getXAxisOptions(view, locale),\n    };\n    return result;\n}\n\nexport const commonBasicVerticalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonVerticalBarChartOptions(view, locale, options),\n        series: buildColumnChartSeries(view, locale, false, options?.accessibilityMode),\n        yAxis: {\n            softMin: 0,\n            softMax: 0,\n            title: {\n                text: getFormattedUnits(view.units, locale),\n            }\n        }\n    };\n}\n\nexport const commonStackedVerticalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonVerticalBarChartOptions(view, locale, options),\n        series: buildColumnChartSeries(view, locale, true, options?.accessibilityMode),\n        legend: {\n            ...commonLegendStyleOptions,\n            enabled: true,\n            layout: 'vertical'\n        }\n    };\n}\n\nexport const commonLegendStyleOptions: LegendOptions = {\n    itemHiddenStyle: {\n        color: 'black',\n    }\n};\n","import { Options } from 'highcharts';\nimport { IDataSeries, View } from \"../types/view\";\nimport { getScatterPlotTooltipFormatterFunction } from './Utility/formatters';\nimport { commonChartOptions, commonYAxisOptions } from './chartOptions';\nimport { IChartOptions } from '../types/chartOptions';\n\nexport const scatterPlotOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    const X_INDEX = 1; const Y_INDEX = 0;\n    const cutValueAxis = !view.visualizationSettings?.cutValueAxis ? 0 : undefined;\n    return {\n        ...commonChartOptions(view, locale, options),\n        chart: { type: 'scatter' },\n        xAxis: {\n            softMin: 0,\n            softMax: 0,\n            title: {\n                text: view.series[X_INDEX].rowNameGroup.map(s => s[locale]).join(', ')\n            },\n            gridLineColor: 'hsl(0, 0%, 35%)',\n            gridLineWidth: 0.5,\n            plotLines: [\n                {\n                    value: 0,\n                    color: '#000',\n                    width: 1\n                }\n            ]\n        },\n        yAxis: {\n            ...commonYAxisOptions,\n            softMin: cutValueAxis,\n            softMax: cutValueAxis,\n            title: {\n                text: view.series[Y_INDEX].rowNameGroup.map(s => s[locale]).join(', ')\n            }\n        },\n        series: [\n            {\n                animation: false,\n                type: 'scatter',\n                data: view.series[0].series.map((_, index) => ({\n                    x: view.series[X_INDEX].series[index].value ?? undefined,\n                    y: view.series[Y_INDEX].series[index].value ?? undefined,\n                    marker: {\n                        symbol: 'circle',\n                    },\n                    custom: {\n                        preliminary: view.series[X_INDEX].series[index].preliminary || view.series[Y_INDEX].series[index].preliminary,\n                        precision: Math.max(view.series[X_INDEX].series[index].precision, view.series[Y_INDEX].series[index].precision)\n                    }\n                })),\n            }\n        ],\n        tooltip: {\n            headerFormat: '',\n            pointFormat: tooltipPointFormat(view.series, locale),\n            formatter: getScatterPlotTooltipFormatterFunction(view, locale)\n        },\n        plotOptions: {\n            scatter: {\n                marker: {\n                    radius: 5 * (view.visualizationSettings.markerSize ? view.visualizationSettings.markerSize * 0.01 : 1)\n                }\n            }\n        },\n        exporting: {\n            enabled: false\n        }\n    };\n}\n\nconst tooltipPointFormat = (series: IDataSeries[], locale: string) => `\n    ${series[1].rowNameGroup.map(s => s[locale]).join(', ')}: {point.x}<br/>\n    ${series[0].rowNameGroup.map(s => s[locale]).join(', ')}: {point.y}\n    `;","import { Options } from 'highcharts';\nimport { EVisualizationType } from \"../types/queryVisualizationResponse\";\nimport { basicHorizontalBarChartOptions } from \"../chartOptions/basicHorizontalBarchartOptions\";\nimport { groupHorizontalBarChartOptions } from \"../chartOptions/groupHorizontalBarChartOptions\";\nimport { basicVerticalBarChartOptions } from \"../chartOptions/basicVerticalBarChartOptions\";\nimport { groupVerticalBarChartOptions } from \"../chartOptions/groupVerticalBarChartOptions\";\nimport { pieChartOptions } from \"../chartOptions/pieChartOptions\";\nimport { stackedVerticalBarChartOptions } from \"../chartOptions/stackedVerticalBarChartOptions\";\nimport { stackedHorizontalBarChartOptions } from \"../chartOptions/stackedHorizontalBarChartOptions\";\nimport { percentVerticalBarChartOptions } from \"../chartOptions/percentVerticalBarChartOptions\";\nimport { percentHorizontalBarChartOptions } from \"../chartOptions/percentHorizontalBarChartOptions\";\nimport { pyramidChartOptions } from \"../chartOptions/pyramidChartOptions\";\nimport { scatterPlotOptions } from \"../chartOptions/scatterPlotOptions\";\nimport { lineChartOptions } from \"../chartOptions/lineChartOptions\";\nimport { View } from \"../types/view\";\nimport { IChartOptions } from '../types/chartOptions';\n\nexport const convertPxGraphDataToChartOptions = (locale: string, view: View, options?: IChartOptions): Options => {\n\n    switch (view.visualizationSettings.visualizationType) {\n        case EVisualizationType.LineChart:\n            return lineChartOptions(view, locale, options);\n        case EVisualizationType.VerticalBarChart:\n            return basicVerticalBarChartOptions(view, locale, options);\n        case EVisualizationType.HorizontalBarChart:\n            return basicHorizontalBarChartOptions(view, locale, options);\n        case EVisualizationType.GroupVerticalBarChart:\n            return groupVerticalBarChartOptions(view, locale, options);\n        case EVisualizationType.GroupHorizontalBarChart:\n            return groupHorizontalBarChartOptions(view, locale, options);\n        case EVisualizationType.StackedVerticalBarChart:\n            return stackedVerticalBarChartOptions(view, locale, options);\n        case EVisualizationType.StackedHorizontalBarChart:\n            return stackedHorizontalBarChartOptions(view, locale, options);\n        case EVisualizationType.PercentVerticalBarChart:\n            return percentVerticalBarChartOptions(view, locale, options);\n        case EVisualizationType.PercentHorizontalBarChart:\n            return percentHorizontalBarChartOptions(view, locale, options);\n        case EVisualizationType.PieChart:\n            return pieChartOptions(view, locale, options);\n        case EVisualizationType.PyramidChart:\n            return pyramidChartOptions(view, locale, options);\n        case EVisualizationType.ScatterPlot:\n            return scatterPlotOptions(view, locale, options);\n        default:\n            throw new Error('Unsupported chart type');\n    }\n}","import { Options } from \"highcharts\";\nimport { View } from \"../types/view\";\nimport { getTimeSeriesOptions, getXAxisOptions } from \"./Utility/timeIntervals\";\nimport { getFormattedUnits, getLegendLabelShorteningFunction, getLineChartToolTipFormatterFunction } from \"./Utility/formatters\";\nimport { buildLineChartSeries } from \"./Utility/seriesDataBuilder\";\nimport { commonChartOptions, commonDatalabelsOptions, commonLegendStyleOptions, commonYAxisOptions } from \"./chartOptions\";\nimport { IChartOptions } from \"../types/chartOptions\";\n\nexport const lineChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    const cutValueAxis = !view.visualizationSettings?.cutValueAxis ? 0 : undefined;\n    const markerSettings = options?.accessibilityMode ? { enabledThreshold: 3 } : { enabled: false };\n    return {\n        ...commonChartOptions(view, locale, options),\n        chart: { type: 'line' },\n        tooltip: {\n            formatter: getLineChartToolTipFormatterFunction(view, locale)\n        },\n        xAxis: {\n            ...getXAxisOptions(view, locale),\n            gridLineColor: 'hsl(0, 0%, 35%)',\n            gridLineWidth: 0.5,\n        },\n        yAxis: {\n            ...commonYAxisOptions,\n            softMin: cutValueAxis,\n            softMax: cutValueAxis,\n            title: { text: getFormattedUnits(view.units, locale) }\n        },\n        plotOptions: {\n            line: {\n                dataLabels: {\n                    ...commonDatalabelsOptions(view, locale)\n                },\n                marker: markerSettings,\n            },\n            series: getTimeSeriesOptions(view.visualizationSettings.timeVariableIntervals, view.visualizationSettings.timeSeriesStartingPoint)\n        },\n        legend: {\n            ...commonLegendStyleOptions,\n            enabled: view.series.length > 1,\n            labelFormatter: getLegendLabelShorteningFunction()\n        },\n        series: buildLineChartSeries(view, locale),\n        exporting: {\n            enabled: false,\n        },\n    };\n}\n","import { Options } from \"highcharts\";\nimport { View } from \"../types/view\";\nimport { getFormattedUnits } from \"./Utility/formatters\";\nimport { getTimeSeriesOptions } from \"./Utility/timeIntervals\";\nimport { commonBasicVerticalBarChartOptions, commonYAxisOptions, commonDatalabelsOptions } from './chartOptions';\nimport { IChartOptions } from \"../types/chartOptions\";\n\nexport const basicVerticalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonBasicVerticalBarChartOptions(view, locale, options),\n        yAxis: {\n            ...commonYAxisOptions,\n            softMin: 0,\n            softMax: 0,\n            title: { text: getFormattedUnits(view.units, locale) }\n        },\n        plotOptions: {\n            series: {\n                ...getTimeSeriesOptions(view.visualizationSettings.timeVariableIntervals, view.visualizationSettings.timeSeriesStartingPoint),\n                dataLabels: {\n                    ...commonDatalabelsOptions(view, locale)\n                }\n            },\n        },\n        exporting: {\n            enabled: false\n        }\n    };\n}","import { Options } from 'highcharts';\nimport { View } from \"../types/view\";\nimport { commonHorizontalBarChartOptions, commonBasicHorizontalBarChartYAxisOptions, commonDatalabelsOptions } from './chartOptions';\nimport { buildBarChartSeries } from './Utility/seriesDataBuilder';\nimport { IChartOptions } from '../types/chartOptions';\n\nexport const basicHorizontalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonHorizontalBarChartOptions(view, locale, options),\n        series: buildBarChartSeries(view, locale, false, options?.accessibilityMode),\n        chart: { type: 'bar', spacingBottom: 60 },\n        yAxis: {\n            ...commonBasicHorizontalBarChartYAxisOptions(view, locale),\n            softMin: 0,\n            max: 100,\n        },\n        caption: {\n            ...commonHorizontalBarChartOptions(view, locale, options).caption,\n            y: 30\n        },\n        legend: { enabled: false },\n        plotOptions: {\n            series: {\n                dataLabels: {\n                    ...commonDatalabelsOptions(view, locale)\n                }\n            }\n        }\n    };\n}","import { Options } from 'highcharts';\nimport { View } from \"../types/view\";\nimport { getLegendLabelShorteningFunction } from './Utility/formatters';\nimport { getTimeSeriesOptions } from './Utility/timeIntervals';\nimport { commonBasicVerticalBarChartOptions, commonDatalabelsOptions, commonLegendStyleOptions } from './chartOptions';\nimport { IChartOptions } from '../types/chartOptions';\n\nexport const groupVerticalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonBasicVerticalBarChartOptions(view, locale, options),\n        plotOptions: {\n            series: {\n                ...getTimeSeriesOptions(view.visualizationSettings.timeVariableIntervals, view.visualizationSettings.timeSeriesStartingPoint),\n                dataLabels: {\n                    ...commonDatalabelsOptions(view, locale)\n                }\n            }\n        },\n        legend: {\n            ...commonLegendStyleOptions,\n            enabled: true,\n            labelFormatter: getLegendLabelShorteningFunction()\n        }\n    };\n}","import { Options } from 'highcharts';\nimport { View } from \"../types/view\";\nimport { commonHorizontalBarChartOptions, commonBasicHorizontalBarChartYAxisOptions, commonDatalabelsOptions, commonLegendStyleOptions } from './chartOptions';\nimport { buildBarChartSeries } from './Utility/seriesDataBuilder';\nimport { IChartOptions } from '../types/chartOptions';\n\nexport const groupHorizontalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonHorizontalBarChartOptions(view, locale, options),\n        series: buildBarChartSeries(view, locale, false, options?.accessibilityMode),\n        yAxis: {\n            ...commonBasicHorizontalBarChartYAxisOptions(view, locale),\n            softMin: 0,\n            softMax: 0\n        },\n        legend: {\n            ...commonLegendStyleOptions,\n            enabled: true,\n            layout: 'vertical',\n            margin: 30\n        },\n        plotOptions: {\n            series: {\n                dataLabels: {\n                    ...commonDatalabelsOptions(view, locale)\n                }\n            }\n        }\n    };\n}","import { Options } from 'highcharts';\nimport { View } from \"../types/view\";\nimport { getFormattedUnits } from './Utility/formatters';\nimport { commonStackedVerticalBarChartOptions, commonDatalabelsOptions } from './chartOptions';\nimport { getTimeSeriesOptions } from './Utility/timeIntervals';\nimport { IChartOptions } from '../types/chartOptions';\n\nexport const stackedVerticalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonStackedVerticalBarChartOptions(view, locale, options),\n        yAxis: {\n            softMin: 0,\n            softMax: 0,\n            title: {\n                text: getFormattedUnits(view.units, locale),\n            }\n        },\n        plotOptions: {\n            column: {\n                stacking: 'normal',\n            },\n            series: {\n                ...getTimeSeriesOptions(view.visualizationSettings.timeVariableIntervals, view.visualizationSettings.timeSeriesStartingPoint),\n                dataLabels: {\n                    ...commonDatalabelsOptions(view, locale)\n                }\n            }\n        }\n    };\n};","import { Options } from 'highcharts';\nimport { View } from \"../types/view\";\nimport { getFormattedUnits } from './Utility/formatters';\nimport { getLinearSumAxisTickPositionerFunction } from './Utility/tickPositioners';\nimport { commonStackedHorizontalBarChartOptions, commonDatalabelsOptions } from './chartOptions';\nimport { IChartOptions } from '../types/chartOptions';\n\nexport const stackedHorizontalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonStackedHorizontalBarChartOptions(view, locale, options),\n        yAxis: {\n            softMin: 0,\n            softMax: 0,\n            tickPositioner: getLinearSumAxisTickPositionerFunction(view.series.map(s => s.series)),\n            title: {\n                text: getFormattedUnits(view.units, locale),\n                style: {\n                    textAlign: 'center',\n                },\n                align: 'middle',\n                textAlign: \"center\",\n                y: 10,\n                x: 0,\n            }\n        },\n        plotOptions: {\n            bar: {\n                stacking: 'normal',\n            },\n            series: {\n                dataLabels: {\n                    ...commonDatalabelsOptions(view, locale)\n                }\n            }\n        }\n    };\n}","import { Options } from 'highcharts';\nimport { View } from \"../types/view\";\nimport { commonStackedVerticalBarChartOptions, commonDatalabelsOptions } from './chartOptions';\nimport { getTimeSeriesOptions } from './Utility/timeIntervals';\nimport { IChartOptions } from '../types/chartOptions';\n\nexport const percentVerticalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonStackedVerticalBarChartOptions(view, locale, options),\n        yAxis: {\n            min: 0,\n            title: {\n                text: '%',\n            }\n        },\n        plotOptions: {\n            column: {\n                stacking: 'percent'\n            },\n            series: {\n                ...getTimeSeriesOptions(view.visualizationSettings.timeVariableIntervals, view.visualizationSettings.timeSeriesStartingPoint),\n                dataLabels: {\n                    ...commonDatalabelsOptions(view, locale)\n                }\n            }\n        }\n    };\n}","import { Options } from 'highcharts';\nimport { View } from \"../types/view\";\nimport { commonStackedHorizontalBarChartOptions, commonDatalabelsOptions } from './chartOptions';\nimport { IChartOptions } from '../types/chartOptions';\n\n\nexport const percentHorizontalBarChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonStackedHorizontalBarChartOptions(view, locale, options),\n        yAxis: {\n            min: 0,\n            title: {\n                text: '%',\n                style: {\n                    textAlign: 'center',\n                },\n                align: 'middle',\n                textAlign: \"center\",\n                y: 10,\n                x: 0,\n            }\n        },\n        plotOptions: {\n            bar: {\n                stacking: 'percent',\n            },\n            series: {\n                dataLabels: {\n                    ...commonDatalabelsOptions(view, locale)\n                }\n            }\n        }\n    };\n};","import { Options } from 'highcharts';\nimport { View } from \"../types/view\";\nimport { getDataLabelShorteningFunction, getFormattedUnits } from './Utility/formatters';\nimport { commonChartOptions } from './chartOptions';\nimport { IChartOptions } from '../types/chartOptions';\nimport { buildPatternObject } from './Utility/patternFill';\n\nexport const pieChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    return {\n        ...commonChartOptions(view, locale, options),\n        chart: { type: 'pie' },\n        plotOptions: {\n            pie: {\n                dataLabels: {\n                    formatter: getDataLabelShorteningFunction(view.visualizationSettings.showDataPoints ?? false)\n                }\n            }\n        },\n        series: view.series.map(s => ({\n            animation: false,\n            type: 'pie',\n            name: s.rowNameGroup.map(n => n[locale]).join(', '),\n            data: s.series.map((data, index) => ({\n                y: data.value,\n                name: view.columnNameGroups[index].map(n => n[locale]).join(', '),\n                unit: getFormattedUnits(view.units, locale),\n                ...(options?.accessibilityMode && buildPatternObject(index)),\n                custom: { preliminary: data.preliminary, precision: data.precision }\n            }))\n        }))\n    };\n}","import { Options } from 'highcharts';\nimport { View } from \"../types/view\";\nimport { getFormattedUnits } from './Utility/formatters';\nimport { commonChartOptions, commonDatalabelsOptions, commonLegendStyleOptions, commonYAxisOptions } from './chartOptions';\nimport { IChartOptions } from '../types/chartOptions';\nimport { buildPatternObject } from './Utility/patternFill';\n\nexport const pyramidChartOptions = (view: View, locale: string, options?: IChartOptions): Options => {\n    const categories = view.columnNameGroups.map(cng => cng.map(n => n[locale]).join(', '));\n    const maxValue = Math.max(...view.series.map(s => Math.max(...s.series.map(dataCell => dataCell.value ?? 0))));\n    return {\n        ...commonChartOptions(view, locale, options),\n        chart: { type: 'bar' },\n        xAxis: {\n            categories: categories,\n            reversed: false,\n            labels: {\n                style: {\n                    width: 200\n                }\n            }\n        },\n        yAxis: {\n            ...commonYAxisOptions,\n            min: -Math.abs(maxValue),\n            max: Math.abs(maxValue),\n            title: {\n                text: getFormattedUnits(view.units, locale),\n                style: {\n                    textAlign: 'center',\n                },\n                align: 'middle',\n                textAlign: \"center\",\n                y: 10,\n                x: 0,\n            },\n            labels: {\n                formatter: function () {\n                    return Math.abs(this.value as number).toLocaleString(locale);\n                }\n            }\n        },\n        legend: {\n            ...commonLegendStyleOptions,\n            enabled: true,\n            margin: 30\n        },\n        series: view.series.map((s, i) => {\n            return ({\n                animation: false,\n                type: 'bar',\n                name: s.rowNameGroup.map(n => n[locale]).join(', '),\n                ...(options?.accessibilityMode && buildPatternObject(i)),\n                data: s.series.map((dataCell, index) => ({\n                    y: i === 0 && dataCell.value ? -dataCell.value : dataCell.value,\n                    name: view.columnNameGroups[index].map(n => n[locale]).join(', '),\n                    custom: { preliminary: dataCell.preliminary, precision: dataCell.precision }\n                }))\n            })\n        }),\n        plotOptions: {\n            series: {\n                stacking: 'normal',\n                dataLabels: {\n                    ...commonDatalabelsOptions(view, locale)\n                }\n            }\n        },\n        exporting: {\n            enabled: false\n        }\n    };\n}","import { EVariableType, IVariableMeta } from \"../types/queryVisualizationResponse\";\nimport { TVariableSelections } from \"../types/variableSelections\";\n\ntype TNullableVariableSelections = TVariableSelections | null | undefined;\n\nexport const extractSelectableVariableValues = (selectableVariableCodes: string[], metaData: IVariableMeta[], defaultSelectableVariableCodes: TNullableVariableSelections, selectedValueCodes: TNullableVariableSelections) => {\n    if (selectableVariableCodes.length === 0) {\n        return {};\n    }\n\n    let selectableVariableCodesCheckList = selectableVariableCodes;\n    let currentSelectableVariableValues: { [key: string]: string[] } = {};\n\n    if (selectedValueCodes) {\n        const { parsedValues, updatedArray } = parseSelected(selectableVariableCodesCheckList, selectedValueCodes);\n        selectableVariableCodesCheckList = updatedArray;\n        currentSelectableVariableValues = {...currentSelectableVariableValues, ...parsedValues};\n        if (selectableVariableCodesCheckList.length === 0) {\n            return currentSelectableVariableValues;\n        }\n    }\n\n    if (defaultSelectableVariableCodes) {\n        const { parsedValues, updatedArray } = parseDefault(selectableVariableCodesCheckList, defaultSelectableVariableCodes);\n        selectableVariableCodesCheckList = updatedArray;\n        currentSelectableVariableValues = {...currentSelectableVariableValues, ...parsedValues};\n        if (selectableVariableCodesCheckList.length === 0) {\n            return currentSelectableVariableValues;\n        }\n    }\n\n    selectableVariableCodesCheckList.forEach((variableCode) => {\n        const variableIndex = metaData.findIndex(metaDataObject => metaDataObject.code === variableCode);\n        if (variableIndex > -1) {\n            if (metaData[variableIndex].type === EVariableType.Time) {\n                currentSelectableVariableValues[variableCode] = [metaData[variableIndex].values[metaData[variableIndex].values.length - 1].code];\n            } else {\n                currentSelectableVariableValues[variableCode] = [metaData[variableIndex].values[0].code];\n            }\n        }\n    });\n\n    return currentSelectableVariableValues;\n}\n\nconst parseSelected = (selectableVariableCodesCheckList: string[], selectedValueCodes: TVariableSelections) => {\n    const selectedVariables = Object.keys(selectedValueCodes);\n    const parsedValues: { [key: string]: string[] } = {};\n    const updatedArray = selectableVariableCodesCheckList.map((code) => {\n        const variableIndex = selectedVariables.findIndex(variableCode => variableCode === code);\n        if (variableIndex > -1) {\n            if (selectedValueCodes[code].length > 0) {\n                parsedValues[code] = selectedValueCodes[code];\n                return '';\n            } else {\n                return code;\n            }\n        } else {\n            return code;\n        }\n    }).filter(element => element.length > 0);\n\n    return {parsedValues, updatedArray};\n};\n\nconst parseDefault = (selectableVariableCodesCheckList: string[], defaultSelectableVariableCodes: TVariableSelections) => {\n    const defaultVariables = Object.keys(defaultSelectableVariableCodes);\n    const parsedValues: { [key: string]: string[] } = {};\n    const updatedArray = selectableVariableCodesCheckList.map((code) => {\n            const variableIndex = defaultVariables.findIndex(variableCode => variableCode === code);\n            if (variableIndex > -1) {\n                parsedValues[code] = defaultSelectableVariableCodes[defaultVariables[variableIndex]];\n                return '';\n            } else {\n                return code;\n            }\n        }).filter(element => element.length > 0);\n\n    return {parsedValues, updatedArray};\n};","import { IDataCell, IDataSeries, View } from \"../types/view\";\n\nexport const ASCENDING = 'ascending';\nexport const DESCENDING = 'descending';\nexport const SUM = 'sum';\nexport const NO_SORTING = 'no_sorting';\nexport const REVERSED = 'reversed';\n\nexport const ASCENDING_SORTING_FUNC = (a : IDataCell, b: IDataCell) => (a.value ?? 0) - (b.value ?? 0);\nexport const DESCENDING_SORTING_FUNC = (a: IDataCell, b: IDataCell) => (b.value ?? 0) - (a.value ?? 0);\n\nexport function sortViewBasedOnSeries(view: View, referenceSeriesIndex: number, sortingFunc: (a: IDataCell, b: IDataCell) => number) : View {\n    const sortedView = reorderView(view, view.series[referenceSeriesIndex].series, sortingFunc);\n    return raiseReferenceSeriesToFirst(sortedView, referenceSeriesIndex);\n}\n\nexport function sortViewBasedOnSeriesRelative(originalWiew: View, relativeView: View, referenceSeriesIndex: number, sortingFunc: (a: IDataCell, b: IDataCell) => number) : View {\n    const sortedView = reorderView(originalWiew, relativeView.series[referenceSeriesIndex].series, sortingFunc);\n    return raiseReferenceSeriesToFirst(sortedView, referenceSeriesIndex);\n}\n\nexport function sortViewBasedOnSum(view: View, sortingFunc: (a: IDataCell, b: IDataCell) => number) {\n    const sumArray: IDataCell[] = view.columnNameGroups\n        .map((_, i) => {\n            return {\n                value: view.series\n                    .map(s => s.series[i])\n                    .reduce((accum: number, item: IDataCell) => accum + (item.value ?? 0), 0),\n                // these are just to complete the type, they are not used\n                precision: 0,\n                preliminary: false\n            };\n        });\n    return reorderView(view, sumArray, sortingFunc);\n}\n\nexport function reverseViewOrder(view: View) {\n    const reversedSeries = [...view.series].reverse().map(s => ({\n        ...s,\n        series: [...s.series].reverse(),\n        rowNameGroup: [...s.rowNameGroup].reverse()\n    }));\n\n    return {\n        ...view,\n        series: reversedSeries,\n        columnNameGroups: [...view.columnNameGroups].reverse()\n    };\n}\n\nfunction get1DSortingIndexBuffer(series: IDataCell[], sortingFunc: (a: IDataCell, b: IDataCell) => number): number[] {\n    const indices = [...Array(series.length).keys()];\n    indices.sort((a, b) => sortingFunc(series[a], series[b]));\n    return indices;\n}\n\nfunction reorderSeriesBasedOnIndexBuffer(series: IDataSeries, indexBuffer: number[]) : IDataSeries {\n    return {\n        ...series,\n        series: indexBuffer.map(i => series.series[i])\n    };\n}\n\nfunction reorderView(view: View, sortingSeries: IDataCell[], sortingFunc: (a: IDataCell, b: IDataCell) => number) : View {\n    const sortingIndices = get1DSortingIndexBuffer(sortingSeries, sortingFunc);\n    const columnNameGroups = sortingIndices.map(i => view.columnNameGroups[i]);\n    const series = view.series.map(s => reorderSeriesBasedOnIndexBuffer(s, sortingIndices));\n\n    return {\n        ...view,\n        columnNameGroups,\n        series\n    };\n}\n\nfunction raiseReferenceSeriesToFirst(view: View, referenceSeriesIndex: number) : View\n{\n    const reorderedSeriesArray = [];\n    reorderedSeriesArray.push(view.series[referenceSeriesIndex]);\n    view.series.forEach((series, index) => {\n        if(index !== referenceSeriesIndex) reorderedSeriesArray.push(series)\n    });\n    return {...view, series: reorderedSeriesArray };\n}\n","import { IVariableMeta, IVariableValueMeta } from \"../types/queryVisualizationResponse\";\nimport { TVariableSelections } from \"../types/variableSelections\";\n\nexport function getValuesForVariableInView(variable: IVariableMeta, selectedValueCodes: TVariableSelections): IVariableValueMeta[] {\n    if (Object.keys(selectedValueCodes).includes(variable.code)) {\n        const values: IVariableValueMeta[] = variable.values.filter(v => selectedValueCodes[variable.code].includes(v.code));\n        if (values.length === 0) throw new Error(\"Provided selected value code can not be found from the metadata\");\n        return values;\n    } else {\n        return variable.values;\n    }\n}\n\nexport function sortVariables(variables: IVariableMeta[], codes: string[]): IVariableMeta[] {\n    let sorted: IVariableMeta[] = [];\n    for (const code of codes) {\n        const variable = variables.find(v => v.code === code);\n        if (variable) {\n            sorted.push(variable);\n        }\n    }\n    return sorted;\n}","import { IQueryVisualizationResponse } from \"../types\";\nimport { EVariableType, IVariableMeta, IVariableValueMeta, TMultiLanguageString } from \"../types/queryVisualizationResponse\";\nimport { TVariableSelections } from \"../types/variableSelections\";\nimport { IDataCell, IDataSeries } from \"../types/view\";\nimport { getValuesForVariableInView, sortVariables } from \"./seriesBuilderUtilities\";\nimport { cartesianProduct } from \"./utilityFunctions\";\n\nexport class SeriesBuilder {\n    public dataIndex: number;\n    public dataLength: number;\n\n    private readonly responseObj: IQueryVisualizationResponse;\n    private readonly coordinates: number[][];\n    private readonly lastIndices: number[];\n    private readonly indices: number[];\n    private readonly variableOrder: number[];\n    private readonly lastCoordinateIndex: number;\n    private readonly reverseCumulativeProducts: number[];\n    private readonly selectedViewContentVariableIndex: number;\n    private readonly selectedViewTimeVariableIndex: number;\n    private readonly selectedViewMeta: IVariableMeta[];\n\n    private rowLength: number = 0;\n    private rowAmount: number = 0;\n\n    constructor(responseObj: IQueryVisualizationResponse, selectedValueCodes: TVariableSelections) {\n        this.responseObj = responseObj;\n        const completeMap: IVariableMeta[] = responseObj.metaData;\n        const variableSizes: number[] = completeMap.map(v => v.values.length);\n        this.selectedViewMeta = this.getSelectedView(responseObj, selectedValueCodes);\n        this.coordinates = Array.from({ length: this.selectedViewMeta.length }, () => []);\n        this.variableOrder = this.getVariableOrder();\n        this.initializeCoordinates(completeMap);\n        this.selectedViewContentVariableIndex = this.selectedViewMeta.findIndex(v => v.type === EVariableType.Content);\n        this.selectedViewTimeVariableIndex = this.selectedViewMeta.findIndex(v => v.type === EVariableType.Time);\n        this.indices = Array.from({ length: completeMap.length }, () => 0);\n        this.lastIndices = this.selectedViewMeta.map(v => v.values.length - 1);\n        this.lastCoordinateIndex = this.coordinates.length - 1;\n        this.reverseCumulativeProducts = this.generateRCP(variableSizes);\n        this.dataLength = this.selectedViewMeta.map(v => v.values.length).reduce((acc, val) => acc * val, 1);\n        this.dataIndex = 0;\n        this.setCurrentIndex();\n    }\n\n    private initializeCoordinates(completeMap: IVariableMeta[]): void {\n        for (let targetIndex = 0; targetIndex < this.selectedViewMeta.length; targetIndex++) {\n            const variableIndex: number = this.variableOrder[targetIndex];\n            const targetVariableCode: string = this.selectedViewMeta[targetIndex].code;\n            const values: IVariableValueMeta[] = completeMap.find(v => v.code === targetVariableCode)?.values as IVariableValueMeta[];\n            const targetVariable: IVariableMeta = this.selectedViewMeta.find(v => v.code === targetVariableCode) as IVariableMeta;\n            this.coordinates[variableIndex] = targetVariable.values.map(tv => values.indexOf(tv));\n        }\n    }\n\n    public getViewSeries(): IDataSeries[] {\n        let rowIndex = 0;\n        let currentSeries: IDataCell[] = [];\n        const viewSeries: IDataSeries[] = [];\n        do {\n            const dataCell: IDataCell = this.createDataCell();\n            currentSeries.push(dataCell);\n            rowIndex++;\n            if (rowIndex >= this.rowLength) {\n                viewSeries.push({ rowNameGroup: this.generateRowNameGroup(), series: currentSeries });\n                currentSeries = [];\n                rowIndex = 0;\n            }\n        } while (this.next());\n\n        return viewSeries;\n    }\n\n    generateRowNameGroup(): TMultiLanguageString[] {\n        return this.selectedViewMeta.slice(0, this.rowAmount).map((rowVariable, index) => {\n            return rowVariable.values[this.indices[this.variableOrder[index]]].name\n        });\n    }\n\n    next(): boolean {\n        for (let i = this.lastCoordinateIndex; i >= 0; i--) {\n            const variableIndex: number = this.variableOrder[i];\n            if (this.indices[variableIndex] < this.lastIndices[i]) {\n                this.indices[variableIndex]++;\n                this.setCurrentIndex();\n                return true;\n            }\n            else {\n                this.indices[variableIndex] = 0;\n            }\n        }\n        return false;\n    }\n\n    createDataCell(): IDataCell {\n        const timeVal: IVariableValueMeta | undefined = this.getCurrentTimeValue();\n        const dataCell: IDataCell = {\n            value: this.responseObj.data[this.dataIndex],\n            precision: this.selectedViewMeta[this.selectedViewContentVariableIndex]\n                .values[this.indices[this.variableOrder[this.selectedViewContentVariableIndex]]]\n                .contentComponent?.numberOfDecimals ?? 0,\n            preliminary: timeVal ? Object.values(timeVal.name)[0].trim().endsWith('*') : false\n        };\n        if (!dataCell.value) dataCell.missingCode = this.responseObj.missingDataInfo[this.dataIndex];\n        return dataCell;\n    }\n\n    getSelectedView(responseObj: IQueryVisualizationResponse, selectedValueCodes: TVariableSelections): IVariableMeta[] {\n        const filteredVariables: IVariableMeta[] = responseObj.metaData.map((variable) => {\n            return { ...variable, values: getValuesForVariableInView(variable, selectedValueCodes) }\n        });\n        const rowVariables: IVariableMeta[] = sortVariables(filteredVariables.filter(v => responseObj.rowVariableCodes.includes(v.code) && v.values.length > 1), responseObj.rowVariableCodes);\n        const columnVariables: IVariableMeta[] = sortVariables(filteredVariables.filter(v => responseObj.columnVariableCodes.includes(v.code) && v.values.length > 1), responseObj.columnVariableCodes);\n        const selectableVariables: IVariableMeta[] = sortVariables(filteredVariables.filter(v => responseObj.selectableVariableCodes.includes(v.code)), responseObj.selectableVariableCodes);\n        const directionlessMultiselectVariables: IVariableMeta[] = selectableVariables.filter(v => v.values.length > 1 && !rowVariables.some(rv => rv.code == v.code) && !columnVariables.some(cv => cv.code == v.code));\n        const singleSelectedVariables: IVariableMeta[] = selectableVariables.filter(v => v.values.length == 1);\n        const unassignedVariables: IVariableMeta[] = filteredVariables.filter(v => !rowVariables.some(rv => rv.code == v.code) && !columnVariables.some(cv => cv.code == v.code) && !selectableVariables.some(sv => sv.code == v.code));\n        const targetMap: IVariableMeta[] = [\n            ...directionlessMultiselectVariables,\n            ...rowVariables,\n            ...columnVariables,\n            ...singleSelectedVariables,\n            ...unassignedVariables];\n        this.rowLength = cartesianProduct(filteredVariables.filter(v => responseObj.columnVariableCodes.includes(v.code)).map(v => v.values)).length;\n        this.rowAmount = rowVariables.length + directionlessMultiselectVariables.length;\n        return targetMap;\n    }\n\n    getVariableOrder(): number[] {\n        const sourceCodes: string[] = this.responseObj.metaData.map(v => v.code);\n        const codes = this.selectedViewMeta.map(v => sourceCodes.indexOf(v.code));\n        return codes;\n    }\n\n    generateRCP(variableSizes: number[]): number[] {\n        const cnt: number[] = Array.from({ length: variableSizes.length });\n        let cumulativeMultiplier: number = 1;\n        for (let i = variableSizes.length - 1; i >= 0; i--) {\n            cnt[i] = cumulativeMultiplier;\n            cumulativeMultiplier *= variableSizes[i];\n        }\n        return cnt;\n    }\n\n    setCurrentIndex() {\n        this.dataIndex = 0;\n        for (let i = 0; i <= this.lastCoordinateIndex; i++) {\n            const variableIndex: number = this.variableOrder[i];\n            this.dataIndex += this.reverseCumulativeProducts[variableIndex] * this.coordinates[variableIndex][this.indices[variableIndex]];\n        }\n    }\n\n    getCurrentTimeValue(): IVariableValueMeta | undefined {\n        if (this.selectedViewTimeVariableIndex == -1) {\n            return undefined;\n        }\n        return this.selectedViewMeta[this.selectedViewTimeVariableIndex]\n            .values[this.indices[this.variableOrder[this.selectedViewTimeVariableIndex]]];\n    }\n}","import { IQueryVisualizationResponse } from \"../types\";\nimport { EVariableType, EVisualizationType, IContentComponent, IVariableMeta, IVariableValueMeta, TMultiLanguageString } from \"../types/queryVisualizationResponse\";\nimport { ESeriesType, IDataCell, IDataSeries, IUnitInfo, TValueSelectionAmounts, View } from \"../types/view\";\nimport { ASCENDING, ASCENDING_SORTING_FUNC, DESCENDING, DESCENDING_SORTING_FUNC, NO_SORTING, SUM, REVERSED, sortViewBasedOnSeries, sortViewBasedOnSeriesRelative, sortViewBasedOnSum, reverseViewOrder } from \"./viewSorting\";\nimport { cartesianProduct, onlyUnique } from \"./utilityFunctions\";\nimport { TVariableSelections } from \"../types/variableSelections\";\nimport { Translations } from \"./translations\";\nimport { SeriesBuilder } from \"./seriesBuilder\";\nimport { getValuesForVariableInView, sortVariables } from \"./seriesBuilderUtilities\";\n\nexport function convertPxGrafResponseToView(\n    responseObj: IQueryVisualizationResponse, selectedValueCodes: TVariableSelections\n): View {\n    const view: View = convert(responseObj, selectedValueCodes, getValueSelectAmounts(selectedValueCodes));\n\n    const isRelativeChart =\n        view.visualizationSettings?.visualizationType === EVisualizationType.PercentHorizontalBarChart\n        || view.visualizationSettings?.visualizationType === EVisualizationType.PercentVerticalBarChart;\n\n    switch (responseObj.visualizationSettings?.sorting) {\n        case null: return view;\n        case undefined: return view;\n        case NO_SORTING: return view;\n        case REVERSED: return reverseViewOrder(view);\n        case SUM: return sortViewBasedOnSum(view, DESCENDING_SORTING_FUNC);\n        case ASCENDING: return sortViewBasedOnSeries(view, 0, ASCENDING_SORTING_FUNC);\n        case DESCENDING: return sortViewBasedOnSeries(view, 0, DESCENDING_SORTING_FUNC);\n        default:\n            if (isRelativeChart) return sortViewBasedOnSeriesRelative(view, convertToRelative(view), getSortingIndex(responseObj), DESCENDING_SORTING_FUNC);\n            else return sortViewBasedOnSeries(view, getSortingIndex(responseObj), DESCENDING_SORTING_FUNC);\n    };\n}\n\nexport function convertToRelative(input: View): View {\n    const newSeries = input.series.map(s => ({\n        ...s,\n        series: s.series.map((dataCell, index) => {\n            const sum = input.series.reduce((sum, series) => sum + (series.series[index].value ?? 0), 0);\n            const value = (!sum || sum === 0) ? null : Math.round((100 * (dataCell.value ?? 0) / sum) * 10) / 10;\n            const newCell: IDataCell = { value, precision: 1, preliminary: dataCell.preliminary };\n            if (value === null) newCell.missingCode = dataCell.missingCode;\n            return newCell;\n        }),\n    }));\n\n    const convertUnit = (unit: TMultiLanguageString) => {\n        return Object.keys(unit).reduce((acc: TMultiLanguageString, lang: string) => {\n            acc[lang] = '%';\n            return acc;\n        }, {})\n    };\n\n    return {...input, units: input.units.map(u => ({name: u.name, unit: convertUnit(u.unit) })) , series: newSeries};\n}\n\nfunction getValueSelectAmounts(selectedValueCodes: TVariableSelections): TValueSelectionAmounts {\n    const result: TValueSelectionAmounts = {};\n    Object.entries(selectedValueCodes).forEach(([key, value]) => result[key] = value.length);\n    return result;\n}\n\nfunction convert(responseObj: IQueryVisualizationResponse, selectedValueCodes: TVariableSelections, selectedValueAmounts: TValueSelectionAmounts): View {\n    const { metaData, selectableVariableCodes } = responseObj;\n    const selectableVariables = getSelectableVariables(metaData, selectableVariableCodes);\n    const contentVar = getContentVariable(metaData);\n    const unsortedSeries = buildSeries(responseObj, selectedValueCodes);\n    // Row variable names are derived from both directionless multiselected selectable and row variables\n    const directionlessMultiselectVarNames = responseObj.selectableVariableCodes.filter(code =>\n        selectedValueAmounts[code] > 1 &&\n        !responseObj.rowVariableCodes.includes(code) &&\n        !responseObj.columnVariableCodes.includes(code));\n    const rowVarNames = getVariableNames(directionlessMultiselectVarNames, metaData)\n        .concat(getVariableNames(responseObj.rowVariableCodes, responseObj.metaData));\n\n    const lastUpdated = getLastUpdated(contentVar, selectedValueCodes);\n\n    return {\n        header: responseObj.header,\n        tableReferenceName: responseObj.tableReference.name,\n        subheaderValues: getSubheaderValues(selectableVariables, selectedValueCodes, selectedValueAmounts),\n        units: getUnitInformation(contentVar, selectedValueCodes),\n        sources: getContentProperty(contentVar, selectedValueCodes, (cc) => cc?.source ?? Translations.empty),\n        lastUpdated: lastUpdated,\n        columnNameGroups: unsortedSeries.columnNameGroups,\n        series: unsortedSeries.series,\n        rowVarNames: rowVarNames,\n        colVarNames: getVariableNames(responseObj.columnVariableCodes, responseObj.metaData),\n        selectableVarNames: getVariableNames(responseObj.selectableVariableCodes, responseObj.metaData),\n        visualizationSettings: responseObj.visualizationSettings,\n        seriesType: getSeriesType(responseObj.columnVariableCodes, responseObj.metaData)\n    };\n}\n\nexport function buildSeries(responseObj: IQueryVisualizationResponse, selectedValueCodes: TVariableSelections): { columnNameGroups: TMultiLanguageString[][], series: IDataSeries[] } {\n    const seriesBuilder: SeriesBuilder = new SeriesBuilder(responseObj, selectedValueCodes);\n    const viewSeries: IDataSeries[] = seriesBuilder.getViewSeries();\n    const columnVarValues: IVariableValueMeta[][] = sortVariables(responseObj.metaData\n        .filter(vm => responseObj.columnVariableCodes.includes(vm.code))\n        .filter(vm => vm.values.length > 1), responseObj.columnVariableCodes)\n        .map(vm => getValuesForVariableInView(vm, selectedValueCodes));\n    const cartesianColumnVarValues: IVariableValueMeta[][] = cartesianProduct(columnVarValues);\n    return {\n        columnNameGroups: cartesianColumnVarValues.map(columnVarValueGroup => columnVarValueGroup.map(value => value.name)),\n        series: viewSeries\n    };\n}\n\n/**\n * Get the last updated date from the content variable values.\n * @param contentVar Content variable metadata\n * @param selectedValueCodes Selected selectable value codes if any\n * @returns Last updated date as a string, or undefined if no valid dates are found\n */\nexport function getLastUpdated(\n    contentVar: IVariableMeta,\n    selectedValueCodes: TVariableSelections\n): string | undefined {\n    let dates: (string | undefined)[];\n\n    if (contentVar.code in selectedValueCodes) {\n        dates = contentVar.values\n            .filter(v => selectedValueCodes[contentVar.code].includes(v.code))\n            .map(cvv => cvv.contentComponent?.lastUpdated)\n            .filter((value, index, array) => onlyUnique(value, index, array));\n    } else {\n        dates = contentVar.values\n            .map(cvv => cvv.contentComponent?.lastUpdated)\n            .filter((value, index, array) => onlyUnique(value, index, array));\n    }\n\n    // Filter out undefined values and get the most recent date\n    const validDates = dates.filter((date): date is string => date !== undefined);\n\n    if (validDates.length === 0) {\n        return undefined;\n    }\n\n    if (validDates.length === 1) {\n        return validDates[0];\n    }\n\n    // Find the most recent date\n    const dateObjects = validDates.map(dateStr => new Date(dateStr));\n    const latestIndex = dateObjects.reduce((latestIdx, currentDate, currentIdx, arr) => {\n        return currentDate > arr[latestIdx] ? currentIdx : latestIdx;\n    }, 0);\n    return validDates[latestIndex];\n}\n\nfunction getVariableNames(varCodes: string[], meta: IVariableMeta[]): TMultiLanguageString[] {\n    return varCodes.reduce((acc: TMultiLanguageString[], code: string) => {\n        const name = meta.find(v => v.code === code)?.name;\n        if (name) acc.push(name);\n        return acc;\n    }, [])\n}\n\nfunction getSelectableVariables(metaData: IVariableMeta[], selectableVariableCodes: string[]): IVariableMeta[] {\n    return metaData.filter(varMeta => selectableVariableCodes.includes(varMeta.code));\n}\n\nfunction getSortingIndex(responseObj: IQueryVisualizationResponse): number {\n    const sortingVar = responseObj.metaData.find(v => v.code == responseObj.rowVariableCodes[0]);\n    const valIndex = sortingVar?.values.findIndex(v => v.code === responseObj.visualizationSettings?.sorting);\n    return (!valIndex || valIndex < 0) ? 0 : valIndex;\n}\n\nfunction getContentVariable(varMeta: IVariableMeta[]): IVariableMeta {\n    const contentVar = varMeta.find(v => v.type === EVariableType.Content);\n    if (contentVar) return contentVar;\n    else throw new Error('Content variable is not defined');\n}\n\nfunction getSubheaderValues(selectableVariables: IVariableMeta[], selectedValueCodes: TVariableSelections, selectedValueAmounts: TValueSelectionAmounts): TMultiLanguageString[] {\n    const subheaderValues: TMultiLanguageString[] = [];\n    selectableVariables.forEach(selectableVariable => {\n        // We only want to show the value name if there is exactly one selected.\n        if (selectedValueAmounts[selectableVariable.code] == 1) {\n            // Find the value whose code matches selected value code for this variable and add it to subheaderValues\n            subheaderValues.push(selectableVariable.values.find(v => v.code === selectedValueCodes[selectableVariable.code][0])?.name ?? {})\n        }\n    });\n    return subheaderValues;\n}\n\nfunction getUnitInformation(contentVar: IVariableMeta, selectedValueCodes: TVariableSelections): IUnitInfo[] {\n    const values = contentVar.code in selectedValueCodes\n        ? contentVar.values.filter(v => selectedValueCodes[contentVar.code].includes(v.code))\n        : contentVar.values\n\n    return values.reduce((accum: IUnitInfo[], valMeta: IVariableValueMeta) => {\n        if(valMeta.contentComponent) accum.push({\n            name: valMeta.name,\n            unit: valMeta.contentComponent.unit\n        });\n        return accum;\n    }, []);\n}\n\nfunction getContentProperty(\n    contentVar: IVariableMeta,\n    selectedValueCodes: TVariableSelections,\n    extractorFunc: (cc: IContentComponent | null) => TMultiLanguageString\n): TMultiLanguageString[] {\n    if (contentVar.code in selectedValueCodes) {\n        return contentVar.values\n            .filter(v => selectedValueCodes[contentVar.code].includes(v.code))\n            .map(cvv => extractorFunc(cvv.contentComponent))\n            .filter((value, index, array) => onlyUnique(value, index, array));\n    } else {\n        return contentVar.values.map(cvv => extractorFunc(cvv.contentComponent)).filter((value, index, array) => onlyUnique(value, index, array));\n    }\n}\n\nfunction getSeriesType(varCodes: string[], meta: IVariableMeta[]) {\n    if (varCodes.length > 1 || varCodes.length === 0) {\n        return ESeriesType.Nominal;\n    }\n\n    const metaDataType = meta.find(v => v.code === varCodes[0])?.type;\n\n    switch (metaDataType) {\n        case EVariableType.Time:\n            return ESeriesType.Time;\n        case EVariableType.Ordinal:\n            return ESeriesType.Ordinal;\n        default:\n            return ESeriesType.Nominal;\n    }\n}","import { getAxisLabelFormatterFunction } from \"../chartOptions/Utility/formatters\";\nimport { Translations, ArrayTranslations } from \"../conversion/translations\";\nimport { defaultColors } from \"./defaultColors\";\n\nexport const defaultTheme: (locale: string, fontFamily?: string) => Highcharts.Options = (locale, fontFamily) => ({\n    accessibility: {\n        keyboardNavigation: {\n            seriesNavigation: {\n                mode: 'serialize'\n            }\n        }\n    },\n    responsive: {\n        rules: [\n            {\n                condition: {\n                    maxHeight: 600\n                },\n                chartOptions: {\n                    chart: {\n                        height: 600,\n                    }\n                }\n            }\n        ]\n    },\n    exporting: {\n        enabled: false,\n        fallbackToExportServer: false,\n        allowHTML: false,\n        chartOptions: {\n            // Setting fontFamily prevents Highcharts 12.4+ from inlining web fonts in SVG exports,\n            // which was causing extremely large file sizes (1000x larger than before)\n            chart: {\n                style: {\n                    fontFamily: fontFamily || '\"Barlow Semi Condensed\", Verdana, sans-serif'\n                } as any // Type assertion to work around Highcharts typing limitation\n            }\n        }\n    },\n    lang: {\n        accessibility: {\n            thousandsSep: Translations.thousandsSepAccessibility[locale],\n            credits: Translations.credits[locale],\n            caption: Translations.credits[locale],\n            chartTypes: {\n                barMultiple: Translations.barMultiple[locale],\n                barSingle: Translations.barSingle[locale],\n                columnMultiple: Translations.columnMultiple[locale],\n                columnSingle: Translations.columnSingle[locale],\n                lineSingle: Translations.lineSingle[locale],\n                lineMultiple: Translations.lineMultiple[locale],\n                pieSingle: Translations.pieSingle[locale],\n                scatterSingle: Translations.scatterSingle[locale],\n                scatterMultiple: Translations.scatterMultiple[locale],\n                defaultSingle: Translations.defaultSingle[locale],\n                defaultMultiple: Translations.defaultMultiple[locale]\n            },\n            defaultChartTitle: Translations.defaultChartTitle[locale],\n            exporting: {\n                chartMenuLabel: Translations.chartMenuLabel[locale],\n                menuButtonLabel: Translations.menuButtonLabel[locale]\n            },\n            legend: {\n                legendItem: Translations.legendItem[locale],\n                legendLabel: Translations.legendLabel[locale],\n                legendLabelNoTitle: Translations.legendLabelNoTitle[locale]\n            },\n            axis: {\n                rangeCategories: Translations.rangeCategories[locale],\n                rangeFromTo: Translations.rangeFromTo[locale],\n                timeRangeDays: Translations.timeRangeDays[locale],\n                timeRangeHours: Translations.timeRangeHours[locale],\n                timeRangeMinutes: Translations.timeRangeMinutes[locale],\n                timeRangeSeconds: Translations.timeRangeSeconds[locale],\n                xAxisDescriptionPlural: Translations.xAxisDescriptionPlural[locale],\n                xAxisDescriptionSingular: Translations.xAxisDescriptionSingular[locale],\n                yAxisDescriptionPlural: Translations.yAxisDescriptionPlural[locale],\n                yAxisDescriptionSingular: Translations.yAxisDescriptionSingular[locale]\n            },\n            series: {\n                summary: {\n                    bar: Translations.seriesSummaryBar[locale],\n                    barCombination: Translations.seriesSummaryBarCombination[locale],\n                    column: Translations.seriesSummaryColumn[locale],\n                    columnCombination: Translations.seriesSummaryColumnCombination[locale],\n                    default: Translations.seriesSummaryDefault[locale],\n                    defaultCombination: Translations.seriesSummaryDefaultCombination[locale],\n                    line: Translations.seriesSummaryLine[locale],\n                    lineCombination: Translations.seriesSummaryLineCombination[locale],\n                    pie: Translations.seriesSummaryPie[locale],\n                    pieCombination: Translations.seriesSummaryPieCombination[locale],\n                    scatter: Translations.seriesSummaryScatter[locale],\n                    scatterCombination: Translations.seriesSummaryScatterCombination[locale]\n                },\n                xAxisDescription: Translations.xAxisDescription[locale],\n                yAxisDescription: Translations.yAxisDescription[locale]\n            },\n            screenReaderSection: {\n                endOfChartMarker: Translations.endOfChartMarker[locale]\n            },\n            chartContainerLabel: Translations.chartContainerLabel[locale]\n        },\n        thousandsSep: Translations.thousandsSep[locale],\n        decimalPoint: Translations.decimalPoint[locale],\n        contextButtonTitle: Translations.contextButtonTitle[locale],\n        downloadCSV: Translations.downloadCSV[locale],\n        downloadPNG: Translations.downloadPNG[locale],\n        downloadSVG: Translations.downloadSVG[locale],\n        months: ArrayTranslations.months[locale],\n        shortMonths: ArrayTranslations.shortMonths[locale],\n        weekdays: ArrayTranslations.weekdays[locale],\n        loading: Translations.loading[locale],\n        numericSymbols: null as any // null is not accepted even though it works as disabling the symbols, any as a workaround\n    },\n    colors: defaultColors, // chart series default colors\n    chart: {\n        style: {\n            fontFamily: fontFamily ?? '\"Barlow Semi Condensed\", Verdana, sans-serif'\n        },\n        spacingLeft: 20, // for tilted labels to fit in the x axis with ellipsis overflow\n        height: (9 / 16 * 100) + '%'\n    },\n    tooltip: {\n        enabled: true,\n        headerFormat: '{point.key}<br/>',\n        pointFormat: '{point.y}',\n        backgroundColor: '#ffffff',\n        outside: true,\n        style: {\n            color: '#000',\n            fontSize: '1rem',\n            fontWeight: '400',\n        }\n    },\n    title: {\n        useHTML: true, // HTML needs to be enabled for the title width to be restricted\n        style: {\n            color: '#000',\n            fontSize: '1.25rem',\n            fontWeight: '500',\n            textAlign: 'left',\n            maxWidth: 'calc(100% - 4rem)', // Restrict the width to leave space for the BurgerMenu\n            whiteSpace: 'normal', // Allow wrapping\n        },\n        align: 'left',\n        margin: 45,\n        minScale: 1,\n    },\n    subtitle: {\n        style: {\n            color: '#000',\n            fontSize: '1.25rem',\n            fontWeight: '400',\n        },\n        align: 'left',\n    },\n    caption: {\n        position: {\n            align: \"left\",\n            x: 5\n        },\n        style: {\n            color: '#000',\n            fontSize: '1rem',\n            fontWeight: '400',\n            textAlign: 'left',\n            cursor: 'default'\n        },\n        href: ''\n    },\n    yAxis: {\n        title: {\n            style: {\n                color: '#000',\n                fontSize: '1rem',\n                fontWeight: '400',\n                left: 0,\n                textAlign: 'left',\n                textOverflow: 'ellipsis'\n            },\n            align: 'high',\n            rotation: 0,\n            textAlign: \"left\",\n            offset: 0,\n            y: -15,\n            x: 55,\n            reserveSpace: false\n        },\n        lineColor: '#000',\n        lineWidth: 1,\n        gridLineColor: 'hsl(0, 0%, 35%)',\n        gridLineWidth: 0.5,\n        labels: {\n            style: {\n                color: '#000',\n                fontSize: '1rem',\n                fontWeight: '400',\n            },\n            autoRotation: [0],\n            allowOverlap: false,\n            formatter: getAxisLabelFormatterFunction(locale)\n        },\n    },\n    xAxis: {\n        labels: {\n            style: {\n                color: '#000',\n                fontSize: '1rem',\n                fontWeight: '400'\n            },\n            allowOverlap: false,\n            autoRotation: [0]\n        },\n        title: {\n            style: {\n                color: '#000',\n                fontSize: '1rem',\n                fontWeight: '400',\n            }\n        },\n        lineColor: '#000',\n        lineWidth: 1,\n        crosshair: true\n    },\n    legend: {\n        enabled: false,\n        itemStyle: {\n            fontSize: '1rem',\n            fontWeight: '400',\n            color: '#000'\n        },\n        align: \"center\"\n    },\n    plotOptions: {\n        pie: {\n            dataLabels: {\n                enabled: true,\n                useHTML: true,\n                connectorShape: 'crookedLine',\n                connectorColor: '#000000',\n                style: {\n                    fontSize: '1rem',\n                    fontWeight: '400',\n                    color: '#000',\n                    textOverflow: 'crop'\n                }\n            }\n        },\n        column: {\n            groupPadding: 0.2,\n            pointPadding: 0.01,\n            borderRadius: 0,\n            borderWidth: 0\n        },\n        bar: {\n            groupPadding: 0.2,\n            pointPadding: 0.01,\n            borderRadius: 0,\n            borderWidth: 0\n        },\n        series: {\n            animation : false\n        }\n    }\n});","import { getFormattedUnits, getFormattedLastUpdatedText } from \"../chartOptions/Utility/formatters\";\nimport { Translations } from \"../conversion/translations\";\nimport { TMultiLanguageString } from \"../types/queryVisualizationResponse\";\nimport { IDataSeries, View } from \"../types/view\";\nimport { IChartOptions } from \"../types/chartOptions\";\nimport { formatMissingData, formatNumericValue } from \"./tableUtils\";\n\nexport function renderHtmlTable(view: View, locale: string, options: IChartOptions, containerId: string, footnote?: string): void {\n\n    const container = document.getElementById(containerId);\n    if (!container) throw new Error(\"No container with matching id found in the DOM tree\");\n\n    try {\n        // Table content\n        const table = generateTable(view, locale);\n\n        if (options.showTitles) {\n            const titleId = `${containerId}-title`;\n            const titleElement = document.createElement('p');\n            titleElement.id = titleId;\n            titleElement.textContent = view.header[locale];\n            titleElement.className = 'tableChart-title';\n            \n            if (view.subheaderValues.length > 0) {\n                const subtitle: string = view.subheaderValues.map(value => value[locale]).join(' | ');\n                titleElement.append(document.createElement('br'), subtitle);\n            }\n            // Set aria-labelledby on the table to reference the title\n            table.setAttribute('aria-labelledby', titleId);\n            \n            container.append(titleElement);\n        }\n\n        container.append(table);\n\n        let isFirstMetadata: boolean = true;\n\n        // Helper function to add metadata elements\n        const addMetadata = (text: string) => {\n            const span = document.createElement('span');\n            if (!isFirstMetadata) span.append(document.createElement('br'));\n            span.append(text);\n            container.append(span);\n            isFirstMetadata = false;\n        };\n\n        // Units\n        if (options.showUnits) {\n            const unitName = getFormattedUnits(view.units, locale);\n            const units: string = `${Translations.unit[locale]}: ${unitName}`;\n            addMetadata(units);\n        }\n\n        // Footnote\n        if (footnote) {\n            addMetadata(footnote);\n        }\n\n        // Last Updated\n        if (options.showLastUpdated && view.lastUpdated) {\n            const lastUpdatedText = getFormattedLastUpdatedText(view.lastUpdated, locale);\n            if (lastUpdatedText) {\n                addMetadata(lastUpdatedText);\n            }\n        }\n\n        // Sources\n        if (options.showSources) {\n            const sources: string = `${Translations.source[locale]}: ${view.sources.map(source => source[locale]).join(', ')}`;\n            addMetadata(sources);\n        }\n\n    } catch (error) {\n        console.error(error);\n        container.replaceChildren();\n        const errorMessage = document.createElement('h1');\n        errorMessage.append(Translations.graphCreationError[locale]);\n        container.append(errorMessage);\n    }\n}\n\nexport function generateTable(view: View, locale: string): HTMLTableElement {\n    const colHeaderRows = view.columnNameGroups[0].length ?? 0;\n    const rowHeaderCols = view.series[0].rowNameGroup.length ?? 0;\n\n    const table: HTMLTableElement = Object.assign(document.createElement('table'), { tabIndex: 0 });\n\n    if (colHeaderRows > 0) {\n        const columnHeaders = buildColumnHeaderRows(view.columnNameGroups, locale);\n\n        // Add empty cell to top left corner\n        if (rowHeaderCols > 0) {\n            const td = document.createElement('td');\n            td.setAttribute('colSpan', rowHeaderCols.toString());\n            td.setAttribute('rowSpan', colHeaderRows.toString());\n            columnHeaders[0].prepend(td);\n        }\n\n        const thead = document.createElement('thead');\n        thead.append(...columnHeaders);\n        table.append(thead);\n    }\n\n    if (view.series.length > 0) {\n        const tbody = document.createElement('tbody');\n        tbody.append(...buildDataRows(view.series, locale));\n        table.append(tbody);\n    }\n\n    return table;\n}\n\nfunction buildColumnHeaderRows(colNameGroups: TMultiLanguageString[][], locale: string): HTMLTableRowElement[] {\n    const colSpans = calculateColSpans(colNameGroups);\n    const colHeaderRows: HTMLTableRowElement[] = [];\n    for (let row = 0; row < colNameGroups[0].length; row++) {\n        const tableRow = document.createElement('tr');\n        for (let col = 0; col < colNameGroups.length; col += colSpans[row]) {\n            const th = document.createElement('th');\n            th.setAttribute('colSpan', colSpans[row].toString());\n            th.setAttribute('scope', 'col');\n            th.textContent = colNameGroups[col][row][locale];\n            tableRow.append(th);\n        }\n        colHeaderRows.push(tableRow);\n    };\n    return colHeaderRows;\n}\n\nfunction buildDataRows(series: IDataSeries[], locale: string): HTMLTableRowElement[] {\n    const dataRows: HTMLTableRowElement[] = [];\n    const rowSpans = calculateRowSpans(series);\n\n    for (let row = 0; row < series.length; row++) {\n        const tableRow = document.createElement('tr');\n\n        // Add row headers\n        for (let hCol = 0; hCol < series[row].rowNameGroup.length; hCol++) {\n            if (row % rowSpans[hCol] === 0) {\n                const th = document.createElement('th');\n                th.setAttribute('rowSpan', rowSpans[hCol].toString());\n                th.setAttribute('scope', 'row');\n                th.textContent = series[row].rowNameGroup[hCol][locale];\n                tableRow.append(th);\n            }\n        }\n\n        // Add data cells\n        for (const dataCell of series[row].series) {\n            const td = document.createElement('td');\n            if (dataCell.value === null) td.textContent = formatMissingData(dataCell.missingCode, locale, true);\n            else td.textContent = formatNumericValue(dataCell.value, dataCell.precision, locale, true);\n            tableRow.append(td);\n        }\n\n        dataRows.push(tableRow);\n    };\n    return dataRows;\n}\n\nconst compare = (a: TMultiLanguageString, b: TMultiLanguageString) =>\n    Object.keys(a).every(lang => a[lang] == b[lang]);\n\nconst calculateRowSpans = (series: IDataSeries[]): number[] => {\n    if (!series[0].rowNameGroup || series[0].rowNameGroup.length === 0) return [];\n    const rowSpans: number[] = Array(series[0].rowNameGroup.length).fill(1);\n\n    for (let col = 0; col < series[0].rowNameGroup.length; col++) {\n        for (let row = 0; row < series.length - 1; row++) {\n            if (compare(series[row].rowNameGroup[col], series[row+1].rowNameGroup[col])) rowSpans[col]++;\n            else break;\n        }\n    }\n    return rowSpans;\n}\n\nconst calculateColSpans = (columnNameGroups: TMultiLanguageString[][]): number[] => {\n    if (!columnNameGroups || columnNameGroups.length === 0) return []; \n    const colSpans: number[] = Array(columnNameGroups[0].length).fill(1);\n\n    for (let row = 0; row < columnNameGroups[0].length; row++) {\n      for (let col = 0; col < columnNameGroups.length - 1; col++) {\n       if (compare(columnNameGroups[col][row], columnNameGroups[col + 1][row])) colSpans[row]++;\n      else break;\n  }\n    }\n    return colSpans;\n}","export const generateFilename = (tableReference: string): string => {\n    const trimmedTableReference = tableReference ? tableReference.split('.')[0] : '';\n\n    const date = new Date();\n\n    const year = date.getFullYear();\n    const month = (date.getMonth() + 1).toString().padStart(2, '0');\n    const day = date.getDate().toString().padStart(2, '0');\n    const hours = date.getHours().toString().padStart(2, '0');\n    const minutes = date.getMinutes().toString().padStart(2, '0');\n    const seconds = date.getSeconds().toString().padStart(2, '0');\n\n    return `${trimmedTableReference}_${year}${month}${day}_${hours}${minutes}${seconds}`;\n}\n","import { getFormattedUnits } from \"../chartOptions/Utility/formatters\";\nimport { Translations } from \"../conversion/translations\";\nimport { convertToRelative } from \"../conversion/viewUtils\";\nimport { EVisualizationType } from \"../types\";\nimport { View } from \"../types/view\";\nimport { generateFilename } from \"./exportingUtils\";\nimport { formatMissingData, formatNumericValue } from \"./tableUtils\";\n\nexport const generateCsv = (view: View, locale: string): string => {\n    const relativeChart =\n        view.visualizationSettings?.visualizationType === EVisualizationType.PercentHorizontalBarChart\n        || view.visualizationSettings?.visualizationType === EVisualizationType.PercentVerticalBarChart;\n\n    if (relativeChart) view = convertToRelative(view);\n\n    const colHeaderRows = view.columnNameGroups[0]?.length ?? 0;\n    const rowHeaderCols = view.series[0]?.rowNameGroup.length ?? 0;\n    const gridWidth = (view.series[0]?.series.length ?? 0) + rowHeaderCols;\n\n    // Excel expects different delimiters by the locale\n    const delimiter = Translations.decimalPoint[locale] == ',' ? ';' : ',';\n    const lineBreak = '\\n';\n\n    let csv = buildCSVRow([`\"${view.header[locale]}\"`], 0, gridWidth, delimiter, lineBreak);\n\n    // Add subheader\n    if (view.subheaderValues.length > 0) {\n        csv += buildCSVRow([`\"${view.subheaderValues.map(value => value[locale]).join(' | ')}\"`], 0, gridWidth, delimiter, lineBreak);\n    }\n\n    // Add column variables\n    for (let index = 0; index < colHeaderRows; index++) {\n        csv += buildCSVRow(view.columnNameGroups.map(group => `\"${group[index][locale]}\"`), rowHeaderCols, gridWidth, delimiter, lineBreak);\n    }\n\n    // Add row variables + data\n    view.series.forEach((serie) => {\n        let row: string[] = []\n        if (serie.rowNameGroup.length > 0) row = serie.rowNameGroup.map(name => `\"${name[locale]}\"`);\n\n        // Set display precision and decimal separator\n        row = row.concat(serie.series.map(n => {\n            if (n.value === null) return formatMissingData(n.missingCode, locale);\n            else return formatNumericValue(n.value, n.precision, locale);\n        }));\n\n        csv += buildCSVRow(row, 0, gridWidth, delimiter, lineBreak);\n    });\n\n    // Add unit information\n    csv += buildCSVRow([`\"${Translations.unit[locale]}: ${getFormattedUnits(view.units, locale)}\"`], 0, gridWidth, delimiter, lineBreak);\n\n    // Add source and no linebreak after the last line\n    csv += buildCSVRow([`\"${Translations.source[locale]}: ${view.sources.map(source => source[locale]).join(', ')}\"`], 0, gridWidth, delimiter);\n\n    return csv;\n}\n\nexport const viewToDownloadCSVOption = (view: View, locale: string): { onClick: () => void, text: string } => ({\n    onClick: () => {\n        const csv = generateCsv(view, locale);\n        const blob = generateCsvBlob(csv);\n\n        // Create download link and click it\n        const url = URL.createObjectURL(blob);\n        const link = document.createElement('a');\n        link.setAttribute('href', url);\n        link.setAttribute('download', generateFilename(view.tableReferenceName) + '.csv');\n\n        // Required for FF\n        document.body.appendChild(link);\n\n        // This will download the CSV file\n        link.click();\n    },\n    text: Translations.downloadCSV[locale],\n});\n\nfunction generateCsvBlob(data: string): Blob {\n    const BOM = '\\uFEFF';\n    return new Blob([BOM, data], { type: 'text/csv;charset=utf-8;' });\n}\n\nfunction buildCSVRow(data: string[], startIndex: number, rowLen: number, delimiter: string, lineBrak: string = ''): string {\n    let csv = '';\n    for (let i = 0; i < rowLen; i++) {\n        if (i >= startIndex && i < startIndex + data.length) {\n            csv += data[i - startIndex];\n        }\n        if (i < rowLen - 1) csv += delimiter;\n    }\n    return csv + lineBrak;\n}","export const workbookProperties : string [] = [\n    'xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"',\n    'xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"',\n    'xmlns:mx=\"http://schemas.microsoft.com/office/mac/excel/2008/main\"',\n    'xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"',\n    'xmlns:mv=\"urn:schemas-microsoft-com:mac:vml\"',\n    'xmlns:x14=\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main\"',\n    'xmlns:x14ac=\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\"',\n    'xmlns:xm=\"http://schemas.microsoft.com/office/excel/2006/main\"'\n];\n\nexport const worksheetProperties : string[] = [\n    'xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\"',\n    'xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"',\n    'xmlns:mv=\"urn:schemas-microsoft-com:mac:vml\"',\n    'xmlns:mx=\"http://schemas.microsoft.com/office/mac/excel/2008/main\"',\n    'xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"',\n    'xmlns:x14=\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/main\"',\n    'xmlns:x14ac=\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\"',\n    'xmlns:xm=\"http://schemas.microsoft.com/office/excel/2006/main\"'\n];","import { worksheetProperties } from \"./xlsxPropertyConstants\";\nimport { TCell } from \"./xlsxTypes\";\nimport { escapeXmlFunctionChars } from \"./xlsxUtils\";\n\nexport const buildXMLSheet = (rows: TCell[][]) : string => {\n    const xmlColumns = buildColumns(Math.max(...rows.map(r => r.length)));\n    const xmlRows = buildRows(rows);\n    return wrapInSheetTemplate(xmlColumns, xmlRows);\n};\n\n// Columns format from: https://msdn.microsoft.com/en-us/library/office/documentformat.openxml.spreadsheet.columns\n// Column format from: https://msdn.microsoft.com/en-us/library/office/documentformat.openxml.spreadsheet.column\nfunction buildColumns(numOfcols: number) : string\n{\n    const cols: string[] = [];\n    for(let i = 1; i <= numOfcols; i++ ) {\n        cols.push(`<col min=\"${i}\" max=\"${i}\" width=\"20\"/>`)\n    }\n    return cols ? `<cols>${cols}</cols>` : '';\n};\n\n// Row format from: https://learn.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.row\nfunction buildRows(rows: TCell[][])\n{\n    return rows.map((row, rowIndex) => {\n        const rowCells = row\n            .map((cell, cellIndex) => buildCell(cell, cellIndex, rowIndex + 1))\n            .filter(cell => cell !== null)\n            .join('');\n        return `<row r=\"${rowIndex + 1}\">${rowCells}</row>`;\n    }).join('');\n}\n\n// Cell format from: https://learn.microsoft.com/en-us/dotnet/api/documentformat.openxml.spreadsheet.cell\nfunction buildCell(cell: TCell, columnNumber: number, rowNumber: number) : string | null\n{    \n    if (cell === null) return null;\n\n    return (\n        typeof(cell) === 'string'\n            ? `<c r=\"${getColumnLetter(columnNumber)}${rowNumber}\" t=\"inlineStr\"><is><t>${escapeXmlFunctionChars(cell)}</t></is></c>`\n        : `<c r=\"$${getColumnLetter(columnNumber)}${rowNumber}\"><v>${cell}</v></c>`\n    );\n}\n\nfunction getColumnLetter(colIndex: number) : string {  \n    \n    // If we run out of letters, we combine new letters after the prevous \"prefix\" ie. AA, AB, AC etc.\n    const prefix = Math.floor(colIndex / 26);\n    const letter = String.fromCodePoint(97 + (colIndex % 26)).toUpperCase();\n    \n    if (prefix === 0) return letter;\n    else return getColumnLetter(prefix - 1) + letter;\n};\n\nconst wrapInSheetTemplate = (xmlColumns: string, xmlRows: string) => `<?xml version=\"1.0\" ?>\n<worksheet ${worksheetProperties.join(' ')}>\n    ${xmlColumns}\n    <sheetData>\n        ${xmlRows}\n    </sheetData>\n</worksheet>`;","import { workbookProperties } from \"./xlsxPropertyConstants\";\n\nexport const workbookTemplate = `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<workbook ${workbookProperties.join(' ')}>\n  <workbookPr/>\n  <sheets>\n    <sheet state=\"visible\" name=\"Sheet1\" sheetId=\"1\" r:id=\"rId3\"/>\n  </sheets>\n  <definedNames/>\n  <calcPr/>\n</workbook>`;\n\nexport const relationsTemplate = `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<Relationships\nxmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\"\n>\n    <Relationship\n    Id=\"rId1\"\n    Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument\"\n    Target=\"xl/workbook.xml\"\n    />\n</Relationships>`;\n\nexport const workbookRelationsTemplate = `<?xml version=\"1.0\" ?>\n<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\n    <Relationship\n    Id=\"rId3\"\n    Target=\"worksheets/sheet1.xml\" \n    Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet\"\n    />\n</Relationships>`;\n\nexport const contentTypesTemplate = `<?xml version=\"1.0\" ?>\n<Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">\n    <Default ContentType=\"application/xml\" Extension=\"xml\"/>\n    <Default ContentType=\"application/vnd.openxmlformats-package.relationships+xml\" Extension=\"rels\"/>\n    <Override ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\" PartName=\"/xl/worksheets/sheet1.xml\"/>\n    <Override ContentType=\"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\" PartName=\"/xl/workbook.xml\"/>\n</Types>`;","import { getFormattedUnits } from \"../../chartOptions/Utility/formatters\";\nimport { Translations } from \"../../conversion/translations\";\nimport { convertToRelative } from \"../../conversion/viewUtils\";\nimport { EVisualizationType } from \"../../types\";\nimport { View } from \"../../types/view\";\nimport { formatMissingData } from \"../tableUtils\";\nimport { TCell } from \"./xlsxTypes\";\n\n// This is a separate function to allow for unit testing\nexport const buildCellRows: (view: View, locale: string) => TCell[][] = (view, locale) => {\n\n    const relativeChart =\n        view.visualizationSettings?.visualizationType === EVisualizationType.PercentHorizontalBarChart\n        || view.visualizationSettings?.visualizationType === EVisualizationType.PercentVerticalBarChart;\n\n    if (relativeChart) view = convertToRelative(view);\n\n    const colHeaderRows = view.columnNameGroups[0]?.length ?? 0;\n    const rowHeaderCols = view.series[0]?.rowNameGroup.length ?? 0;\n    const gridWidth = (view.series[0]?.series.length ?? 0) + rowHeaderCols;\n\n    // Build header\n    const headerRow = buildCellRow([view.header[locale]], 0, gridWidth);\n\n    // Build subheader\n    const subheaderRows = view.subheaderValues.length > 0\n        ? [buildCellRow([view.subheaderValues.map(value => value[locale]).join(' | ')], 0, gridWidth)]\n        : [];\n\n    // Build column header rows\n    const columnHeaderRows = Array.from({ length: colHeaderRows }, (_, index) =>\n        buildCellRow(view.columnNameGroups.map(group => group[index][locale]), rowHeaderCols, gridWidth)\n    );\n\n    // Build data rows\n    const dataRows = view.series.map((serie) => {\n        let row: (string | number)[] = []\n        if (serie.rowNameGroup.length > 0) row = serie.rowNameGroup.map(name => name[locale]);\n\n        // Set display precision and decimal separator\n        row = row.concat(serie.series.map(n => {\n            if (n.value === null) return formatMissingData(n.missingCode, locale);\n            else return Number(n.value.toFixed(n.precision));\n        }));\n\n        return buildCellRow(row, 0, gridWidth);\n    });\n\n    // Build footer rows\n    const unitRow = buildCellRow([`${Translations.unit[locale]}: ${getFormattedUnits(view.units, locale)}`], 0, gridWidth);\n    const sourceRow = buildCellRow([`${Translations.source[locale]}: ${view.sources.map(source => source[locale]).join(', ')}`], 0, gridWidth);\n\n    // Combine all rows\n    return [\n        headerRow,\n        ...subheaderRows,\n        ...columnHeaderRows,\n        ...dataRows,\n        unitRow,\n        sourceRow\n    ];\n}\n\nfunction buildCellRow(data: (number | string)[], startIndex: number, rowLen: number): TCell[] {\n    const cellRow: TCell[] = new Array(rowLen);\n    for (let i = 0; i < rowLen; i++) {\n        if (i >= startIndex && i < startIndex + data.length) cellRow[i] = data[i - startIndex];\n        else cellRow[i] = null;\n    }\n    return cellRow;\n}","import { FlateCallback, strToU8, zip } from 'fflate';\nimport { buildXMLSheet } from './xlsxWorksheetBuilder';\nimport { contentTypesTemplate, relationsTemplate, workbookRelationsTemplate, workbookTemplate } from './xlsxTemplates';\nimport { View } from '../../types/view';\nimport { buildCellRows } from './xlsxDataBuilder';\nimport { Translations } from '../../conversion/translations';\nimport { generateFilename } from '../exportingUtils';\n\nexport const viewToDownloadXLSOption = (view: View, locale: string): { onClick: () => Promise<void>, text: string } => ({\n    onClick: async () => {\n        const blob = await buildMinimalXlsxBlobAsync(view, locale);\n\n        // Create download link and click it\n        const url = URL.createObjectURL(blob);\n        const link = document.createElement('a');\n        link.setAttribute('href', url);\n        link.setAttribute('download', generateFilename(view.tableReferenceName) + '.xlsx');\n\n        // Required for FF\n        document.body.appendChild(link);\n\n        // This will download the CSV file\n        link.click();\n    },\n    text: Translations.downloadXLSX[locale],\n});\n\nexport async function buildMinimalXlsxBlobAsync(view : View, locale: string) : Promise<Blob> {\n\n    const rows = buildCellRows(view, locale);\n    const worksheet = buildXMLSheet(rows);\n\n    const content = {\n        xl: {\n            'worksheets/sheet1.xml': strToU8(worksheet),\n            'workbook.xml': strToU8(workbookTemplate),\n            '_rels/workbook.xml.rels': strToU8(workbookRelationsTemplate),\n        },\n        '_rels/.rels': strToU8(relationsTemplate),\n        '[Content_Types].xml': strToU8(contentTypesTemplate),\n    };\n\n    return new Promise<Blob>((resolve, reject) => {\n        const callback: FlateCallback = (err, data) => {\n            if (err) return reject(err);\n            const blob = new Blob(\n                [data.buffer instanceof ArrayBuffer ? data.buffer : new Uint8Array(data)],\n                { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }\n            );\n            return resolve(blob);\n        };\n        zip(content, callback);\n    });\n};","export function escapeXmlFunctionChars(input: string): string {\n    const xmlCharMap: { [key: string]: string } = {\n        '&': '&amp;',\n        '<': '&lt;',\n        '>': '&gt;',\n        '\"': '&quot;',\n        \"'\": '&apos;'\n    };\n    return input.replaceAll(/[&<>\"']/g, char => xmlCharMap[char]);\n}","export type TIcon = typeof allIcons[number];\nexport const allIcons = ['Bars', 'Times', 'Download', 'ExternalLink', 'Copy'] as const;","import React from 'react';\nimport { TIcon } from '../../../core/types/icon';\n\ninterface IIconProps {\n    icon: TIcon;\n    inheritColor?: boolean;\n};\n\n/* no need for tests for icon svg markups */\n/* istanbul ignore next */\nexport const Icon: React.FC<IIconProps> = ({icon, inheritColor=false}) => { // NOSONAR\n    switch(icon) { //NOSONAR\n        case \"Bars\":\n            return (\n                <svg aria-hidden={true} xmlns=\"http://www.w3.org/2000/svg\" width=\"39.91mm\" height=\"29.92mm\" viewBox=\"0 0 113.12 84.82\">\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m56.51,14.13c-16.33,0-32.67.01-49,0-5.37,0-8.89-4.83-6.99-9.59C1.63,1.76,3.77.26,6.76.01c.22-.02.44,0,.66,0,32.74,0,65.49,0,98.23,0,4.3,0,7.45,2.99,7.47,7.01.02,4.11-3.15,7.1-7.6,7.11-16.33.01-32.67,0-49,0Z\"/>\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m56.55,49.47c-16.41,0-32.82.01-49.22,0-3.78,0-6.77-2.56-7.26-6.09-.49-3.53,1.78-6.9,5.35-7.81.77-.2,1.6-.21,2.4-.21,32.52,0,65.04-.01,97.57,0,4.51,0,7.69,2.89,7.74,6.97.04,4.19-3.16,7.14-7.79,7.15-16.26,0-32.52,0-48.78,0Z\"/>\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m56.43,84.82c-16.33,0-32.67,0-49,0-3.68,0-6.45-2.17-7.25-5.56-.73-3.09.92-6.54,3.92-7.84,1.04-.45,2.27-.69,3.41-.69,32.74-.04,65.49-.03,98.23-.02,4.27,0,7.41,3.06,7.39,7.09-.02,4.02-3.17,7.02-7.47,7.02-16.41.02-32.82,0-49.22,0Z\"/>\n                </svg>\n            );\n        case \"Times\":\n            return (\n                <svg aria-hidden={true} xmlns=\"http://www.w3.org/2000/svg\" width=\"26.97mm\" height=\"26.97mm\" viewBox=\"0 0 76.44 76.44\">\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m0,38.09C.02,17.02,17.22-.04,38.39,0c21.08.04,38.09,17.21,38.05,38.42-.04,21-17.21,38.04-38.31,38.01C17.04,76.41-.02,59.26,0,38.09ZM38.25,5.95c-17.86-.02-32.27,14.33-32.31,32.17-.04,17.94,14.33,32.35,32.25,32.37,17.87.02,32.23-14.28,32.3-32.17.07-17.92-14.31-32.35-32.24-32.37Z\"/>\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m38.4,34c2.9-2.94,5.58-5.67,8.27-8.39.93-.94,2.13-1.38,3.25-.73.8.47,1.7,1.46,1.78,2.29.09.92-.48,2.12-1.14,2.85-2.18,2.38-4.54,4.6-6.83,6.89-.35.35-.68.71-1.07,1.12,2.67,2.68,5.35,5.26,7.88,7.99.67.72,1.28,1.95,1.16,2.84-.12.88-1.05,1.9-1.89,2.37-1.03.57-2.22.16-3.12-.75-2.31-2.33-4.65-4.63-6.96-6.97-.38-.39-.66-.87-1.36-1.8-.71.95-1.11,1.64-1.65,2.19-2.12,2.17-4.27,4.32-6.44,6.44-1.41,1.38-3.16,1.46-4.38.28-1.26-1.22-1.2-3.02.24-4.48,2.27-2.31,4.56-4.58,6.87-6.85.38-.38.88-.64,1.42-1.03-2.89-2.89-5.5-5.47-8.07-8.1-.53-.55-1.05-1.24-1.24-1.96-.35-1.32.14-2.48,1.38-3.16,1.28-.71,2.53-.5,3.56.5,2.32,2.26,4.59,4.55,6.88,6.84.46.46.86.96,1.47,1.64Z\"/>\n                </svg>\n            );\n        case \"Download\":\n            return (\n                <svg aria-hidden={true} xmlns=\"http://www.w3.org/2000/svg\" width=\"33.64mm\" height=\"33.64mm\" viewBox=\"0 0 95.35 95.37\">\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m41.74,51.99c0-1.25,0-1.92,0-2.59,0-14.4,0-28.79,0-43.19,0-3.27,2.24-5.84,5.28-6.17,3.01-.33,5.8,1.65,6.48,4.66.16.71.14,1.48.14,2.22,0,14.15,0,28.29,0,42.44v2.34c.53-.42.91-.67,1.23-.98,3.12-3.11,6.23-6.23,9.35-9.34,2.74-2.72,6.26-2.87,8.75-.4,2.49,2.46,2.39,6.06-.3,8.75-6.79,6.81-13.59,13.61-20.4,20.4-2.92,2.91-6.25,2.92-9.15.03-6.81-6.79-13.61-13.59-20.4-20.4-2.71-2.72-2.84-6.26-.35-8.75,2.48-2.49,6.03-2.36,8.75.34,3.42,3.4,6.82,6.83,10.61,10.64Z\"/>\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m47.67,95.37c-13.83,0-27.66,0-41.49,0-3.18,0-5.7-2.16-6.12-5.13-.42-2.98,1.5-5.82,4.51-6.59.65-.17,1.35-.18,2.02-.18,27.41,0,54.83,0,82.24,0,3.8,0,6.48,2.43,6.52,5.88.04,3.53-2.66,6.02-6.56,6.03-13.71,0-27.41,0-41.12,0Z\"/>\n                </svg>\n            );\n        case \"ExternalLink\":\n            return (\n                <svg aria-hidden={true} xmlns=\"http://www.w3.org/2000/svg\" width=\"88.84mm\" height=\"79.62mm\" viewBox=\"0 0 251.84 225.69\">\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m125.89,225.68c-22.84,0-45.67.03-68.51,0C23.18,225.63.03,202.4.01,168.14,0,131.14,0,94.13.01,57.13.04,23.53,23.35.14,56.85.1c23.67-.03,21.34.02,45.01-.03,4.75,0,8.96,1.04,11.87,5.09,2.64,3.67,3.08,7.7,1.25,11.83-2.01,4.53-5.59,7-10.57,7.06-9,.11-12,.07-21,.07-15.84,0-11.67-.05-27.5.02-18.82.08-31.81,12.98-31.84,31.74-.06,38-.06,76.01,0,114.01.03,18.74,13.04,31.7,31.86,31.72,46.67.05,93.34.06,140.01,0,18.79-.02,31.71-12.99,31.79-31.8.07-17,0-14,.03-31.01.02-8.3,4.75-13.75,11.83-13.81,7.07-.06,12.12,5.48,12.16,13.61.07,17.5.18,15.01-.02,32.51-.34,30.71-23.87,54.02-54.81,54.56h-71.01l-.02.02Z\"/>\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m207.19,24.08c-6.95,0-23.9.04-30.85,0-8.12-.06-13.27-4.55-13.44-11.6-.17-7.19,5.18-12.33,13.32-12.38,17.33-.11,44.67-.12,62,0,8.48.06,13.45,4.99,13.5,13.37.12,16.83.12,43.67,0,60.5-.06,7.69-5.4,13.04-12.34,12.87-6.83-.17-11.53-5.35-11.61-12.97-.08-7.63-.02-25.26-.02-34.12-2.09,1.8-3.42,2.88-4.68,4.03-26.76,24.57-53.52,49.15-80.28,73.72-1.6,1.47-3.13,3-4.82,4.36-5.57,4.47-12.54,3.94-16.98-1.2-4.31-4.98-4.06-11.78,1.06-16.6,10.92-10.28,22.03-20.36,33.07-30.51,16.56-15.23,33.13-30.45,49.72-45.65.97-.89,2.15-1.56,3.23-2.33-.29-.5-.58-.99-.87-1.49h0Z\"/>\n                </svg>\n            );\n        case \"Copy\":\n            return (\n                <svg aria-hidden={true} xmlns=\"http://www.w3.org/2000/svg\" width=\"31.19mm\" height=\"31.21mm\" viewBox=\"0 0 88.41 88.48\">\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m20.67,54.61c0-7.55,0-15.1,0-22.65,0-6.79,4.38-11.2,11.13-11.21,15.16-.01,30.33-.01,45.49,0,6.75,0,11.12,4.42,11.12,11.22,0,15.1,0,30.2,0,45.3,0,6.79-4.39,11.21-11.13,11.21-15.16,0-30.33,0-45.49,0-6.66,0-11.1-4.41-11.12-11.03-.02-7.61,0-15.22,0-22.83Zm60.78.1c0-7.67,0-15.34,0-23.01,0-2.72-1.23-3.98-3.89-3.99-15.34,0-30.68,0-46.02,0-2.67,0-3.89,1.26-3.89,3.98,0,15.28,0,30.55,0,45.83,0,2.79,1.23,3.99,4.07,3.99,15.22,0,30.44,0,45.65,0,2.91,0,4.08-1.21,4.08-4.17,0-7.55,0-15.09,0-22.64Z\"/>\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m13.66,60.85v6.64C6.35,69.22.02,64.29.01,56.9c-.02-15.34-.02-30.69,0-46.03C.02,4.48,4.36.11,10.73.1c15.1-.02,30.21.19,45.3-.1,6.89-.13,12.81,4.89,11.49,13.58h-6.74c0-.95.03-1.91,0-2.86-.08-2.34-1.35-3.69-3.66-3.69-15.53-.02-31.06-.02-46.59,0-2.36,0-3.58,1.27-3.58,3.7-.02,15.4-.02,30.81,0,46.21,0,2.65,1.32,3.87,4.01,3.91.85.01,1.7,0,2.71,0Z\"/>\n                </svg>\n            );\n        default:\n            return (\n                <span>No icon for {icon}\n                <svg aria-hidden={true} xmlns=\"http://www.w3.org/2000/svg\" width=\"26.97mm\" height=\"26.97mm\" viewBox=\"0 0 76.45 76.44\">\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m0,38.1C.02,17.02,17.22-.04,38.4,0c21.08.04,38.1,17.21,38.06,38.43-.04,21-17.21,38.05-38.32,38.02C17.04,76.42-.02,59.27,0,38.1ZM38.26,5.95c-17.86-.02-32.27,14.33-32.31,32.17-.04,17.94,14.33,32.35,32.25,32.37,17.87.02,32.23-14.28,32.3-32.17.07-17.92-14.31-32.35-32.24-32.37Z\"/>\n                    <path { ... inheritColor ? {} : {style: {fill: '#1A3061'}}} d=\"m34.1,43.95c-.12-.12-.18-.26-.18-.43v-1.62c0-1.68.43-3.04,1.29-4.07.86-1.03,2.1-2.11,3.71-3.26,1.31-.91,2.29-1.72,2.93-2.42s.96-1.57.96-2.58c0-1.08-.4-1.95-1.21-2.6-.81-.66-1.87-.99-3.18-.99-1.42,0-2.55.35-3.41,1.06-.86.71-1.29,1.62-1.29,2.73v.81c0,.37-.2.56-.61.56l-5.91-.25c-.17,0-.31-.06-.43-.18-.12-.12-.18-.26-.18-.43v-.5c0-2.02.51-3.81,1.52-5.38,1.01-1.57,2.42-2.78,4.22-3.64,1.8-.86,3.88-1.29,6.24-1.29s4.3.41,6.04,1.24c1.73.83,3.07,1.98,4.02,3.46.94,1.48,1.41,3.2,1.41,5.15,0,1.48-.26,2.75-.78,3.81-.52,1.06-1.15,1.93-1.89,2.6-.74.67-1.68,1.42-2.83,2.22-1.21.84-2.11,1.57-2.68,2.17s-.86,1.35-.86,2.22v1.16c0,.17-.06.31-.18.43-.12.12-.26.18-.43.18h-5.86c-.17,0-.31-.06-.43-.18Zm.3,10.36c-.76-.76-1.14-1.71-1.14-2.85s.37-2.09,1.11-2.83,1.7-1.11,2.88-1.11,2.13.36,2.85,1.09c.72.72,1.09,1.68,1.09,2.85s-.37,2.1-1.11,2.85c-.74.76-1.68,1.14-2.83,1.14s-2.1-.38-2.85-1.14Z\"/>\n                </svg>\n                </span>  \n            );\n    }\n}","import React, { forwardRef } from \"react\";\nimport styled from \"styled-components\";\nimport { TIcon, allIcons } from \"../../../../core/types/icon\";\nimport { Icon } from \"../../icon/icon\";\nimport { Translations } from \"../../../../core/conversion/translations\";\n\ninterface IListItemProps {\n    $isFirst?: boolean;\n    $isLast?: boolean;\n    $separator?: boolean;\n}\n\ninterface ITextWrapperProps {\n    $hasPrefixIcon?: boolean;\n    $hasSuffixIcon?: boolean;\n}\nconst Button = styled(forwardRef<HTMLButtonElement, React.ComponentPropsWithoutRef<'button'>>((props, ref) => (<button ref={ref} {...props} />)))`\n    background-color: transparent;\n    text-align: left;\n    border: none;\n    margin: 0;\n    padding: 0.5rem 0.7rem 0.5rem 0.7rem;\n    cursor: pointer;\n    display: inline;\n    font-family: \"Barlow Semi Condensed\", Verdana, sans-serif;\n    min-width: 14rem;\n    color: #1a3061;\n    min-height: 3rem;\n    font-size: 0.75rem;\n    :hover {\n        text-decoration: underline;\n    }\n`;\n\nconst StyledLink = styled.a`\n    text-decoration: none;\n    display: flex;\n    align-items: center;\n    padding: 0.5rem 0.7rem;\n    min-width: 14rem;\n    font-family: \"Barlow Semi Condensed\", Verdana, sans-serif;\n    color: #1a3061;\n    min-height: 3rem;\n    font-size: 0.75rem;\n    :hover {\n        text-decoration: underline;\n    }\n`;\n\nconst ListItem = styled.li<IListItemProps>`\n    border-top-right-radius: ${p => p.$isFirst ? '18px' : '0px'};\n    border-top-left-radius: ${p => p.$isFirst ? '18px' : '0px'};\n    border-bottom-right-radius: ${p => p.$isLast ? '18px' : '0px'};\n    border-bottom-left-radius: ${p => p.$isLast ? '18px' : '0px'};\n    border-bottom: ${p => p.$separator ? '1px solid #bdbdbd' : '0px'};\n    :hover {\n        background-color: #f2f2f2;\n    }\n`;\n\nconst ContentWrapper = styled.div`\n    height: 100%;\n    width: 100%;\n    display: flex;\n    flex-direction: row;\n    align-content: center;\n    justify-content: left;\n    align-items: center;\n    justify-items: center;\n`;\n\nconst IconWrapper = styled.div`\n    height: 1rem;\n    width: 1rem;\n    svg {\n        height: 1rem;\n        width: 1rem;\n        fill: #1a3061;\n    }\n`;\n\nconst TextWrapper = styled.span<ITextWrapperProps>`\n    margin-left: ${p => p.$hasPrefixIcon ? '0.5rem' : '0px'};\n    margin-right: ${p => p.$hasSuffixIcon ? '0.5rem' : '0px'};\n`;\n\nconst ScreenreaderText = styled.span`\n    clip: rect(0 0 0 0);\n    clip-path: inset(50%);\n    height: 1px;\n    overflow: hidden;\n    position: absolute;\n    white-space: nowrap;\n    width: 1px;\n`;\n\nexport interface IMenuItemProps {\n    text: string;\n    onClick?: () => void;\n    url?: string;\n    openNewTab?: boolean;\n    isExternal?: boolean;\n    prefixIcon?: TIcon | Exclude<React.ReactNode, string>;\n    suffixIcon?: TIcon | Exclude<React.ReactNode, string>;\n    locale: string;\n    bottomSeparator?: boolean;\n    isFirst?: boolean;\n    isLast?: boolean;\n    tabIndex?: number;\n    index?: number;\n    idPrefix: string;\n}\n\nexport const MenuItem = forwardRef<HTMLAnchorElement | HTMLButtonElement, IMenuItemProps>(({ text, onClick, url, openNewTab, isExternal, prefixIcon, suffixIcon, locale, idPrefix, bottomSeparator = false, isFirst = false, isLast = false, tabIndex = -1, index = -1 }, ref) => {\n\n    let prefixIconContent: React.ReactNode;\n    if (prefixIcon) {\n        prefixIconContent = (typeof prefixIcon === 'string' && allIcons.includes(prefixIcon as TIcon)) ? <Icon inheritColor={true} icon={prefixIcon as TIcon} /> : prefixIcon;\n    }\n\n    let suffixIconContent: React.ReactNode;\n    if (suffixIcon) {\n        suffixIconContent = (typeof suffixIcon === 'string' && allIcons.includes(suffixIcon as TIcon)) ? <Icon inheritColor={true} icon={suffixIcon as TIcon} /> : prefixIcon;\n    }\n\n    const handleKeyDown = (e: React.KeyboardEvent<HTMLAnchorElement>) => {\n        if (e.key === ' ') {\n            e.preventDefault();\n            (e.target as HTMLAnchorElement).click();\n        }\n    };\n\n    const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n        if (onClick) {\n            onClick();\n        }\n    };\n\n    const content = (\n        <ContentWrapper>\n            {\n                prefixIconContent && <IconWrapper>{prefixIconContent}</IconWrapper>\n            }\n            <TextWrapper $hasPrefixIcon={!!prefixIcon} $hasSuffixIcon={!!suffixIcon || isExternal}>{text}</TextWrapper>\n            {\n                suffixIcon && <IconWrapper>{suffixIconContent}</IconWrapper>\n            }\n            {\n                isExternal && <><ScreenreaderText>{Translations.externalLink[locale]}</ScreenreaderText><IconWrapper><Icon inheritColor={true} icon={'ExternalLink'} /></IconWrapper></>\n            }\n        </ContentWrapper>\n    )\n\n    if (url) {\n        return (\n            <ListItem $isFirst={isFirst} $isLast={isLast} $separator={bottomSeparator}>\n                <StyledLink role=\"menuitem\" id={`${idPrefix}-menuitem-${index}`} ref={ref as React.Ref<HTMLAnchorElement>} href={url} target={openNewTab ? '_blank' : undefined} rel={openNewTab ? 'noopener noreferrer' : undefined} title={text} aria-label={text} onKeyDown={handleKeyDown} onClick={handleClick} tabIndex={tabIndex}>\n                    {content}\n                </StyledLink>\n            </ListItem>\n        );\n    }\n\n    if (onClick) {\n        return (<ListItem $isFirst={isFirst} $isLast={isLast} $separator={bottomSeparator}>\n            <Button role=\"menuitem\" id={`${idPrefix}-menuitem-${index}`} ref={ref as React.Ref<HTMLButtonElement>} onClick={onClick} tabIndex={tabIndex}>\n                {content}\n                </Button>\n            </ListItem>)\n    }\n    return (<></>);\n});","import React, { useEffect, useId } from \"react\";\nimport styled from \"styled-components\";\nimport { MenuItem } from \"./menuItem/menuItem\";\nimport HighchartsReact, { HighchartsReactRefObject } from \"highcharts-react-official\";\nimport { View } from \"../../../core/types/view\";\nimport { Translations } from \"../../../core/conversion/translations\";\nimport { Icon } from \"../icon/icon\";\nimport { viewToDownloadCSVOption } from \"../../../core/tables/csvTable\";\nimport { generateFilename } from \"../../../core/tables/exportingUtils\";\nimport { TIcon } from \"../../../core/types/icon\";\nimport { viewToDownloadXLSOption } from \"../../../core/tables/xlsx/xlsxBuilder\";\nimport { EVisualizationType } from \"../../../core\";\n\nconst BurgerWrapper = styled.div`\n    width: 2.5rem;\n    height: 2.5rem;\n`;\n\nconst Hamburger = styled.button`\n    width: 100%;\n    height: 100%;\n    svg {\n        height: 1.5rem;\n        width: 1.5rem;\n    }\n    background-color: transparent;\n    border: none;\n    cursor: pointer;\n`;\n\nconst MenuAnchor = styled.div`\n    width: 100%;\n    height: 0;\n    position: relative;\n`;\n\nconst MenuWrapper = styled.div`\n    display: flex;\n    flex-flow: column;\n    position: absolute;\n    background-color: #fff;\n    border-radius: 18px;\n    top: 0.2rem;\n    right: 0.2rem;\n    border: 1px solid #bdbdbd;\n`\nconst List = styled.ul`\n    list-style-type: none;\n    margin: 0;\n    padding: 0;\n`;\n\nexport interface IBurgerMenuProps {\n    viewData: View;\n    currentChartRef?: HighchartsReact.RefObject | null;\n    locale: string;\n    tableToggle?: {\n        toggleHandler: () => void;\n        tableMode: boolean;\n    };\n    menuItemDefinitions?: (IFunctionalMenuItem | ILinkMenuItem)[];\n    menuIconInheritColor?: boolean;\n    toggleAccessibilityMode?: () => void;\n    accessibilityMode?: boolean;\n}\n\ninterface IBaseMenuItem {\n    text: string;\n    prefixIcon?: TIcon | Exclude<React.ReactNode, string>;\n    suffixIcon?: TIcon | Exclude<React.ReactNode, string>;\n}\n\nexport interface IFunctionalMenuItem extends IBaseMenuItem {\n    onClick: () => void;\n}\n\nexport interface ILinkMenuItem extends IBaseMenuItem {\n    url: string;\n    isExternal?: boolean;\n    openNewTab?: boolean;\n}\n\nexport function calculateExportDimensions(chartRef: HighchartsReactRefObject): { finalWidth: number, finalHeight: number } {\n    const MIN_EXPORT_ASPECT_RATIO: number = 0.5;\n    const MAX_EXPORT_ASPECT_RATIO: number = 2;\n    const MIN_EXPORT_DIMENSION: number = 600;\n    const MAX_EXPORT_DIMENSION: number = 3000;\n\n    const inputWidth: number = chartRef.chart.chartWidth;\n    const inputHeight: number = chartRef.chart.chartHeight;\n\n    // Aspect ratio is the ratio of width to height clamped between MIN_EXPORT_ASPECT_RATIO and MAX_EXPORT_ASPECT_RATIO.\n    let aspectRatio: number = Math.max(\n        MIN_EXPORT_ASPECT_RATIO,\n        Math.min(\n            MAX_EXPORT_ASPECT_RATIO,\n            inputWidth / inputHeight\n        )\n    );\n\n    let finalWidth: number;\n    let finalHeight: number;\n\n    // If aspect ratio is less than 1, then height is greater than width.\n    if (aspectRatio < 1) {\n        finalHeight = Math.max(MIN_EXPORT_DIMENSION, Math.min(MAX_EXPORT_DIMENSION, inputHeight));\n        finalWidth = finalHeight * aspectRatio;\n        if (finalWidth < MIN_EXPORT_DIMENSION) {\n            finalWidth = MIN_EXPORT_DIMENSION;\n            finalHeight = finalWidth / aspectRatio;\n        }\n    } else {\n        finalWidth = Math.max(MIN_EXPORT_DIMENSION, Math.min(MAX_EXPORT_DIMENSION, inputWidth));\n        finalHeight = finalWidth / aspectRatio;\n        if (finalHeight < MIN_EXPORT_DIMENSION) {\n            finalHeight = MIN_EXPORT_DIMENSION;\n            finalWidth = finalHeight * aspectRatio;\n        }\n    }\n\n    return { finalWidth, finalHeight };\n}\n\nconst getTabIndex = (index: number, selectedIndex: number) => {\n    return selectedIndex != -1 && selectedIndex === index ? 0 : -1;\n};\n\nexport const BurgerMenu: React.FC<IBurgerMenuProps> = ({ viewData, currentChartRef, tableToggle, menuItemDefinitions, locale, menuIconInheritColor = false, toggleAccessibilityMode, accessibilityMode }) => {\n    const [isOpen, setIsOpen] = React.useState(false);\n    const [selectedIndex, setSelectedIndex] = React.useState(-1);\n    const idPrefix: string = useId();\n\n    const menuItems = React.useRef(new Map<number, HTMLButtonElement | HTMLAnchorElement | null>());\n    const menuRef = React.useRef<any>(null);\n    const closeMenu = (e: Event) => {\n        if (menuRef.current && isOpen && !menuRef.current.contains(e.target)) {\n            toggleMenuOpen(false);\n        }\n    }\n\n    React.useEffect(() => {\n        setFocusToMenuItem();\n    }, [selectedIndex]);\n\n\n    const createRefCallback = (index: number) => (el: HTMLButtonElement | HTMLAnchorElement | null) => {\n        menuItems.current.set(index, el);\n    };\n\n    document.addEventListener('mousedown', closeMenu);\n    const exportCSV = viewToDownloadCSVOption(viewData, locale);\n    const exportXLSX = viewToDownloadXLSOption(viewData, locale);\n    const customMenuItemArray = menuItemDefinitions?.map((menuItemDefinition, index) => {\n        if ('onClick' in menuItemDefinition) {\n            return <MenuItem\n                tabIndex={getTabIndex(index, selectedIndex)}\n                isFirst={index === 0}\n                index={index}\n                bottomSeparator={index + 1 === menuItemDefinitions.length}\n                locale={locale}\n                prefixIcon={menuItemDefinition.prefixIcon}\n                suffixIcon={menuItemDefinition.suffixIcon}\n                key={`customfmenuitem-${menuItemDefinition.text}`}\n                text={menuItemDefinition.text}\n                onClick={() => handleMenuItemClick(menuItemDefinition.onClick)}\n                ref={createRefCallback(index)}\n                idPrefix={idPrefix}\n            />; // NOSONAR\n        }\n\n        if ('url' in menuItemDefinition) {\n            return <MenuItem\n                tabIndex={getTabIndex(index, selectedIndex)}\n                isFirst={index === 0}\n                index={index}\n                bottomSeparator={index + 1 === menuItemDefinitions.length}\n                locale={locale}\n                prefixIcon={menuItemDefinition.prefixIcon}\n                suffixIcon={menuItemDefinition.suffixIcon}\n                isExternal={menuItemDefinition.isExternal}\n                key={`customlmenuitem-${menuItemDefinition.text}`}\n                text={`${menuItemDefinition.text}`}\n                url={menuItemDefinition.url}\n                openNewTab={menuItemDefinition.openNewTab}\n                onClick={() => handleMenuItemClick()}\n                ref={createRefCallback(index)}\n                idPrefix={idPrefix}\n            />; // NOSONAR\n        }\n    });\n\n    const defaultMenuItemsArray = () => {\n        const items = [];\n        let itemIndex = menuItemDefinitions ? menuItemDefinitions.length : 0;\n\n        items.push(<MenuItem\n            index={itemIndex}\n            isFirst={!menuItemDefinitions}\n            locale={locale}\n            prefixIcon={'Download'}\n            text={exportXLSX.text}\n            onClick={() => handleMenuItemClick(exportXLSX.onClick)}\n            tabIndex={getTabIndex(itemIndex, selectedIndex)}\n            ref={createRefCallback(itemIndex)}\n            key={`xlsx-menu-item`}\n            idPrefix={idPrefix}\n        />);\n\n        itemIndex++;\n        items.push(<MenuItem\n            index={itemIndex}\n            isLast={!currentChartRef}\n            bottomSeparator={!!currentChartRef}\n            locale={locale}\n            prefixIcon={'Download'}\n            text={exportCSV.text}\n            onClick={() => handleMenuItemClick(exportCSV.onClick)}\n            tabIndex={getTabIndex(itemIndex, selectedIndex)}\n            ref={createRefCallback(itemIndex)}\n            key={`csv-menu-item`}\n            idPrefix={idPrefix}\n        />);\n\n        if (currentChartRef) {\n            itemIndex++;\n            items.push(<MenuItem\n                index={itemIndex}\n                locale={locale}\n                prefixIcon={'Download'}\n                text={Translations.downloadSVG[locale]}\n                onClick={() => handleMenuItemClick(() =>\n                    currentChartRef.chart.exporting.exportChart({\n                        filename: `${generateFilename(viewData.tableReferenceName)}`,\n                        type: \"image/svg+xml\",\n                        sourceWidth: calculateExportDimensions(currentChartRef).finalWidth,\n                        sourceHeight: calculateExportDimensions(currentChartRef).finalHeight,\n                        scale: 1\n                    }, {}))\n                }\n                tabIndex={getTabIndex(itemIndex, selectedIndex)}\n                ref={createRefCallback(itemIndex)}\n                key={`svg-menu-item`}\n                idPrefix={idPrefix}\n            />)\n\n            itemIndex++;\n            items.push(<MenuItem\n                index={itemIndex}\n                isLast={!tableToggle}\n                bottomSeparator={!!tableToggle}\n                locale={locale}\n                prefixIcon={'Download'}\n                text={Translations.downloadPNG[locale]}\n                onClick={() => handleMenuItemClick(() =>\n                    currentChartRef.chart.exporting.exportChart({\n                        filename: `${generateFilename(viewData.tableReferenceName)}`,\n                        sourceWidth: calculateExportDimensions(currentChartRef).finalWidth,\n                        sourceHeight: calculateExportDimensions(currentChartRef).finalHeight,\n                        scale: 1\n                    }, {}))\n                }\n                tabIndex={getTabIndex(itemIndex, selectedIndex)}\n                ref={createRefCallback(itemIndex)}\n                key={`png-menu-item`}\n                idPrefix={idPrefix}\n            />)\n        }\n\n        if (showAccessibilityModeToggle) {\n            itemIndex++;\n            items.push(<MenuItem\n                index={itemIndex}\n                isFirst={false}\n                locale={locale}\n                text={accessibilityMode ? Translations.toggleAccessibilityModeOff[locale] : Translations.toggleAccessibilityModeOn[locale]}\n                onClick={() => handleMenuItemClick(toggleAccessibilityMode)}\n                tabIndex={getTabIndex(itemIndex, selectedIndex)}\n                ref={createRefCallback(itemIndex)}\n                key={`accessibility-mode-toggle`}\n                idPrefix={idPrefix}\n            />)\n        }\n\n        if (tableToggle) {\n            itemIndex++;\n            items.push(<MenuItem\n                index={itemIndex}\n                isLast={true}\n                locale={locale}\n                text={tableToggle.tableMode ? Translations.toggleTableModeOffText[locale] : Translations.toggleTableModeOnText[locale]}\n                onClick={() => handleMenuItemClick(tableToggle.toggleHandler)}\n                tabIndex={getTabIndex(itemIndex, selectedIndex)}\n                ref={createRefCallback(itemIndex)}\n                key={`table-toggle`}\n                idPrefix={idPrefix}\n            />)\n        }\n\n        return items;\n    };\n\n    useEffect(() => {\n        setSelectedIndex(isOpen ? 0 : -1);\n        document.addEventListener('mousedown', closeMenu);\n        document.addEventListener('keydown', handleKeyDown);\n        return () => {\n            document.removeEventListener('mousedown', closeMenu);\n            document.removeEventListener('keydown', handleKeyDown);\n        }\n    }, [isOpen]);\n\n    const getMenuItemMaxIndex = (): number => {\n        const customMenuItemsCount: number = menuItemDefinitions ? menuItemDefinitions.length : 0;\n        return customMenuItemsCount + defaultMenuItemsArray().length - 1;\n    }\n\n    const handleKeyDown = (e: KeyboardEvent) => {\n        if (e.key === 'Escape' ||\n            (e.key === 'Tab' && isOpen)) {\n            toggleMenuOpen(false, e.key === 'Escape');\n        }\n        if (e.key === 'ArrowDown' && isOpen) {\n            e.preventDefault();\n            setSelectedIndex((prevIndex) => {\n                const nextIndex = prevIndex + 1;\n                const maxIndex = getMenuItemMaxIndex();\n                return nextIndex > maxIndex ? 0 : nextIndex;\n            });\n        }\n        if (e.key === 'ArrowUp' && isOpen) {\n            e.preventDefault();\n            setSelectedIndex((prevIndex) => {\n                const nextIndex = prevIndex - 1;\n                const maxIndex = getMenuItemMaxIndex();\n                return nextIndex < 0 ? maxIndex : nextIndex;\n            });\n        }\n    }\n\n    const buttonRef = React.useRef<HTMLButtonElement>(null);\n    const handleMenuItemClick = (onClick?: () => void) => {\n        toggleMenuOpen(false, true);\n        if (onClick) onClick();\n    }\n\n    const toggleMenuOpen = (open: boolean, focusToMenuButton: boolean = false) => {\n        setIsOpen(open);\n        if (!open && focusToMenuButton) {\n            buttonRef.current?.focus();\n        }\n    }\n\n    const setFocusToMenuItem = () => {\n        if (selectedIndex === -1) {\n            return;\n        }\n        if (menuItems.current.has(selectedIndex)) {\n            menuItems.current.get(selectedIndex)?.focus();\n        }\n    }\n\n    const showAccessibilityModeToggle: boolean =\n        !!tableToggle &&\n        !tableToggle.tableMode &&\n        viewData.visualizationSettings.visualizationType != EVisualizationType.ScatterPlot;\n\n    return (\n        <BurgerWrapper ref={menuRef}>\n            <Hamburger ref={buttonRef} aria-label={`${Translations.chartMenuLabel[locale]}`} aria-expanded={isOpen} onClick={() => { toggleMenuOpen(!isOpen) }} aria-haspopup=\"menu\" aria-controls={`${idPrefix}-menu`}>\n                <Icon inheritColor={menuIconInheritColor} icon={isOpen ? 'Times' : 'Bars'} />\n            </Hamburger>\n            <MenuAnchor>\n                {\n                    isOpen &&\n                    <MenuWrapper>\n                            <List id={`${idPrefix}-menu`} role=\"menu\" aria-label={`${Translations.chartMenuLabel[locale]}`} aria-orientation=\"vertical\" aria-activedescendant={`${idPrefix}-menuitem-${selectedIndex}`} tabIndex={isOpen ? 0 : -1}>\n                                {menuItemDefinitions && customMenuItemArray}\n                                {defaultMenuItemsArray()}\n                            </List>\n                        </MenuWrapper>\n                }\n            </MenuAnchor>\n        </BurgerWrapper>\n    );\n}","import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n    byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n    return (byteToHex[arr[offset + 0]] +\n        byteToHex[arr[offset + 1]] +\n        byteToHex[arr[offset + 2]] +\n        byteToHex[arr[offset + 3]] +\n        '-' +\n        byteToHex[arr[offset + 4]] +\n        byteToHex[arr[offset + 5]] +\n        '-' +\n        byteToHex[arr[offset + 6]] +\n        byteToHex[arr[offset + 7]] +\n        '-' +\n        byteToHex[arr[offset + 8]] +\n        byteToHex[arr[offset + 9]] +\n        '-' +\n        byteToHex[arr[offset + 10]] +\n        byteToHex[arr[offset + 11]] +\n        byteToHex[arr[offset + 12]] +\n        byteToHex[arr[offset + 13]] +\n        byteToHex[arr[offset + 14]] +\n        byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n    const uuid = unsafeStringify(arr, offset);\n    if (!validate(uuid)) {\n        throw TypeError('Stringified UUID is invalid');\n    }\n    return uuid;\n}\nexport default stringify;\n","let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n    if (!getRandomValues) {\n        if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n            throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n        }\n        getRandomValues = crypto.getRandomValues.bind(crypto);\n    }\n    return getRandomValues(rnds8);\n}\n","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n","import { createGlobalStyle } from 'styled-components';\n \nexport const GlobalStyle = createGlobalStyle`\n    /* @font-face {\n        font-family: 'Barlow Semi Condensed';\n        font-style: normal;\n        font-weight: 500;\n        font-display: swap;\n        src: url(./fonts/BarlowSemiCondensed-Medium.ttf) format('truetype');\n    }\n\n    @font-face {\n        font-family: 'Barlow Semi Condensed';\n        font-style: normal;\n        font-weight: 400;\n        font-display: swap;\n        src: url(./fonts/BarlowSemiCondensed-Regular.ttf) format('truetype');\n    } */\n\n    .highcharts-root {\n        font-family: \"Barlow Semi Condensed\", Verdana, sans-serif;\n    }\n\n    .highcharts-tooltip-container {\n        z-index: 999 !important;\n    }\n\n    .tableChart {\n        font-family: \"Barlow Semi Condensed\", Verdana, sans-serif;\n        overflow-x: auto;\n        padding-left: 20px;\n        padding-right: 20px;\n    }\n\n    .tableChart:has(.title) {\n        padding-top: 14px;\n    }\n\n    .tableChart table,\n    .tableChart th,\n    .tableChart td {\n        border: 1px solid black;\n    }\n\n    .tableChart .title {\n        margin-top: 0;\n        font-size: 1.25rem;\n        font-weight: 500;\n        margin-bottom: 0rem;\n        width: 90%;\n        display: block;\n    }\n\n    .tableChart .subtitle {\n        font-size: 1.25rem;\n        font-weight: 400;\n        margin-bottom: 2rem;\n        margin-top: 6px;\n        width: 90%;\n        display: block;\n    }\n\n    .tableChart .caption {\n        width: 90%;\n        display: block;\n        caption-side: top;\n    }\n\n    .tableChart-title {\n        font-size: 1.25rem;\n        font-weight: 500;\n        color: #333;\n        margin-bottom: 2rem;\n        text-align: left;\n    }\n`;","import React from \"react\";\nimport styled from \"styled-components\";\nimport { Translations } from \"../../../core/conversion/translations\";\n\nconst ErrorSection = styled.div`\n    width: 100%;\n    position: relative;\n    font-family: 'Barlow Semi Condensed';\n`;\n\nexport interface IErrorInfoProps {\n    locale: string;\n}\n\nexport const ErrorInfo: React.FC<IErrorInfoProps> = ({ locale }) => {\n    return (\n        <ErrorSection>\n            <h1>{Translations.graphCreationError[locale]}</h1>\n        </ErrorSection>\n    );\n};","import React, { useMemo } from \"react\";\nimport styled from \"styled-components\";\nimport { convertPxGraphDataToChartOptions, EVisualizationType, IQueryVisualizationResponse, defaultTheme } from \"../../../core\";\n\nimport Highcharts from 'highcharts';\n// Named import HighchartsReact was added to get pxvisualiser to work in pxgraf-creator.\n// Could be something to be resolved with microbundle (non-)configuration too?\nimport HighchartsReactOfficial, { HighchartsReact } from 'highcharts-react-official';\nimport \"highcharts/modules/accessibility.js\";\nimport 'highcharts/modules/exporting.js';\nimport 'highcharts/modules/offline-exporting.js';\nimport 'highcharts/modules/pattern-fill.js';\nimport { BurgerMenu, IFunctionalMenuItem, ILinkMenuItem } from \"../burgerMenu/burgerMenu\";\nimport { extractSelectableVariableValues } from \"../../../core/conversion/helpers\";\nimport { convertPxGrafResponseToView } from \"../../../core/conversion/viewUtils\";\nimport { formatLocale } from \"../../../core/chartOptions/Utility/formatters\";\nimport { TableView } from \"./tableView\";\nimport { GlobalStyle } from \"../globalStyle\";\nimport { View } from \"../../../core/types/view\";\nimport { IChartOptions } from \"../../../core/types/chartOptions\";\nimport { ErrorInfo } from \"./ErrorInfo\";\nimport { ErrorBoundary } from \"../ErrorBoundary/ErrorBoundary\";\n\nconst initializeHighcharts = (locale: string, fontFamily?: string) => {\n    if (typeof Highcharts === 'object') {\n        Highcharts.wrap(Highcharts.SVGRenderer.prototype, 'init', function (this: any, proceed) { // https://stackoverflow.com/questions/53820683/customize-highcharts-desc-tag\n            proceed.apply(this, Array.prototype.slice.call(arguments, 1));\n            const descRegex = /Created with Highcharts/;\n            if (this.box.children[0] && descRegex.test(this.box.children[0].innerHTML)) {\n                this.box.children[0].remove(); // remove hardcoded \"<desc>Created with Highcharts {version number}</desc> from the code\"\n            }\n        });\n        Highcharts.setOptions(defaultTheme(locale, fontFamily));\n    }\n}\ninterface IChartWrapperProps {\n    $needsPadding: boolean;\n}\n\nconst ChartWrapper = styled.div<IChartWrapperProps>`\nwidth: 100%;\nposition: relative;\npadding-top: ${p => p.$needsPadding ? '38px' : '0'};\n`;\n\ninterface IMenuContainerProps {\n    $adjustHeightToTableTitle: boolean;\n}\n\nconst MenuContainer = styled.div<IMenuContainerProps>`\nposition: absolute;\ntop: ${p => p.$adjustHeightToTableTitle ? '14px' : '0'};\nright: 0;\nz-index: 1;\n`;\n\ninterface IChartContainerProps {\n    $tableMode: boolean;\n}\n\ninterface ITableContainerProps {\n    $tableMode: boolean;\n}\n\nconst ChartContainer = styled.div<IChartContainerProps>`\ndisplay: ${p => p.$tableMode ? 'none' : 'block'};\nmin-height: 635px;\nheight: 100%;\n`;\n\nconst TableContainer = styled.div<ITableContainerProps>`\ndisplay: ${p => p.$tableMode ? 'block' : 'none'};\n`;\n\nexport interface IChartProps {\n    pxGraphData: IQueryVisualizationResponse;\n    locale: string;\n    selectedVariableCodes?: { [key: string]: string[] };\n    showContextMenu?: boolean;\n    menuItemDefinitions?: (IFunctionalMenuItem | ILinkMenuItem)[];\n    menuIconInheritColor?: boolean;\n    showTitles?: boolean;\n    showTableUnits?: boolean;\n    showTableSources?: boolean;\n    footnote?: string;\n    fontFamily?: string;\n    showLastUpdated?: boolean;\n}\n\nconst ReactChart: React.FC<IChartProps> = ({\n    pxGraphData,\n    footnote,\n    locale,\n    menuItemDefinitions,\n    selectedVariableCodes = null,\n    showContextMenu = true,\n    menuIconInheritColor = false,\n    showTitles,\n    showTableUnits,\n    showTableSources,\n    fontFamily,\n    showLastUpdated = false }) => {\n    const validLocale = formatLocale(locale);\n    initializeHighcharts(validLocale, fontFamily);\n\n    const chartRef: React.MutableRefObject<HighchartsReactOfficial.RefObject | null> = React.useRef(null);\n\n    const [currentChartRef, setCurrentChartRef] = React.useState(chartRef.current);\n    const [tableMode, setTableMode] = React.useState(false);\n    const [accessibilityMode, setAccessibilityMode] = React.useState(false);\n    const [width, setWidth] = React.useState(0);\n\n    const variableSelections = useMemo(() => {\n        try {\n            return extractSelectableVariableValues(pxGraphData.selectableVariableCodes, pxGraphData.metaData, pxGraphData.visualizationSettings.defaultSelectableVariableCodes, selectedVariableCodes);\n        }\n        catch (error: any) {\n            console.error(error);\n            return {};\n        }\n    }, [selectedVariableCodes, pxGraphData]);\n\n    const view: View | null = useMemo(() => {\n        try {\n            return convertPxGrafResponseToView(pxGraphData, variableSelections);\n        }\n        catch (error: any) {\n            console.error(error);\n            return null;\n        }\n    }, [variableSelections, pxGraphData]);\n\n    const options: IChartOptions = useMemo(() => ({\n        showTitles: showTitles ?? true,\n        showUnits: !!showTableUnits,\n        showSources: showTableSources ?? true,\n        showLastUpdated: showLastUpdated,\n        accessibilityMode: accessibilityMode,\n        fontFamily: fontFamily,\n    }), [showTitles, showTableUnits, showTableSources, showLastUpdated, accessibilityMode, fontFamily]);\n\n    // Force rerender on window resize events, so that scaling and scrollboxes work correctly. Feel free to refactor to a more performant or better solution\n    let renderTimeOut: NodeJS.Timeout;\n    function rerender() {\n        if (width !== window.innerWidth) {\n            setWidth(window.innerWidth);\n        }\n    }\n\n    function redrawChart() {\n        clearTimeout(renderTimeOut);\n        renderTimeOut = setTimeout(rerender, 100);\n    }\n\n    if (window) {\n        window.addEventListener('resize', redrawChart);\n    }\n\n    const toggleTableMode = () => {\n        setTableMode(!tableMode);\n    }\n\n    const toggleAccessibilityMode = () => {\n        setAccessibilityMode(!accessibilityMode);\n    }\n\n    React.useEffect(() => {\n        if (chartRef.current) {\n            setCurrentChartRef(chartRef.current);\n        }\n    }, [chartRef.current]);\n\n    try {\n        // Chart\n        if (view && pxGraphData.visualizationSettings.visualizationType !== EVisualizationType.Table) {\n            const highChartOptions = convertPxGraphDataToChartOptions(validLocale, view, options);\n            const adjustForTableTitle: boolean = tableMode && options.showTitles === true;\n            return (\n                <ChartWrapper $needsPadding={options.showTitles !== true && showContextMenu}>\n                    {\n                        showContextMenu &&\n                        <MenuContainer $adjustHeightToTableTitle={adjustForTableTitle}>\n                                <BurgerMenu menuItemDefinitions={menuItemDefinitions} viewData={view} currentChartRef={currentChartRef} locale={validLocale} tableToggle={{ tableMode: tableMode, toggleHandler: toggleTableMode }} menuIconInheritColor={menuIconInheritColor} accessibilityMode={accessibilityMode} toggleAccessibilityMode={toggleAccessibilityMode} />\n                        </MenuContainer>\n                    }\n                    <ChartContainer $tableMode={adjustForTableTitle}>\n                        <HighchartsReact\n                            ref={chartRef}\n                            immutable={true}\n                            highcharts={Highcharts}\n                            options={highChartOptions}\n                        />\n                    </ChartContainer>\n                    <TableContainer $tableMode={adjustForTableTitle}>\n                        <TableView options={options} footnote={footnote} view={view} locale={validLocale} />\n                    </TableContainer>\n                </ChartWrapper>\n            );\n        }\n\n        // Table\n        if (view && pxGraphData.visualizationSettings.visualizationType === EVisualizationType.Table) {\n            return (\n                <ChartWrapper $needsPadding={options.showTitles !== true && showContextMenu}>\n                    {\n                        showContextMenu &&\n                        <MenuContainer $adjustHeightToTableTitle={options.showTitles === true} >\n                                <BurgerMenu menuItemDefinitions={menuItemDefinitions} viewData={view} locale={validLocale} menuIconInheritColor={menuIconInheritColor} />\n                        </MenuContainer>\n                    }\n                    <TableView options={options} footnote={footnote} view={view} locale={validLocale} />\n                </ChartWrapper>\n            );\n        }\n    } catch (error: any) {\n        console.error(error);\n        return <ErrorInfo locale={validLocale} />;\n    }\n\n    // Error\n    return <ErrorInfo locale={validLocale} />;\n};\n\nexport const Chart: React.FC<IChartProps> = (props) => {\n    const validLocale = formatLocale(props.locale);\n    return (\n        <ErrorBoundary fallback={<ErrorInfo locale={validLocale} />}>\n            <GlobalStyle />\n            <ReactChart {...props} />\n        </ErrorBoundary>\n    );\n};","import React, { useMemo } from \"react\";\nimport { View } from \"../../../core/types/view\";\nimport { IChartOptions } from \"../../../core/types/chartOptions\";\nimport { v4 as uuidv4 } from 'uuid';\nimport { renderHtmlTable } from \"../../../core/tables/htmlTable\";\n\nexport interface ITableViewProps {\n    view: View;\n    locale: string;\n    options: IChartOptions;\n    footnote?: string;\n}\n\nexport const TableView: React.FC<ITableViewProps> = ({ view, locale, options, footnote }) => {\n    const uuid = useMemo(() => uuidv4(), [view, locale]);\n\n    React.useEffect(() => {\n        document.getElementById(uuid)?.replaceChildren();\n        renderHtmlTable(view, locale, options, uuid, footnote);\n    }, [view, locale, options, footnote]);\n\n    return <div className={'tableChart'} id={uuid} />;\n}","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n    options = options || {};\n    const rnds = options.random ?? options.rng?.() ?? rng();\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    rnds[6] = (rnds[6] & 0x0f) | 0x40;\n    rnds[8] = (rnds[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = rnds[i];\n        }\n        return buf;\n    }\n    return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n    if (native.randomUUID && !buf && !options) {\n        return native.randomUUID();\n    }\n    return _v4(options, buf, offset);\n}\nexport default v4;\n","import { Component, ErrorInfo, ReactNode } from \"react\";\n\ninterface IErrorBoundaryState {\n    hasError: boolean;\n}\n\ninterface IErrorBoundaryProps {\n    fallback: ReactNode;\n    children: ReactNode;\n}\n\nexport class ErrorBoundary extends Component<IErrorBoundaryProps, IErrorBoundaryState> {\n    constructor(props: IErrorBoundaryProps) {\n      super(props);\n      this.state = { hasError: false };\n    }\n  \n    static getDerivedStateFromError() {\n      return { hasError: true };\n    }\n  \n    componentDidCatch(error: Error, info: ErrorInfo) {\n      console.error(error, info.componentStack);\n    }\n  \n    render() {\n      if (this.state.hasError) {\n        return this.props.fallback;\n      }\n  \n      return this.props.children;\n    }\n}\n","import * as Highcharts from \"highcharts\";\nimport { convertPxGraphDataToChartOptions } from \"../conversion\";\nimport { IQueryVisualizationResponse } from \"../types\";\nimport { defaultTheme } from \"./themes\";\nimport { TVariableSelections } from \"../types/variableSelections\";\nimport { extractSelectableVariableValues } from \"../conversion/helpers\";\nimport { convertPxGrafResponseToView } from \"../conversion/viewUtils\";\nimport { formatLocale } from \"../chartOptions/Utility/formatters\";\nimport { IChartOptions } from \"../types/chartOptions\";\n\n// Only load Highcharts modules in a browser environment\nconst loadHighchartsModules = () => {\n    if (globalThis.window !== undefined) {\n        try {\n            require('highcharts/modules/pattern-fill.js');\n            require('highcharts/modules/accessibility.js');\n            require('highcharts/modules/exporting.js');\n            require('highcharts/modules/offline-exporting.js');\n        } catch (e) {\n            console.error('Error loading Highcharts modules:', e);\n        }\n    }\n};\n\nexport const drawChart = (\n    container: string,\n    pxGraphData: IQueryVisualizationResponse,\n    locale: string,\n    selectedVariableCodes: TVariableSelections | null = null,\n    options: IChartOptions | undefined = undefined) =>\n{\n    loadHighchartsModules();\n    const validLocale = formatLocale(locale);\n    Highcharts.setOptions(defaultTheme(validLocale, options?.fontFamily));\n    const variableSelections = extractSelectableVariableValues(pxGraphData.selectableVariableCodes, pxGraphData.metaData, pxGraphData.visualizationSettings.defaultSelectableVariableCodes, selectedVariableCodes);\n    const view = convertPxGrafResponseToView(pxGraphData, variableSelections);\n    const highChartOptions = convertPxGraphDataToChartOptions(validLocale, view, options);\n    return Highcharts.chart(container, highChartOptions);\n}"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","__spreadArray","to","from","pack","ar","l","Array","slice","concat","memoize","fn","cache","create","arg","undefined","SuppressedError","reactPropsRegex","isPropValid","prop","test","charCodeAt","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","KEYFRAMES","abs","Math","String","fromCharCode","trim","value","match","pattern","exec","replace","replacement","indexof","search","position","indexOf","charat","index","substr","begin","end","strlen","sizeof","append","array","push","filter","line","column","character","characters","node","root","parent","type","props","children","siblings","return","copy","lift","prev","next","peek","caret","token","delimit","delimiter","whitespace","escaping","count","commenter","identifier","compile","dealloc","parse","alloc","rule","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","size","j","k","x","y","z","prefix","hash","some","element","_","a","b","c","d","e","f","serialize","callback","output","stringify","join","prefixer","map","combine","unitlessKeys","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","scale","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","process","env","REACT_APP_SC_ATTR","SC_ATTR","u","h","window","document","Boolean","SC_DISABLE_SPEEDY","REACT_APP_SC_DISABLE_SPEEDY","NODE_ENV","m","o","r","forEach","v","Error","g","S","Map","w","N","has","get","set","E","C","A","Set","console","error","delete","useState","warn","add","message","P","freeze","I","O","theme","D","R","T","M","V","F","G","L","B","displayName","name","charAt","toLowerCase","$","Symbol","for","Y","W","q","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","H","caller","callee","arity","U","$$typeof","compare","J","render","X","Z","defineProperty","K","getOwnPropertyNames","Q","getOwnPropertySymbols","ee","getOwnPropertyDescriptor","te","getPrototypeOf","ne","oe","re","se","ie","ae","ce","constructor","ue","isArray","le","pe","groupSizes","Uint32Array","tag","_cGroup","_cIndex","indexOfGroup","insertRules","insertRule","clearGroup","deleteRule","getGroup","getRule","he","de","RegExp","fe","ShadowRoot","nodeType","me","getRootNode","ye","split","registerName","ve","textContent","parseInt","getTag","ge","options","target","querySelectorAll","getAttribute","parentNode","removeChild","we","head","createElement","nextSibling","setAttribute","__webpack_nonce__","insertBefore","be","appendChild","createTextNode","sheet","styleSheets","ownerNode","cssRules","cssText","Ne","nodes","childNodes","Ee","splice","Ce","Ae","isServer","useCSSOMInjection","_e","gs","names","server","registerId","rehydrate","reconstructWithOptions","allocateGSInstance","hasNameForId","clearNames","clear","clearRules","clearTag","Pe","Ie","Oe","De","Re","replaceAll","xe","je","plugins","startsWith","endsWith","s.RULESET","includes","s.prefixer","s.stringify","collection","s.middleware","substring","s.compile","namespace","s.serialize","reduce","toString","Te","ke","createContext","shouldForwardProp","styleSheet","stylis","Fe","useContext","Le","inject","id","getName","Be","ze","$e","Ye","We","isCss","qe","styledComponentId","isReactComponent","He","Ue","Je","staticRulesId","isStatic","componentId","baseHash","baseStyle","generateAndInjectStyles","className","css","Xe","et","tt","nt","attrs","parentComponentId","componentStyle","foldedComponentIds","useDebugValue","style","as","forwardedAs","warnTooManyClasses","ref","forwardRef","_foldedDefaultProps","keys","ot","rt","st","it","withConfig","at","ct","ut","createStyles","removeStyles","renderStyles","navigator","product","EVisualizationType","EVariableType","ETimeVariableInterval","mt","DefaultTranslations","empty","fi","sv","en","preliminaryData","source","unit","graphCreationError","thousandsSep","thousandsSepAccessibility","decimalPoint","barMultiple","barSingle","columnSingle","columnMultiple","lineSingle","lineMultiple","pieSingle","pieMultiple","scatterSingle","scatterMultiple","defaultSingle","defaultMultiple","defaultChartTitle","chartMenuLabel","menuButtonLabel","credits","legendItem","legendLabel","legendLabelNoTitle","contextButtonTitle","downloadPNG","downloadSVG","downloadXLSX","downloadCSV","rangeCategories","rangeFromTo","timeRangeDays","timeRangeHours","timeRangeMinutes","timeRangeSeconds","xAxisDescriptionPlural","xAxisDescriptionSingular","yAxisDescriptionPlural","yAxisDescriptionSingular","seriesSummaryBar","seriesSummaryBarCombination","seriesSummaryColumn","seriesSummaryColumnCombination","seriesSummaryDefault","seriesSummaryDefaultCombination","seriesSummaryLine","seriesSummaryLineCombination","seriesSummaryPie","seriesSummaryPieCombination","seriesSummaryScatter","seriesSummaryScatterCombination","xAxisDescription","yAxisDescription","endOfChartMarker","loading","chartContainerLabel","toggleTableModeOnText","toggleTableModeOffText","externalLink","quarter","dataMissing","toggleAccessibilityModeOn","toggleAccessibilityModeOff","lastUpdated","DefaultArrayTranslations","months","shortMonths","numericSymbols","weekdays","ordinalSuffices","Manager","TranslationManager","_this","Translations","ArrayTranslations","GetAllLanguages","AddTranslations","newTranslations","key","_extends","cartesianProduct","allEntries","results","entries","result","entry","subResults","onlyUnique","findIndex","JSON","indexedDotCodes","formatNumericValue","precision","locale","addThousandSeparator","Intl","NumberFormat","maximumFractionDigits","minimumFractionDigits","useGrouping","format","formatMissingData","missingCode","htmlTable","getToolTipFormatterFunction","view","_this$options$custom$","_this$options$custom","_this$options$custom2","_view$rowVarNames","_view$colVarNames","tooltipLines","rowVarNames","series","rvn","colVarNames","cvn","custom","getDataFormattedForChartType","getScreenReaderFormatterCallbackFunction","point","_point$options$custom","_point$options$custom2","_point$options$custom3","_view$rowVarNames2","_view$colVarNames2","parseScreenReaderFriendlyTimePeriods","getAxisLabelFormatterFunction","toLocaleString","formatLocale","getAxisLabelShorteningFunction","valueAmount","MAX_LENGTH","shortenStringValue","getDataLabelFormatterFunction","_this$options$custom$2","_this$options$custom3","getLegendLabelShorteningFunction","ESeriesType","limit","totalLength","getScatterPlotTooltipFormatterFunction","_view$colVarNames4","_this$options$custom4","_this$y","xVarValue","rowNameGroup","yVarValue","colVarName","renderString","columnNameGroups","cng","getLineChartToolTipFormatterFunction","_this$options$custom$3","_this$options$custom5","_this$options$custom6","_view$colVarNames5","getFormattedUnits","unitInfos","uniqueUnits","ui","_point$percentage","_value$toLocaleString","Number","toFixed","visualizationSettings","visualizationType","PyramidChart","PercentHorizontalBarChart","PercentVerticalBarChart","percentage","units","strippedValue","splitValues","parsePlacementSuffix","log","getFormattedLastUpdatedText","date","Date","isNaN","getTime","formattedDate","DateTimeFormat","buildLinearAxisTickPositioner","dataMin","dataMax","axisLength","largestSmallerPowerOf10","max","segmentLength","dataMinValue","dataMaxValue","maxNumberOfSegments","_candidates$map$find","Decimal","greaterThan","lessThan","minus","div","lessThanOrEqualTo","candidates","delta","accum","candidateNumOfSegs","input","segmentDelta","equals","pow10Step","pow","log10","floor","mul","ceil","linearAxisIntervalStepFunction","greaterThanOrEqualTo","isInteger","score","divider","mod","getIntegerDivisibilityScore","text","strings","decimals","decimalString","getFloatDivisibilityScore","sort","_ref","_ref2","_lengthB","_lengthA","_ref3","_ref4","toNumber","iterate","_ref5","find","plus","NaN","getInterval","chart","plotWidth","isNeg","isNegative","isPositive","lowerBound","upperBound","getTimeSeriesOptions","interval","startingPoint","startingDate","Irregular","Week","Month","pointStart","pointIntervalUnit","Quarter","HalfYear","Year","getXAxisOptions","seriesType","Time","labels","numeric","every","parseFloat","Ordinal","categories","ordinal","tickPositioner","seriesLength","maxLabelLen","acc","mls","numOfLabels","getOrdinalOptions","autoRotation","timeVariableIntervals","weeklyOptions","monthlyOptions","quarterlyOptions","biannualOptions","formatter","Highcharts","dateFormat","_view$visualizationSe","timeSeriesStartingPoint","stepFunc","shift","distFromPrevMatching","getFullYear","getMonth","shiftFunc","_view$visualizationSe2","defaultColors","defaultFillPatterns","buildPatternObject","color","backgroundColor","path","stroke","width","height","buildLineChartSeries","sIndex","commonSeriesOptions","buildBarChartSeries","reverseOrder","patternFill","buildColumnChartSeries","ser","animation","data","dataPoint","dIndex","preliminary","commonChartOptions","_options$showTitles","showTitles","sourceText","creditsText","sources","hasLastUpdated","showLastUpdated","lastUpdatedText","spacingBottom","accessibility","descriptionFormatter","title","header","subtitle","subheaderValues","enabled","caption","tooltip","yAxis","commonYAxisOptions","plotLines","commonDatalabelsOptions","showDataPoints","fontSize","commonBasicHorizontalBarChartYAxisOptions","min","mostPrecise","innerSeries","cell","textAlign","align","commonHorizontalBarChartOptions","xAxis","commonStackedHorizontalBarChartOptions","accessibilityMode","legend","commonLegendStyleOptions","layout","reversed","margin","commonVerticalBarChartOptions","commonBasicVerticalBarChartOptions","softMin","softMax","commonStackedVerticalBarChartOptions","itemHiddenStyle","tooltipPointFormat","convertPxGraphDataToChartOptions","LineChart","cutValueAxis","markerSettings","enabledThreshold","gridLineColor","gridLineWidth","plotOptions","dataLabels","marker","labelFormatter","exporting","lineChartOptions","VerticalBarChart","basicVerticalBarChartOptions","HorizontalBarChart","basicHorizontalBarChartOptions","GroupVerticalBarChart","groupVerticalBarChartOptions","GroupHorizontalBarChart","groupHorizontalBarChartOptions","StackedVerticalBarChart","stacking","stackedVerticalBarChartOptions","StackedHorizontalBarChart","sum","curr","_curr$index$value","bar","stackedHorizontalBarChartOptions","percentVerticalBarChartOptions","percentHorizontalBarChartOptions","PieChart","showData","pie","_this$percentage","round","pieChartOptions","maxValue","dataCell","_dataCell$value","pyramidChartOptions","ScatterPlot","_view$series$X_INDEX$","_view$series$Y_INDEX$","symbol","headerFormat","pointFormat","scatter","radius","markerSize","scatterPlotOptions","extractSelectableVariableValues","selectableVariableCodes","metaData","defaultSelectableVariableCodes","selectedValueCodes","selectableVariableCodesCheckList","currentSelectableVariableValues","_parseSelected","parseSelected","updatedArray","parsedValues","_parseDefault","parseDefault","variableCode","variableIndex","metaDataObject","code","values","selectedVariables","defaultVariables","ASCENDING_SORTING_FUNC","_a$value","_b$value","DESCENDING_SORTING_FUNC","_b$value2","_a$value2","sortViewBasedOnSeries","referenceSeriesIndex","sortingFunc","raiseReferenceSeriesToFirst","reorderView","sortingSeries","sortingIndices","indices","get1DSortingIndexBuffer","indexBuffer","reorderSeriesBasedOnIndexBuffer","reorderedSeriesArray","getValuesForVariableInView","sortVariables","variables","codes","_step","sorted","_loop","_iterator","_createForOfIteratorHelperLoose","done","SeriesBuilder","responseObj","dataIndex","dataLength","coordinates","lastIndices","variableOrder","lastCoordinateIndex","reverseCumulativeProducts","selectedViewContentVariableIndex","selectedViewTimeVariableIndex","selectedViewMeta","rowLength","rowAmount","completeMap","variableSizes","getSelectedView","getVariableOrder","initializeCoordinates","Content","generateRCP","val","setCurrentIndex","_proto","_completeMap$find","targetIndex","targetVariableCode","targetVariable","tv","getViewSeries","rowIndex","currentSeries","viewSeries","createDataCell","generateRowNameGroup","_this2","rowVariable","_this$selectedViewMet","_this$selectedViewMet2","timeVal","getCurrentTimeValue","contentComponent","numberOfDecimals","missingDataInfo","filteredVariables","rowVariables","rowVariableCodes","columnVariables","columnVariableCodes","selectableVariables","directionlessMultiselectVariables","rv","cv","singleSelectedVariables","unassignedVariables","targetMap","sourceCodes","cnt","cumulativeMultiplier","convertPxGrafResponseToView","_responseObj$visualiz","originalWiew","relativeView","selectedValueAmounts","varMeta","getSelectableVariables","contentVar","getContentVariable","unsortedSeries","columnVarValues","vm","columnVarValueGroup","buildSeries","getVariableNames","dates","cvv","_cvv$contentComponent","_cvv$contentComponent2","validDates","latestIndex","dateStr","latestIdx","currentDate","currentIdx","arr","getLastUpdated","tableReferenceName","tableReference","getSubheaderValues","getUnitInformation","getContentProperty","cc","_cc$source","selectableVarNames","getSeriesType","convert","getValueSelectAmounts","isRelativeChart","sorting","reversedSeries","reverse","reverseViewOrder","sumArray","item","_item$value","sortViewBasedOnSum","convertToRelative","getSortingIndex","newSeries","_series$series$index$","newCell","lang","varCodes","meta","_meta$find","sortingVar","valIndex","_responseObj$visualiz2","selectableVariable","_selectableVariable$v","_selectableVariable$v2","valMeta","extractorFunc","_meta$find2","Nominal","metaDataType","defaultTheme","fontFamily","keyboardNavigation","seriesNavigation","mode","responsive","condition","maxHeight","chartOptions","fallbackToExportServer","allowHTML","chartTypes","axis","summary","barCombination","columnCombination","default","defaultCombination","lineCombination","pieCombination","scatterCombination","screenReaderSection","colors","spacingLeft","outside","useHTML","maxWidth","whiteSpace","minScale","cursor","href","left","textOverflow","rotation","reserveSpace","lineColor","lineWidth","allowOverlap","crosshair","itemStyle","connectorShape","connectorColor","groupPadding","pointPadding","borderRadius","borderWidth","renderHtmlTable","containerId","footnote","container","getElementById","table","_view$columnNameGroup","_view$series$0$rowNam","colHeaderRows","rowHeaderCols","tabIndex","columnHeaders","colNameGroups","colSpans","calculateColSpans","row","tableRow","col","th","buildColumnHeaderRows","td","prepend","thead","tbody","dataRows","rowSpans","calculateRowSpans","hCol","buildDataRows","generateTable","titleId","titleElement","isFirstMetadata","addMetadata","span","showUnits","unitName","showSources","replaceChildren","errorMessage","fill","generateFilename","trimmedTableReference","padStart","getDate","getHours","getMinutes","getSeconds","generateCsv","_view$columnNameGroup2","_view$series$","_view$series$0$series","_view$series$2","gridWidth","lineBreak","csv","buildCSVRow","group","serie","viewToDownloadCSVOption","onClick","blob","Blob","url","URL","createObjectURL","link","body","click","startIndex","rowLen","lineBrak","worksheetProperties","getColumnLetter","colIndex","letter","fromCodePoint","toUpperCase","workbookTemplate","buildCellRow","cellRow","buildMinimalXlsxBlobAsync","rows","headerRow","subheaderRows","columnHeaderRows","unitRow","sourceRow","buildCellRows","worksheet","xmlColumns","numOfcols","cols","buildColumns","xmlRows","rowCells","cellIndex","columnNumber","rowNumber","xmlCharMap","char","buildCell","buildRows","wrapInSheetTemplate","buildXMLSheet","content","xl","strToU8","Promise","resolve","reject","zip","err","buffer","ArrayBuffer","Uint8Array","viewToDownloadXLSOption","then","allIcons","Icon","icon","_ref$inheritColor","inheritColor","React","xmlns","viewBox","Button","styled","_templateObject","_taggedTemplateLiteralLoose","StyledLink","_templateObject2","ListItem","li","_templateObject3","$isFirst","$isLast","$separator","ContentWrapper","_templateObject4","IconWrapper","_templateObject5","TextWrapper","_templateObject6","$hasPrefixIcon","$hasSuffixIcon","ScreenreaderText","_templateObject7","MenuItem","prefixIconContent","suffixIconContent","openNewTab","isExternal","prefixIcon","suffixIcon","idPrefix","_ref$bottomSeparator","bottomSeparator","_ref$isFirst","isFirst","_ref$isLast","isLast","_ref$tabIndex","_ref$index","Fragment","role","rel","onKeyDown","preventDefault","BurgerWrapper","Hamburger","button","MenuAnchor","MenuWrapper","List","ul","calculateExportDimensions","chartRef","finalWidth","finalHeight","MIN_EXPORT_DIMENSION","inputWidth","chartWidth","inputHeight","chartHeight","getTabIndex","selectedIndex","BurgerMenu","viewData","currentChartRef","tableToggle","menuItemDefinitions","_ref$menuIconInheritC","menuIconInheritColor","toggleAccessibilityMode","_React$useState","isOpen","setIsOpen","_React$useState2","setSelectedIndex","useId","menuItems","useRef","menuRef","closeMenu","current","contains","toggleMenuOpen","useEffect","setFocusToMenuItem","createRefCallback","el","addEventListener","exportCSV","exportXLSX","customMenuItemArray","menuItemDefinition","handleMenuItemClick","defaultMenuItemsArray","items","itemIndex","exportChart","filename","sourceWidth","sourceHeight","showAccessibilityModeToggle","tableMode","toggleHandler","handleKeyDown","removeEventListener","getMenuItemMaxIndex","prevIndex","nextIndex","maxIndex","buttonRef","open","focusToMenuButton","_buttonRef$current","focus","_menuItems$current$ge","byteToHex","getRandomValues","rnds8","native","randomUUID","crypto","bind","TableView","uuid","useMemo","rnds","random","rng","unsafeStringify","_v4","uuidv4","_document$getElementB","GlobalStyle","WeakMap","Children","useLayoutEffect","remove","memo","createGlobalStyle","ErrorSection","ErrorInfo","ErrorBoundary","_Component","state","hasError","componentDidCatch","info","componentStack","fallback","Component","ChartWrapper","$needsPadding","MenuContainer","$adjustHeightToTableTitle","ChartContainer","$tableMode","TableContainer","ReactChart","pxGraphData","_ref$selectedVariable","selectedVariableCodes","_ref$showContextMenu","showContextMenu","showTableUnits","showTableSources","_ref$showLastUpdated","validLocale","wrap","SVGRenderer","proceed","box","innerHTML","setOptions","initializeHighcharts","renderTimeOut","setCurrentChartRef","setTableMode","_React$useState3","setAccessibilityMode","_React$useState4","setWidth","variableSelections","rerender","innerWidth","clearTimeout","setTimeout","Table","highChartOptions","adjustForTableTitle","HighchartsReact","immutable","highcharts","_options","globalThis","require","loadHighchartsModules"],"mappings":"+4DA+BO,IAAIA,EAAW,WAQpB,OAPAA,EAAWC,OAAOC,QAAU,SAAkBC,GAC1C,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAII,KADTL,EAAIG,UAAUF,GACOJ,OAAOS,UAAUC,eAAeC,KAAKR,EAAGK,KAAIN,EAAEM,GAAKL,EAAEK,IAE9E,OAAON,CACV,EACMH,EAASa,MAAMC,KAAMP,UAC9B,EA6KO,SAASQ,EAAcC,EAAIC,EAAMC,GACtC,GAAIA,GAA6B,IAArBX,UAAUC,OAAc,IAAK,IAA4BW,EAAxBd,EAAI,EAAGe,EAAIH,EAAKT,OAAYH,EAAIe,EAAGf,KACxEc,GAAQd,KAAKY,IACRE,IAAIA,EAAKE,MAAMX,UAAUY,MAAMV,KAAKK,EAAM,EAAGZ,IAClDc,EAAGd,GAAKY,EAAKZ,IAGrB,OAAOW,EAAGO,OAAOJ,GAAME,MAAMX,UAAUY,MAAMV,KAAKK,GACpD,CC7NA,SAASO,EAAQC,GACf,IAAIC,EAAQzB,OAAO0B,OAAO,MAC1B,OAAO,SAAUC,GAEf,YADmBC,IAAfH,EAAME,KAAoBF,EAAME,GAAOH,EAAGG,IACvCF,EAAME,EACjB,CACA,CDiUkD,mBAApBE,iBAAiCA,gBEpU/D,IAAIC,EAAkB,gjIAElBC,iBAA6BR,EAAQ,SAAUS,GACjD,OAAOF,EAAgBG,KAAKD,IAAgC,MAAvBA,EAAKE,WAAW,IAE3B,MAAvBF,EAAKE,WAAW,IAEhBF,EAAKE,WAAW,GAAK,EAC1B,GCXWC,EAAK,OACLC,EAAM,QACNC,EAAS,WAETC,EAAU,OACVC,EAAU,OACVC,EAAc,OAUdC,EAAY,aCZZC,EAAMC,KAAKD,IAMX1B,EAAO4B,OAAOC,aAMd5C,EAASD,OAAOC,OAepB,SAAS6C,EAAMC,GACrB,OAAOA,EAAMD,MACd,CAOO,SAASE,EAAOD,EAAOE,GAC7B,OAAQF,EAAQE,EAAQC,KAAKH,IAAUA,EAAM,GAAKA,CACnD,CAQO,SAASI,EAASJ,EAAOE,EAASG,GACxC,OAAOL,EAAMI,QAAQF,EAASG,EAC/B,CAQO,SAASC,EAASN,EAAOO,EAAQC,GACvC,OAAOR,EAAMS,QAAQF,EAAQC,EAC9B,CAOO,SAASE,EAAQV,EAAOW,GAC9B,OAAiC,EAA1BX,EAAMb,WAAWwB,EACzB,CAQO,SAASC,EAAQZ,EAAOa,EAAOC,GACrC,OAAOd,EAAM1B,MAAMuC,EAAOC,EAC3B,CAMO,SAASC,EAAQf,GACvB,OAAOA,EAAMxC,MACd,CAMO,SAASwD,EAAQhB,GACvB,OAAOA,EAAMxC,MACd,CAOO,SAASyD,EAAQjB,EAAOkB,GAC9B,OAAOA,EAAMC,KAAKnB,GAAQA,CAC3B,CAgBO,SAASoB,EAAQF,EAAOhB,GAC9B,OAAOgB,EAAME,OAAO,SAAUpB,GAAS,OAAQC,EAAMD,EAAOE,IAC7D,CC1HO,IAAImB,EAAO,EACPC,EAAS,EACT9D,EAAS,EACTgD,EAAW,EACXe,EAAY,EACZC,EAAa,GAYjB,SAASC,EAAMzB,EAAO0B,EAAMC,EAAQC,EAAMC,EAAOC,EAAUtE,EAAQuE,GACzE,MAAO,CAAC/B,MAAOA,EAAO0B,KAAMA,EAAMC,OAAQA,EAAQC,KAAMA,EAAMC,MAAOA,EAAOC,SAAUA,EAAUT,KAAMA,EAAMC,OAAQA,EAAQ9D,OAAQA,EAAQwE,OAAQ,GAAID,SAAUA,EACnK,CAOO,SAASE,EAAMP,EAAMG,GAC3B,OAAO3E,EAAOuE,EAAK,GAAI,KAAM,KAAM,GAAI,KAAM,KAAM,EAAGC,EAAKK,UAAWL,EAAM,CAAClE,QAASkE,EAAKlE,QAASqE,EACrG,CAKO,SAASK,EAAMR,GACrB,KAAOA,EAAKA,MACXA,EAAOO,EAAKP,EAAKA,KAAM,CAACI,SAAU,CAACJ,KAEpCT,EAAOS,EAAMA,EAAKK,SACnB,CAYO,SAASI,IAMf,OALAZ,EAAYf,EAAW,EAAIE,EAAOc,IAAchB,GAAY,EAExDc,IAAwB,KAAdC,IACbD,EAAS,EAAGD,KAENE,CACR,CAKO,SAASa,IAMf,OALAb,EAAYf,EAAWhD,EAASkD,EAAOc,EAAYhB,KAAc,EAE7Dc,IAAwB,KAAdC,IACbD,EAAS,EAAGD,KAENE,CACR,CAKO,SAASc,IACf,OAAO3B,EAAOc,EAAYhB,EAC3B,CAKO,SAAS8B,IACf,OAAO9B,CACR,CAOO,SAASlC,GAAOuC,EAAOC,GAC7B,OAAOF,EAAOY,EAAYX,EAAOC,EAClC,CAMO,SAASyB,GAAOX,GACtB,OAAQA,GAEP,KAAK,EAAG,KAAK,EAAG,KAAK,GAAI,KAAK,GAAI,KAAK,GACtC,OAAO,EAER,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,IAE3D,KAAK,GAAI,KAAK,IAAK,KAAK,IACvB,OAAO,EAER,KAAK,GACJ,OAAO,EAER,KAAK,GAAI,KAAK,GAAI,KAAK,GAAI,KAAK,GAC/B,OAAO,EAER,KAAK,GAAI,KAAK,GACb,OAAO,EAGT,OAAO,CACR,CAsBO,SAASY,GAASZ,GACxB,OAAO7B,EAAKzB,GAAMkC,EAAW,EAAGiC,GAAmB,KAATb,EAAcA,EAAO,EAAa,KAATA,EAAcA,EAAO,EAAIA,IAC7F,CAcO,SAASc,GAAYd,GAC3B,MAAOL,EAAYc,MACdd,EAAY,IACfa,IAIF,OAAOG,GAAMX,GAAQ,GAAKW,GAAMhB,GAAa,EAAI,GAAK,GACvD,CAwBO,SAASoB,GAAUhC,EAAOiC,GAChC,OAASA,GAASR,OAEbb,EAAY,IAAMA,EAAY,KAAQA,EAAY,IAAMA,EAAY,IAAQA,EAAY,IAAMA,EAAY,MAG/G,OAAOjD,GAAMqC,EAAO2B,KAAWM,EAAQ,GAAe,IAAVP,KAA0B,IAAVD,KAC7D,CAMO,SAASK,GAAWb,GAC1B,KAAOQ,YACEb,GAEP,KAAKK,EACJ,OAAOpB,EAER,KAAK,GAAI,KAAK,GACA,KAAToB,GAAwB,KAATA,GAClBa,GAAUlB,GACX,MAED,KAAK,GACS,KAATK,GACHa,GAAUb,GACX,MAED,KAAK,GACJQ,IAIH,OAAO5B,CACR,CAOO,SAASqC,GAAWjB,EAAMjB,GAChC,KAAOyB,KAEFR,EAAOL,IAAc,KAGhBK,EAAOL,IAAc,IAAsB,KAAXc,OAG1C,MAAO,KAAO/D,GAAMqC,EAAOH,EAAW,GAAK,IAAMvC,EAAc,KAAT2D,EAAcA,EAAOQ,IAC5E,CAMO,SAASU,GAAYnC,GAC3B,MAAQ4B,GAAMF,MACbD,IAED,OAAO9D,GAAMqC,EAAOH,EACrB,CCxPO,SAASuC,GAAS/C,GACxB,OD+HM,SAAkBA,GACxB,OAAOwB,EAAa,GAAIxB,CACzB,CCjIQgD,CAAQC,GAAM,GAAI,KAAM,KAAM,KAAM,CAAC,IAAKjD,EDuH3C,SAAgBA,GACtB,OAAOqB,EAAOC,EAAS,EAAG9D,EAASuD,EAAOS,EAAaxB,GAAQQ,EAAW,EAAG,EAC9E,CCzH0D0C,CAAMlD,GAAQ,EAAG,CAAC,GAAIA,GAChF,CAcO,SAASiD,GAAOjD,EAAO0B,EAAMC,EAAQwB,EAAMC,EAAOC,EAAUC,EAAQC,EAAQC,GAiBlF,IAhBA,IAAI7C,EAAQ,EACR8C,EAAS,EACTjG,EAAS8F,EACTI,EAAS,EACTC,EAAW,EACXC,EAAW,EACXC,EAAW,EACXC,EAAW,EACXC,EAAY,EACZxC,EAAY,EACZK,EAAO,GACPC,EAAQuB,EACRtB,EAAWuB,EACXW,EAAYb,EACZ3B,EAAaI,EAEVkC,UACEF,EAAWrC,EAAWA,EAAYa,KAEzC,KAAK,GACJ,GAAgB,KAAZwB,GAAqD,IAAlClD,EAAOc,EAAYhE,EAAS,GAAU,EACsD,GAA9G8C,EAAQkB,GAAcpB,EAAQoC,GAAQjB,GAAY,IAAK,OAAQ,MAAO5B,EAAIgB,EAAQ4C,EAAO5C,EAAQ,GAAK,MACzGoD,GAAa,GACd,KACA,CAEF,KAAK,GAAI,KAAK,GAAI,KAAK,GACtBvC,GAAcgB,GAAQjB,GACtB,MAED,KAAK,EAAG,KAAK,GAAI,KAAK,GAAI,KAAK,GAC9BC,GAAckB,GAAWkB,GACzB,MAED,KAAK,GACJpC,GAAcmB,GAASL,IAAU,EAAG,GACpC,SAED,KAAK,GACJ,OAAQD,KACP,KAAK,GAAI,KAAK,GACbpB,EAAOgD,GAAQpB,GAAUT,IAAQE,KAAUZ,EAAMC,EAAQ6B,GAAeA,GAC3C,GAAxBjB,GAAMqB,GAAY,IAAiC,GAAtBrB,GAAMF,KAAU,KAAYtB,EAAOS,IAAkD,MAAnCZ,EAAOY,GAAa,OAAQ,KAAYA,GAAc,KAC1I,MACD,QACCA,GAAc,IAEhB,MAED,KAAK,IAAMqC,EACVN,EAAO5C,KAAWI,EAAOS,GAAcuC,EAExC,KAAK,IAAMF,EAAU,KAAK,GAAI,KAAK,EAClC,OAAQtC,GAEP,KAAK,EAAG,KAAK,IAAKuC,EAAW,EAE7B,KAAK,GAAKL,GAA0B,GAAdM,IAAiBvC,EAAapB,EAAQoB,EAAY,MAAO,KAC1EmC,EAAW,IAAM5C,EAAOS,GAAchE,GAAwB,IAAbqG,GAA+B,KAAbD,IACtE3C,EAAO0C,EAAW,GAAKO,GAAY1C,EAAa,IAAK2B,EAAMxB,EAAQnE,EAAS,EAAGgG,GAAgBU,GAAY9D,EAAQoB,EAAY,IAAK,IAAM,IAAK2B,EAAMxB,EAAQnE,EAAS,EAAGgG,GAAeA,GACzL,MAED,KAAK,GAAIhC,GAAc,IAEvB,QAGC,GAFAP,EAAO+C,EAAYG,GAAQ3C,EAAYE,EAAMC,EAAQhB,EAAO8C,EAAQL,EAAOG,EAAQ3B,EAAMC,EAAQ,GAAIC,EAAW,GAAItE,EAAQ6F,GAAWA,GAErH,MAAd9B,EACH,GAAe,IAAXkC,EACHR,GAAMzB,EAAYE,EAAMsC,EAAWA,EAAWnC,EAAOwB,EAAU7F,EAAQ+F,EAAQzB,OAC3E,CACJ,OAAQ4B,GAEP,KAAK,GACJ,GAA8B,MAA1BhD,EAAOc,EAAY,GAAY,MAEpC,KAAK,IACJ,GAA8B,KAA1Bd,EAAOc,EAAY,GAAW,MACnC,QACCiC,EAAS,EAEV,KAAK,IAAK,KAAK,IAAK,KAAK,KAEtBA,EAAQR,GAAMjD,EAAOgE,EAAWA,EAAWb,GAAQlC,EAAOkD,GAAQnE,EAAOgE,EAAWA,EAAW,EAAG,EAAGZ,EAAOG,EAAQ3B,EAAMwB,EAAOvB,EAAQ,GAAIrE,EAAQsE,GAAWA,GAAWsB,EAAOtB,EAAUtE,EAAQ+F,EAAQJ,EAAOtB,EAAQC,GAC1NmB,GAAMzB,EAAYwC,EAAWA,EAAWA,EAAW,CAAC,IAAKlC,EAAU,EAAGyB,EAAQzB,EACnF,EAGJnB,EAAQ8C,EAASE,EAAW,EAAGE,EAAWE,EAAY,EAAGnC,EAAOJ,EAAa,GAAIhE,EAAS8F,EAC1F,MAED,KAAK,GACJ9F,EAAS,EAAIuD,EAAOS,GAAamC,EAAWC,EAC7C,QACC,GAAIC,EAAW,EACd,GAAiB,KAAbtC,IACDsC,OACE,GAAiB,KAAbtC,GAAkC,GAAdsC,KAA6B,KAAV1B,IAC/C,SAEF,OAAQX,GAAcvD,EAAKsD,GAAYA,EAAYsC,GAElD,KAAK,GACJE,EAAYN,EAAS,EAAI,GAAKjC,GAAc,MAAO,GACnD,MAED,KAAK,GACJ+B,EAAO5C,MAAYI,EAAOS,GAAc,GAAKuC,EAAWA,EAAY,EACpE,MAED,KAAK,GAEW,KAAX1B,MACHb,GAAcgB,GAAQJ,MAEvBsB,EAASrB,IAAQoB,EAASjG,EAASuD,EAAOa,EAAOJ,GAAcsB,GAAWR,MAAWf,IACrF,MAED,KAAK,GACa,KAAbqC,GAAyC,GAAtB7C,EAAOS,KAC7BqC,EAAW,IAIjB,OAAOR,CACR,CAiBO,SAASc,GAASnE,EAAO0B,EAAMC,EAAQhB,EAAO8C,EAAQL,EAAOG,EAAQ3B,EAAMC,EAAOC,EAAUtE,EAAQuE,GAK1G,IAJA,IAAIqC,EAAOX,EAAS,EAChBN,EAAkB,IAAXM,EAAeL,EAAQ,CAAC,IAC/BiB,EAAOrD,EAAOmC,GAET9F,EAAI,EAAGiH,EAAI,EAAGC,EAAI,EAAGlH,EAAIsD,IAAStD,EAC1C,IAAK,IAAImH,EAAI,EAAGC,EAAI7D,EAAOZ,EAAOoE,EAAO,EAAGA,EAAOzE,EAAI2E,EAAIf,EAAOlG,KAAMqH,EAAI1E,EAAOwE,EAAIH,IAAQG,GAC1FE,EAAI3E,EAAKuE,EAAI,EAAInB,EAAKqB,GAAK,IAAMC,EAAIrE,EAAQqE,EAAG,OAAQtB,EAAKqB,QAChE3C,EAAM0C,KAAOG,GAEhB,OAAOjD,EAAKzB,EAAO0B,EAAMC,EAAmB,IAAX8B,EAAejE,EAAUoC,EAAMC,EAAOC,EAAUtE,EAAQuE,EAC1F,CASO,SAASkC,GAASjE,EAAO0B,EAAMC,EAAQI,GAC7C,OAAON,EAAKzB,EAAO0B,EAAMC,EAAQpC,EAAStB,ED9InCsD,GC8IiDX,EAAOZ,EAAO,GAAI,GAAI,EAAG+B,EAClF,CAUO,SAASmC,GAAalE,EAAO0B,EAAMC,EAAQnE,EAAQuE,GACzD,OAAON,EAAKzB,EAAO0B,EAAMC,EAAQlC,EAAamB,EAAOZ,EAAO,EAAGxC,GAASoD,EAAOZ,EAAOxC,EAAS,GAAI,GAAIA,EAAQuE,EAChH,CChMO,SAAS4C,GAAQ3E,EAAOxC,EAAQsE,GACtC,OHaM,SAAe9B,EAAOxC,GAC5B,OAA0B,GAAnBkD,EAAOV,EAAO,MAAiBxC,GAAU,EAAKkD,EAAOV,EAAO,KAAO,EAAKU,EAAOV,EAAO,KAAO,EAAKU,EAAOV,EAAO,KAAO,EAAKU,EAAOV,EAAO,GAAK,CACvJ,CGfS4E,CAAK5E,EAAOxC,IAEnB,KAAK,KACJ,OAAO8B,EAAS,SAAWU,EAAQA,EAEpC,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAEvE,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAE5D,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAE5D,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAChD,OAAOV,EAASU,EAAQA,EAEzB,KAAK,KACJ,OAAOV,EAASU,EAAMI,QAAQ,MAAO,eAAeA,QAAQ,YAAa,cAAcA,QAAQ,YAAa,aAAaA,QAAQ,UAAW,OAASJ,EAEtJ,KAAK,KACJ,OAAOX,EAAMW,EAAQA,EAEtB,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAChD,OAAOV,EAASU,EAAQX,EAAMW,EAAQZ,EAAKY,EAAQA,EAEpD,KAAK,KACJ,OAAQU,EAAOV,EAAOxC,EAAS,KAE9B,KAAK,IACJ,OAAO8B,EAASU,EAAQZ,EAAKgB,EAAQJ,EAAO,qBAAsB,MAAQA,EAE3E,KAAK,IACJ,OAAOV,EAASU,EAAQZ,EAAKgB,EAAQJ,EAAO,qBAAsB,SAAWA,EAE9E,KAAK,GACJ,OAAOV,EAASU,EAAQZ,EAAKgB,EAAQJ,EAAO,qBAAsB,MAAQA,EAI7E,KAAK,KAAM,KAAK,KAAM,KAAK,KAC1B,OAAOV,EAASU,EAAQZ,EAAKY,EAAQA,EAEtC,KAAK,KACJ,OAAOV,EAASU,EAAQZ,EAAK,QAAUY,EAAQA,EAEhD,KAAK,KACJ,OAAOV,EAASU,EAAQI,EAAQJ,EAAO,iBAAkBV,EAAS,WAAaF,EAAK,aAAeY,EAEpG,KAAK,KACJ,OAAOV,EAASU,EAAQZ,EAAK,aAAegB,EAAQJ,EAAO,eAAgB,KAAQC,EAAMD,EAAO,kBAA4E,GAAxDZ,EAAK,YAAcgB,EAAQJ,EAAO,eAAgB,KAAYA,EAEnL,KAAK,KACJ,OAAOV,EAASU,EAAQZ,EAAK,iBAAmBgB,EAAQJ,EAAO,6BAA8B,IAAMA,EAEpG,KAAK,KACJ,OAAOV,EAASU,EAAQZ,EAAKgB,EAAQJ,EAAO,SAAU,YAAcA,EAErE,KAAK,KACJ,OAAOV,EAASU,EAAQZ,EAAKgB,EAAQJ,EAAO,QAAS,kBAAoBA,EAE1E,KAAK,KACJ,OAAOV,EAAS,OAASc,EAAQJ,EAAO,QAAS,IAAMV,EAASU,EAAQZ,EAAKgB,EAAQJ,EAAO,OAAQ,YAAcA,EAEnH,KAAK,KACJ,OAAOV,EAASc,EAAQJ,EAAO,qBAAsB,KAAOV,EAAS,MAAQU,EAE9E,KAAK,KACJ,OAAOI,EAAQA,EAAQA,EAAQJ,EAAO,eAAgBV,EAAS,MAAO,cAAeA,EAAS,MAAOU,EAAO,IAAMA,EAEnH,KAAK,KAAM,KAAK,KACf,OAAOI,EAAQJ,EAAO,oBAAqBV,YAE5C,KAAK,KACJ,OAAOc,EAAQA,EAAQJ,EAAO,oBAAqBV,EAAS,cAAgBF,EAAK,gBAAiB,gBAAiB,WAAaE,EAASU,EAAQA,EAElJ,KAAK,KACJ,IAAKC,EAAMD,EAAO,kBAAmB,OAAOZ,EAAK,oBAAsBwB,EAAOZ,EAAOxC,GAAUwC,EAC/F,MAED,KAAK,KAAM,KAAK,KACf,OAAOZ,EAAKgB,EAAQJ,EAAO,YAAa,IAAMA,EAE/C,KAAK,KAAM,KAAK,KACf,OAAI8B,GAAYA,EAAS+C,KAAK,SAAUC,EAASnE,GAAS,OAAOnD,EAASmD,EAAOV,EAAM6E,EAAQjD,MAAO,eAAiB,IAC9GvB,EAAQN,GAAS8B,EAAWA,EAAStE,GAAQwC,OAAQ,OAAQ,GAAKA,EAASZ,EAAKgB,EAAQJ,EAAO,SAAU,IAAMA,EAAQZ,EAAK,mBAAqBkB,EAAQwB,EAAU,OAAQ,GAAK7B,EAAM6B,EAAU,QAAU7B,EAAM6B,EAAU,QAAU7B,EAAMD,EAAO,QAAU,IAE7PZ,EAAKgB,EAAQJ,EAAO,SAAU,IAAMA,EAE5C,KAAK,KAAM,KAAK,KACf,OAAQ8B,GAAYA,EAAS+C,KAAK,SAAUC,GAAW,OAAO7E,EAAM6E,EAAQjD,MAAO,iBAAiB,GAAO7B,EAAQZ,EAAKgB,EAAQA,EAAQJ,EAAO,OAAQ,SAAU,QAAS,IAAMA,EAEjL,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KACrC,OAAOI,EAAQJ,EAAO,kBAAmBV,EAAS,QAAUU,EAE7D,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KACtC,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KACtC,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAErC,GAAIe,EAAOf,GAAS,EAAIxC,EAAS,EAChC,OAAQkD,EAAOV,EAAOxC,EAAS,IAE9B,KAAK,IAEJ,GAAkC,KAA9BkD,EAAOV,EAAOxC,EAAS,GAC1B,MAEF,KAAK,IACJ,OAAO4C,EAAQJ,EAAO,mBAAoB,KAAOV,EAAP,UAAiCD,GAAoC,KAA7BqB,EAAOV,EAAOxC,EAAS,GAAY,KAAO,UAAYwC,EAEzI,KAAK,IACJ,OAAQM,EAAQN,EAAO,UAAW,GAAK2E,GAAOvE,EAAQJ,EAAO,UAAW,kBAAmBxC,EAAQsE,GAAY9B,EAAQA,EAE1H,MAED,KAAK,KAAM,KAAK,KACf,OAAOI,EAAQJ,EAAO,4CAA6C,SAAU+E,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,EAAGC,GAAK,OAAQjG,EAAK4F,EAAI,IAAMC,EAAII,GAAMH,EAAK9F,EAAK4F,EAAI,UAAYG,EAAIC,GAAKA,GAAKH,GAAMI,EAAI,IAAMrF,IAE9L,KAAK,KAEJ,GAAkC,MAA9BU,EAAOV,EAAOxC,EAAS,GAC1B,OAAO4C,EAAQJ,EAAO,IAAK,IAAMV,GAAUU,EAC5C,MAED,KAAK,KACJ,OAAQU,EAAOV,EAA6B,KAAtBU,EAAOV,EAAO,IAAa,GAAK,KAErD,KAAK,IACJ,OAAOI,EAAQJ,EAAO,gCAAiC,KAAOV,GAAgC,KAAtBoB,EAAOV,EAAO,IAAa,UAAY,IAAxD,UAA+EV,EAA/E,SAAwGF,EAAK,WAAaY,EAElL,KAAK,IACJ,OAAOI,EAAQJ,EAAO,IAAK,IAAMZ,GAAMY,EAEzC,MAED,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAAM,KAAK,KAChD,OAAOI,EAAQJ,EAAO,UAAW,gBAAkBA,EAGrD,OAAOA,CACR,CC3IO,SAASsF,GAAWxD,EAAUyD,GAGpC,IAFA,IAAIC,EAAS,GAEJnI,EAAI,EAAGA,EAAIyE,EAAStE,OAAQH,IACpCmI,GAAUD,EAASzD,EAASzE,GAAIA,EAAGyE,EAAUyD,IAAa,GAE3D,OAAOC,CACR,CASO,SAASC,GAAWX,EAASnE,EAAOmB,EAAUyD,GACpD,OAAQT,EAAQlD,MACf,ILNiB,SKML,GAAIkD,EAAQhD,SAAStE,OAAQ,MACzC,ILjBkB,UKiBL,ILZQ,aKYQ,KAAKiC,EAAa,OAAOqF,EAAQ9C,OAAS8C,EAAQ9C,QAAU8C,EAAQ9E,MACjG,KAAKT,EAAS,MAAO,GACrB,KAAKG,EAAW,OAAOoF,EAAQ9C,OAAS8C,EAAQ9E,MAAQ,IAAMsF,GAAUR,EAAQhD,SAAUyD,GAAY,IACtG,KAAK/F,EAAS,IAAKuB,EAAO+D,EAAQ9E,MAAQ8E,EAAQjD,MAAM6D,KAAK,MAAO,MAAO,GAG5E,OAAO3E,EAAOe,EAAWwD,GAAUR,EAAQhD,SAAUyD,IAAaT,EAAQ9C,OAAS8C,EAAQ9E,MAAQ,IAAM8B,EAAW,IAAM,EAC3H,CCOO,SAAS6D,GAAUb,EAASnE,EAAOmB,EAAUyD,GACnD,GAAIT,EAAQtH,QAAU,IAChBsH,EAAQ9C,OACZ,OAAQ8C,EAAQlD,MACf,KAAKnC,EACJ,YADiBqF,EAAQ9C,OAAS2C,GAAOG,EAAQ9E,MAAO8E,EAAQtH,OAAQsE,IAEzE,KAAKpC,EACJ,OAAO4F,GAAU,CAACrD,EAAK6C,EAAS,CAAC9E,MAAOI,EAAQ0E,EAAQ9E,MAAO,IAAK,IAAMV,MAAYiG,GACvF,KAAK/F,EACJ,GAAIsF,EAAQtH,OACX,OL8DC,SAAkB0D,EAAOqE,GAC/B,OAAOrE,EAAM0E,IAAIL,GAAUG,KAAK,GACjC,CKhEaG,CAAQ/D,EAAWgD,EAAQjD,MAAO,SAAU7B,GAClD,OAAQC,EAAMD,EAAOuF,EAAW,0BAE/B,IAAK,aAAc,IAAK,cACvBrD,EAAKD,EAAK6C,EAAS,CAACjD,MAAO,CAACzB,EAAQJ,EAAO,cAAe,gBAC1DkC,EAAKD,EAAK6C,EAAS,CAACjD,MAAO,CAAC7B,MAC5B9C,EAAO4H,EAAS,CAACjD,MAAOT,EAAOU,EAAUyD,KACzC,MAED,IAAK,gBACJrD,EAAKD,EAAK6C,EAAS,CAACjD,MAAO,CAACzB,EAAQJ,EAAO,aAAc,IAAMV,EAAS,gBACxE4C,EAAKD,EAAK6C,EAAS,CAACjD,MAAO,CAACzB,EAAQJ,EAAO,aAAc,gBACzDkC,EAAKD,EAAK6C,EAAS,CAACjD,MAAO,CAACzB,EAAQJ,EAAO,aAAcZ,EAAK,gBAC9D8C,EAAKD,EAAK6C,EAAS,CAACjD,MAAO,CAAC7B,MAC5B9C,EAAO4H,EAAS,CAACjD,MAAOT,EAAOU,EAAUyD,KAI3C,MAAO,EACd,GAEA,CCxEA,IAAIO,GAAe,CACjBC,wBAAyB,EACzBC,YAAa,EACbC,kBAAmB,EACnBC,iBAAkB,EAClBC,iBAAkB,EAClBC,QAAS,EACTC,aAAc,EACdC,gBAAiB,EACjBC,YAAa,EACbC,QAAS,EACTC,KAAM,EACNC,SAAU,EACVC,aAAc,EACdC,WAAY,EACZC,aAAc,EACdC,UAAW,EACXC,QAAS,EACTC,WAAY,EACZC,YAAa,EACbC,aAAc,EACdC,WAAY,EACZC,cAAe,EACfC,eAAgB,EAChBC,gBAAiB,EACjBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,iBAAkB,EAClBC,WAAY,EACZC,WAAY,EACZC,QAAS,EACTC,MAAO,EACPC,QAAS,EACTC,MAAO,EACPC,QAAS,EACTC,OAAQ,EACRC,OAAQ,EACRC,KAAM,EACNC,gBAAiB,EAEjBC,YAAa,EACbC,aAAc,EACdC,YAAa,EACbC,gBAAiB,EACjBC,iBAAkB,EAClBC,iBAAkB,EAClBC,cAAe,EACfC,YAAa,GChDkL7D,GAAE,oBAAoB8D,cAAc,IAAIA,QAAQC,MAAMD,QAAQC,IAAIC,mBAAmBF,QAAQC,IAAIE,UAAU,cAAc/D,GAAE,SAASgE,GAAE,sBAAsB9K,GAAE,SAASX,GAAE,YAAY0L,GAAE,oBAAoBC,QAAQ,oBAAoBC,SAASlE,GAAEmE,QAAQ,kBAAkBC,kBAAkBA,kBAAkB,oBAAoBT,cAAc,IAAIA,QAAQC,UAAU,IAAID,QAAQC,IAAIS,6BAA6B,KAAKV,QAAQC,IAAIS,4BAA4B,UAAUV,QAAQC,IAAIS,6BAA6BV,QAAQC,IAAIS,4BAA4B,oBAAoBV,cAAc,IAAIA,QAAQC,UAAU,IAAID,QAAQC,IAAIQ,mBAAmB,KAAKT,QAAQC,IAAIQ,kBAAkB,UAAUT,QAAQC,IAAIQ,mBAAmBT,QAAQC,IAAIQ,kBAAkB,eAAeT,QAAQC,IAAIU,UAAUpE,GAAE,CAAA,EAAGqE,GAAE,eAAeZ,QAAQC,IAAIU,SAAS,CAAC,EAAE,wDAAwD,EAAE,gQAAgQ,EAAE,sHAAsH,EAAE,sMAAsM,EAAE,kKAAkK,EAAE,4OAA4O,EAAE,qHAAqH,EAAE,8DAA8D,EAAE,gCAAgC,GAAG,iUAAiU,GAAG,wNAAwN,GAAG,qWAAqW,GAAG,yLAAyL,GAAG,+CAA+C,GAAG,2ZAA2Z,GAAG,uQAAuQ,GAAG,yIAAyI,GAAG,oFAAoF,CAAE,EAAC,SAAShF,KAAI,IAAI,IAAIW,EAAE,GAAGjI,EAAE,EAAEA,EAAEI,UAAUC,OAAOL,IAAIiI,EAAEjI,GAAGI,UAAUJ,GAAG,IAAI,IAAIG,EAAE8H,EAAE,GAAGuE,EAAE,GAAGC,EAAE,EAAExM,EAAEgI,EAAE5H,OAAOoM,EAAExM,EAAEwM,GAAG,EAAED,EAAExI,KAAKiE,EAAEwE,IAAI,OAAOD,EAAEE,QAAQ,SAASzE,GAAG9H,EAAEA,EAAE8C,QAAQ,SAASgF,EAAE,GAAG9H,CAAC,CAAC,SAASwM,GAAE3M,GAAG,IAAI,IAAIG,EAAE,GAAGqM,EAAE,EAAEA,EAAEpM,UAAUC,OAAOmM,IAAIrM,EAAEqM,EAAE,GAAGpM,UAAUoM,GAAG,MAAM,eAAeb,QAAQC,IAAIU,SAAS,IAAIM,MAAM,0IAA0IxL,OAAOpB,EAAE,0BAA0BoB,OAAOjB,EAAEE,OAAO,EAAE,UAAUe,OAAOjB,EAAEoI,KAAK,OAAO,KAAK,IAAIqE,MAAMtF,GAAE5G,WAAW,EAAEuH,EAAE,CAACsE,GAAEvM,IAAIG,GAAE,IAAKyC,OAAO,CAAC,IAAIiK,GAAE,GAAG,GAAGC,GAAE,IAAIC,IAAIC,GAAE,IAAID,IAAIjF,GAAE,EAAEmF,GAAE,SAAShF,GAAG,GAAG6E,GAAEI,IAAIjF,GAAG,OAAO6E,GAAEK,IAAIlF,GAAG,KAAK+E,GAAEE,IAAIpF,KAAIA,KAAI,IAAI9H,EAAE8H,KAAI,GAAG,eAAe6D,QAAQC,IAAIU,YAAY,EAAEtM,GAAG,GAAGA,EAAE6M,IAAG,MAAMF,GAAE,GAAG,GAAGvL,OAAOpB,IAAI,OAAO8M,GAAEM,IAAInF,EAAEjI,GAAGgN,GAAEI,IAAIpN,EAAEiI,GAAGjI,CAAC,EAAEqN,GAAE,SAASpF,EAAEjI,GAAG8H,GAAE9H,EAAE,EAAE8M,GAAEM,IAAInF,EAAEjI,GAAGgN,GAAEI,IAAIpN,EAAEiI,EAAE,EAAEqF,GAAE,qBAAqBC,GAAE,IAAIC,IAAI5F,GAAE,SAAS5H,EAAEG,GAAG,GAAG,eAAewL,QAAQC,IAAIU,SAAS,CAAC,IAAIG,EAAEtM,EAAE,oBAAoBiB,OAAOjB,EAAE,KAAK,GAAGF,EAAE,iBAAiBmB,OAAOpB,GAAGoB,OAAOqL,EAAE,oCAAoC,+SAA+SvM,EAAEuN,QAAQC,MAAM,IAAI,IAAI7F,GAAE,EAAG4F,QAAQC,MAAM,SAAS1N,GAAG,IAAI,IAAIG,EAAE,GAAGqM,EAAE,EAAEA,EAAEpM,UAAUC,OAAOmM,IAAIrM,EAAEqM,EAAE,GAAGpM,UAAUoM,GAAGc,GAAEvL,KAAK/B,IAAI6H,GAAE,EAAG0F,GAAEI,OAAO1N,IAAIC,EAAEQ,WAAW,EAAEuH,EAAE,CAACjI,GAAGG,GAAE,GAAI,EAAE,mBAAmBqM,EAAC,QAACoB,UAAUpB,UAAEoB,SAAS,MAAM/F,IAAI0F,GAAEL,IAAIjN,KAAKwN,QAAQI,KAAK5N,GAAGsN,GAAEO,IAAI7N,GAAG,CAAC,MAAMgI,GAAGqF,GAAEvL,KAAKkG,EAAE8F,UAAUR,GAAEI,OAAO1N,EAAE,CAAC,QAAQwN,QAAQC,MAAMxN,CAAC,CAAC,CAAC,EAAE8N,GAAElO,OAAOmO,OAAO,IAAIC,GAAEpO,OAAOmO,OAAO,CAAA,GAAI,SAASE,GAAElG,EAAEjI,EAAEG,GAAG,YAAY,IAAIA,IAAIA,EAAE+N,IAAGjG,EAAEmG,QAAQjO,EAAEiO,OAAOnG,EAAEmG,OAAOpO,GAAGG,EAAEiO,KAAK,CAAC,IAAIC,GAAE,IAAIb,IAAI,CAAC,IAAI,OAAO,UAAU,OAAO,UAAU,QAAQ,QAAQ,IAAI,MAAM,MAAM,aAAa,OAAO,SAAS,KAAK,SAAS,UAAU,OAAO,OAAO,MAAM,WAAW,OAAO,WAAW,KAAK,MAAM,UAAU,MAAM,SAAS,MAAM,KAAK,KAAK,KAAK,QAAQ,WAAW,aAAa,SAAS,SAAS,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,SAAS,SAAS,KAAK,OAAO,IAAI,SAAS,MAAM,QAAQ,MAAM,MAAM,QAAQ,SAAS,KAAK,OAAO,MAAM,OAAO,OAAO,QAAQ,MAAM,SAAS,KAAK,WAAW,SAAS,SAAS,IAAI,UAAU,MAAM,WAAW,IAAI,KAAK,KAAK,OAAO,IAAI,OAAO,SAAS,UAAU,SAAS,OAAO,QAAQ,OAAO,SAAS,MAAM,UAAU,MAAM,QAAQ,QAAQ,KAAK,WAAW,WAAW,QAAQ,KAAK,QAAQ,OAAO,KAAK,IAAI,KAAK,MAAM,QAAQ,MAAM,SAAS,WAAW,OAAO,UAAU,UAAU,gBAAgB,sBAAsB,cAAc,mBAAmB,oBAAoB,oBAAoB,iBAAiB,eAAe,UAAU,UAAU,UAAU,UAAU,UAAU,iBAAiB,UAAU,UAAU,cAAc,eAAe,WAAW,eAAe,qBAAqB,cAAc,SAAS,eAAe,SAAS,gBAAgB,IAAI,QAAQ,OAAO,iBAAiB,SAAS,OAAO,OAAO,UAAU,UAAU,WAAW,iBAAiB,OAAO,OAAO,MAAM,SAAS,SAAS,OAAO,WAAW,QAAQ,QAAQc,GAAE,wCAAwCC,GAAE,WAAW,SAASlH,GAAEY,GAAG,OAAOA,EAAEhF,QAAQqL,GAAE,KAAKrL,QAAQsL,GAAE,GAAG,CAAC,IAAIpH,GAAE,WAAWC,GAAE,SAASa,GAAG,OAAOvF,OAAOC,aAAasF,GAAGA,EAAE,GAAG,GAAG,IAAI,EAAE,SAASuG,GAAEvG,GAAG,IAAIjI,EAAEG,EAAE,GAAG,IAAIH,EAAEyC,KAAKD,IAAIyF,GAAGjI,EAAE,GAAGA,EAAEA,EAAE,GAAG,EAAEG,EAAEiH,GAAEpH,EAAE,IAAIG,EAAE,OAAOiH,GAAEpH,EAAE,IAAIG,GAAG8C,QAAQkE,GAAE,QAAQ,CAAC,IAAIsH,GAAEC,GAAE,SAASzG,EAAEjI,GAAG,IAAI,IAAIG,EAAEH,EAAEK,OAAOF,GAAG8H,EAAE,GAAGA,EAAEjI,EAAEgC,aAAa7B,GAAG,OAAO8H,CAAC,EAAE0G,GAAE,SAAS1G,GAAG,OAAOyG,GAAE,KAAKzG,EAAE,EAAE,SAAS2G,GAAE3G,GAAG,OAAOuG,GAAEG,GAAE1G,KAAK,EAAE,CAAC,SAAS4G,GAAE5G,GAAG,MAAM,eAAe0D,QAAQC,IAAIU,UAAU,iBAAiBrE,GAAGA,GAAGA,EAAE6G,aAAa7G,EAAE8G,MAAM,WAAW,CAAC,SAASxH,GAAEU,GAAG,MAAM,iBAAiBA,IAAI,eAAe0D,QAAQC,IAAIU,UAAUrE,EAAE+G,OAAO,KAAK/G,EAAE+G,OAAO,GAAGC,cAAc,CAAC,IAAIC,GAAE,mBAAmBC,QAAQA,OAAOC,IAAIC,GAAEH,GAAEC,OAAOC,IAAI,cAAc,MAAME,GAAEJ,GAAEC,OAAOC,IAAI,qBAAqB,MAAMG,GAAE,CAACC,mBAAkB,EAAGC,aAAY,EAAGC,cAAa,EAAGC,cAAa,EAAGb,aAAY,EAAGc,iBAAgB,EAAGC,0BAAyB,EAAGC,0BAAyB,EAAGC,QAAO,EAAGC,WAAU,EAAGvL,MAAK,GAAIwL,GAAE,CAAClB,MAAK,EAAG1O,QAAO,EAAGE,WAAU,EAAG2P,QAAO,EAAGC,QAAO,EAAG/P,WAAU,EAAGgQ,OAAM,GAAIC,GAAE,CAACC,UAAS,EAAGC,SAAQ,EAAGZ,cAAa,EAAGb,aAAY,EAAGkB,WAAU,EAAGvL,MAAK,GAAI+L,KAAI/B,GAAE,CAAA,GAAIa,IAAG,CAACgB,UAAS,EAAGG,QAAO,EAAGd,cAAa,EAAGb,aAAY,EAAGkB,WAAU,GAAIvB,GAAEY,IAAGgB,GAAE5B,IAAG,SAASiC,GAAEzI,GAAG,OAAO,SAASjI,EAAEiI,IAAIjI,EAAEyE,KAAK6L,YAAYjB,GAAEgB,GAAE,aAAapI,EAAEuI,GAAEvI,EAAEqI,UAAUf,GAAE,IAAIvP,CAAC,CAAC,IAAI2Q,GAAE7Q,OAAO8Q,eAAeC,GAAE/Q,OAAOgR,oBAAoBC,GAAEjR,OAAOkR,sBAAsBC,GAAGnR,OAAOoR,yBAAyBC,GAAGrR,OAAOsR,eAAeC,GAAGvR,OAAOS,UAAU,SAAS+Q,GAAGrJ,EAAEjI,EAAEG,GAAG,GAAG,iBAAiBH,EAAE,CAAC,GAAGqR,GAAG,CAAC,IAAI7E,EAAE2E,GAAGnR,GAAGwM,GAAGA,IAAI6E,IAAIC,GAAGrJ,EAAEuE,EAAErM,EAAE,CAAC,IAAIsM,EAAEoE,GAAE7Q,GAAG+Q,KAAItE,EAAEA,EAAErL,OAAO2P,GAAE/Q,KAAK,IAAI,IAAIC,EAAEyQ,GAAEzI,GAAG/H,EAAEwQ,GAAE1Q,GAAG6H,EAAE,EAAEA,EAAE4E,EAAEpM,SAASwH,EAAE,CAAC,IAAIE,EAAE0E,EAAE5E,GAAG,KAAKE,KAAKkI,IAAG9P,GAAGA,EAAE4H,IAAI7H,GAAG6H,KAAK7H,GAAGD,GAAG8H,KAAK9H,GAAG,CAAC,IAAI8L,EAAEkF,GAAGjR,EAAE+H,GAAG,IAAI4I,GAAE1I,EAAEF,EAAEgE,EAAE,CAAC,MAAM9D,GAAE,CAAE,CAAC,CAAC,CAAC,OAAOA,CAAC,CAAC,SAASsJ,GAAGtJ,GAAG,MAAM,mBAAmBA,CAAC,CAAC,SAASuJ,GAAGvJ,GAAG,MAAM,iBAAiBA,GAAG,sBAAsBA,CAAC,CAAC,SAASwJ,GAAGxJ,EAAEjI,GAAG,OAAOiI,GAAGjI,EAAE,GAAGoB,OAAO6G,EAAE,KAAK7G,OAAOpB,GAAGiI,GAAGjI,GAAG,EAAE,CAAC,SAAS0R,GAAGzJ,EAAEjI,GAAG,OAAOiI,EAAEM,KAAKvI,GAAG,GAAG,CAAC,SAAS2R,GAAG1J,GAAG,OAAO,OAAOA,GAAG,iBAAiBA,GAAGA,EAAE2J,YAAY7C,OAAOjP,OAAOiP,QAAQ,UAAU9G,GAAGA,EAAEqI,SAAS,CAAC,SAASuB,GAAG5J,EAAEjI,EAAEG,GAAG,QAAQ,IAAIA,IAAIA,GAAE,IAAKA,IAAIwR,GAAG1J,KAAK/G,MAAM4Q,QAAQ7J,GAAG,OAAOjI,EAAE,GAAGkB,MAAM4Q,QAAQ9R,GAAG,IAAI,IAAIwM,EAAE,EAAEA,EAAExM,EAAEK,OAAOmM,IAAIvE,EAAEuE,GAAGqF,GAAG5J,EAAEuE,GAAGxM,EAAEwM,SAAS,GAAGmF,GAAG3R,GAAG,IAAI,IAAIwM,KAAKxM,EAAEiI,EAAEuE,GAAGqF,GAAG5J,EAAEuE,GAAGxM,EAAEwM,IAAI,OAAOvE,CAAC,CAAC,SAAS8J,GAAG9J,EAAEjI,GAAGF,OAAO8Q,eAAe3I,EAAE,WAAW,CAACpF,MAAM7C,GAAG,CAAC,IAAIgS,GAAG,WAAW,SAAS/J,EAAEA,GAAGtH,KAAKsR,WAAW,IAAIC,YAAY,KAAKvR,KAAKN,OAAO,IAAIM,KAAKwR,IAAIlK,EAAEtH,KAAKyR,QAAQ,EAAEzR,KAAK0R,QAAQ,CAAC,CAAC,OAAOpK,EAAE1H,UAAU+R,aAAa,SAASrK,GAAG,GAAGA,IAAItH,KAAKyR,QAAQ,OAAOzR,KAAK0R,QAAQ,IAAIrS,EAAEW,KAAK0R,QAAQ,GAAGpK,EAAEtH,KAAKyR,QAAQ,IAAI,IAAIjS,EAAEQ,KAAKyR,QAAQjS,EAAE8H,EAAE9H,IAAIH,GAAGW,KAAKsR,WAAW9R,QAAQ,IAAIA,EAAEQ,KAAKyR,QAAQ,EAAEjS,GAAG8H,EAAE9H,IAAIH,GAAGW,KAAKsR,WAAW9R,GAAG,OAAOQ,KAAKyR,QAAQnK,EAAEtH,KAAK0R,QAAQrS,EAAEA,CAAC,EAAEiI,EAAE1H,UAAUgS,YAAY,SAAStK,EAAEjI,GAAG,GAAGiI,GAAGtH,KAAKsR,WAAW5R,OAAO,CAAC,IAAI,IAAIF,EAAEQ,KAAKsR,WAAWzF,EAAErM,EAAEE,OAAOoM,EAAED,EAAEvE,GAAGwE,GAAG,IAAIA,IAAI,GAAG,EAAE,MAAME,GAAE,GAAG,GAAGvL,OAAO6G,IAAItH,KAAKsR,WAAW,IAAIC,YAAYzF,GAAG9L,KAAKsR,WAAW7E,IAAIjN,GAAGQ,KAAKN,OAAOoM,EAAE,IAAI,IAAIxM,EAAEuM,EAAEvM,EAAEwM,EAAExM,IAAIU,KAAKsR,WAAWhS,GAAG,CAAC,CAAC,IAAI,IAAIC,EAAES,KAAK2R,aAAarK,EAAE,GAAGJ,EAAE,EAAEE,GAAG9H,EAAE,EAAED,EAAEK,QAAQJ,EAAE8H,EAAE9H,IAAIU,KAAKwR,IAAIK,WAAWtS,EAAEF,EAAEC,MAAMU,KAAKsR,WAAWhK,KAAK/H,IAAI2H,KAAKA,EAAE,GAAGlH,KAAKyR,QAAQnK,IAAItH,KAAK0R,SAASxK,EAAE,EAAEI,EAAE1H,UAAUkS,WAAW,SAASxK,GAAG,GAAGA,EAAEtH,KAAKN,OAAO,CAAC,IAAIL,EAAEW,KAAKsR,WAAWhK,GAAG9H,EAAEQ,KAAK2R,aAAarK,GAAGuE,EAAErM,EAAEH,EAAEW,KAAKsR,WAAWhK,GAAG,EAAE,IAAI,IAAIwE,EAAEtM,EAAEsM,EAAED,EAAEC,IAAI9L,KAAKwR,IAAIO,WAAWvS,GAAGH,EAAE,GAAGW,KAAKyR,QAAQnK,IAAItH,KAAK0R,SAASrS,EAAE,CAAC,EAAEiI,EAAE1H,UAAUoS,SAAS,SAAS1K,GAAG,IAAIjI,EAAE,GAAG,GAAGiI,GAAGtH,KAAKN,QAAQ,IAAIM,KAAKsR,WAAWhK,GAAG,OAAOjI,EAAE,IAAI,IAAIG,EAAEQ,KAAKsR,WAAWhK,GAAGuE,EAAE7L,KAAK2R,aAAarK,GAAGwE,EAAED,EAAErM,EAAEF,EAAEuM,EAAEvM,EAAEwM,EAAExM,IAAID,GAAGW,KAAKwR,IAAIS,QAAQ3S,GAAGK,GAAE,OAAON,CAAC,EAAEiI,CAAC,CAA7sC,GAAitC4K,GAAG,SAASzR,OAAOyG,GAAE,MAAMzG,OAAO2K,GAAE,MAAM3K,OAAOH,GAAE,MAAM6R,GAAG,IAAIC,OAAO,IAAI3R,OAAOyG,GAAE,iDAAiDmL,GAAG,SAAS/K,GAAG,MAAM,oBAAoBgL,YAAYhL,aAAagL,YAAY,SAAShL,GAAG,KAAKA,EAAEiL,QAAQ,EAAEC,GAAG,SAASlL,GAAG,IAAIA,EAAE,OAAOiE,SAAS,GAAG8G,GAAG/K,GAAG,OAAOA,EAAE,GAAG,gBAAgBA,EAAE,CAAC,IAAIjI,EAAEiI,EAAEmL,cAAc,GAAGJ,GAAGhT,GAAG,OAAOA,CAAC,CAAC,OAAOkM,QAAQ,EAAEmH,GAAG,SAASpL,EAAEjI,EAAEG,GAAG,IAAI,IAAIqM,EAAEC,EAAEtM,EAAEmT,MAAM,KAAKrT,EAAE,EAAEC,EAAEuM,EAAEpM,OAAOJ,EAAEC,EAAED,KAAKuM,EAAEC,EAAExM,KAAKgI,EAAEsL,aAAavT,EAAEwM,EAAE,EAAEgH,GAAG,SAASvL,EAAEjI,GAAG,IAAI,IAAIG,EAAEqM,GAAG,QAAQrM,EAAEH,EAAEyT,mBAAmB,IAAItT,EAAEA,EAAE,IAAImT,MAAMhT,IAAGmM,EAAE,GAAGxM,EAAE,EAAEC,EAAEsM,EAAEnM,OAAOJ,EAAEC,EAAED,IAAI,CAAC,IAAI4H,EAAE2E,EAAEvM,GAAG2C,OAAO,GAAGiF,EAAE,CAAC,IAAIE,EAAEF,EAAE/E,MAAMgQ,IAAI,GAAG/K,EAAE,CAAC,IAAIgE,EAAE,EAAE2H,SAAS3L,EAAE,GAAG,IAAI9G,EAAE8G,EAAE,GAAG,IAAIgE,IAAIsB,GAAEpM,EAAE8K,GAAGsH,GAAGpL,EAAEhH,EAAE8G,EAAE,IAAIE,EAAE0L,SAASpB,YAAYxG,EAAEU,IAAIA,EAAEpM,OAAO,CAAC,MAAMoM,EAAEzI,KAAK6D,EAAE,CAAC,CAAC,EAAE+L,GAAG,SAAS3L,GAAG,IAAI,IAAIjI,EAAEmT,GAAGlL,EAAE4L,QAAQC,QAAQC,iBAAiBlB,IAAI1S,EAAE,EAAEqM,EAAExM,EAAEK,OAAOF,EAAEqM,EAAErM,IAAI,CAAC,IAAIsM,EAAEzM,EAAEG,GAAGsM,GAAGA,EAAEuH,aAAanM,MAAKE,KAAIyL,GAAGvL,EAAEwE,GAAGA,EAAEwH,YAAYxH,EAAEwH,WAAWC,YAAYzH,GAAG,CAAC,EAAuF0H,GAAG,SAASlM,GAAG,IAAIjI,EAAEkM,SAASkI,KAAKjU,EAAE8H,GAAGjI,EAAEwM,EAAEN,SAASmI,cAAc,SAAS5H,EAAE,SAASxE,GAAG,IAAIjI,EAAEkB,MAAMJ,KAAKmH,EAAE8L,iBAAiB,SAAS3S,OAAOyG,GAAE,OAAO,OAAO7H,EAAEA,EAAEK,OAAO,EAAE,CAA7F,CAA+FF,GAAGF,OAAO,IAAIwM,EAAEA,EAAE6H,YAAY,KAAK9H,EAAE+H,aAAa1M,GAAEE,IAAGyE,EAAE+H,aAAaxI,GAAE9K,IAAG,IAAIf,EAA7T,oBAAoBsU,kBAAkBA,kBAAkB,KAA4Q,OAAOtU,GAAGsM,EAAE+H,aAAa,QAAQrU,GAAGC,EAAEsU,aAAajI,EAAEvM,GAAGuM,CAAC,EAAEkI,GAAG,WAAW,SAASzM,EAAEA,GAAGtH,KAAKgH,QAAQwM,GAAGlM,GAAGtH,KAAKgH,QAAQgN,YAAYzI,SAAS0I,eAAe,KAAKjU,KAAKkU,MAAM,SAAS5M,GAAG,IAAIjI,EAAE,GAAGiI,EAAE4M,MAAM,OAAO5M,EAAE4M,MAAM,IAAI,IAAI1U,EAAE,QAAQH,EAAEiI,EAAEmL,cAAc0B,mBAAmB,IAAI9U,EAAEA,EAAEkM,SAAS4I,YAAYtI,EAAE,EAAEC,EAAEtM,EAAEE,OAAOmM,EAAEC,EAAED,IAAI,CAAC,IAAIvM,EAAEE,EAAEqM,GAAG,GAAGvM,EAAE8U,YAAY9M,EAAE,OAAOhI,CAAC,CAAC,MAAM0M,GAAE,GAAG,CAA1M,CAA4MhM,KAAKgH,SAAShH,KAAKN,OAAO,CAAC,CAAC,OAAO4H,EAAE1H,UAAUiS,WAAW,SAASvK,EAAEjI,GAAG,IAAI,OAAOW,KAAKkU,MAAMrC,WAAWxS,EAAEiI,GAAGtH,KAAKN,UAAS,CAAE,CAAC,MAAM4H,GAAG,OAAM,CAAE,CAAC,EAAEA,EAAE1H,UAAUmS,WAAW,SAASzK,GAAGtH,KAAKkU,MAAMnC,WAAWzK,GAAGtH,KAAKN,QAAQ,EAAE4H,EAAE1H,UAAUqS,QAAQ,SAAS3K,GAAG,IAAIjI,EAAEW,KAAKkU,MAAMG,SAAS/M,GAAG,OAAOjI,GAAGA,EAAEiV,QAAQjV,EAAEiV,QAAQ,EAAE,EAAEhN,CAAC,CAAvnB,GAA2nBiN,GAAG,WAAW,SAASjN,EAAEA,GAAGtH,KAAKgH,QAAQwM,GAAGlM,GAAGtH,KAAKwU,MAAMxU,KAAKgH,QAAQyN,WAAWzU,KAAKN,OAAO,CAAC,CAAC,OAAO4H,EAAE1H,UAAUiS,WAAW,SAASvK,EAAEjI,GAAG,GAAGiI,GAAGtH,KAAKN,QAAQ4H,GAAG,EAAE,CAAC,IAAI9H,EAAE+L,SAAS0I,eAAe5U,GAAG,OAAOW,KAAKgH,QAAQ8M,aAAatU,EAAEQ,KAAKwU,MAAMlN,IAAI,MAAMtH,KAAKN,UAAS,CAAE,CAAC,OAAM,CAAE,EAAE4H,EAAE1H,UAAUmS,WAAW,SAASzK,GAAGtH,KAAKgH,QAAQuM,YAAYvT,KAAKwU,MAAMlN,IAAItH,KAAKN,QAAQ,EAAE4H,EAAE1H,UAAUqS,QAAQ,SAAS3K,GAAG,OAAOA,EAAEtH,KAAKN,OAAOM,KAAKwU,MAAMlN,GAAGwL,YAAY,EAAE,EAAExL,CAAC,CAApc,GAAwcoN,GAAG,WAAW,SAASpN,EAAEA,GAAGtH,KAAKsF,MAAM,GAAGtF,KAAKN,OAAO,CAAC,CAAC,OAAO4H,EAAE1H,UAAUiS,WAAW,SAASvK,EAAEjI,GAAG,OAAOiI,GAAGtH,KAAKN,SAAS4H,IAAItH,KAAKN,OAAOM,KAAKsF,MAAMjC,KAAKhE,GAAGW,KAAKsF,MAAMqP,OAAOrN,EAAE,EAAEjI,GAAGW,KAAKN,UAAS,EAAG,EAAE4H,EAAE1H,UAAUmS,WAAW,SAASzK,GAAGtH,KAAKsF,MAAMqP,OAAOrN,EAAE,GAAGtH,KAAKN,QAAQ,EAAE4H,EAAE1H,UAAUqS,QAAQ,SAAS3K,GAAG,OAAOA,EAAEtH,KAAKN,OAAOM,KAAKsF,MAAMgC,GAAG,EAAE,EAAEA,CAAC,CAAzV,GAA6VsN,GAAGvJ,GAAEwJ,GAAG,CAACC,UAAUzJ,GAAE0J,mBAAmB1N,IAAG2N,GAAG,WAAW,SAAS1N,EAAEA,EAAE9H,EAAEqM,QAAQ,IAAIvE,IAAIA,EAAEiG,SAAQ,IAAI/N,IAAIA,EAAE,CAAE,GAAE,IAAIsM,EAAE9L,KAAKA,KAAKkT,QAAQ7T,EAAEA,EAAE,CAAA,EAAGwV,IAAIvN,GAAGtH,KAAKiV,GAAGzV,EAAEQ,KAAKkV,MAAM,IAAI9I,IAAIP,GAAG7L,KAAKmV,SAAS7N,EAAEwN,UAAU9U,KAAKmV,QAAQ9J,IAAGuJ,KAAKA,IAAG,EAAG3B,GAAGjT,OAAOoR,GAAGpR,KAAK,WAAW,OAAO,SAASsH,GAAG,IAAI,IAAIjI,EAAEiI,EAAE0L,SAASxT,EAAEH,EAAEK,OAAOmM,EAAE,GAAGC,EAAE,SAAStM,GAAG,IAAIsM,EAAE,SAASxE,GAAG,OAAO+E,GAAEG,IAAIlF,EAAE,CAA3B,CAA6B9H,GAAG,QAAQ,IAAIsM,EAAE,MAAM,WAAW,IAAIxM,EAAEgI,EAAE4N,MAAM1I,IAAIV,GAAG,QAAQ,IAAIxM,IAAIA,EAAEiH,KAAK,MAAM,WAAW,IAAIhH,EAAEF,EAAE2S,SAASxS,GAAG,GAAG,IAAID,EAAEG,OAAO,MAAM,WAAW,IAAI0H,EAAEF,GAAE,KAAK1H,EAAE,QAAQsM,EAAE,KAAKV,EAAE,GAAG9L,EAAEyM,QAAQ,SAASzE,GAAGA,EAAE5H,OAAO,IAAI0L,GAAG9D,EAAE,IAAI,GAAGuE,GAAGtM,EAAE6H,EAAE,aAAagE,EAAE,KAAKzL,EAAC,EAAEL,EAAE,EAAEA,EAAEE,EAAEF,IAAIwM,EAAExM,GAAG,OAAOuM,CAAC,CAA/X,CAAiYC,EAAE,EAAE,CAAC,OAAOxE,EAAE8N,WAAW,SAAS9N,GAAG,OAAOgF,GAAEhF,EAAE,EAAEA,EAAE1H,UAAUyV,UAAU,YAAYrV,KAAKmV,QAAQ9J,IAAG4H,GAAGjT,KAAK,EAAEsH,EAAE1H,UAAU0V,uBAAuB,SAAS9V,EAAEqM,QAAQ,IAAIA,IAAIA,GAAE,GAAI,IAAIC,EAAE,IAAIxE,EAAEjI,EAAEA,EAAE,CAAA,EAAGW,KAAKkT,SAAS1T,GAAGQ,KAAKiV,GAAGpJ,GAAG7L,KAAKkV,YAAY,GAAG,OAAOlV,KAAKmV,QAAQ9J,IAAG7L,EAAE2T,SAASnT,KAAKkT,QAAQC,QAAQX,GAAGxS,KAAKkT,QAAQC,UAAUX,GAAGhT,EAAE2T,SAASF,GAAGnH,GAAGA,CAAC,EAAExE,EAAE1H,UAAU2V,mBAAmB,SAASjO,GAAG,OAAOtH,KAAKiV,GAAG3N,IAAItH,KAAKiV,GAAG3N,IAAI,GAAG,CAAC,EAAEA,EAAE1H,UAAUoT,OAAO,WAAW,OAAOhT,KAAKwR,MAAMxR,KAAKwR,KAAKlK,EAAE,SAASA,GAAG,IAAIjI,EAAEiI,EAAEyN,kBAAkBvV,EAAE8H,EAAE6L,OAAO,OAAO7L,EAAEwN,SAAS,IAAIJ,GAAGlV,GAAGH,EAAE,IAAI0U,GAAGvU,GAAG,IAAI+U,GAAG/U,EAAE,CAAlG,CAAoGQ,KAAKkT,SAAS,IAAI7B,GAAG/J,KAAK,IAAIA,CAAC,EAAEA,EAAE1H,UAAU4V,aAAa,SAASlO,EAAEjI,GAAG,IAAIG,EAAEqM,EAAE,OAAO,QAAQA,EAAE,QAAQrM,EAAEQ,KAAKkV,MAAM1I,IAAIlF,UAAU,IAAI9H,OAAO,EAAEA,EAAE+M,IAAIlN,UAAU,IAAIwM,GAAGA,CAAC,EAAEvE,EAAE1H,UAAUgT,aAAa,SAAStL,EAAEjI,GAAGiN,GAAEhF,GAAG,IAAI9H,EAAEQ,KAAKkV,MAAM1I,IAAIlF,GAAG9H,EAAEA,EAAE2N,IAAI9N,GAAGW,KAAKkV,MAAMzI,IAAInF,EAAE,IAAIuF,IAAI,CAACxN,IAAI,EAAEiI,EAAE1H,UAAUgS,YAAY,SAAStK,EAAEjI,EAAEG,GAAGQ,KAAK4S,aAAatL,EAAEjI,GAAGW,KAAKgT,SAASpB,YAAYtF,GAAEhF,GAAG9H,EAAE,EAAE8H,EAAE1H,UAAU6V,WAAW,SAASnO,GAAGtH,KAAKkV,MAAM3I,IAAIjF,IAAItH,KAAKkV,MAAM1I,IAAIlF,GAAGoO,OAAO,EAAEpO,EAAE1H,UAAU+V,WAAW,SAASrO,GAAGtH,KAAKgT,SAASlB,WAAWxF,GAAEhF,IAAItH,KAAKyV,WAAWnO,EAAE,EAAEA,EAAE1H,UAAUgW,SAAS,WAAW5V,KAAKwR,SAAS,CAAC,EAAElK,CAAC,CAApwD,GAAwwDuO,GAAG,KAAKC,GAAG,GAAGC,GAAG,GAAG,SAASC,GAAG1O,GAAG,IAAI,IAAIA,EAAE3E,QAAQ,KAAK,OAAM,EAAG,IAAI,IAAItD,EAAEiI,EAAE5H,OAAOF,EAAE,EAAEqM,EAAE,EAAEC,GAAE,EAAGxM,EAAE,EAAEA,EAAED,EAAEC,IAAI,CAAC,IAAIC,EAAE+H,EAAEjG,WAAW/B,GAAG,GAAG,IAAIuM,GAAGC,GAAGvM,IAAIuW,IAAIxO,EAAEjG,WAAW/B,EAAE,KAAKyW,GAAG,GAAGjK,EAAEvM,IAAIwW,IAAIzO,EAAEjG,WAAW/B,EAAE,KAAKwW,KAAKhK,GAAE,EAAGxM,UAAU,GAAG,KAAKC,GAAG,KAAKA,GAAG,IAAID,GAAG,KAAKgI,EAAEjG,WAAW/B,EAAE,IAAI,GAAG,IAAIuM,EAAE,GAAG,MAAMtM,EAAEC,SAAS,GAAG,MAAMD,KAAKC,EAAE,EAAE,OAAM,OAAQ,IAAIqM,EAAEA,EAAEtM,EAAEsM,IAAItM,IAAIsM,EAAE,QAAQC,GAAE,EAAGxM,GAAG,CAAC,OAAO,IAAIE,GAAG,IAAIqM,CAAC,CAAC,SAASoK,GAAG3O,EAAEjI,GAAG,OAAOiI,EAAEQ,IAAI,SAASR,GAAG,MAAM,SAASA,EAAExD,OAAOwD,EAAEpF,MAAM,GAAGzB,OAAOpB,EAAE,KAAKoB,OAAO6G,EAAEpF,OAAOoF,EAAEpF,MAAMoF,EAAEpF,MAAMgU,WAAW,IAAI,IAAIzV,OAAOpB,EAAE,MAAMiI,EAAEvD,MAAMuD,EAAEvD,MAAM+D,IAAI,SAASR,GAAG,MAAM,GAAG7G,OAAOpB,EAAE,KAAKoB,OAAO6G,EAAE,IAAI/G,MAAM4Q,QAAQ7J,EAAEtD,WAAW,eAAesD,EAAExD,OAAOwD,EAAEtD,SAASiS,GAAG3O,EAAEtD,SAAS3E,IAAIiI,CAAC,EAAE,CAA4pE,IAAC6O,GAAG,IAAInB,GAAGoB,GAAtqE,WAAe,IAAI/W,EAAEG,EAAEqM,EAAmBtM,EAAJgO,GAAQ2F,QAAQhM,OAAO,IAAI3H,EAAEgO,GAAEhO,EAAE6H,EAAjCmG,GAAqC8I,QAAQjL,OAAO,IAAIhE,EAAEiG,GAAEjG,EAAE9G,EAAE,SAASgH,EAAEuE,EAAEC,GAAG,OAAOA,EAAEwK,WAAW9W,IAAIsM,EAAEyK,SAAS/W,IAAIsM,EAAEoK,WAAW1W,EAAE,IAAIE,OAAO,EAAE,IAAIe,OAAOpB,GAAGiI,CAAC,EAAE3H,EAAEyL,EAAE5K,QAAQb,EAAE0D,KAAK,SAASiE,GAAGA,EAAExD,OAAO0S,GAAWlP,EAAEpF,MAAMuU,SAAS,OAAO5K,IAAIA,EAAE,IAAIuG,OAAO,KAAK3R,OAAOjB,EAAE,OAAO,MAAM8H,EAAEvD,MAAM,GAAGuD,EAAEvD,MAAM,GAAGzB,QAAQuT,GAAGrW,GAAG8C,QAAQuJ,EAAEvL,GAAG,GAAG4G,EAAEL,QAAQlH,EAAE0D,KAAKqT,IAAY/W,EAAE0D,KAAKsT,IAAa,IF2B55gBlP,EE3Bg6gB4D,EAAE,GAAGhE,EFUz7gB,SAAqBuP,GAC3B,IAAIlX,EAASwD,EAAO0T,GAEpB,OAAO,SAAU5P,EAASnE,EAAOmB,EAAUyD,GAG1C,IAFA,IAAIC,EAAS,GAEJnI,EAAI,EAAGA,EAAIG,EAAQH,IAC3BmI,GAAUkP,EAAWrX,GAAGyH,EAASnE,EAAOmB,EAAUyD,IAAa,GAEhE,OAAOC,CACP,CACF,CErBk8gBmP,CAAalX,EAAEc,QF2Bt7gBgH,EE3By8gB,SAASH,GAAG,OAAO+D,EAAEhI,KAAKiE,EAAE,EF4Bx/gB,SAAUN,GACXA,EAAQpD,OACRoD,EAAUA,EAAQ9C,SACrBuD,EAAST,EACX,KEhCmghBO,EAAE,SAASD,EAAEwE,EAAEvM,EAAE6H,QAAQ,IAAI0E,IAAIA,EAAE,SAAS,IAAIvM,IAAIA,EAAE,SAAS,IAAI6H,IAAIA,EAAE,KAAK/H,EAAE+H,EAAE5H,EAAEsM,EAAED,OAAO,EAAE,IAAIT,EAAE,SAAS9D,GAAG,IAAI0O,GAAG1O,GAAG,OAAOA,EAAE,IAAI,IAAIjI,EAAEiI,EAAE5H,OAAOF,EAAE,GAAGqM,EAAE,EAAEC,EAAE,EAAExM,EAAE,EAAEC,GAAE,EAAG2H,EAAE,EAAEA,EAAE7H,EAAE6H,IAAI,CAAC,IAAIE,EAAEE,EAAEjG,WAAW6F,GAAG,GAAG,IAAI5H,GAAGC,GAAG6H,IAAI0O,IAAIxO,EAAEjG,WAAW6F,EAAE,KAAK6O,GAAG,GAAGxW,EAAE6H,IAAI2O,IAAIzO,EAAEjG,WAAW6F,EAAE,KAAK4O,KAAKvW,GAAE,EAAG2H,UAAU,GAAG,KAAKE,GAAG,KAAKA,GAAG,IAAIF,GAAG,KAAKI,EAAEjG,WAAW6F,EAAE,IAAI,GAAG,IAAI5H,EAAE,GAAG,MAAM8H,EAAE0E,SAAS,GAAG,MAAM1E,EAAE,CAAC,KAAK0E,EAAE,EAAE,CAAC,IAAI,IAAIV,EAAElE,EAAE,EAAEkE,EAAE/L,GAAG,CAAC,IAAIiB,EAAEgH,EAAEjG,WAAW+J,GAAG,GAAG,KAAK9K,GAAG,KAAKA,EAAE,MAAM8K,GAAG,CAACA,EAAE/L,GAAG,KAAKiI,EAAEjG,WAAW+J,IAAIA,IAAIU,EAAE,EAAE5E,EAAEkE,EAAE,EAAES,EAAET,EAAE,QAAQ,CAAC,IAAIU,IAAItM,GAAG8H,EAAEwP,UAAUjL,EAAE3E,EAAE,GAAG2E,EAAE3E,EAAE,EAAE,MAAM,KAAKE,GAAG,IAAI0E,IAAItM,GAAG8H,EAAEwP,UAAUjL,EAAE3E,EAAE,GAAG2E,EAAE3E,EAAE,QAAQ,IAAI5H,EAAEA,EAAE8H,EAAE9H,IAAI8H,IAAI9H,EAAE,QAAQC,GAAE,EAAG2H,GAAG,CAAC,GAAG2E,EAAExM,EAAE,CAAC,IAAIM,EAAE2H,EAAEwP,UAAUjL,GAAGmK,GAAGrW,KAAKH,GAAGG,EAAE,CAAC,OAAOH,CAAC,CAAjmB,CAAmmB,SAAS8H,GAAG,IAAI,IAAIA,EAAE3E,QAAQ,MAAM,OAAO2E,EAAE,IAAI,IAAIjI,EAAEiI,EAAE5H,OAAOF,EAAE,GAAGqM,EAAE,EAAEC,EAAE,EAAExM,EAAE,EAAEC,EAAE,EAAEuM,EAAEzM,GAAG,CAAC,IAAI6H,EAAEI,EAAEjG,WAAWyK,GAAG,GAAG,KAAK5E,GAAG,KAAKA,GAAG,IAAI4E,GAAG,KAAKxE,EAAEjG,WAAWyK,EAAE,GAAG,GAAG,IAAIxM,EAAE,GAAG4H,IAAI4O,IAAIhK,EAAE,EAAEzM,GAAGiI,EAAEjG,WAAWyK,EAAE,KAAKiK,GAAG,CAAC,IAAIjK,GAAG,EAAEA,EAAE,EAAEzM,IAAIiI,EAAEjG,WAAWyK,KAAKiK,IAAIzO,EAAEjG,WAAWyK,EAAE,KAAKgK,KAAKhK,IAAIA,GAAG,CAAC,MAAM,GAAG,KAAK5E,GAAG4E,GAAG,GAAG,MAAM,GAAGxE,EAAEjG,WAAWyK,EAAE,KAAK,MAAM,GAAGxE,EAAEjG,WAAWyK,EAAE,KAAK,MAAM,GAAGxE,EAAEjG,WAAWyK,EAAE,IAAIvM,EAAE,EAAEuM,SAAS,GAAGvM,EAAE,EAAE,KAAK2H,EAAE3H,IAAI,KAAK2H,GAAG3H,IAAIuM,SAAS,GAAG5E,IAAI6O,IAAIjK,EAAE,EAAEzM,GAAGiI,EAAEjG,WAAWyK,EAAE,KAAKgK,GAAGhK,EAAED,GAAGrM,EAAE6D,KAAKiE,EAAEwP,UAAUjL,EAAEC,IAAID,EAAEC,GAAG,OAAO,GAAG5E,IAAI4O,IAAIhK,EAAE,EAAEzM,GAAGiI,EAAEjG,WAAWyK,EAAE,KAAKgK,GAAG,CAAC,IAAIhK,EAAED,GAAGrM,EAAE6D,KAAKiE,EAAEwP,UAAUjL,EAAEC,IAAIA,EAAEzM,GAAG,KAAKiI,EAAEjG,WAAWyK,IAAIA,IAAID,EAAEC,CAAC,MAAMA,SAASA,SAAS,IAAIxM,EAAEA,EAAE4H,EAAE5H,IAAI4H,IAAI5H,EAAE,GAAGwM,GAAG,CAAC,OAAO,IAAID,EAAEvE,GAAGuE,EAAExM,GAAGG,EAAE6D,KAAKiE,EAAEwP,UAAUjL,IAAIrM,EAAEoI,KAAK,IAAI,CAAzuB,CAA2uBN,IAAIhH,EAAEyW,GAAUxX,GAAGuM,EAAE,GAAGrL,OAAOlB,EAAE,KAAKkB,OAAOqL,EAAE,OAAOrL,OAAO2K,EAAE,MAAMA,GAAG,OAAOlE,EAAE8P,YAAY1W,EAAE2V,GAAG3V,EAAE4G,EAAE8P,YAAY3L,EAAE,GAAG4L,GAAY3W,EAAE+G,GAAGgE,CAAC,EAAE,OAAO9D,EAAET,KAAKsE,EAAE1L,OAAO0L,EAAE8L,OAAO,SAAS5P,EAAEjI,GAAG,OAAOA,EAAE+O,MAAMpC,GAAE,IAAI+B,GAAEzG,EAAEjI,EAAE+O,KAAK,EAAE,MAAM+I,WAAW,GAAG5P,CAAC,CAAkB6P,GAAKC,GAAGxL,UAAEyL,cAAc,CAACC,uBAAuB,EAAEC,WAAWrB,GAAGsB,OAAOrB,KAA+C,SAASsB,KAAK,OAAO7L,EAAC,QAAC8L,WAAWN,GAAG,CAA7DxL,EAAC,QAACyL,mBAAmB,GAA0uB,IAAIM,GAAG,WAAW,SAAStQ,EAAEA,EAAEjI,GAAG,IAAIG,EAAEQ,KAAKA,KAAK6X,OAAO,SAASvQ,EAAEjI,QAAQ,IAAIA,IAAIA,EAAE+W,IAAI,IAAIvK,EAAErM,EAAE4O,KAAK/O,EAAEyH,KAAKQ,EAAEkO,aAAahW,EAAEsY,GAAGjM,IAAIvE,EAAEsK,YAAYpS,EAAEsY,GAAGjM,EAAExM,EAAEG,EAAE8F,MAAMuG,EAAE,cAAc,EAAE7L,KAAKoO,KAAK9G,EAAEtH,KAAK8X,GAAG,gBAAgBrX,OAAO6G,GAAGtH,KAAKsF,MAAMjG,EAAE+R,GAAGpR,KAAK,WAAW,MAAMgM,GAAE,GAAGjK,OAAOvC,EAAE4O,MAAM,EAAE,CAAC,OAAO9G,EAAE1H,UAAUmY,QAAQ,SAASzQ,GAAG,YAAY,IAAIA,IAAIA,EAAE8O,IAAIpW,KAAKoO,KAAK9G,EAAER,IAAI,EAAEQ,CAAC,CAA/W,GAAmX,SAAS0Q,GAAG1Q,EAAEjI,GAAG,OAAO,MAAMA,GAAG,kBAAkBA,GAAG,KAAKA,EAAE,GAAG,iBAAiBA,GAAG,IAAIA,GAAGiI,KAAK/H,IAAG+H,EAAEgP,WAAW,MAAMvU,OAAO1C,GAAG4C,OAAO,GAAGxB,OAAOpB,EAAE,KAAK,CAAC,IAAI4Y,GAAG,SAAS3Q,GAAG,OAAOA,GAAG,KAAKA,GAAG,GAAG,EAAE,SAAS4Q,GAAG5Q,GAAG,IAAI,IAAIjI,EAAE,GAAGG,EAAE,EAAEA,EAAE8H,EAAE5H,OAAOF,IAAI,CAAC,IAAIqM,EAAEvE,EAAE9H,GAAG,GAAG,IAAIA,GAAG,MAAMqM,GAAG,MAAMvE,EAAE,GAAG,OAAOA,EAAE2Q,GAAGpM,GAAGxM,GAAG,IAAIwM,EAAEyC,cAAcjP,GAAGwM,CAAC,CAAC,OAAOxM,EAAEiX,WAAW,OAAO,IAAIjX,EAAEA,CAAC,CAAC,IAAI8Y,GAAG,SAAS7Q,GAAG,OAAO,MAAMA,IAAG,IAAKA,GAAG,KAAKA,CAAC,EAAE8Q,GAAG,SAAS/Y,GAAG,IAAIG,EAAE,GAAG,IAAI,IAAIqM,KAAKxM,EAAE,CAAC,IAAIyM,EAAEzM,EAAEwM,GAAGxM,EAAEQ,eAAegM,KAAKsM,GAAGrM,KAAKvL,MAAM4Q,QAAQrF,IAAIA,EAAEuM,OAAOzH,GAAG9E,GAAGtM,EAAE6D,KAAK,GAAG5C,OAAOyX,GAAGrM,GAAG,KAAKC,EAAE,KAAKkF,GAAGlF,GAAGtM,EAAE6D,KAAKtD,MAAMP,EAAE8H,EAAEA,EAAE,CAAC,GAAG7G,OAAOoL,EAAE,OAAOuM,GAAGtM,IAAG,GAAI,CAAC,MAAK,IAAKtM,EAAE6D,KAAK,GAAG5C,OAAOyX,GAAGrM,GAAG,MAAMpL,OAAOuX,GAAGnM,EAAEC,GAAG,MAAM,CAAC,OAAOtM,CAAC,EAAE,SAAS8Y,GAAGhR,EAAEjI,EAAEG,EAAEqM,EAAEC,GAAG,QAAQ,IAAIA,IAAIA,EAAE,IAAI,iBAAiBxE,EAAE,OAAOA,GAAGwE,EAAEzI,KAAKiE,GAAGwE,EAAE,GAAGqM,GAAG7Q,GAAG,OAAOwE,EAAE,GAAG+E,GAAGvJ,GAAG,OAAOwE,EAAEzI,KAAK,IAAI5C,OAAO6G,EAAEiR,oBAAoBzM,EAAE,GAAG8E,GAAGtJ,GAAG,CAAC,IAAIsJ,GAAGrR,EAAE+H,IAAI/H,EAAEK,WAAWL,EAAEK,UAAU4Y,mBAAmBnZ,EAAE,OAAOyM,EAAEzI,KAAKiE,GAAGwE,EAAE,IAAIxM,EAAEgI,EAAEjI,GAAG,MAAM,eAAe2L,QAAQC,IAAIU,UAAU,iBAAiBrM,GAAGiB,MAAM4Q,QAAQ7R,IAAIA,aAAasY,IAAI5G,GAAG1R,IAAI,OAAOA,GAAGwN,QAAQC,MAAM,GAAGtM,OAAOyN,GAAE5G,GAAG,qLAAqLgR,GAAGhZ,EAAED,EAAEG,EAAEqM,EAAEC,EAAE,CAAC,IAAIvM,EAAE,GAAG+H,aAAasQ,GAAG,OAAOpY,GAAG8H,EAAEuQ,OAAOrY,EAAEqM,GAAGC,EAAEzI,KAAKiE,EAAEyQ,QAAQlM,KAAKC,EAAEzI,KAAKiE,GAAGwE,EAAE,GAAGkF,GAAG1J,GAAG,CAAC,IAAI,IAAIJ,EAAEkR,GAAG9Q,GAAGF,EAAE,EAAEA,EAAEF,EAAExH,OAAO0H,IAAI0E,EAAEzI,KAAK6D,EAAEE,IAAI,OAAO0E,CAAC,CAAC,IAAIvL,MAAM4Q,QAAQ7J,GAAG,OAAOwE,EAAEzI,KAAKiE,EAAE6P,YAAYrL,EAAE,IAAI1E,EAAE,EAAEA,EAAEE,EAAE5H,OAAO0H,IAAIkR,GAAGhR,EAAEF,GAAG/H,EAAEG,EAAEqM,EAAEC,GAAG,OAAOA,CAAC,CAAC,SAAS2M,GAAGnR,GAAG,IAAI,IAAIjI,EAAE,EAAEA,EAAEiI,EAAE5H,OAAOL,GAAG,EAAE,CAAC,IAAIG,EAAE8H,EAAEjI,GAAG,GAAGuR,GAAGpR,KAAKqR,GAAGrR,GAAG,OAAM,CAAE,CAAC,OAAM,CAAE,CAAI,IAACkZ,GAAG1K,GAAE1N,IAAGqY,GAAG,WAAW,SAASrR,EAAEA,EAAEjI,EAAEG,GAAGQ,KAAKsF,MAAMgC,EAAEtH,KAAK4Y,cAAc,GAAG5Y,KAAK6Y,SAAS,eAAe7N,QAAQC,IAAIU,gBAAgB,IAAInM,GAAGA,EAAEqZ,WAAWJ,GAAGnR,GAAGtH,KAAK8Y,YAAYzZ,EAAEW,KAAK+Y,SAAShL,GAAE2K,GAAGrZ,GAAGW,KAAKgZ,UAAUxZ,EAAEwV,GAAGI,WAAW/V,EAAE,CAAC,OAAOiI,EAAE1H,UAAUqZ,wBAAwB,SAAS3R,EAAEjI,EAAEG,GAAG,IAAIqM,EAAE7L,KAAKgZ,UAAUhZ,KAAKgZ,UAAUC,wBAAwB3R,EAAEjI,EAAEG,GAAG0Z,UAAU,GAAG,GAAGlZ,KAAK6Y,WAAWrZ,EAAEsH,KAAK,GAAG9G,KAAK4Y,eAAevZ,EAAEmW,aAAaxV,KAAK8Y,YAAY9Y,KAAK4Y,eAAe/M,EAAEiF,GAAGjF,EAAE7L,KAAK4Y,mBAAmB,CAAC,IAAI9M,EAAEiF,GAAGuH,GAAGtY,KAAKsF,MAAMgC,EAAEjI,EAAEG,IAAIF,EAAEuO,GAAEE,GAAE/N,KAAK+Y,SAASjN,KAAK,GAAG,IAAIzM,EAAEmW,aAAaxV,KAAK8Y,YAAYxZ,GAAG,CAAC,IAAIC,EAAEC,EAAEsM,EAAE,IAAIrL,OAAOnB,QAAQ,EAAEU,KAAK8Y,aAAazZ,EAAEuS,YAAY5R,KAAK8Y,YAAYxZ,EAAEC,EAAE,CAACsM,EAAEiF,GAAGjF,EAAEvM,GAAGU,KAAK4Y,cAActZ,CAAC,KAAK,CAAC,IAAI,IAAI4H,EAAE6G,GAAE/N,KAAK+Y,SAASvZ,EAAEsH,MAAMM,EAAE,GAAGgE,EAAE,EAAEA,EAAEpL,KAAKsF,MAAM5F,OAAO0L,IAAI,CAAC,IAAI9K,EAAEN,KAAKsF,MAAM8F,GAAG,GAAG,iBAAiB9K,EAAE8G,GAAG9G,EAAE,eAAe0K,QAAQC,IAAIU,WAAWzE,EAAE6G,GAAE7G,EAAE5G,SAAS,GAAGA,EAAE,CAAC,IAAIX,EAAEoR,GAAGuH,GAAGhY,EAAEgH,EAAEjI,EAAEG,IAAI0H,EAAE6G,GAAEA,GAAE7G,EAAEnF,OAAOqJ,IAAIzL,GAAGyH,GAAGzH,CAAC,CAAC,CAAC,GAAGyH,EAAE,CAAC,IAAIiE,EAAEwC,GAAE3G,IAAI,GAAG,IAAI7H,EAAEmW,aAAaxV,KAAK8Y,YAAYzN,GAAG,CAAC,IAAIhE,EAAE7H,EAAE4H,EAAE,IAAI3G,OAAO4K,QAAQ,EAAErL,KAAK8Y,aAAazZ,EAAEuS,YAAY5R,KAAK8Y,YAAYzN,EAAEhE,EAAE,CAACwE,EAAEiF,GAAGjF,EAAER,EAAE,CAAC,CAAC,MAAM,CAAC6N,UAAUrN,EAAEsN,IAAI,oBAAoB7N,OAAOjM,EAAE2T,SAAShB,SAAS1F,GAAEtM,KAAK8Y,cAAc,GAAG,EAAExR,CAAC,CAAxqC,GAA4qC8R,GAAGvN,UAAEyL,mBAAmB,GAA0e+B,GAAG,CAAE,EAACC,GAAG,IAAIzM,IAAI,SAAS0M,GAAGjS,EAAEhI,EAAEC,GAAG,IAAI2H,EAAE2J,GAAGvJ,GAAGF,EAAEE,EAAE8D,GAAGxE,GAAEU,GAAG3H,EAAEL,EAAEka,MAAMnO,OAAO,IAAI1L,EAAE0N,GAAE1N,EAAE0H,EAAE/H,EAAEwZ,YAAYvR,OAAO,IAAIF,EAAE,SAASC,EAAEjI,GAAG,IAAIG,EAAE,iBAAiB8H,EAAE,KAAKZ,GAAEY,GAAG+R,GAAG7Z,IAAI6Z,GAAG7Z,IAAI,GAAG,EAAE,IAAIqM,EAAE,GAAGpL,OAAOjB,EAAE,KAAKiB,OAAOwN,GAAE3N,GAAEd,EAAE6Z,GAAG7Z,KAAK,OAAOH,EAAE,GAAGoB,OAAOpB,EAAE,KAAKoB,OAAOoL,GAAGA,CAAC,CAArJ,CAAuJvM,EAAE6O,YAAY7O,EAAEma,mBAAmBpS,EAAEuE,EAAEtM,EAAE6O,YAAYxH,OAAO,IAAIiF,EAAE,SAAStE,GAAG,OAAOV,GAAEU,GAAG,UAAU7G,OAAO6G,GAAG,UAAU7G,OAAOyN,GAAE5G,GAAG,IAAI,CAAtE,CAAwEA,GAAGsE,EAAEI,EAAE1M,EAAE6O,aAAa7O,EAAEwZ,YAAY,GAAGrY,OAAOiG,GAAEpH,EAAE6O,aAAa,KAAK1N,OAAOnB,EAAEwZ,aAAaxZ,EAAEwZ,aAAavR,EAAE2E,EAAEhF,GAAGE,EAAEoS,MAAMpS,EAAEoS,MAAM/Y,OAAO4K,GAAG/H,OAAOkI,SAASH,EAAEc,EAAE7M,EAAEiY,kBAAkB,GAAGrQ,GAAGE,EAAEmQ,kBAAkB,CAAC,IAAIlL,EAAEjF,EAAEmQ,kBAAkB,GAAGjY,EAAEiY,kBAAkB,CAAC,IAAIpQ,EAAE7H,EAAEiY,kBAAkBpL,EAAE,SAAS7E,EAAEjI,GAAG,OAAOgN,EAAE/E,EAAEjI,IAAI8H,EAAEG,EAAEjI,EAAE,CAAC,MAAM8M,EAAEE,CAAC,CAAC,IAAIC,EAAE,IAAIqM,GAAGpZ,EAAEyM,EAAE9E,EAAEE,EAAEsS,oBAAoB,GAAG,SAAShN,EAAEpF,EAAEhI,GAAG,OAAO,SAASgI,EAAEhI,EAAEC,GAAG,IAAI2H,EAAEI,EAAEkS,MAAMpS,EAAEE,EAAEoS,eAAetO,EAAE9D,EAAE0H,aAAa1O,EAAEgH,EAAEqS,mBAAmBha,EAAE2H,EAAEiR,kBAAkBlN,EAAE/D,EAAE6L,OAAO9L,EAAEwE,EAAAA,QAAE8L,WAAWyB,IAAI7R,EAAEmQ,KAAK9L,EAAEtE,EAAEiQ,mBAAmBhQ,EAAEgQ,kBAAkB,eAAevM,QAAQC,IAAIU,UAAUE,EAAAA,QAAE+N,eAAe/N,EAAC,QAAC+N,cAAcja,GAAG,IAAIgH,EAAE6G,GAAElO,EAAE+H,EAAE+D,IAAImC,GAAEvB,EAAE,SAAS1E,EAAE9H,EAAEqM,GAAG,IAAI,IAAIC,EAAExM,EAAED,EAAEA,EAAE,CAAE,EAACG,GAAG,CAAC0Z,eAAe,EAAEzL,MAAM5B,IAAItM,EAAE,EAAEA,EAAE+H,EAAE5H,OAAOH,GAAG,EAAE,CAAC,IAAI2H,EAAE0J,GAAG9E,EAAExE,EAAE/H,IAAIuM,EAAExM,GAAGwM,EAAE,IAAI,IAAI1E,KAAKF,EAAE,cAAcE,EAAE9H,EAAE4Z,UAAUpI,GAAGxR,EAAE4Z,UAAUhS,EAAEE,IAAI,UAAUA,EAAE9H,EAAEua,MAAMxa,EAAEA,EAAE,CAAA,EAAGC,EAAEua,OAAO3S,EAAEE,IAAI9H,EAAE8H,GAAGF,EAAEE,EAAE,CAAC,MAAM,cAAc5H,GAAG,iBAAiBA,EAAE0Z,YAAY5Z,EAAE4Z,UAAUpI,GAAGxR,EAAE4Z,UAAU1Z,EAAE0Z,YAAY5Z,CAAC,CAAnU,CAAqU4H,EAAE5H,EAAEqH,GAAGuF,EAAEF,EAAE8N,IAAIzO,EAAEc,EAAE,CAAE,EAAC,IAAI,IAAIE,KAAKL,OAAO,IAAIA,EAAEK,IAAI,MAAMA,EAAE,IAAI,OAAOA,GAAG,UAAUA,GAAGL,EAAEyB,QAAQ9G,IAAI,gBAAgB0F,EAAEF,EAAE2N,GAAG9N,EAAE+N,YAAYnO,IAAIA,EAAES,EAAEH,KAAKC,EAAEE,GAAGL,EAAEK,GAAGT,GAAG,gBAAgBZ,QAAQC,IAAIU,UAAUnM,EAAE6M,IAAIiN,GAAG/M,IAAIF,KAAKqB,GAAEnB,IAAIL,KAAKoN,GAAGnM,IAAId,GAAGS,QAAQI,KAAK,qDAAqDzM,OAAO4L,EAAE,4VAA4V,IAAIlF,EAAE,SAASG,EAAEjI,GAAG,IAAIG,EAAEkY,KAAK5L,EAAExE,EAAE2R,wBAAwB5Z,EAAEG,EAAEgY,WAAWhY,EAAEiY,QAAQ,MAAM,eAAezM,QAAQC,IAAIU,UAAUE,EAAAA,QAAE+N,eAAe/N,EAAC,QAAC+N,cAAc9N,EAAEoN,WAAWpN,CAAC,CAAxK,CAA0K1E,EAAE4E,GAAGM,EAAEnF,EAAE+R,UAAU,eAAelO,QAAQC,IAAIU,UAAUrE,EAAE0S,oBAAoB1S,EAAE0S,mBAAmB1N,GAAG,IAAII,EAAEoE,GAAGxQ,EAAEX,GAAG,OAAO2M,IAAII,GAAG,IAAIJ,GAAGN,EAAEkN,YAAYxM,GAAG,IAAIV,EAAEkN,WAAW/M,EAAEvF,GAAEsF,KAAKwB,GAAEnB,IAAIL,GAAG,QAAQ,aAAaQ,EAAEnN,IAAI4M,EAAE8N,IAAI1a,GAAGuM,EAAC4H,cAACxH,EAAEC,EAAE,CAAhpD,CAAkpDQ,EAAErF,EAAEhI,EAAE,CAACoN,EAAEyB,YAAYxH,EAAE,IAAIgG,EAAEd,EAAAA,QAAEqO,WAAWxN,GAAG,OAAOC,EAAE6M,MAAMtN,EAAES,EAAE+M,eAAepN,EAAEK,EAAEwB,YAAYxH,EAAEgG,EAAE4K,kBAAkBpL,EAAEQ,EAAEgN,mBAAmBzS,EAAE4J,GAAG1J,EAAEuS,mBAAmBvS,EAAEmR,mBAAmB,GAAG5L,EAAE4L,kBAAkBvM,EAAEW,EAAEwG,OAAOjM,EAAEE,EAAE+L,OAAO7L,EAAEnI,OAAO8Q,eAAetD,EAAE,eAAe,CAACH,IAAI,WAAW,OAAOxM,KAAKma,mBAAmB,EAAE1N,IAAI,SAASnF,GAAGtH,KAAKma,oBAAoBjT,EAAE,SAASI,GAAG,IAAI,IAAIjI,EAAE,GAAGG,EAAE,EAAEA,EAAEC,UAAUC,OAAOF,IAAIH,EAAEG,EAAE,GAAGC,UAAUD,GAAG,IAAI,IAAIqM,EAAE,EAAEC,EAAEzM,EAAEwM,EAAEC,EAAEpM,OAAOmM,IAAIqF,GAAG5J,EAAEwE,EAAED,IAAG,GAAI,OAAOvE,CAAC,CAA7H,CAA+H,CAAE,EAACF,EAAE4H,aAAa1H,GAAGA,CAAC,IAAI,eAAe0D,QAAQC,IAAIU,WAAW1E,GAAEN,EAAEqF,GAAGW,EAAEqN,mBAAmB,SAAS1S,EAAEjI,GAAG,IAAIG,EAAE,CAAE,EAACqM,GAAE,EAAG,OAAO,SAASC,GAAG,IAAID,IAAIrM,EAAEsM,IAAG,EAAG3M,OAAOib,KAAK5a,GAAGE,QAAQ,KAAK,CAAC,IAAIJ,EAAED,EAAE,oBAAoBoB,OAAOpB,EAAE,KAAK,GAAGyN,QAAQI,KAAK,QAAQzM,OAAO,IAAI,0CAA0CA,OAAO6G,GAAG7G,OAAOnB,EAAE,OAAO,+PAA+PuM,GAAE,EAAGrM,EAAE,CAAA,CAAE,CAAC,CAAC,CAAvf,CAAyfmH,EAAEqF,IAAIoF,GAAGzE,EAAE,WAAW,MAAM,IAAIlM,OAAOkM,EAAE4L,kBAAkB,GAAGnN,GAAGuF,GAAGhE,EAAErF,EAAE,CAACkS,OAAM,EAAGE,gBAAe,EAAGvL,aAAY,EAAGwL,oBAAmB,EAAGpC,mBAAkB,EAAGgB,mBAAkB,EAAGpF,QAAO,IAAKxG,CAAC,CAAC,SAAS0N,GAAG/S,EAAEjI,GAAG,IAAI,IAAIG,EAAE,CAAC8H,EAAE,IAAIuE,EAAE,EAAEC,EAAEzM,EAAEK,OAAOmM,EAAEC,EAAED,GAAG,EAAErM,EAAE6D,KAAKhE,EAAEwM,GAAGvE,EAAEuE,EAAE,IAAI,OAAOrM,CAAC,CAAC,IAAI8a,GAAG,SAAShT,GAAG,OAAOnI,OAAOC,OAAOkI,EAAE,CAAC+Q,OAAM,GAAI,EAAE,SAASkC,GAAGlb,GAAG,IAAI,IAAIG,EAAE,GAAGqM,EAAE,EAAEA,EAAEpM,UAAUC,OAAOmM,IAAIrM,EAAEqM,EAAE,GAAGpM,UAAUoM,GAAG,GAAG+E,GAAGvR,IAAI2R,GAAG3R,GAAG,OAAOib,GAAGhC,GAAG+B,GAAGhN,GAAE/F,EAAE,CAACjI,GAAGG,GAAE,MAAO,IAAIsM,EAAEzM,EAAE,OAAO,IAAIG,EAAEE,QAAQ,IAAIoM,EAAEpM,QAAQ,iBAAiBoM,EAAE,GAAGwM,GAAGxM,GAAGwO,GAAGhC,GAAG+B,GAAGvO,EAAEtM,IAAI,CAAC,SAASgb,GAAGhb,EAAEqM,EAAEC,GAAG,QAAQ,IAAIA,IAAIA,EAAEyB,KAAI1B,EAAE,MAAMG,GAAE,EAAEH,GAAG,IAAIvM,EAAE,SAASD,GAAG,IAAI,IAAIC,EAAE,GAAGC,EAAE,EAAEA,EAAEE,UAAUC,OAAOH,IAAID,EAAEC,EAAE,GAAGE,UAAUF,GAAG,OAAOC,EAAEqM,EAAEC,EAAEyO,GAAGxa,WAAW,EAAEuH,EAAE,CAACjI,GAAGC,GAAE,IAAK,EAAE,OAAOA,EAAEka,MAAM,SAASlS,GAAG,OAAOkT,GAAGhb,EAAEqM,EAAExM,EAAEA,EAAE,GAAGyM,GAAG,CAAC0N,MAAMjZ,MAAMX,UAAUa,OAAOqL,EAAE0N,MAAMlS,GAAGhE,OAAOkI,WAAW,EAAElM,EAAEmb,WAAW,SAASnT,GAAG,OAAOkT,GAAGhb,EAAEqM,EAAExM,EAAEA,EAAE,GAAGyM,GAAGxE,GAAG,EAAEhI,CAAC,CAAC,IAAIob,GAAG,SAASpT,GAAG,OAAOkT,GAAGjB,GAAGjS,EAAE,EAAEqT,GAAGD,GAAGhN,GAAE3B,QAAQ,SAASzE,GAAGqT,GAAGrT,GAAGoT,GAAGpT,EAAE,GAAG,IAAIsT,GAAG,WAAW,SAAStT,EAAEA,EAAEjI,GAAGW,KAAKsF,MAAMgC,EAAEtH,KAAK8Y,YAAYzZ,EAAEW,KAAK6Y,SAASJ,GAAGnR,GAAG0N,GAAGI,WAAWpV,KAAK8Y,YAAY,EAAE,CAAC,OAAOxR,EAAE1H,UAAUib,aAAa,SAASvT,EAAEjI,EAAEG,EAAEqM,GAAG,IAAIC,EAAED,EAAEkF,GAAGuH,GAAGtY,KAAKsF,MAAMjG,EAAEG,EAAEqM,IAAI,IAAIvM,EAAEU,KAAK8Y,YAAYxR,EAAE9H,EAAEoS,YAAYtS,EAAEA,EAAEwM,EAAE,EAAExE,EAAE1H,UAAUkb,aAAa,SAASxT,EAAEjI,GAAGA,EAAEsW,WAAW3V,KAAK8Y,YAAYxR,EAAE,EAAEA,EAAE1H,UAAUmb,aAAa,SAASzT,EAAEjI,EAAEG,EAAEqM,GAAGvE,EAAE,GAAG0N,GAAGI,WAAWpV,KAAK8Y,YAAYxR,GAAG,IAAIwE,EAAE9L,KAAK8Y,YAAYxR,EAAEtH,KAAK6Y,SAASrZ,EAAEgW,aAAa1J,EAAEA,IAAI9L,KAAK6a,aAAavT,EAAEjI,EAAEG,EAAEqM,IAAI7L,KAAK8a,aAAaxT,EAAE9H,GAAGQ,KAAK6a,aAAavT,EAAEjI,EAAEG,EAAEqM,GAAG,EAAEvE,CAAC,CAA3hB,GAAoxH,eAAe0D,QAAQC,IAAIU,UAAU,oBAAoBqP,WAAW,gBAAgBA,UAAUC,SAASnO,QAAQI,KAAK,wNAAwN,ICkCps+BgO,GA8BAC,GAkBAC,GDlFws+BC,GAAG,QAAQ5a,OAAOyG,GAAE,MAAM,eAAe8D,QAAQC,IAAIU,UAAU,SAASX,QAAQC,IAAIU,UAAU,oBAAoBL,SAASA,OAAO+P,MAAM/P,OAAO+P,IAAI,GAAG,IAAI/P,OAAO+P,KAAKvO,QAAQI,KAAK,sZAAsZ5B,OAAO+P,KAAK,GCkC7x/BH,QAAZA,wBAAA,GAAYA,GAAAA,6BAAAA,QAAAA,mBAcX,CAAA,IAbG,iBAAA,mBACAA,GAAA,sBAAA,wBACAA,GAAA,wBAAA,0BACAA,GAAA,wBAAA,0BACAA,GAAA,mBAAA,qBACAA,GAAA,wBAAA,0BACAA,GAAA,0BAAA,4BACAA,GAAA,0BAAA,4BACAA,GAAA,aAAA,eACAA,GAAA,SAAA,WACAA,GAAA,UAAA,YACAA,GAAA,YAAA,cACAA,GAAA,MAAA,QAiBQC,QAAAA,mBAAAA,GAAAA,GAAAA,wBAAAA,QAAAA,cAOX,CAAA,IANG,QAAA,IACAA,GAAA,KAAA,IACAA,GAAA,QAAA,IACAA,GAAA,WAAA,IACAA,GAAA,QAAA,IACAA,GAAA,oBAAA,IAYQC,QAAAA,2BAAAA,GAAAA,GAAAA,QAAqBA,wBAArBA,QAAqBA,sBAQhC,CAAA,IAPG,KAAA,OACAA,GAAA,MAAA,QACAA,GAAA,QAAA,UACAA,GAAA,SAAA,WACAA,GAAA,KAAA,OACAA,GAAA,OAAA,SACAA,GAAA,UAAA,gBCvFSE,GAAqC,CAC9CC,MAAO,CACHC,GAAM,GACNC,GAAM,GACNC,GAAM,IAEVC,gBAAiB,CACbH,GAAM,UACNC,GAAM,aACNC,GAAM,oBAEVE,OAAQ,CACJJ,GAAM,QACNC,GAAM,QACNC,GAAM,UAEVG,KAAM,CACFL,GAAM,UACNC,GAAM,QACNC,GAAM,QAEVI,mBAAoB,CAChBN,GAAM,6BACNC,GAAM,+BACNC,GAAM,kCAEVK,aAAc,CACVP,GAAM,IACNC,GAAM,IACNC,GAAM,KAEVM,0BAA2B,CACvBR,GAAM,GACNC,GAAM,GACNC,GAAM,KAEVO,aAAc,CACVT,GAAM,IACNC,GAAM,IACNC,GAAM,KAEVQ,YAAa,CACTV,GAAM,kFACNC,GAAM,6CACNC,GAAM,2CAEVS,UAAW,CACPX,GAAM,kFACNC,GAAM,2BACNC,GAAM,mEAEVU,aAAc,CACVZ,GAAM,kFACNC,GAAM,8BACNC,GAAM,mEAEVW,eAAgB,CACZb,GAAM,iDACNC,GAAM,gDACNC,GAAM,2CAEVY,WAAY,CACRd,GAAM,+EACNC,GAAM,gBACNC,GAAM,6EAEVa,aAAc,CACVf,GAAM,wCACNC,GAAM,kCACNC,GAAM,sCAEVc,UAAW,CACPhB,GAAM,4EACNC,GAAM,iBACNC,GAAM,uEAEVe,YAAa,CACTjB,GAAM,8CACNC,GAAM,mCACNC,GAAM,oCAEVgB,cAAe,CACXlB,GAAM,6EACNC,GAAM,qBACNC,GAAM,2EAEViB,gBAAiB,CACbnB,GAAM,6CACNC,GAAM,uCACNC,GAAM,+CAEVkB,cAAe,CACXpB,GAAM,0EACNC,GAAM,2BACNC,GAAM,wEAEVmB,gBAAiB,CACbrB,GAAM,uCACNC,GAAM,6BACNC,GAAM,uCAEVoB,kBAAmB,CACftB,GAAM,QACNC,GAAM,qBACNC,GAAM,SAEVqB,eAAgB,CACZvB,GAAM,iBACNC,GAAM,mBACNC,GAAM,cAEVsB,gBAAiB,CACbxB,GAAM,sCACNC,GAAM,wBACNC,GAAM,iCAEVuB,QAAS,CACLzB,GAAM,eACNC,GAAM,eACNC,GAAM,gBAEVwB,WAAY,CACR1B,GAAM,mBACNC,GAAM,gBACNC,GAAM,mBAEVyB,YAAa,CACT3B,GAAM,+BACNC,GAAM,oCACNC,GAAM,+BAEV0B,mBAAoB,CAChB5B,GAAM,2CACNC,GAAM,gBACNC,GAAM,0CAEV2B,mBAAoB,CAChB7B,GAAM,qBACNC,GAAM,sBACNC,GAAM,sBAEV4B,YAAa,CACT9B,GAAM,oBACNC,GAAM,0BACNC,GAAM,yBAEV6B,YAAa,CACT/B,GAAM,oBACNC,GAAM,0BACNC,GAAM,yBAEV8B,aAAc,CACVhC,GAAM,wBACNC,GAAM,4BACNC,GAAM,yBAEV+B,YAAa,CACTjC,GAAM,uBACNC,GAAM,2BACNC,GAAM,wBAEVgC,gBAAiB,CACblC,GAAM,2CACNC,GAAM,2BACNC,GAAM,2CAEViC,YAAa,CACTnC,GAAM,oDACNC,GAAM,4DACNC,GAAM,8CAEVkC,cAAe,CACXpC,GAAM,2BACNC,GAAM,8BACNC,GAAM,6BAEVmC,eAAgB,CACZrC,GAAM,2BACNC,GAAM,8BACNC,GAAM,8BAEVoC,iBAAkB,CACdtC,GAAM,6BACNC,GAAM,+BACNC,GAAM,gCAEVqC,iBAAkB,CACdvC,GAAM,6BACNC,GAAM,gCACNC,GAAM,gCAEVsC,uBAAwB,CACpBxC,GAAM,wHACNC,GAAM,2HACNC,GAAM,wHAEVuC,yBAA0B,CACtBzC,GAAM,6DACNC,GAAM,8DACNC,GAAM,6DAEVwC,uBAAwB,CACpB1C,GAAM,wHACNC,GAAM,2HACNC,GAAM,wHAEVyC,yBAA0B,CACtB3C,GAAM,6DACNC,GAAM,8DACNC,GAAM,6DAEV0C,iBAAkB,CACd5C,GAAM,6IACNC,GAAM,yBACNC,GAAM,iJAEV2C,4BAA6B,CACzB7C,GAAM,gKACNC,GAAM,iDACNC,GAAM,yJAEV4C,oBAAqB,CACjB9C,GAAM,+JACNC,GAAM,yBACNC,GAAM,iJAEV6C,+BAAgC,CAC5B/C,GAAM,+JACNC,GAAM,iDACNC,GAAM,yJAEV8C,qBAAsB,CAClBhD,GAAM,yJACNC,GAAM,0BACNC,GAAM,sJAEV+C,gCAAiC,CAC7BjD,GAAM,yJACNC,GAAM,mDACNC,GAAM,sJAEVgD,kBAAmB,CACflD,GAAM,wJACNC,GAAM,wBACNC,GAAM,oJAEViD,6BAA8B,CAC1BnD,GAAM,+JACNC,GAAM,+CACNC,GAAM,4JAEVkD,iBAAkB,CACdpD,GAAM,6IACNC,GAAM,yBACNC,GAAM,8IAEVmD,4BAA6B,CACzBrD,GAAM,2JACNC,GAAM,iDACNC,GAAM,sJAEVoD,qBAAsB,CAClBtD,GAAM,gJACNC,GAAM,wBACNC,GAAM,uJAEVqD,gCAAiC,CAC7BvD,GAAM,6JACNC,GAAM,+CACNC,GAAM,+JAEVsD,iBAAkB,CACdxD,GAAM,kCACNC,GAAM,uCACNC,GAAM,kBAEVuD,iBAAkB,CACdzD,GAAM,kCACNC,GAAM,uCACNC,GAAM,kBAEVwD,iBAAkB,CACd1D,GAAM,gBACNC,GAAM,oBACNC,GAAM,6BAEVyD,QAAS,CACL3D,GAAM,cACNC,GAAM,YACNC,GAAM,cAEV0D,oBAAqB,CACjB5D,GAAM,yCACNC,GAAM,yCACNC,GAAM,0CAEV2D,sBAAuB,CACnB7D,GAAM,iBACNC,GAAM,cACNC,GAAM,cAEV4D,uBAAwB,CACpB9D,GAAM,cACNC,GAAM,aACNC,GAAM,cAEV6D,aAAc,CACV/D,GAAM,kBACNC,GAAM,kBACNC,GAAM,iBAEV8D,QAAS,CACLhE,GAAM,iBACNC,GAAM,UACNC,GAAM,WAEV+D,YAAa,CACTjE,GAAM,gBACNC,GAAM,cACNC,GAAM,gBAEVgE,0BAA2B,CACvBlE,GAAM,0BACNC,GAAM,6BACNC,GAAM,8BAEViE,2BAA4B,CACxBnE,GAAM,2BACNC,GAAM,qCACNC,GAAM,kCAEVkE,YAAa,CACTpE,GAAM,aACNC,GAAM,aACNC,GAAM,YAIDmE,GAA+C,CACxDC,OAAQ,CACJtE,GAAM,CAAC,WAAY,WAAY,YAAa,WAAY,WAAY,UAAW,WAAY,SAAU,UAAW,UAAW,YAAa,YACxIC,GAAM,CAAC,UAAW,WAAY,OAAQ,QAAS,MAAO,OAAQ,OAAQ,UAAW,YAAa,UAAW,WAAY,YACrHC,GAAM,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,aAEzHqE,YAAa,CACTvE,GAAM,CAAC,QAAS,QAAS,SAAU,QAAS,QAAS,OAAQ,QAAS,MAAO,OAAQ,OAAQ,SAAU,SACvGC,GAAM,CAAC,OAAQ,QAAS,OAAQ,QAAS,MAAO,OAAQ,OAAQ,OAAQ,QAAS,OAAQ,OAAQ,QACjGC,GAAM,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,QAExFsE,eAAgB,CACZxE,GAAM,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAChCC,GAAM,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAChCC,GAAM,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,MAEpCuE,SAAU,CACNzE,GAAM,CAAC,YAAa,YAAa,UAAW,cAAe,UAAW,YAAa,YACnFC,GAAM,CAAC,SAAU,SAAU,SAAU,SAAU,UAAW,SAAU,UACpEC,GAAM,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,aAE7EwE,gBAAiB,CACbxE,GAAM,CAAC,MAAO,MAAO,MAAO,SCrW9ByE,GAAU,iBCHe,WAI3B,SAAAC,IAAAC,IAAAA,YAHAC,kBAAY,EAAAtgB,KACZugB,uBAAiB,EAAAvgB,KAOjBwgB,gBAAkB,WACd,OAAOrhB,OAAOib,KAAKiG,EAAKC,aAAa/E,MACzC,EANIvb,KAAKsgB,aAAehF,GACpBtb,KAAKugB,kBAAoBV,EAC7B,QAACO,EAAAxgB,UAMD6gB,gBAAA,SAAgBC,GACZ,IAAK,IAAMC,KAAOD,EAAgBJ,aAC1BK,UAAYL,eACZtgB,KAAKsgB,aAAaK,GAA2BC,EACtC,CAAA,EAAA5gB,KAAKsgB,aAAaK,GAClBD,EAAgBJ,aAAaK,KAK5C,IAAK,IAAMA,KAAOD,EAAgBH,kBAC1BI,KAAO3gB,KAAKugB,oBACZvgB,KAAKugB,kBAAkBI,GAAgCC,EAAA,CAAA,EAChD5gB,KAAKugB,kBAAkBI,GACvBD,EAAgBH,kBAAkBI,IAIrD,EAACP,CAAA,CA/B0B,IDMlBE,GAA8BH,GAAQG,aACtCC,GAAwCJ,GAAQI,kBAChDC,GAAkBL,GAAQK,gBEV1BK,GAAmB,SAAIC,GAChC,OAAOA,EAAW5J,OACd,SAAC6J,EAASC,GAAO,OACbD,EACKjZ,IAAI,SAAAmZ,GAAU,OAAAD,EAAQlZ,IAAI,SAAAoZ,GAAK,OAAID,EAAOxgB,OAAO,CAACygB,GAAO,EAAC,GAC1DhK,OAAO,SAACiK,EAAYF,GAAM,OAAKE,EAAW1gB,OAAOwgB,EAAO,EAAE,GAAG,EACtE,CAAC,IAET,EAegB,SAAAG,GAAclf,EAAUW,EAAeO,GACnD,OAAOA,EAAMie,UAAU,SAAAhiB,GAAK,OAAAiiB,KAAK3Z,UAAUtI,KAAOiiB,KAAK3Z,UAAUzF,EAAM,KAAMW,CACjF,CCvBA,IAAM0e,GAAkB,CACpB,GACA,IACA,KACA,MACA,OACA,QACA,SACA,KAGE,SAAUC,GAAmBtf,EAAsBuf,EAAmBC,EAAgBC,GACxF,QADwF,IAAAA,IAAAA,GAAgC,GAC1G,OAAVzf,EAAgB,MAAM,IAAI+J,MAAM,mEAGpC,OAAW,IAAA2V,KAAKC,aACZH,EAAQ,CACJI,sBAAuBL,EACvBM,sBAAuBN,EACvBO,YAAaL,IAClBM,OAAO/f,EACd,CAEM,SAAUggB,GAAkBC,EAAiCT,EAAeU,GAC9E,YAD8EA,IAAAA,GAAqB,GAC9FD,SACIC,EAAkB9B,GAAab,YAAYiC,GACxCH,GAAgBY,GAFV,MAAU,IAAAlW,MAAM,4DAGtC,CCtBgB,SAAAoW,GAA4BC,EAAYZ,GACpD,OAAO,WAAA,IAAAa,EAAAC,EAAAC,EAGsEC,EAIPC,EAN5DC,EAAe,GAEjBN,EAAKO,aAAeP,EAAKO,YAAYnjB,OAAS,GAAKM,KAAK8iB,OAAO1U,MAC/DwU,EAAavf,MAAwB,OAApBqf,EAAIJ,EAAKO,kBAAW,EAAhBH,EAAkB5a,IAAI,SAAAib,GAAG,OAAIA,EAAIrB,EAAO,GAAE9Z,KAAK,OAAU,KAAA5H,KAAK8iB,OAAO1U,MAG1FkU,EAAKU,aAAeV,EAAKU,YAAYtjB,OAAS,GAAKM,KAAKoO,MACxDwU,EAAavf,MAAwB,OAApBsf,EAAIL,EAAKU,kBAAW,EAAhBL,EAAkB7a,IAAI,SAAAmb,GAAO,OAAAA,EAAIvB,EAAO,GAAE9Z,KAAK,OAAK,KAAK5H,KAAKoO,MAGvF,IAAMqT,EAAsD,OAA7Cc,EAAWC,OAAXA,EAAWxiB,KAAKkT,QAAQgQ,aAAbV,EAAAA,EAAiC,WAACD,EAAI,EAOhE,OANAK,EAAavf,KAAK8f,GAA6Bb,EAAMtiB,KAAM0hB,EAAQD,IAE5C,OAAvBgB,EAAIziB,KAAKkT,QAAQgQ,SAAbT,EAAmC,aACnCG,EAAavf,KAAKid,GAAa3E,gBAAgB+F,IAG5CkB,EAAahb,KAAK,QAC7B,CACJ,CAMgB,SAAAwb,GAAyCd,EAAYZ,GACjE,gBAAiB2B,GAAKC,IAAAA,EAAAC,EAAAC,EAGwDC,EAIPC,EAN7Dd,EAAe,GAEjBN,EAAKO,aAAeP,EAAKO,YAAYnjB,OAAS,GAAK2jB,EAAMP,OAAO1U,MAChEwU,EAAavf,MAAwB,OAApBogB,EAAInB,EAAKO,kBAAW,EAAhBY,EAAkB3b,IAAI,SAAAib,GAAG,OAAIA,EAAIrB,EAAO,GAAE9Z,KAAK,OAAK,KAAK+b,GAAqCN,EAAMP,OAAO1U,KAAMsT,IAGtIY,EAAKU,aAAeV,EAAKU,YAAYtjB,OAAS,GAAK2jB,EAAMjV,MACzDwU,EAAavf,MAAwB,OAApBqgB,EAAIpB,EAAKU,kBAAW,EAAhBU,EAAkB5b,IAAI,SAAAmb,GAAO,OAAAA,EAAIvB,EAAO,GAAE9Z,KAAK,OAAK,KAAK+b,GAAqCN,EAAMjV,KAAMsT,IAGnI,IAAMD,EAAuD6B,OAA9CA,EAAWC,OAAXA,EAAWF,EAAMnQ,QAAQgQ,aAAdK,EAAAA,EAAkC,WAACD,EAAI,EAOjE,OANAV,EAAavf,KAAK8f,GAA6Bb,EAAMe,EAAO3B,EAAQD,IAEhE+B,OAAJA,EAAIH,EAAMnQ,QAAQgQ,SAAdM,EAAoC,aACpCZ,EAAavf,KAAKid,GAAa3E,gBAAgB+F,IAG5CkB,EAAahb,KAAK,KAC7B,CACJ,CAIgB,SAAAgc,GAA8BlC,GAC1C,OAAO,WACH,OAAW1hB,KAACkC,MAAM2hB,eAAenC,EACrC,CACJ,CAGa,IAAAoC,GAAe,SAACpC,GACzB,OAAOlB,KAAkB7d,QAAQ+e,EAAOpT,cAAcrM,SAAW,EAAIyf,EAAOpT,cAAcrM,OAASue,KAAkB,EACzH,EAGgB,SAAAuD,GAA+BC,QAAA,IAAAA,IAAAA,EAA6B,MACxE,IACMC,EAAcD,GAAeA,GADR,GAC6C,GAAK,GAC7E,OAAO,WACH,OAAOE,GAAmBlkB,KAAKkC,MAAO+hB,EAC1C,CACJ,CAYgB,SAAAE,GAA8BzC,GAC1C,OAAO,WAAA,IAAA0C,EAAAC,EACH,IAAKrkB,KAAK2G,EAAG,MAAO,GAEpB,IAAM8a,EAAsD2C,OAA7CA,EAA8B,OAA9BC,EAAWrkB,KAAKkT,QAAQgQ,aAAM,EAAnBmB,EAAiC,WAACD,EAAI,EAChE,OAAO5C,GAAmBxhB,KAAK2G,EAAG8a,EAAWC,GAAQ,EACzD,CACJ,CAGgB,SAAA4C,KACZ,OAAO,WACH,OAAOJ,GAAmBlkB,KAAKoO,KAAM,IACzC,CACJ,CAGO,ICxGKmW,GDwGCL,GAAqB,SAAChiB,EAAwBsiB,QAAA,IAAAA,IAAAA,EAAgB,IACvE,IAAMC,EAAcviB,EAAMiV,WAAWzX,OAErC,OADwBwC,EAAMiV,WAAW3W,MAAM,EAAGgkB,GAAOviB,QAASwiB,EAAcD,EAAQ,MAAQ,GAEpG,EAkCgB,SAAAE,GAAuCpC,EAAYZ,GAC/D,OAAO,eAAAiD,EAAAC,EAUgDC,EAT7CC,EAAYxC,EAAKQ,OAAO,GAAGiC,aAAajd,IAAI,SAAAxI,GAAK,OAAAA,EAAEoiB,EAAO,GAAE9Z,KAAK,MACjEod,EAAY1C,EAAKQ,OAAO,GAAGiC,aAAajd,IAAI,SAAAxI,GAAK,OAAAA,EAAEoiB,EAAO,GAAE9Z,KAAK,MACjEqd,EAA6B,OAAnBN,EAAGrC,EAAKU,kBAAW,EAAhB2B,EAAkB7c,IAAI,SAAAmb,GAAO,OAAAA,EAAIvB,EAAO,GAAE9Z,KAAK,MAC9Dsd,EAAe,GAoBnB,OAnBIJ,GAAaA,EAAUplB,OAAS,GAAKM,KAAK8iB,OAAO1U,OAEjD8W,GADkBJ,EAAc,KAAA9kB,KAAK0G,EAAEmd,eAAenC,GAAO,UAI7DsD,GAAaA,EAAUtlB,OAAS,GAAKM,KAAK2gB,MAE1CuE,GADkBF,EAAS,MAAW,OAAXH,EAAK7kB,KAAK2G,QAAC,EAANke,EAAQhB,eAAenC,cAIvDuD,GAAcA,EAAWvlB,OAAS,GAAK4iB,EAAK6C,kBAAoB7C,EAAK6C,iBAAiBzlB,OAAS,IAE/FwlB,GADkBD,EAAU,KAAK3C,EAAK6C,iBAAiBnlB,KAAK6C,OAAOiF,IAAI,SAACsd,GAAQ,OAAAA,EAAI1D,EAAO,GAAE9Z,KAAK,OAIlGgd,OAAJA,EAAI5kB,KAAKkT,QAAQgQ,SAAb0B,EAAmC,cACnCM,GAAY,SAAa5E,GAAa3E,gBAAgB+F,IAGnDwD,CACX,CACJ,CAGgB,SAAAG,GAAqC/C,EAAYZ,GAC7D,OAAO,WAAA,IAAA4D,EAAAC,EAAAC,EAW+DC,EAV5D7C,EAAe,GAErB,GAAIN,EAAKO,aAAeP,EAAKO,YAAYnjB,OAAS,EAC9C,IAAK,IAAIH,EAAI,EAAGA,EAAI+iB,EAAKO,YAAYnjB,OAAQH,IAGzCqjB,EAAavf,KAFMif,EAAKO,YAAYtjB,GAEJmiB,GAAO,KADnBY,EAAKQ,OAAO9iB,KAAK8iB,OAAOjgB,OAAOkiB,aAAaxlB,GACRmiB,IAI5DY,EAAKU,aAAeV,EAAKU,YAAYtjB,OAAS,GAAKM,KAAKoO,MACxDwU,EAAavf,MAAQoiB,OAAJA,EAAInD,EAAKU,kBAALyC,EAAAA,EAAkB3d,IAAI,SAAAmb,GAAG,OAAIA,EAAIvB,EAAO,GAAE9Z,KAAK,OAAU,KAAA5H,KAAKoO,MAGvF,IAAMqT,EAAsD,OAA7C6D,EAA8B,OAA9BC,EAAWvlB,KAAKkT,QAAQgQ,aAAM,EAAnBqC,EAAiC,WAACD,EAAI,EAOhE,OANA1C,EAAavf,KAAK8f,GAA6Bb,EAAMtiB,KAAM0hB,EAAQD,IAE/D+D,OAAJA,EAAIxlB,KAAKkT,QAAQgQ,SAAbsC,EAAmC,aACnC5C,EAAavf,KAAKid,GAAa3E,gBAAgB+F,IAG5CkB,EAAahb,KAAK,QAC7B,CACJ,CAEgB,SAAA8d,GAAkBC,EAAwBjE,GACtD,IAAMkE,EAAcD,EAAU7d,IAAI,SAAA+d,GAAM,OAAAA,EAAGhK,IAAI,GAAEvY,OAAO8d,IACxD,GAA0B,IAAvBwE,EAAYlmB,OACX,OAAOkmB,EAAY,GAAGlE,GAElBkE,GAAAA,EAAYlmB,OAAS,EACzB,OAAOimB,EAAU7d,IAAI,SAAA+d,GAAE,OAAOA,EAAGzX,KAAKsT,GAAYmE,KAAAA,EAAGhK,KAAK6F,EAAO,GAAI9Z,KAAK,MAEnE,MAAA,IAAIqE,MAAM,6BACzB,CAEgB,SAAAkX,GAA6Bb,EAAYe,EAAc3B,EAAgBD,GACnF,GAAI4B,QAAM1c,EAAqC,MAAO,GACtD,IAMgGmf,EAG3FC,EATC7jB,EAAQ8jB,OAAO3C,EAAM1c,EAAEsf,QAAQxE,IAErC,OAAIa,EAAK4D,sBAAsBC,oBAAsBjL,QAAkBA,mBAACkL,aAC7DtkB,KAAKD,IAAIK,GAAO2hB,eAAenC,GAEjCY,EAAK4D,sBAAsBC,mBAAqBjL,QAAkBA,mBAACmL,2BACxE/D,EAAK4D,sBAAsBC,mBAAqBjL,QAAkBA,mBAACoL,wBACzD9E,GAAmC,OAAjBsE,EAACzC,EAAMkD,YAAUT,EAAI,EAAG,EAAGpE,GAAO,MAAMxf,EAAM2hB,eAAenC,GAAO,IAAIgE,GAAkBpD,EAAKkE,MAAO9E,GAAO,IAGtG,OAAnCqE,EAAO7jB,EAAM2hB,eAAenC,IAAOqE,EAAI,EAE/C,CAEgB,SAAApC,GAAqCzhB,EAAewf,GAGhE,GAFqB,yBAEJtgB,KAAKc,GAAQ,CAC1B,IAAMukB,EAAgBvkB,EAAMyQ,MAAM,KAAK,GAGvC,GAFmB,kBAEJvR,KAAKqlB,GAAgB,CAChC,IAAMC,EAAcD,EAAc9T,MAAM,KACxC,OAAU+T,EAAY,OAAMnG,GAAkBT,OAAO4B,GAAQsE,OAAOU,EAAY,IAAM,EAC1F,CAAO,GAJc,kBAIGtlB,KAAKqlB,GAAgB,CACzC,IAAMC,EAAcD,EAAc9T,MAAM,KACxC,OAAU+T,EAAY,GAAE,IAQpC,SAA8BxkB,EAAewf,GAGzC,IAAMxB,EAAkBK,GAAkBL,gBAAgBwB,GACpD7e,EAAQkQ,SAAS7Q,GAAS,EAChC,OAAIge,MAAAA,GAAAA,EAAkBrd,GACRX,GAAAA,EAAQge,EAAgBrd,GAExBX,EACd,GACJ,CAlBwCykB,CAAqBD,EAAY,GAAIhF,GAAWpB,IAAAA,GAAad,QAAQkC,EACrG,CACI5U,QAAQ8Z,IAAI,2BAEpB,CACA,OAAO1kB,CACX,CAoBgB,SAAA2kB,GAA4BjH,EAAiC8B,GACzE,GAAK9B,EAEL,IACI,IAAMkH,EAAO,IAAIC,KAAKnH,GACtB,GAAIoG,OAAOgB,MAAMF,EAAKG,WAAY,OAElC,IACMC,EAAwBtF,KAAKuF,eADL,OAAXzF,EAAkB,QAAUA,GACeO,OAAO6E,GAErE,OAAUxG,GAAaV,YAAY8B,GAAYwF,KAAAA,CACnD,CAAE,MAAOna,GAEL,YADAD,QAAQC,MAAM,yBAA0BA,EAE5C,CACJ,UEhQgBqa,GAA8BC,EAAkBC,EAAkB7F,GAY9E,kBACI,IAR4B8F,EAEtBC,EACAC,EAKAC,EAiBE,SAAYC,EAAuBC,EAAuBC,EAA6BpG,GAAmCqG,IAAAA,EACtI,QADwH,IAArBrG,IAAAA,EAAqB,IAAIsG,EAAAA,QAAQ,IAChIJ,EAAaK,YAAYJ,GAAe,MAAU,IAAA3b,MAAM,2DAmB5D,IAJc0b,EAAaM,SAAS,IAAML,EAAaI,YAAY,GAC7DJ,EAAaM,MAAMP,GACnBI,UAAQN,IAAIE,EAAa9lB,MAAO+lB,EAAa/lB,QAEzCsmB,IAAIN,GAAqBO,kBAAkB3G,GAAY,OAAOA,EAExE,IAAM4G,EAnBmD,SAACC,GACtD,IAAMD,EAAa9nB,MAAMJ,KAAK,CAAET,OAAQmoB,GAAuB,SAAC5gB,EAAG1H,GAAM,OAAAsoB,EAAsBtoB,CAAC,GAC3F2X,OAAO,SAACqR,EAA4BC,GACjC,IAoDqBC,EApDff,EAyBhB,SAAyCgB,GAE3C,GAAIA,EAAaC,OAAO,GAAI,OAAO,IAAIZ,EAAAA,QAAQ,GAE/C,IAAMa,EAAYb,EAAAA,QAAQc,IAAI,GAAId,EAAO,QAACe,MAAMJ,GAAcK,SAE9D,OAAIL,EAAaP,IAAIS,GAAWX,SAvFD,KAyFpBW,EAAUT,IAAI,IAAIa,IAAIN,EAAaP,IAAKS,EAAUT,IAAI,KAAMc,QAGnEP,EAAaP,IAAIS,GAAWX,SArFR,GAuFZS,EAAaM,IAAI,GAAGb,IAAIS,GAAWK,OAAOD,IAAIJ,GAAWT,IAAI,GAGrEO,EAAaP,IAAIS,GAAWX,SArFA,GAsFrBS,EAAaP,IAAIS,GAAWK,OAAOD,IAAIJ,GAI3CF,EAAaP,IAAKS,EAAUI,IAAI,KAAMC,OAAOD,IAAI,IAAIA,IAAIJ,EACpE,CA/CsCM,CAA+BZ,EAAMH,IAAIK,IAE/D,OADId,EAAcyB,qBAAqB1H,IAAY8G,EAAMllB,KAAK,EAmDzColB,EAnD+Df,EAoD5Fe,EAAME,OAAO,GAAW,EAExBF,EAAMW,YAId,SAAqCX,GAGjC,IAFA,IAAIY,EAAQ,EACRC,EAAU,EACPD,EAAQ,IACNZ,EAAMc,IAAID,GAASX,OAAO,KAC/BU,IAGKZ,EAAMc,IAFXD,GAAW,GAEaX,OAAO,KAC/BU,IACAC,GAAW,EAEf,OAAOD,CACX,CAjBkCG,CAA4Bf,GAmB9D,SAAmCA,GAC/B,IAAMgB,EAAOhB,EAAMtR,WACnB,GAAIsS,EAAKhT,SAAS,MAAO,CACrB,IAAMiT,EAAUD,EAAK9W,MAAM,MACrBgX,EAAW3D,OAAOjT,SAAS2W,EAAQ,IAEzC,OAAIA,EAAQ,GAAGnT,SAAS,MAAc,EAAIoT,EAAW,GACxC,EAAIA,CACrB,CACI,IAAMC,EAAgBH,EAAK9W,MAAM,KAAK,GAEtC,OAAIiX,EAAcrT,SAAS,MAAc,EAAIqT,EAAclqB,OAAS,GACvD,EAAIkqB,EAAclqB,MAEvC,CAhCgBmqB,CAA0BpB,IAvD0Ef,IAC7Fa,CACX,EAAG,IACFuB,KAAK,SAAAC,EAAAC,GAA4C,OAAhBA,EAAEC,GAAtBF,EAAEG,EAAiD,GAErE,OAAO7B,EAAW7nB,MAAM,EAAGsB,KAAK2lB,IAAI,EAAG3lB,KAAKmnB,KA9CL,GA8CUZ,EAAW3oB,UACvDoqB,KAAK,SAAAK,EAAAC,GAAsC,OAApBD,EAAA,GAAkCjC,MAAdkC,EAAA,IAA6BC,UAAU,EAC3F,CAQmBC,CAAQvC,EAAAA,QAAQN,IAAIE,EAAa9lB,MAAO+lB,EAAa/lB,QACxE,OAAI8lB,EAAaM,SAAS,IAAML,EAAaI,YAAY,GAGyF,OAHrFF,EAAOO,EAC/DvgB,IAAI,SAAAyiB,GAAgB,OAAAA,EAAA,EAAY,GAEhCC,KAAK,SAAC9qB,GAAe,OAAKioB,EAAa9lB,MAAMsmB,IAAIzoB,GAAQupB,OAAOwB,KAAK7C,EAAaO,IAAIzoB,GAAQupB,QAAQb,kBAAkBP,EAAoB,IAACC,EAC3I,IAAIC,EAAAA,QAAQ2C,KACPrC,EAAW,GAAG,EAC9B,CA9C8BsC,CAAYtD,EAASC,GARfC,EAQ+CvnB,KAAK4qB,MAAMC,UANhFrD,EAA0BO,EAAO,QAACc,IAAI,GAAId,EAAO,QAACe,MAAMf,EAAO,QAACN,IAAIJ,EAAQxlB,MAAOylB,EAAQzlB,QAAQknB,SACnGtB,EAAM3lB,KAAKmnB,KAAK1B,GANE,IAMaC,EAAwBrQ,WAAWzX,QAAU2nB,EAAQyD,QAAU,EAAI,IALrF,IAKmI,GAC/IhpB,KAAK2lB,IAAIA,EAAKJ,EAAQ0D,cAAgBzD,EAAQ0D,aAAe,EAAI,IAI0BvJ,GAC5FwJ,EAAsB5D,EAAQ8B,qBAAqB,GAAK,IAAIpB,EAAAA,QAAQ,GAAKV,EAAQc,IAAIT,GAAeqB,QAAQC,IAAItB,GAChHwD,EAAsB5D,EAAQc,kBAAkB,GAAK,IAAIL,EAAO,QAAC,GAAKT,EAAQa,IAAIT,GAAeuB,OAAOD,IAAItB,GAClH,OAAOnnB,MAAMJ,KAAK,CAAET,OAAQwrB,EAAWhD,MAAM+C,GAAY9C,IAAIT,GAAe+C,KAAK,GAAGJ,YAAc,SAACpjB,EAAG1H,GAAC,OAAKmoB,EAAcsB,IAAIzpB,GAAGkrB,KAAKQ,GAAYZ,UAAU,EAChK,CACJ,UCrCgBc,GAAqBC,EAAiCC,GAClE,GAAKA,EAAL,CAEI,IAAMC,EAAe,IAAIvE,KAAKsE,GAC9B,OAAQD,GACJ,KAAKhQ,8BAAsBmQ,UAE3B,KAAKnQ,QAAAA,sBAAsBoQ,KACvB,OACJ,KAAKpQ,QAAAA,sBAAsBqQ,MACvB,MAAO,CACHC,WAAYJ,EAAarE,UACzB0E,kBAAmB,SAE3B,KAAKvQ,8BAAsBwQ,QAE3B,KAAKxQ,QAAAA,sBAAsByQ,SACvB,OACJ,KAAKzQ,QAAqBA,sBAAC0Q,KACvB,MAAO,CACHJ,WAAYJ,EAAarE,UACzB0E,kBAAmB,QAGnC,CACJ,UAEgBI,GAAgBzJ,EAAYZ,GACxC,GAAIY,EAAK0J,aAAezH,GAAY0H,KAqB/B,CACD,IAAMC,EAAmB5J,EAAK6C,iBAAiBrd,IAAI,SAAAsd,GAAG,OAAIA,EAAItd,IAAI,SAAAtI,GAAK,OAAAA,EAAEkiB,EAAO,GAAE9Z,KAAK,KAAK,GACtFukB,EAAmBD,EAAOE,MAAM,SAAA9rB,UAAM0lB,OAAOgB,MAAMhB,OAAOqG,WAAW/rB,GAAG,GAC9E,OAAIgiB,EAAK0J,aAAezH,GAAY+H,SAAWH,ECrDwB,SAAC7J,EAAMZ,GAClF,MAAO,CACH5d,KAAM,WACNyoB,WAAYjK,EAAK6C,iBAAiBrd,IAAI,SAAAsd,GAAG,OAAIA,EAAItd,IAAI,SAAAtI,GAAK,OAAAA,EAAEkiB,EAAO,GAAE9Z,KAAK,KAAK,GAC/E4kB,SAAS,EACTC,gBC+E6CC,ED9EzC5qB,KAAK2lB,IAAG1nB,MAAR+B,KAAYwgB,EAAKQ,OAAOhb,IAAI,SAAAxI,GAAK,OAAAA,EAAEwjB,OAAOpjB,MAAM,IC8EeitB,ED7E/D7qB,KAAK2lB,IAAG1nB,MAAR+B,KAAYwgB,EAAK6C,iBAAiBrd,IAAI,SAAAsd,GAAG,OACrCA,EAAIlO,OAAO,SAAC0V,EAAaC,GACrB,OAAQD,EAAM,EAAI,EAAI,GAAKA,EAAMC,EAAInL,GAAQhiB,MACjD,EAAG,EAAE,eC8Eb,IAAM0rB,EAAWtpB,KAAKmnB,KAAKyD,EAAeC,EAHxB,GAGsD3sB,KAAK4qB,MAAMC,WAC7EiC,EAAchrB,KAAKmnB,KAAKyD,EAAetB,GAC7C,OAAO7qB,MAAMJ,KAAK,CAAET,OAAQotB,GAAe,SAAC7lB,EAAGpE,GAAK,OAAKA,EAAQuoB,CAAQ,EAC7E,IAPY,IAAqCsB,EAAsBC,CDxE3E,CD0CmBI,CAAkBzK,EAAMZ,GAGxB,CACH8K,QAASlK,EAAK0J,YAAczH,GAAY+H,QACxCxoB,KAAM,WACNyoB,WAAYL,EACZA,OAAQ,CACJc,aAAc,EAAE,KAIhC,CApCI,OAAQ1K,EAAK4D,sBAAsB+G,uBAC/B,KAAK7R,QAAAA,sBAAsBoQ,KACvB,OAAO0B,GAAc5K,EAAMZ,GAC/B,KAAKtG,QAAqBA,sBAACqQ,MACvB,OAAO0B,KACX,KAAK/R,QAAAA,sBAAsBwQ,QACvB,OAAOwB,GAAiB9K,EAAMZ,GAClC,KAAKtG,8BAAsByQ,SACvB,OAAOwB,GAAgB/K,EAAMZ,GACjC,KAAKtG,QAAqBA,sBAAC0Q,KACvB,MAAO,CACHhoB,KAAM,YAEd,QACI,MAAO,CACHA,KAAM,WACNyoB,WAAYjK,EAAK6C,iBAAiBrd,IAAI,SAAAsd,GAAO,OAAAA,EAAItd,IAAI,SAAAtI,GAAC,OAAIA,EAAEkiB,EAAO,GAAE9Z,KAAK,KAAK,IAqBnG,EFtEA,SAAY2c,GACRA,EAAAA,EAAA,KAAA,GAAA,OACAA,EAAAA,EAAA,QAAA,GAAA,UACAA,EAAAA,EAAA,QAAA,GAAA,SACH,CAJD,CAAYA,KAAAA,GAIX,CAAA,IEoED,IAAM2I,GAA8D,SAAC5K,EAAMZ,GACvE,MAAO,CACH5d,KAAM,SACN0oB,SAAS,EACTN,OAAQ,CACJoB,UAAW,WACP,OAAOhL,EAAK6C,iBAAiBa,OAAOhmB,KAAKkC,QAAQ4F,IAAI,SAAAtI,GAAK,OAAAA,EAAEkiB,EAAO,GAAE9Z,KAAK,KAC9E,GAGZ,EAEMulB,GAA+D,SAAC7K,EAAMZ,GACxE,MAAO,CACH5d,KAAM,WACN0oB,SAAS,EACTN,OAAQ,CACJoB,UAAW,WAEP,OAAOC,EAAU,QAACC,WAAoBxH,QAAAA,OAAOhmB,KAAKkC,OAEtD,GAGZ,EAEMkrB,GAAiE,SAAC9K,EAAMZ,GAAU+L,IAAAA,EE/F/Bf,EAAsBgB,EFgG3E,MAAO,CACH5pB,KAAM,SACN0oB,SAAS,EACTN,OAAQ,CACJoB,UAAW,WACP,OAAOtH,OAAOoD,UAAUppB,KAAKkC,OACvBogB,EAAK6C,iBAAiBa,OAAOhmB,KAAKkC,QAAQ4F,IAAI,SAAAtI,GAAC,OAAIA,EAAEkiB,EAAO,GAAE9Z,KAAK,MACnE,EACV,GAEJ6kB,gBE1GiDC,EF2G7C5qB,KAAK2lB,IAAG1nB,MAAR+B,KAAYwgB,EAAKQ,OAAOhb,IAAI,SAAAxI,UAAKA,EAAEwjB,OAAOpjB,MAAM,IE3GmBguB,EF4GnE,IAAI3G,KAAuD,OAAnD0G,EAACnL,EAAK4D,sBAAsBwH,yBAAuBD,EAAI,IE5FhE,WACH,IAAMrC,EAfO,SAAU1kB,GACvB,OAAIA,GAAK,EAAU5E,KAAKmnB,KAAKviB,GACpBA,GAAK,IACLA,GAAK,GAAW,EAAI5E,KAAKmnB,KAAKviB,EAAI,GAClCA,GAAK,MAAgB5E,KAAKmnB,KAAKviB,EAAI,IAChC,GAAK5E,KAAKmnB,KAAKviB,EAAI,GACnC,CASqBinB,CAhBE,GAgBOjB,EAAgC1sB,KAAK4qB,MAAMC,WAC/D+C,EARQ,SAAUxC,EAAkBE,GAC1C,IAAMuC,GAA6D,EAA7BvC,EAAawC,cAAoBhsB,KAAKinB,MAAMuC,EAAayC,WAAa,IAAM3C,EAClH,OAAIyC,EAAuB,EAAUzC,EAAWyC,EACpC,CAChB,CAIkBG,CAAU5C,EAAUsC,GAC5BZ,EAAchrB,KAAKmnB,MAAMyD,EAAekB,GAASxC,GACvD,OAAO7qB,MAAMJ,KAAK,CAAET,OAAQotB,GAAe,SAAC7lB,EAAGpE,GAAU,OAAA+qB,EAAQ/qB,EAAQuoB,CAAQ,EACrF,GFyFJ,EAEMiC,GAAgE,SAAC/K,EAAMZ,GAAU,IAAAuM,EExF/BvB,EAAsBgB,EFyF1E,MAAO,CACH5pB,KAAM,SACN0oB,SAAS,EACTN,OAAQ,CACJoB,UAAW,WACP,OAAOtH,OAAOoD,UAAUppB,KAAKkC,OACvBogB,EAAK6C,iBAAiBa,OAAOhmB,KAAKkC,QAAQ4F,IAAI,SAAAtI,UAAKA,EAAEkiB,EAAO,GAAE9Z,KAAK,MACnE,EACV,GAEJ6kB,gBEnGgDC,EFoG5C5qB,KAAK2lB,IAAG1nB,MAAR+B,KAAYwgB,EAAKQ,OAAOhb,IAAI,SAAAxI,GAAK,OAAAA,EAAEwjB,OAAOpjB,MAAM,IEpGkBguB,EFqGlE,IAAI3G,YAAIkH,EAAC3L,EAAK4D,sBAAsBwH,yBAAuBO,EAAI,IEtFhE,WACH,IAAM7C,EAdO,SAAU1kB,GACvB,OAAIA,GAAK,EAAU5E,KAAKmnB,KAAKviB,GACpBA,GAAK,GAAW,EAAI5E,KAAKmnB,KAAKviB,EAAI,GAClCA,GAAK,GAAW,GAAK5E,KAAKmnB,KAAKviB,EAAI,IAC9B,GAAG5E,KAAKmnB,KAAKviB,EAAI,GACnC,CASqBinB,CAfE,GAeOjB,EAAgC1sB,KAAK4qB,MAAMC,WAC/D+C,EARQ,SAAUxC,EAAkBE,GAC1C,IAAMuC,GAA6D,EAA7BvC,EAAawC,cAAoBhsB,KAAKinB,MAAMuC,EAAayC,WAAa,IAAM3C,EAClH,OAAIyC,EAAuB,EAAUzC,EAAWyC,EACnC,CACjB,CAIkBG,CAAU5C,EAAUsC,GAC5BZ,EAAchrB,KAAKmnB,MAAMyD,EAAekB,GAASxC,GACvD,OAAO7qB,MAAMJ,KAAK,CAAET,OAAQotB,GAAe,SAAC7lB,EAAGpE,UAAU+qB,EAAQ/qB,EAAQuoB,CAAQ,EACrF,GFmFJ,EGhIa8C,GAA2B,CAAC,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,WCJ/HC,GAAsB,CAE/B,4BAGA,8BAGA,0EAGA,sCAGA,kDAGA,iDAGA,gDAGA,kDAGA,8BAGA,0BAGA,eAGA,eAGA,4BAGA,4BAGA,0BCxCE,SAAUC,GAAmBvrB,GAC/B,MAAO,CACHwrB,MAAO,CACHjsB,QAAS,CACLksB,gBAAiBJ,GAAcrrB,EAAQqrB,GAAcxuB,QACrD6uB,KAAM,CACFC,OAAQ,QACRnnB,EAAG8mB,GAAoBtrB,EAAQsrB,GAAoBzuB,QACnDqL,YAAa,GAEjB0jB,MAAO,GACPC,OAAQ,KAIxB,KCfaC,GAAuB,SAACrM,EAAYZ,GAC7C,OAAAY,EAAKQ,OAAOhb,IAAI,SAACxI,EAAGsvB,GAAMhO,OAAAA,KACnBiO,GAAoBvvB,EAAGgjB,EAAMZ,GAAO,CACvC7e,MAAO+rB,EACP9qB,KAAM,QAAM,EACb,EAEMgrB,GAAsB,SAACxM,EAAYZ,EAAgBqN,EAA+BC,GAC3F,YAD4DD,IAAAA,IAAAA,GAAwB,YAAOC,IAAAA,GAAuB,GAClH1M,EAAKQ,OAAOhb,IAAI,SAACxI,EAAGsvB,UAAMhO,EAAA,CAAA,EACnBiO,GAAoBvvB,EAAGgjB,EAAMZ,GAC5BsN,GAAeZ,GAAmBQ,GACtC/rB,CAAAA,MAAOksB,EAAezM,EAAKQ,OAAOpjB,OAAS,EAAIkvB,EAASA,EACxD9qB,KAAM,OACR,EAAC,EAEMmrB,GAAyB,SAAC3M,EAAYZ,EAAgBqN,EAA+BC,GAC9F,YAD+D,IAAAD,IAAAA,GAAwB,YAAOC,IAAAA,GAAuB,GACrH1M,EAAKQ,OAAOhb,IAAI,SAACxI,EAAGsvB,UAAMhO,EAAA,GACnBiO,GAAoBvvB,EAAGgjB,EAAMZ,GAC5BsN,GAAeZ,GAAmBQ,GACtC/rB,CAAAA,MAAOksB,EAAezM,EAAKQ,OAAOpjB,OAAS,EAAIkvB,EAASA,EACxD9qB,KAAM,UACR,EAAC,EAEP,SAAS+qB,GAAoBK,EAAkB5M,EAAYZ,GACvD,MAAO,CACHyN,WAAW,EACX/gB,KAAM8gB,EAAInK,aAAajd,IAAI,SAAAtI,GAAK,OAAAA,EAAEkiB,EAAO,GAAE9Z,KAAK,MAChDwnB,KAAMF,EAAIpM,OAAOhb,IAAI,SAACunB,EAAWC,GAAY,MAAA,CACzC3oB,EAAG0oB,EAAUntB,MACbkM,KAAMkU,EAAK6C,iBAAiBmK,GAAQxnB,IAAI,SAAAtI,GAAC,OAAIA,EAAEkiB,EAAO,GAAE9Z,KAAK,MAC7Dsb,OAAQ,CAAEqM,YAAaF,EAAUE,YAAa9N,UAAW4N,EAAU5N,WACtE,GAET,CC5Ba,IAAA+N,GAAqB,SAAClN,EAAYZ,EAAgBxO,GAAoC,IAAAuc,EACzFC,SAAUD,EAAmB,MAAPvc,OAAO,EAAPA,EAASwc,aAAUD,EAEzCE,EAAarP,GAAa1E,OAAO8F,GACnCkO,EAAiBD,EAAerN,KAAAA,EAAKuN,QAAQ/nB,IAAI,SAAAxI,GAAK,OAAAA,EAAEoiB,EAAO,GAAE9Z,KAAK,MACpEkoB,SAAiB5c,SAAAA,EAAS6c,kBAAmBzN,EAAK1C,YAExD,GAAIkQ,EAAgB,CAChB,IAAME,EAAkBnJ,GAA4BvE,EAAK1C,YAAa8B,GAClEsO,IACAJ,EAAiBI,EAAsBL,OAAAA,EAAerN,KAAAA,EAAKuN,QAAQ/nB,IAAI,SAAAxI,GAAC,OAAIA,EAAEoiB,EAAO,GAAE9Z,KAAK,MAEpG,CAEA,MAAO,CACHgjB,MAAO,CACHqF,cAAeH,EAAiB,GAAK,IAEzCI,cAAe,CACX7M,MAAO,CACH8M,qBAAsB/M,GAAyCd,EAAMZ,KAG7E0O,MAAO,CAAE3G,KAAMiG,EAAapN,EAAK+N,OAAO3O,QAAU3gB,GAClDuvB,SAAU,CAAE7G,KAAMnH,EAAKiO,gBAAgBzoB,IAAI,SAAA2T,UAAMA,EAAGiG,EAAO,GAAE9Z,KAAK,QAClEqV,QAAS,CAAEuT,SAAS,GACpBC,QAAS,CAAEhH,KAAMmG,GACjBc,QAAS,CACLpD,UAAWjL,GAA4BC,EAAMZ,IAEjDiP,MAAO,CAACC,IAEhB,EAEaA,GAAmC,CAC5CC,UAAW,CACP,CACI3uB,MAAO,EACPmsB,MAAO,OACPI,MAAO,KAKNqC,GAA0B,SAACxO,EAAYZ,GAUhD,MATyB,CACrB8O,QAASlO,EAAK4D,sBAAsB6K,eACpClX,MAAO,CACHwU,MAAO,OACP2C,SAAU,OACVnnB,WAAY,OAEhByjB,UAAWnJ,GAA8BzC,GAGjD,EAEauP,GAA4C,SAAC3O,EAAYZ,GAClE,ILfgDoB,EAE5CoO,EACAzJ,EACA0J,EKyBJ,OAdkBvQ,KACXgQ,GAAkB,CACrBnE,gBLjB4C3J,EKiBQR,EAAKQ,OAAOhb,IAAI,SAAAxI,GAAC,OAAIA,EAAEwjB,MAAM,GLfjFoO,EAAqB,KACrBzJ,EAAqB,KACrB0J,EAAsB,EAE1BrO,EAAO/W,QAAQ,SAACqlB,GACZA,EAAYrlB,QAAQ,SAACslB,GACbA,EAAKnvB,SAAWgvB,GAAOG,EAAKnvB,MAAQgvB,KAAMA,EAAMG,EAAKnvB,OACrDmvB,EAAKnvB,SAAWulB,GAAO4J,EAAKnvB,MAAQulB,KAAMA,EAAM4J,EAAKnvB,OACrDmvB,EAAK5P,UAAY0P,IAAaA,EAAcE,EAAK5P,UACzD,EACJ,GAGKyP,GAAQzJ,EACNL,GAA8B,IAAIW,EAAO,QAACmJ,GAAM,IAAInJ,EAAO,QAACN,GAAM,IAAIM,UAAQjmB,KAAK+mB,IAAI,IAAKsI,KAD1E,WAAA,MAAM,EAAE,GKG7Bf,MAAO,CACH3G,KAAM/D,GAAkBpD,EAAKkE,MAAO9E,GACpC7H,MAAO,CACHyX,UAAW,UAEfC,MAAO,SACPD,UAAW,SACX3qB,EAAG,GACHD,EAAG,IAIf,EAEa8qB,GAAkC,SAAClP,EAAYZ,EAAgBxO,GACxE,OAAA0N,EACO4O,CAAAA,EAAAA,GAAmBlN,EAAMZ,EAAQxO,GAAQ,CAC5C0X,MAAO,CAAE9mB,KAAM,OACf2tB,MAAO,CACHlF,WAAYjK,EAAK6C,iBAAiBrd,IAAI,SAAAsd,GAAO,OAAAA,EAAItd,IAAI,SAAAtI,GAAK,OAAAA,EAAEkiB,EAAO,GAAE9Z,KAAK,KAAK,GAC/EskB,OAAQ,CACJoB,UAAWvJ,GAA+BzB,EAAK6C,iBAAiBzlB,QAChEma,MAAO,CACH4U,MAAO,QAK3B,EAEaiD,GAAyC,SAACpP,EAAYZ,EAAgBxO,GAC/E,OAAA0N,EAAA,GACO4Q,GAAgClP,EAAMZ,EAAQxO,GACjD4P,CAAAA,OAAQgM,GAAoBxM,EAAMZ,GAAQ,EAAa,MAAPxO,OAAO,EAAPA,EAASye,mBACzDC,OAAMhR,KACCiR,GAAwB,CAC3BrB,SAAS,EACTsB,OAAQ,aACRC,UAAU,EACVC,OAAQ,MAGpB,EAEaC,GAAgC,SAAC3P,EAAYZ,EAAgBxO,GAMtE,OALY0N,EAAA,CAAA,EACL4O,GAAmBlN,EAAMZ,EAAQxO,IACpC0X,MAAO,CAAE9mB,KAAM,UACf2tB,MAAO1F,GAAgBzJ,EAAMZ,IAGrC,EAEawQ,GAAqC,SAAC5P,EAAYZ,EAAgBxO,GAC3E,OAAA0N,EAAA,CAAA,EACOqR,GAA8B3P,EAAMZ,EAAQxO,IAC/C4P,OAAQmM,GAAuB3M,EAAMZ,GAAQ,EAAc,MAAPxO,OAAO,EAAPA,EAASye,mBAC7DhB,MAAO,CACHwB,QAAS,EACTC,QAAS,EACThC,MAAO,CACH3G,KAAM/D,GAAkBpD,EAAKkE,MAAO9E,MAIpD,EAEa2Q,GAAuC,SAAC/P,EAAYZ,EAAgBxO,GAC7E,OAAA0N,KACOqR,GAA8B3P,EAAMZ,EAAQxO,GAAQ,CACvD4P,OAAQmM,GAAuB3M,EAAMZ,GAAQ,EAAMxO,MAAAA,OAAAA,EAAAA,EAASye,mBAC5DC,OAAMhR,EAAA,CAAA,EACCiR,GAAwB,CAC3BrB,SAAS,EACTsB,OAAQ,cAGpB,EAEaD,GAA0C,CACnDS,gBAAiB,CACbjE,MAAO,UChFTkE,GAAqB,SAACzP,EAAuBpB,GAAc,MAAA,SAC3DoB,EAAO,GAAGiC,aAAajd,IAAI,SAAAxI,GAAC,OAAIA,EAAEoiB,EAAO,GAAE9Z,KAAK,MAChDkb,yBAAAA,EAAO,GAAGiC,aAAajd,IAAI,SAAAxI,GAAK,OAAAA,EAAEoiB,EAAO,GAAE9Z,KAAK,MACjD,mBAAA,ECzDQ4qB,GAAmC,SAAC9Q,EAAgBY,EAAYpP,GAEzE,OAAQoP,EAAK4D,sBAAsBC,mBAC/B,KAAKjL,QAAkBA,mBAACuX,UACpB,OCboB,SAACnQ,EAAYZ,EAAgBxO,GAAoCua,IAAAA,EACvFiF,EAA0C,OAA3BjF,EAACnL,EAAK4D,wBAALuH,EAA4BiF,kBAAmB3xB,EAAJ,EAC3D4xB,EAAwB,MAAPzf,GAAAA,EAASye,kBAAoB,CAAEiB,iBAAkB,GAAM,CAAEpC,SAAS,GACzF,OAAA5P,EACO4O,CAAAA,EAAAA,GAAmBlN,EAAMZ,EAAQxO,GAAQ,CAC5C0X,MAAO,CAAE9mB,KAAM,QACf4sB,QAAS,CACLpD,UAAWjI,GAAqC/C,EAAMZ,IAE1D+P,MAAK7Q,EAAA,CAAA,EACEmL,GAAgBzJ,EAAMZ,GACzBmR,CAAAA,cAAe,kBACfC,cAAe,KAEnBnC,MAAK/P,EAAA,CAAA,EACEgQ,GAAkB,CACrBuB,QAASO,EACTN,QAASM,EACTtC,MAAO,CAAE3G,KAAM/D,GAAkBpD,EAAKkE,MAAO9E,MAEjDqR,YAAa,CACTxvB,KAAM,CACFyvB,WAAUpS,EAAA,CAAA,EACHkQ,GAAwBxO,EAAMZ,IAErCuR,OAAQN,GAEZ7P,OAAQqI,GAAqB7I,EAAK4D,sBAAsB+G,sBAAuB3K,EAAK4D,sBAAsBwH,0BAE9GkE,OAAMhR,EACCiR,CAAAA,EAAAA,GACHrB,CAAAA,QAASlO,EAAKQ,OAAOpjB,OAAS,EAC9BwzB,eAAgB5O,OAEpBxB,OAAQ6L,GAAqBrM,EAAMZ,GACnCyR,UAAW,CACP3C,SAAS,IAGrB,CD1BmB4C,CAAiB9Q,EAAMZ,EAAQxO,GAC1C,KAAKgI,QAAkBA,mBAACmY,iBACpB,OEhBgC,SAAC/Q,EAAYZ,EAAgBxO,GACrE,OAAA0N,EACOsR,CAAAA,EAAAA,GAAmC5P,EAAMZ,EAAQxO,GAAQ,CAC5Dyd,MAAK/P,EAAA,CAAA,EACEgQ,GAAkB,CACrBuB,QAAS,EACTC,QAAS,EACThC,MAAO,CAAE3G,KAAM/D,GAAkBpD,EAAKkE,MAAO9E,MAEjDqR,YAAa,CACTjQ,OAAMlC,EAAA,CAAA,EACCuK,GAAqB7I,EAAK4D,sBAAsB+G,sBAAuB3K,EAAK4D,sBAAsBwH,yBAAwB,CAC7HsF,WAAUpS,EAAA,CAAA,EACHkQ,GAAwBxO,EAAMZ,OAI7CyR,UAAW,CACP3C,SAAS,IAGrB,CFLmB8C,CAA6BhR,EAAMZ,EAAQxO,GACtD,KAAKgI,2BAAmBqY,mBACpB,OGnBkC,SAACjR,EAAYZ,EAAgBxO,GACvE,OAAA0N,EACO4Q,CAAAA,EAAAA,GAAgClP,EAAMZ,EAAQxO,GACjD4P,CAAAA,OAAQgM,GAAoBxM,EAAMZ,GAAQ,EAAc,MAAPxO,OAAO,EAAPA,EAASye,mBAC1D/G,MAAO,CAAE9mB,KAAM,MAAOmsB,cAAe,IACrCU,MAAK/P,EACEqQ,CAAAA,EAAAA,GAA0C3O,EAAMZ,GAAO,CAC1DyQ,QAAS,EACT1K,IAAK,MAETgJ,QAAO7P,EACA4Q,CAAAA,EAAAA,GAAgClP,EAAMZ,EAAQxO,GAASud,QAC1D9pB,CAAAA,EAAG,KAEPirB,OAAQ,CAAEpB,SAAS,GACnBuC,YAAa,CACTjQ,OAAQ,CACJkQ,WAAUpS,EAAA,CAAA,EACHkQ,GAAwBxO,EAAMZ,OAKrD,CHJmB8R,CAA+BlR,EAAMZ,EAAQxO,GACxD,KAAKgI,QAAAA,mBAAmBuY,sBACpB,OIpBgC,SAACnR,EAAYZ,EAAgBxO,GACrE,OAAA0N,KACOsR,GAAmC5P,EAAMZ,EAAQxO,GACpD6f,CAAAA,YAAa,CACTjQ,OAAMlC,KACCuK,GAAqB7I,EAAK4D,sBAAsB+G,sBAAuB3K,EAAK4D,sBAAsBwH,yBAAwB,CAC7HsF,WAAUpS,EACHkQ,CAAAA,EAAAA,GAAwBxO,EAAMZ,OAI7CkQ,OAAMhR,EAAA,CAAA,EACCiR,GAAwB,CAC3BrB,SAAS,EACT0C,eAAgB5O,QAG5B,CJGmBoP,CAA6BpR,EAAMZ,EAAQxO,GACtD,KAAKgI,QAAkBA,mBAACyY,wBACpB,OKvBkC,SAACrR,EAAYZ,EAAgBxO,GACvE,OAAA0N,EACO4Q,CAAAA,EAAAA,GAAgClP,EAAMZ,EAAQxO,GAAQ,CACzD4P,OAAQgM,GAAoBxM,EAAMZ,GAAQ,EAAc,MAAPxO,OAAO,EAAPA,EAASye,mBAC1DhB,MAAK/P,EAAA,CAAA,EACEqQ,GAA0C3O,EAAMZ,GACnDyQ,CAAAA,QAAS,EACTC,QAAS,IAEbR,OAAMhR,EAAA,CAAA,EACCiR,GAAwB,CAC3BrB,SAAS,EACTsB,OAAQ,WACRE,OAAQ,KAEZe,YAAa,CACTjQ,OAAQ,CACJkQ,WAAUpS,EAAA,CAAA,EACHkQ,GAAwBxO,EAAMZ,OAKrD,CLAmBkS,CAA+BtR,EAAMZ,EAAQxO,GACxD,KAAKgI,QAAAA,mBAAmB2Y,wBACpB,OMxBkC,SAACvR,EAAYZ,EAAgBxO,GACvE,OAAA0N,EACOyR,CAAAA,EAAAA,GAAqC/P,EAAMZ,EAAQxO,GACtDyd,CAAAA,MAAO,CACHwB,QAAS,EACTC,QAAS,EACThC,MAAO,CACH3G,KAAM/D,GAAkBpD,EAAKkE,MAAO9E,KAG5CqR,YAAa,CACTvvB,OAAQ,CACJswB,SAAU,UAEdhR,OAAMlC,EACCuK,CAAAA,EAAAA,GAAqB7I,EAAK4D,sBAAsB+G,sBAAuB3K,EAAK4D,sBAAsBwH,yBACrGsF,CAAAA,WAAUpS,EAAA,CAAA,EACHkQ,GAAwBxO,EAAMZ,QAKrD,CNEmBqS,CAA+BzR,EAAMZ,EAAQxO,GACxD,KAAKgI,QAAkBA,mBAAC8Y,0BACpB,OO1BoC,SAAC1R,EAAYZ,EAAgBxO,GACzE,OAAA0N,EACO8Q,CAAAA,EAAAA,GAAuCpP,EAAMZ,EAAQxO,GACxDyd,CAAAA,MAAO,CACHwB,QAAS,EACTC,QAAS,EACT3F,gBd0D2C3J,Ec1DYR,EAAKQ,OAAOhb,IAAI,SAAAxI,GAAC,OAAIA,EAAEwjB,MAAM,Gd4DxFoO,EAAqB,KACrBzJ,EAAqB,KACrB0J,EAAsB,EAE1BrO,EAAO,GAAG/W,QAAQ,SAACslB,EAAMxuB,GACrB,IAAMoxB,EAAMnR,EAAO5L,OAAO,SAAC0V,EAAKsH,GAAIC,IAAAA,EAAK,OAAAvH,GAAwB,OAArBuH,EAAID,EAAKrxB,GAAOX,OAAKiyB,EAAI,EAAE,EAAE,GACrEF,KAAS/C,GAAO+C,EAAM/C,KAAMA,EAAM+C,GAClCA,KAASxM,GAAOwM,EAAMxM,KAAMA,EAAMwM,GAClC5C,EAAK5P,UAAY0P,IAAaA,EAAcE,EAAK5P,UACzD,GAGKyP,GAAQzJ,EACNL,GAA8B,IAAIW,UAAQmJ,GAAM,IAAInJ,UAAQN,GAAM,IAAIM,UAAQjmB,KAAK+mB,IAAI,IAAKsI,KAD1E,WAAA,MAAM,EAAE,GcvEzBf,MAAO,CACH3G,KAAM/D,GAAkBpD,EAAKkE,MAAO9E,GACpC7H,MAAO,CACHyX,UAAW,UAEfC,MAAO,SACPD,UAAW,SACX3qB,EAAG,GACHD,EAAG,IAGXqsB,YAAa,CACTqB,IAAK,CACDN,SAAU,UAEdhR,OAAQ,CACJkQ,WAAUpS,KACHkQ,GAAwBxO,EAAMZ,YdwCEoB,EAE/CoO,EACAzJ,EACA0J,CcvCR,CPHmBkD,CAAiC/R,EAAMZ,EAAQxO,GAC1D,KAAKgI,QAAkBA,mBAACoL,wBACpB,OQ7BkC,SAAChE,EAAYZ,EAAgBxO,GACvE,OAAA0N,KACOyR,GAAqC/P,EAAMZ,EAAQxO,GAAQ,CAC9Dyd,MAAO,CACHO,IAAK,EACLd,MAAO,CACH3G,KAAM,MAGdsJ,YAAa,CACTvvB,OAAQ,CACJswB,SAAU,WAEdhR,OAAMlC,EACCuK,CAAAA,EAAAA,GAAqB7I,EAAK4D,sBAAsB+G,sBAAuB3K,EAAK4D,sBAAsBwH,yBACrGsF,CAAAA,WAAUpS,KACHkQ,GAAwBxO,EAAMZ,QAKrD,CRQmB4S,CAA+BhS,EAAMZ,EAAQxO,GACxD,KAAKgI,QAAkBA,mBAACmL,0BACpB,OS/BoC,SAAC/D,EAAYZ,EAAgBxO,GACzE,OAAA0N,KACO8Q,GAAuCpP,EAAMZ,EAAQxO,GACxDyd,CAAAA,MAAO,CACHO,IAAK,EACLd,MAAO,CACH3G,KAAM,IACN5P,MAAO,CACHyX,UAAW,UAEfC,MAAO,SACPD,UAAW,SACX3qB,EAAG,GACHD,EAAG,IAGXqsB,YAAa,CACTqB,IAAK,CACDN,SAAU,WAEdhR,OAAQ,CACJkQ,WAAUpS,EACHkQ,CAAAA,EAAAA,GAAwBxO,EAAMZ,OAKrD,CTImB6S,CAAiCjS,EAAMZ,EAAQxO,GAC1D,KAAKgI,QAAAA,mBAAmBsZ,SACpB,OUhCmB,SAAClS,EAAYZ,EAAgBxO,GAAoC,IAAAua,EtB0EjDgH,EsBzE3C,OAAA7T,EAAA,CAAA,EACO4O,GAAmBlN,EAAMZ,EAAQxO,GAAQ,CAC5C0X,MAAO,CAAE9mB,KAAM,OACfivB,YAAa,CACT2B,IAAK,CACD1B,WAAY,CACR1F,WtBmE2BmH,EsBnEwDhH,OAA1CA,EAACnL,EAAK4D,sBAAsB6K,iBAActD,EtBoE5F,WAAAkH,IAAAA,EACGzyB,EAAgBuyB,EAAQ,KAAQ3yB,KAAK8yB,MAAqB,OAAhBD,EAAC30B,KAAKumB,YAAUoO,EAAI,GAAE,KAAO,GAC7E,OAAOzQ,GAAmBlkB,KAAKoO,KAAM,IAAMlM,CAC/C,MsBnEI4gB,OAAQR,EAAKQ,OAAOhb,IAAI,SAAAxI,GAAC,MAAK,CAC1B6vB,WAAW,EACXrrB,KAAM,MACNsK,KAAM9O,EAAEylB,aAAajd,IAAI,SAAAtI,GAAC,OAAIA,EAAEkiB,EAAO,GAAE9Z,KAAK,MAC9CwnB,KAAM9vB,EAAEwjB,OAAOhb,IAAI,SAACsnB,EAAMvsB,GAAK+d,OAAAA,EAC3Bja,CAAAA,EAAGyoB,EAAKltB,MACRkM,KAAMkU,EAAK6C,iBAAiBtiB,GAAOiF,IAAI,SAAAtI,GAAC,OAAIA,EAAEkiB,EAAO,GAAE9Z,KAAK,MAC5DiU,KAAM6J,GAAkBpD,EAAKkE,MAAO9E,KACzB,MAAPxO,OAAO,EAAPA,EAASye,oBAAqBvD,GAAmBvrB,GAAM,CAC3DqgB,OAAQ,CAAEqM,YAAaH,EAAKG,YAAa9N,UAAW2N,EAAK3N,YAAW,GAE3E,IAET,CVQmBoT,CAAgBvS,EAAMZ,EAAQxO,GACzC,KAAKgI,QAAkBA,mBAACkL,aACpB,OWlCuB,SAAC9D,EAAYZ,EAAgBxO,GAC5D,IAAMqZ,EAAajK,EAAK6C,iBAAiBrd,IAAI,SAAAsd,GAAG,OAAIA,EAAItd,IAAI,SAAAtI,GAAK,OAAAA,EAAEkiB,EAAO,GAAE9Z,KAAK,KAAK,GAChFktB,EAAWhzB,KAAK2lB,IAAG1nB,MAAR+B,KAAYwgB,EAAKQ,OAAOhb,IAAI,SAAAxI,UAAKwC,KAAK2lB,IAAG1nB,MAAR+B,KAAYxC,EAAEwjB,OAAOhb,IAAI,SAAAitB,GAAQC,IAAAA,EAAAA,OAAkB,OAAlBA,EAAID,EAAS7yB,OAAK8yB,EAAI,CAAC,GAAE,IAC5G,OAAApU,EACO4O,GAAAA,GAAmBlN,EAAMZ,EAAQxO,GACpC0X,CAAAA,MAAO,CAAE9mB,KAAM,OACf2tB,MAAO,CACHlF,WAAYA,EACZwF,UAAU,EACV7F,OAAQ,CACJrS,MAAO,CACH4U,MAAO,OAInBkC,MAAK/P,EACEgQ,CAAAA,EAAAA,GACHM,CAAAA,KAAMpvB,KAAKD,IAAIizB,GACfrN,IAAK3lB,KAAKD,IAAIizB,GACd1E,MAAO,CACH3G,KAAM/D,GAAkBpD,EAAKkE,MAAO9E,GACpC7H,MAAO,CACHyX,UAAW,UAEfC,MAAO,SACPD,UAAW,SACX3qB,EAAG,GACHD,EAAG,GAEPwlB,OAAQ,CACJoB,UAAW,WACP,OAAOxrB,KAAKD,IAAI7B,KAAKkC,OAAiB2hB,eAAenC,EACzD,KAGRkQ,OAAMhR,EAAA,CAAA,EACCiR,GACHrB,CAAAA,SAAS,EACTwB,OAAQ,KAEZlP,OAAQR,EAAKQ,OAAOhb,IAAI,SAACxI,EAAGC,GACxB,OAAAqhB,EACIuO,CAAAA,WAAW,EACXrrB,KAAM,MACNsK,KAAM9O,EAAEylB,aAAajd,IAAI,SAAAtI,GAAK,OAAAA,EAAEkiB,EAAO,GAAE9Z,KAAK,QACnC,MAAPsL,OAAO,EAAPA,EAASye,oBAAqBvD,GAAmB7uB,GACrD6vB,CAAAA,KAAM9vB,EAAEwjB,OAAOhb,IAAI,SAACitB,EAAUlyB,GAAK,MAAM,CACrC8D,EAAS,IAANpH,GAAWw1B,EAAS7yB,OAAS6yB,EAAS7yB,MAAQ6yB,EAAS7yB,MAC1DkM,KAAMkU,EAAK6C,iBAAiBtiB,GAAOiF,IAAI,SAAAtI,GAAK,OAAAA,EAAEkiB,EAAO,GAAE9Z,KAAK,MAC5Dsb,OAAQ,CAAEqM,YAAawF,EAASxF,YAAa9N,UAAWsT,EAAStT,WACpE,IAET,GACAsR,YAAa,CACTjQ,OAAQ,CACJgR,SAAU,SACVd,WAAUpS,EACHkQ,CAAAA,EAAAA,GAAwBxO,EAAMZ,MAI7CyR,UAAW,CACP3C,SAAS,IAGrB,CX/BmByE,CAAoB3S,EAAMZ,EAAQxO,GAC7C,KAAKgI,2BAAmBga,YACpB,ODrCsB,SAAC5S,EAAYZ,EAAgBxO,GAAoCua,IAAAA,EAEzFiF,EAAgBjF,OAADA,EAACnL,EAAK4D,wBAALuH,EAA4BiF,kBAAmB3xB,EAAJ,EACjE,OAAA6f,EACO4O,CAAAA,EAAAA,GAAmBlN,EAAMZ,EAAQxO,GAAQ,CAC5C0X,MAAO,CAAE9mB,KAAM,WACf2tB,MAAO,CACHU,QAAS,EACTC,QAAS,EACThC,MAAO,CACH3G,KAAMnH,EAAKQ,OATP,GASuBiC,aAAajd,IAAI,SAAAxI,GAAK,OAAAA,EAAEoiB,EAAO,GAAE9Z,KAAK,OAErEirB,cAAe,kBACfC,cAAe,GACfjC,UAAW,CACP,CACI3uB,MAAO,EACPmsB,MAAO,OACPI,MAAO,KAInBkC,MAAK/P,EAAA,CAAA,EACEgQ,GAAkB,CACrBuB,QAASO,EACTN,QAASM,EACTtC,MAAO,CACH3G,KAAMnH,EAAKQ,OA1BY,GA0BIiC,aAAajd,IAAI,SAAAxI,UAAKA,EAAEoiB,EAAO,GAAE9Z,KAAK,SAGzEkb,OAAQ,CACJ,CACIqM,WAAW,EACXrrB,KAAM,UACNsrB,KAAM9M,EAAKQ,OAAO,GAAGA,OAAOhb,IAAI,SAACb,EAAGpE,GAAKsyB,IAAAA,EAAAC,EAAM,MAAA,CAC3C1uB,EAA2CyuB,OAA1CA,EAAE7S,EAAKQ,OAlCR,GAkCwBA,OAAOjgB,GAAOX,OAAKizB,OAAIp0B,EAC/C4F,EAA2C,OAA1CyuB,EAAE9S,EAAKQ,OAnCW,GAmCKA,OAAOjgB,GAAOX,OAAKkzB,OAAIr0B,EAC/CkyB,OAAQ,CACJoC,OAAQ,UAEZnS,OAAQ,CACJqM,YAAajN,EAAKQ,OAxCtB,GAwCsCA,OAAOjgB,GAAO0sB,aAAejN,EAAKQ,OAxCrD,GAwCqEA,OAAOjgB,GAAO0sB,YAClG9N,UAAW3f,KAAK2lB,IAAInF,EAAKQ,OAzC7B,GAyC6CA,OAAOjgB,GAAO4e,UAAWa,EAAKQ,OAzCxD,GAyCwEA,OAAOjgB,GAAO4e,YAE5G,KAGTiP,QAAS,CACL4E,aAAc,GACdC,YAAahD,GAAmBjQ,EAAKQ,OAAQpB,GAC7C4L,UAAW5I,GAAuCpC,EAAMZ,IAE5DqR,YAAa,CACTyC,QAAS,CACLvC,OAAQ,CACJwC,OAAQ,GAAKnT,EAAK4D,sBAAsBwP,WAAqD,IAAxCpT,EAAK4D,sBAAsBwP,WAAoB,MAIhHvC,UAAW,CACP3C,SAAS,IAGrB,CC1BmBmF,CAAmBrT,EAAMZ,EAAQxO,GAC5C,QACI,MAAU,IAAAjH,MAAM,0BAE5B,EY1Ca2pB,GAAkC,SAACC,EAAmCC,EAA2BC,EAA6DC,GACvK,GAAuC,IAAnCH,EAAwBn2B,OACxB,MAAO,CAAE,EAGb,IAAIu2B,EAAmCJ,EACnCK,EAA+D,CAAE,EAErE,GAAIF,EAAoB,CACpB,IAAAG,EAAuCC,GAAcH,EAAkCD,GAGvF,GAFAC,EADkCE,EAAZE,aAEtBH,EAA+BtV,EAAOsV,CAAAA,EAAAA,EAFlBC,EAAZG,cAGwC,IAA5CL,EAAiCv2B,OACjC,OAAOw2B,CAEf,CAEA,GAAIH,EAAgC,CAChC,IAAAQ,EAAuCC,GAAaP,EAAkCF,GAGtF,GAFAE,EADkCM,EAAZF,aAEtBH,EAA+BtV,EAAOsV,CAAAA,EAAAA,EAFlBK,EAAZD,cAGwC,IAA5CL,EAAiCv2B,OACjC,OAAOw2B,CAEf,CAaA,OAXAD,EAAiClqB,QAAQ,SAAC0qB,GACtC,IAAMC,EAAgBZ,EAASzU,UAAU,SAAAsV,GAAkB,OAAAA,EAAeC,OAASH,CAAY,GAC3FC,GAAiB,IAEbR,EAAgCO,GADhCX,EAASY,GAAe5yB,OAASqX,QAAAA,cAAc8Q,KACC,CAAC6J,EAASY,GAAeG,OAAOf,EAASY,GAAeG,OAAOn3B,OAAS,GAAGk3B,MAE3E,CAACd,EAASY,GAAeG,OAAO,GAAGD,MAG/F,GAEOV,CACX,EAEME,GAAgB,SAACH,EAA4CD,GAC/D,IAAMc,EAAoB33B,OAAOib,KAAK4b,GAChCM,EAA4C,CAAE,EAC9CD,EAAeJ,EAAiCnuB,IAAI,SAAC8uB,GAEvD,OADsBE,EAAkBzV,UAAU,SAAAoV,GAAY,OAAIA,IAAiBG,CAAI,IAClE,GACbZ,EAAmBY,GAAMl3B,OAAS,GAClC42B,EAAaM,GAAQZ,EAAmBY,GACjC,IAKJA,CAEf,GAAGtzB,OAAO,SAAA0D,GAAO,OAAIA,EAAQtH,OAAS,CAAC,GAEvC,MAAO,CAAC42B,aAAAA,EAAcD,aAAAA,EAC1B,EAEMG,GAAe,SAACP,EAA4CF,GAC9D,IAAMgB,EAAmB53B,OAAOib,KAAK2b,GAC/BO,EAA4C,CAAA,EAC5CD,EAAeJ,EAAiCnuB,IAAI,SAAC8uB,GACnD,IAAMF,EAAgBK,EAAiB1V,UAAU,SAAAoV,GAAgB,OAAAA,IAAiBG,CAAI,GACtF,OAAIF,GAAiB,GACjBJ,EAAaM,GAAQb,EAA+BgB,EAAiBL,IAC9D,IAEAE,CAEf,GAAGtzB,OAAO,SAAA0D,GAAO,OAAIA,EAAQtH,OAAS,CAAC,GAE3C,MAAO,CAAC42B,aAAAA,EAAcD,aAAAA,EAC1B,ECvEaW,GAAyB,SAAC9vB,EAAeC,GAAY,IAAA8vB,EAAAC,EAAK,OAAQD,OAARA,EAAC/vB,EAAEhF,OAAK+0B,EAAI,IAAaC,OAAZA,EAAK/vB,EAAEjF,OAAKg1B,EAAI,EAAE,EACzFC,GAA0B,SAACjwB,EAAcC,OAAYiwB,EAAAC,EAAA,OAAa,OAARD,EAACjwB,EAAEjF,OAAKk1B,EAAI,IAAa,OAAZC,EAAKnwB,EAAEhF,OAAKm1B,EAAI,EAAE,WAEtFC,GAAsBhV,EAAYiV,EAA8BC,GAE5E,OAAOC,GADYC,GAAYpV,EAAMA,EAAKQ,OAAOyU,GAAsBzU,OAAQ0U,GAChCD,EACnD,CAiDA,SAASG,GAAYpV,EAAYqV,EAA4BH,GACzD,IAAMI,EAdV,SAAiC9U,EAAqB0U,GAClD,IAAMK,KAAOp3B,OAAOF,MAAMuiB,EAAOpjB,QAAQ0a,QAEzC,OADAyd,EAAQ/N,KAAK,SAAC5iB,EAAGC,GAAC,OAAKqwB,EAAY1U,EAAO5b,GAAI4b,EAAO3b,GAAG,GACjD0wB,CACX,CAU2BC,CAAwBH,EAAeH,GACxDrS,EAAmByS,EAAe9vB,IAAI,SAAAvI,GAAC,OAAI+iB,EAAK6C,iBAAiB5lB,EAAE,GACnEujB,EAASR,EAAKQ,OAAOhb,IAAI,SAAAxI,GAAC,OAVpC,SAAyCwjB,EAAqBiV,GAC1D,OAAAnX,EAAA,GACOkC,EAAM,CACTA,OAAQiV,EAAYjwB,IAAI,SAAAvI,GAAK,OAAAujB,EAAOA,OAAOvjB,EAAE,IAErD,CAKwCy4B,CAAgC14B,EAAGs4B,EAAe,GAEtF,OAAAhX,EAAA,GACO0B,EAAI,CACP6C,iBAAAA,EACArC,OAAAA,GAER,CAEA,SAAS2U,GAA4BnV,EAAYiV,GAE7C,IAAMU,EAAuB,GAK7B,OAJAA,EAAqB50B,KAAKif,EAAKQ,OAAOyU,IACtCjV,EAAKQ,OAAO/W,QAAQ,SAAC+W,EAAQjgB,GACtBA,IAAU00B,GAAsBU,EAAqB50B,KAAKyf,EACjE,GACAlC,KAAW0B,EAAI,CAAEQ,OAAQmV,GAC7B,UChFgBC,GAA2BnyB,EAAyBiwB,GAChE,GAAI72B,OAAOib,KAAK4b,GAAoBvf,SAAS1Q,EAAS6wB,MAAO,CACzD,IAAMC,EAA+B9wB,EAAS8wB,OAAOvzB,OAAO,SAAA0I,UAAKgqB,EAAmBjwB,EAAS6wB,MAAMngB,SAASzK,EAAE4qB,KAAK,GACnH,GAAsB,IAAlBC,EAAOn3B,OAAc,MAAM,IAAIuM,MAAM,mEACzC,OAAO4qB,CACX,CACI,OAAO9wB,EAAS8wB,MAExB,UAEgBsB,GAAcC,EAA4BC,GAEtD,IADA,IACwBC,EADpBC,EAA0B,GAAGC,EAAAA,WACP,IAAf5B,EAAI0B,EAAAp2B,MACL6D,EAAWqyB,EAAU5N,KAAK,SAAAxe,GAAK,OAAAA,EAAE4qB,OAASA,CAAI,GAChD7wB,GACAwyB,EAAOl1B,KAAK0C,EAEpB,EALA0yB,EAAAC,EAAmBL,KAAKC,EAAAG,KAAAE,MAAAH,IAMxB,OAAOD,CACX,CCfA,IAAaK,gBAAa,WAkBtB,SAAAA,EAAYC,EAA0C7C,GAjB/C8C,KAAAA,sBACAC,gBAAU,EAAA/4B,KAEA64B,iBACAG,EAAAA,KAAAA,wBACAC,iBAAW,EAAAj5B,KACX63B,aACAqB,EAAAA,KAAAA,0BACAC,yBAAmB,EAAAn5B,KACnBo5B,+BAAyB,EAAAp5B,KACzBq5B,sCACAC,EAAAA,KAAAA,0CACAC,sBAAgB,EAAAv5B,KAEzBw5B,UAAoB,OACpBC,UAAoB,EAGxBz5B,KAAK64B,YAAcA,EACnB,IAAMa,EAA+Bb,EAAY/C,SAC3C6D,EAA0BD,EAAY5xB,IAAI,SAAAkE,UAAKA,EAAE6qB,OAAOn3B,MAAM,GACpEM,KAAKu5B,iBAAmBv5B,KAAK45B,gBAAgBf,EAAa7C,GAC1Dh2B,KAAKg5B,YAAcz4B,MAAMJ,KAAK,CAAET,OAAQM,KAAKu5B,iBAAiB75B,QAAU,WAAM,MAAA,EAAE,GAChFM,KAAKk5B,cAAgBl5B,KAAK65B,mBAC1B75B,KAAK85B,sBAAsBJ,GAC3B15B,KAAKq5B,iCAAmCr5B,KAAKu5B,iBAAiBlY,UAAU,SAAArV,GAAC,OAAIA,EAAElI,OAASqX,QAAaA,cAAC4e,OAAO,GAC7G/5B,KAAKs5B,8BAAgCt5B,KAAKu5B,iBAAiBlY,UAAU,SAAArV,GAAC,OAAIA,EAAElI,OAASqX,QAAAA,cAAc8Q,IAAI,GACvGjsB,KAAK63B,QAAUt3B,MAAMJ,KAAK,CAAET,OAAQg6B,EAAYh6B,QAAU,WAAA,QAAO,GACjEM,KAAKi5B,YAAcj5B,KAAKu5B,iBAAiBzxB,IAAI,SAAAkE,UAAKA,EAAE6qB,OAAOn3B,OAAS,CAAC,GACrEM,KAAKm5B,oBAAsBn5B,KAAKg5B,YAAYt5B,OAAS,EACrDM,KAAKo5B,0BAA4Bp5B,KAAKg6B,YAAYL,GAClD35B,KAAK+4B,WAAa/4B,KAAKu5B,iBAAiBzxB,IAAI,SAAAkE,UAAKA,EAAE6qB,OAAOn3B,MAAM,GAAEwX,OAAO,SAAC0V,EAAKqN,GAAG,OAAKrN,EAAMqN,CAAG,EAAE,GAClGj6B,KAAK84B,UAAY,EACjB94B,KAAKk6B,iBACT,CAAC,IAAAC,EAAAvB,EAAAh5B,iBAAAu6B,EAEOL,sBAAA,SAAsBJ,GAC1B,IADsD,IAAArZ,EAAAmY,KAAAA,iBAC+B4B,EAC3E1D,EAAwBrW,EAAK6Y,cAAcmB,GAC3CC,EAA6Bja,EAAKkZ,iBAAiBc,GAAazD,KAChEC,EAAmF,OAA7EuD,EAAyBV,EAAYlP,KAAK,SAAAxe,GAAC,OAAIA,EAAE4qB,OAAS0D,CAAkB,SAAC,EAApDF,EAAsDvD,OACrF0D,EAAgCla,EAAKkZ,iBAAiB/O,KAAK,SAAAxe,GAAC,OAAIA,EAAE4qB,OAAS0D,CAAkB,GACnGja,EAAK2Y,YAAYtC,GAAiB6D,EAAe1D,OAAO/uB,IAAI,SAAA0yB,UAAM3D,EAAOl0B,QAAQ63B,EAAG,EACxF,EANSH,EAAc,EAAGA,EAAcr6B,KAAKu5B,iBAAiB75B,OAAQ26B,IAAa7B,GAOvF,EAAC2B,EAEMM,cAAA,WACH,IAAIC,EAAW,EACXC,EAA6B,GAC3BC,EAA4B,GAClC,EAAG,CACC,IAAM7F,EAAsB/0B,KAAK66B,iBACjCF,EAAct3B,KAAK0xB,KACnB2F,GACgB16B,KAAKw5B,YACjBoB,EAAWv3B,KAAK,CAAE0hB,aAAc/kB,KAAK86B,uBAAwBhY,OAAQ6X,IACrEA,EAAgB,GAChBD,EAAW,EAEnB,OAAS16B,KAAKsE,QAEd,OAAOs2B,CACX,EAACT,EAEDW,qBAAA,WAAoB,IAAAC,EAAA/6B,KAChB,OAAWA,KAACu5B,iBAAiB/4B,MAAM,EAAGR,KAAKy5B,WAAW3xB,IAAI,SAACkzB,EAAan4B,GACpE,OAAOm4B,EAAYnE,OAAOkE,EAAKlD,QAAQkD,EAAK7B,cAAcr2B,KAASuL,IACvE,EACJ,EAAC+rB,EAED71B,KAAA,WACI,IAAK,IAAI/E,EAAIS,KAAKm5B,oBAAqB55B,GAAK,EAAGA,IAAK,CAChD,IAAMm3B,EAAwB12B,KAAKk5B,cAAc35B,GACjD,GAAIS,KAAK63B,QAAQnB,GAAiB12B,KAAKi5B,YAAY15B,GAG/C,OAFAS,KAAK63B,QAAQnB,KACb12B,KAAKk6B,mBACM,EAGXl6B,KAAK63B,QAAQnB,GAAiB,CAEtC,CACA,OAAY,CAChB,EAACyD,EAEDU,eAAA,eAAcI,EAAAC,EACJC,EAA0Cn7B,KAAKo7B,sBAC/CrG,EAAsB,CACxB7yB,MAAOlC,KAAK64B,YAAYzJ,KAAKpvB,KAAK84B,WAClCrX,UAEuC,OAF9BwZ,EAAEC,OAAFA,EAAEl7B,KAAKu5B,iBAAiBv5B,KAAKq5B,kCACjCxC,OAAO72B,KAAK63B,QAAQ73B,KAAKk5B,cAAcl5B,KAAKq5B,oCAC5CgC,uBAFMH,EAAAA,EAEYI,kBAAgBL,EAAI,EAC3C1L,cAAa4L,GAAUh8B,OAAO03B,OAAOsE,EAAQ/sB,MAAM,GAAGnM,OAAOsU,SAAS,MAG1E,OADKwe,EAAS7yB,QAAO6yB,EAAS5S,YAAcniB,KAAK64B,YAAY0C,gBAAgBv7B,KAAK84B,YAC3E/D,CACX,EAACoF,EAEDP,gBAAA,SAAgBf,EAA0C7C,GACtD,IAAMwF,EAAqC3C,EAAY/C,SAAShuB,IAAI,SAAC/B,GACjE,OAAA6a,EAAY7a,GAAAA,GAAU8wB,OAAQqB,GAA2BnyB,EAAUiwB,IACvE,GACMyF,EAAgCtD,GAAcqD,EAAkBl4B,OAAO,SAAA0I,GAAC,OAAI6sB,EAAY6C,iBAAiBjlB,SAASzK,EAAE4qB,OAAS5qB,EAAE6qB,OAAOn3B,OAAS,CAAC,GAAGm5B,EAAY6C,kBAC/JC,EAAmCxD,GAAcqD,EAAkBl4B,OAAO,SAAA0I,GAAC,OAAI6sB,EAAY+C,oBAAoBnlB,SAASzK,EAAE4qB,OAAS5qB,EAAE6qB,OAAOn3B,OAAS,CAAC,GAAGm5B,EAAY+C,qBACrKC,EAAuC1D,GAAcqD,EAAkBl4B,OAAO,SAAA0I,GAAK,OAAA6sB,EAAYhD,wBAAwBpf,SAASzK,EAAE4qB,KAAK,GAAGiC,EAAYhD,yBACtJiG,EAAqDD,EAAoBv4B,OAAO,SAAA0I,GAAK,OAAAA,EAAE6qB,OAAOn3B,OAAS,IAAM+7B,EAAa10B,KAAK,SAAAg1B,GAAM,OAAAA,EAAGnF,MAAQ5qB,EAAE4qB,IAAI,KAAM+E,EAAgB50B,KAAK,SAAAi1B,UAAMA,EAAGpF,MAAQ5qB,EAAE4qB,IAAI,EAAC,GACzMqF,EAA2CJ,EAAoBv4B,OAAO,SAAA0I,GAAC,OAAuB,GAAnBA,EAAE6qB,OAAOn3B,MAAW,GAC/Fw8B,EAAuCV,EAAkBl4B,OAAO,SAAA0I,UAAMyvB,EAAa10B,KAAK,SAAAg1B,GAAE,OAAIA,EAAGnF,MAAQ5qB,EAAE4qB,IAAI,KAAM+E,EAAgB50B,KAAK,SAAAi1B,UAAMA,EAAGpF,MAAQ5qB,EAAE4qB,IAAI,KAAMiF,EAAoB90B,KAAK,SAAA0U,GAAE,OAAIA,EAAGmb,MAAQ5qB,EAAE4qB,IAAI,EAAC,GACxNuF,EAAS,GAAA17B,OACRq7B,EACAL,EACAE,EACAM,EACAC,GAGP,OAFAl8B,KAAKw5B,UAAY3Y,GAAiB2a,EAAkBl4B,OAAO,SAAA0I,GAAC,OAAI6sB,EAAY+C,oBAAoBnlB,SAASzK,EAAE4qB,KAAK,GAAE9uB,IAAI,SAAAkE,UAAKA,EAAE6qB,MAAM,IAAGn3B,OACtIM,KAAKy5B,UAAYgC,EAAa/7B,OAASo8B,EAAkCp8B,OAClEy8B,CACX,EAAChC,EAEDN,iBAAA,WACI,IAAMuC,EAAwBp8B,KAAK64B,YAAY/C,SAAShuB,IAAI,SAAAkE,GAAC,OAAIA,EAAE4qB,IAAI,GACjEyB,EAAQr4B,KAAKu5B,iBAAiBzxB,IAAI,SAAAkE,GAAK,OAAAowB,EAAYz5B,QAAQqJ,EAAE4qB,KAAK,GACxE,OAAOyB,CACX,EAAC8B,EAEDH,YAAA,SAAYL,GAGR,IAFA,IAAM0C,EAAgB97B,MAAMJ,KAAK,CAAET,OAAQi6B,EAAcj6B,SACrD48B,EAA+B,EAC1B/8B,EAAIo6B,EAAcj6B,OAAS,EAAGH,GAAK,EAAGA,IAC3C88B,EAAI98B,GAAK+8B,EACTA,GAAwB3C,EAAcp6B,GAE1C,OAAO88B,CACX,EAAClC,EAEDD,gBAAA,WACIl6B,KAAK84B,UAAY,EACjB,IAAK,IAAIv5B,EAAI,EAAGA,GAAKS,KAAKm5B,oBAAqB55B,IAAK,CAChD,IAAMm3B,EAAwB12B,KAAKk5B,cAAc35B,GACjDS,KAAK84B,WAAa94B,KAAKo5B,0BAA0B1C,GAAiB12B,KAAKg5B,YAAYtC,GAAe12B,KAAK63B,QAAQnB,GACnH,CACJ,EAACyD,EAEDiB,oBAAA,WACI,IAA2C,GAAvCp7B,KAAKs5B,8BAGT,OAAOt5B,KAAKu5B,iBAAiBv5B,KAAKs5B,+BAC7BzC,OAAO72B,KAAK63B,QAAQ73B,KAAKk5B,cAAcl5B,KAAKs5B,gCACrD,EAACV,CAAA,CAtJqB,GCGV,SAAA2D,GACZ1D,EAA0C7C,OAAuCvI,EAAAQ,EAAAuO,EHKvCC,EAAoBC,EAAoBnF,EGH5EjV,EAgDV,SAAiBuW,EAA0C7C,EAAyC2G,GAChG,IAAQ7G,EAAsC+C,EAAtC/C,SACF+F,EA8FV,SAAgC/F,EAA2BD,GACvD,OAAOC,EAASxyB,OAAO,SAAAs5B,GAAW,OAAA/G,EAAwBpf,SAASmmB,EAAQhG,KAAK,EACpF,CAhGgCiG,CAAuB/G,EADL+C,EAA5BhD,yBAEZiH,EAuGV,SAA4BF,GACxB,IAAME,EAAaF,EAAQpS,KAAK,SAAAxe,GAAC,OAAIA,EAAElI,OAASqX,QAAaA,cAAC4e,OAAO,GACrE,GAAI+C,EAAY,OAAOA,EAClB,MAAU,IAAA7wB,MAAM,kCACzB,CA3GuB8wB,CAAmBjH,GAChCkH,EA4BM,SAAYnE,EAA0C7C,GAClE,IACM4E,EAD+B,IAAIhC,GAAcC,EAAa7C,GACpByE,gBAC1CwC,EAA0C9E,GAAcU,EAAY/C,SACrExyB,OAAO,SAAA45B,GAAM,OAAArE,EAAY+C,oBAAoBnlB,SAASymB,EAAGtG,KAAK,GAC9DtzB,OAAO,SAAA45B,GAAE,OAAIA,EAAGrG,OAAOn3B,OAAS,CAAC,GAAGm5B,EAAY+C,qBAChD9zB,IAAI,SAAAo1B,GAAM,OAAAhF,GAA2BgF,EAAIlH,EAAmB,GAEjE,MAAO,CACH7Q,iBAFqDtE,GAAiBoc,GAE3Bn1B,IAAI,SAAAq1B,GAAuB,OAAAA,EAAoBr1B,IAAI,SAAA5F,GAAK,OAAIA,EAAMkM,IAAI,EAAC,GAClH0U,OAAQ8X,EAEhB,CAxC2BwC,CAAYvE,EAAa7C,GAM1CnT,EAAcwa,GAJqBxE,EAAYhD,wBAAwBvyB,OAAO,SAAAszB,GAAI,OACpF+F,EAAqB/F,GAAQ,IAC5BiC,EAAY6C,iBAAiBjlB,SAASmgB,KACtCiC,EAAY+C,oBAAoBnlB,SAASmgB,EAAK,GACoBd,GAClEr1B,OAAO48B,GAAiBxE,EAAY6C,iBAAkB7C,EAAY/C,WAEjElW,EAuCM,SACZkd,EACA9G,GAEA,IAAIsH,EAGAA,EADAR,EAAWlG,QAAQZ,EACX8G,EAAWjG,OACdvzB,OAAO,SAAA0I,GAAK,OAAAgqB,EAAmB8G,EAAWlG,MAAMngB,SAASzK,EAAE4qB,KAAK,GAChE9uB,IAAI,SAAAy1B,GAAGC,IAAAA,EAAAA,OAAwB,OAAxBA,EAAID,EAAIlC,uBAAgB,EAApBmC,EAAsB5d,WAAW,GAC5Ctc,OAAO,SAACpB,EAAOW,EAAOO,GAAU,OAAAge,GAAWlf,EAAOW,EAAOO,EAAM,GAE5D05B,EAAWjG,OACd/uB,IAAI,SAAAy1B,GAAGE,IAAAA,SAAwB,OAAxBA,EAAIF,EAAIlC,uBAAgB,EAApBoC,EAAsB7d,WAAW,GAC5Ctc,OAAO,SAACpB,EAAOW,EAAOO,GAAK,OAAKge,GAAWlf,EAAOW,EAAOO,EAAM,GAIxE,IAAMs6B,EAAaJ,EAAMh6B,OAAO,SAACwjB,eAAkC/lB,IAAT+lB,CAAkB,GAE5E,GAA0B,IAAtB4W,EAAWh+B,OAAf,CAIA,GAA0B,IAAtBg+B,EAAWh+B,OACX,OAAOg+B,EAAW,GAItB,IACMC,EADcD,EAAW51B,IAAI,SAAA81B,GAAO,OAAQ,IAAA7W,KAAK6W,EAAQ,GAC/B1mB,OAAO,SAAC2mB,EAAWC,EAAaC,EAAYC,GACxE,OAAOF,EAAcE,EAAIH,GAAaE,EAAaF,CACvD,EAAG,GACH,OAAOH,EAAWC,EAXlB,CAYJ,CAzEwBM,CAAenB,EAAY9G,GAE/C,MAAO,CACH3F,OAAQwI,EAAYxI,OACpB6N,mBAAoBrF,EAAYsF,eAAe/vB,KAC/CmiB,gBAAiB6N,GAAmBvC,EAAqB7F,EAAoB2G,GAC7EnW,MAAO6X,GAAmBvB,EAAY9G,GACtCnG,QAASyO,GAAmBxB,EAAY9G,EAAoB,SAACuI,GAAEC,IAAAA,EAAAA,cAAAA,EAAKD,MAAAA,OAAAA,EAAAA,EAAI3iB,QAAM4iB,EAAIle,GAAa/E,KAAK,GACpGqE,YAAaA,EACbuF,iBAAkB6X,EAAe7X,iBACjCrC,OAAQka,EAAela,OACvBD,YAAaA,EACbG,YAAaqa,GAAiBxE,EAAY+C,oBAAqB/C,EAAY/C,UAC3E2I,mBAAoBpB,GAAiBxE,EAAYhD,wBAAyBgD,EAAY/C,UACtF5P,sBAAuB2S,EAAY3S,sBACnC8F,WAAY0S,GAAc7F,EAAY+C,oBAAqB/C,EAAY/C,UAE/E,CA9EuB6I,CAAQ9F,EAAa7C,EA0C5C,SAA+BA,GAC3B,IAAM/U,EAAiC,CAAA,EAEvC,OADA9hB,OAAO6hB,QAAQgV,GAAoBjqB,QAAQ,SAAAge,GAAkB,OAAA9I,EAAb8I,EAAA,IAAOA,EAAM,GAAoBrqB,MAAM,GAChFuhB,CACX,CA9CgE2d,CAAsB5I,IAE5E6I,GACFpR,OAAAA,EAAAnL,EAAK4D,4BAALuH,EAAAA,EAA4BtH,qBAAsBjL,QAAkBA,mBAACmL,4BAClE4H,OAAAA,EAAA3L,EAAK4D,4BAAL+H,EAAAA,EAA4B9H,qBAAsBjL,QAAkBA,mBAACoL,wBAE5E,OAAyC,OAAzCkW,EAAQ3D,EAAY3S,4BAAqB,EAAjCsW,EAAmCsC,SACvC,KAAS,KACT,UAAK/9B,EACL,IHjBkB,aGiBD,OAAOuhB,EACxB,IHjBgB,WGiBD,OHaP,SAAiBA,GAC7B,IAAMyc,EAAiB,GAAAt+B,OAAI6hB,EAAKQ,QAAQkc,UAAUl3B,IAAI,SAAAxI,GAACshB,OAAAA,EAChDthB,CAAAA,EAAAA,EACHwjB,CAAAA,OAAQ,GAAAriB,OAAInB,EAAEwjB,QAAQkc,UACtBja,aAAc,GAAAtkB,OAAInB,EAAEylB,cAAcia,cAGtC,OAAApe,KACO0B,EAAI,CACPQ,OAAQic,EACR5Z,iBAAkB,GAAA1kB,OAAI6hB,EAAK6C,kBAAkB6Z,WAErD,CGzB8BC,CAAiB3c,GACvC,IHpBW,MGoBD,OHHF,SAAmBA,EAAYkV,GAC3C,IAAM0H,EAAwB5c,EAAK6C,iBAC9Brd,IAAI,SAACb,EAAG1H,GACL,MAAO,CACH2C,MAAOogB,EAAKQ,OACPhb,IAAI,SAAAxI,GAAK,OAAAA,EAAEwjB,OAAOvjB,EAAE,GACpB2X,OAAO,SAACqR,EAAe4W,OAAeC,EAAA,OAAK7W,GAAmB6W,OAAdA,EAAID,EAAKj9B,OAAKk9B,EAAI,EAAE,EAAE,GAE3E3d,UAAW,EACX8N,aAAa,EAErB,GACJ,OAAOmI,GAAYpV,EAAM4c,EAAU1H,EACvC,CGVyB6H,CAAmB/c,EAAM6U,IAC1C,IHvBiB,YGuBD,OAAOG,GAAsBhV,EAAM,EAAG0U,IACtD,IHvBkB,aGuBD,OAAOM,GAAsBhV,EAAM,EAAG6U,IACvD,QACI,OAAI0H,GHZ8BpC,EGYwBna,EHZJoa,EGYU4C,GAAkBhd,GHZRiV,EGYegI,GAAgB1G,GHV1GpB,GADYC,GAAY+E,EAAcC,EAAa5Z,OAAOyU,GAAsBzU,OGWwCqU,IHVhFI,IGW3BD,GAAsBhV,EAAMid,GAAgB1G,GAAc1B,IAElF,CAEgB,SAAAmI,GAAkB7W,GAC9B,IAAM+W,EAAY/W,EAAM3F,OAAOhb,IAAI,SAAAxI,GAAC,OAAAshB,EAAA,CAAA,EAC7BthB,EAAC,CACJwjB,OAAQxjB,EAAEwjB,OAAOhb,IAAI,SAACitB,EAAUlyB,GAAS,IAAAmyB,EAC/Bf,EAAMxL,EAAM3F,OAAO5L,OAAO,SAAC+c,EAAKnR,GAAM2c,IAAAA,SAAKxL,UAAGwL,EAAI3c,EAAOA,OAAOjgB,GAAOX,OAAKu9B,EAAI,EAAE,EAAE,GACpFv9B,EAAU+xB,GAAe,IAARA,EAAoBnyB,KAAK8yB,MAAO,KAAqB,OAAlBI,EAAID,EAAS7yB,OAAK8yB,EAAI,GAAKf,EAAO,IAAM,GAA9D,KAC9ByL,EAAqB,CAAEx9B,MAAAA,EAAOuf,UAAW,EAAG8N,YAAawF,EAASxF,aAExE,OADc,OAAVrtB,IAAgBw9B,EAAQvd,YAAc4S,EAAS5S,aAC5Cud,CACX,IAAE,GAUN,OAAA9e,KAAW6H,EAAK,CAAEjC,MAAOiC,EAAMjC,MAAM1e,IAAI,SAAAsD,GAAC,MAAK,CAACgD,KAAMhD,EAAEgD,KAAMyN,MAPzCA,EAO2DzQ,EAAEyQ,KANvE1c,OAAOib,KAAKyB,GAAM3E,OAAO,SAAC0V,EAA2B+S,GAExD,OADA/S,EAAI+S,GAAQ,IACL/S,CACX,EAAG,CAAA,KAJa,IAAC/Q,CAOoE,GAAKiH,OAAQ0c,GAC1G,CAgGA,SAASnC,GAAiBuC,EAAoBC,GAC1C,OAAOD,EAAS1oB,OAAO,SAAC0V,EAA6BgK,GAAgB,IAAAkJ,EAC3D1xB,EAAsC,OAAlC0xB,EAAGD,EAAKrV,KAAK,SAAAxe,GAAK,OAAAA,EAAE4qB,OAASA,CAAI,SAAC,EAA/BkJ,EAAiC1xB,KAE9C,OADIA,GAAMwe,EAAIvpB,KAAK+K,GACZwe,CACX,EAAG,GACP,CAMA,SAAS2S,GAAgB1G,GACrB,IAAMkH,EAAalH,EAAY/C,SAAStL,KAAK,SAAAxe,GAAK,OAAAA,EAAE4qB,MAAQiC,EAAY6C,iBAAiB,EAAE,GACrFsE,EAAqB,MAAVD,OAAU,EAAVA,EAAYlJ,OAAOxV,UAAU,SAAArV,OAACi0B,EAAA,OAAIj0B,EAAE4qB,QAA0C,OAAtCqJ,EAAKpH,EAAY3S,4BAAqB,EAAjC+Z,EAAmCnB,QAAQ,GACzG,OAASkB,GAAYA,EAAW,EAAK,EAAIA,CAC7C,CAQA,SAAS5B,GAAmBvC,EAAsC7F,EAAyC2G,GACvG,IAAMpM,EAA0C,GAQhD,OAPAsL,EAAoB9vB,QAAQ,SAAAm0B,GAEgCC,IAAAA,EAAAC,EAAH,GAAjDzD,EAAqBuD,EAAmBtJ,OAExCrG,EAAgBltB,KAAyG88B,OAArGA,EAA+F,OAA/FC,EAACF,EAAmBrJ,OAAOrM,KAAK,SAAAxe,GAAK,OAAAA,EAAE4qB,OAASZ,EAAmBkK,EAAmBtJ,MAAM,EAAE,SAAC,EAA9FwJ,EAAgGhyB,MAAI+xB,EAAI,CAAE,EAEvI,GACO5P,CACX,CAEA,SAAS8N,GAAmBvB,EAA2B9G,GACnD,IAAMa,EAASiG,EAAWlG,QAAQZ,EAC5B8G,EAAWjG,OAAOvzB,OAAO,SAAA0I,GAAC,OAAIgqB,EAAmB8G,EAAWlG,MAAMngB,SAASzK,EAAE4qB,KAAK,GAClFkG,EAAWjG,OAEjB,OAAOA,EAAO3f,OAAO,SAACqR,EAAoB8X,GAKtC,OAJGA,EAAQhF,kBAAkB9S,EAAMllB,KAAK,CACpC+K,KAAMiyB,EAAQjyB,KACdyN,KAAMwkB,EAAQhF,iBAAiBxf,OAE5B0M,CACX,EAAG,GACP,CAEA,SAAS+V,GACLxB,EACA9G,EACAsK,GAEA,OAAIxD,EAAWlG,QAAQZ,EACZ8G,EAAWjG,OACbvzB,OAAO,SAAA0I,GAAK,OAAAgqB,EAAmB8G,EAAWlG,MAAMngB,SAASzK,EAAE4qB,KAAK,GAChE9uB,IAAI,SAAAy1B,GAAG,OAAI+C,EAAc/C,EAAIlC,iBAAiB,GAC9C/3B,OAAO,SAACpB,EAAOW,EAAOO,GAAK,OAAKge,GAAWlf,EAAOW,EAAOO,EAAM,GAE7D05B,EAAWjG,OAAO/uB,IAAI,SAAAy1B,GAAG,OAAI+C,EAAc/C,EAAIlC,iBAAiB,GAAE/3B,OAAO,SAACpB,EAAOW,EAAOO,GAAU,OAAAge,GAAWlf,EAAOW,EAAOO,EAAM,EAEhJ,CAEA,SAASs7B,GAAckB,EAAoBC,GAAqB,IAAAU,EAC5D,GAAIX,EAASlgC,OAAS,GAAyB,IAApBkgC,EAASlgC,OAChC,OAAO6kB,GAAYic,QAGvB,IAAMC,EAAeF,OAAHA,EAAGV,EAAKrV,KAAK,SAAAxe,GAAC,OAAIA,EAAE4qB,OAASgJ,EAAS,EAAE,SAArCW,EAAAA,EAAwCz8B,KAE7D,OAAQ28B,GACJ,KAAKtlB,QAAAA,cAAc8Q,KACf,OAAO1H,GAAY0H,KACvB,KAAK9Q,QAAaA,cAACmR,QACf,OAAO/H,GAAY+H,QACvB,QACI,OAAO/H,GAAYic,QAE/B,CCjOa,IAAAE,GAA4E,SAAChf,EAAQif,GAAU,MAAM,CAC9GzQ,cAAe,CACX0Q,mBAAoB,CAChBC,iBAAkB,CACdC,KAAM,eAIlBC,WAAY,CACRz7B,MAAO,CACH,CACI07B,UAAW,CACPC,UAAW,KAEfC,aAAc,CACVtW,MAAO,CACH8D,OAAQ,SAM5ByE,UAAW,CACP3C,SAAS,EACT2Q,wBAAwB,EACxBC,WAAW,EACXF,aAAc,CAGVtW,MAAO,CACH/Q,MAAO,CACH8mB,WAAYA,GAAc,mDAK1ChB,KAAM,CACFzP,cAAe,CACXnU,aAAcuE,GAAatE,0BAA0B0F,GACrDzE,QAASqD,GAAarD,QAAQyE,GAC9B+O,QAASnQ,GAAarD,QAAQyE,GAC9B2f,WAAY,CACRnlB,YAAaoE,GAAapE,YAAYwF,GACtCvF,UAAWmE,GAAanE,UAAUuF,GAClCrF,eAAgBiE,GAAajE,eAAeqF,GAC5CtF,aAAckE,GAAalE,aAAasF,GACxCpF,WAAYgE,GAAahE,WAAWoF,GACpCnF,aAAc+D,GAAa/D,aAAamF,GACxClF,UAAW8D,GAAa9D,UAAUkF,GAClChF,cAAe4D,GAAa5D,cAAcgF,GAC1C/E,gBAAiB2D,GAAa3D,gBAAgB+E,GAC9C9E,cAAe0D,GAAa1D,cAAc8E,GAC1C7E,gBAAiByD,GAAazD,gBAAgB6E,IAElD5E,kBAAmBwD,GAAaxD,kBAAkB4E,GAClDyR,UAAW,CACPpW,eAAgBuD,GAAavD,eAAe2E,GAC5C1E,gBAAiBsD,GAAatD,gBAAgB0E,IAElDkQ,OAAQ,CACJ1U,WAAYoD,GAAapD,WAAWwE,GACpCvE,YAAamD,GAAanD,YAAYuE,GACtCtE,mBAAoBkD,GAAalD,mBAAmBsE,IAExD4f,KAAM,CACF5jB,gBAAiB4C,GAAa5C,gBAAgBgE,GAC9C/D,YAAa2C,GAAa3C,YAAY+D,GACtC9D,cAAe0C,GAAa1C,cAAc8D,GAC1C7D,eAAgByC,GAAazC,eAAe6D,GAC5C5D,iBAAkBwC,GAAaxC,iBAAiB4D,GAChD3D,iBAAkBuC,GAAavC,iBAAiB2D,GAChD1D,uBAAwBsC,GAAatC,uBAAuB0D,GAC5DzD,yBAA0BqC,GAAarC,yBAAyByD,GAChExD,uBAAwBoC,GAAapC,uBAAuBwD,GAC5DvD,yBAA0BmC,GAAanC,yBAAyBuD,IAEpEoB,OAAQ,CACJye,QAAS,CACLnN,IAAK9T,GAAalC,iBAAiBsD,GACnC8f,eAAgBlhB,GAAajC,4BAA4BqD,GACzDle,OAAQ8c,GAAahC,oBAAoBoD,GACzC+f,kBAAmBnhB,GAAa/B,+BAA+BmD,GAC/DggB,QAASphB,GAAa9B,qBAAqBkD,GAC3CigB,mBAAoBrhB,GAAa7B,gCAAgCiD,GACjEne,KAAM+c,GAAa5B,kBAAkBgD,GACrCkgB,gBAAiBthB,GAAa3B,6BAA6B+C,GAC3DgT,IAAKpU,GAAa1B,iBAAiB8C,GACnCmgB,eAAgBvhB,GAAazB,4BAA4B6C,GACzD8T,QAASlV,GAAaxB,qBAAqB4C,GAC3CogB,mBAAoBxhB,GAAavB,gCAAgC2C,IAErE1C,iBAAkBsB,GAAatB,iBAAiB0C,GAChDzC,iBAAkBqB,GAAarB,iBAAiByC,IAEpDqgB,oBAAqB,CACjB7iB,iBAAkBoB,GAAapB,iBAAiBwC,IAEpDtC,oBAAqBkB,GAAalB,oBAAoBsC,IAE1D3F,aAAcuE,GAAavE,aAAa2F,GACxCzF,aAAcqE,GAAarE,aAAayF,GACxCrE,mBAAoBiD,GAAajD,mBAAmBqE,GACpDjE,YAAa6C,GAAa7C,YAAYiE,GACtCpE,YAAagD,GAAahD,YAAYoE,GACtCnE,YAAa+C,GAAa/C,YAAYmE,GACtC5B,OAAQS,GAAkBT,OAAO4B,GACjC3B,YAAaQ,GAAkBR,YAAY2B,GAC3CzB,SAAUM,GAAkBN,SAASyB,GACrCvC,QAASmB,GAAanB,QAAQuC,GAC9B1B,eAAgB,MAEpBgiB,OAAQ9T,GACRtD,MAAO,CACH/Q,MAAO,CACH8mB,WAAsB,MAAVA,EAAAA,EAAc,gDAE9BsB,YAAa,GACbvT,OAAS,UAEbgC,QAAS,CACLF,SAAS,EACT8E,aAAc,mBACdC,YAAa,YACbjH,gBAAiB,UACjB4T,SAAS,EACTroB,MAAO,CACHwU,MAAO,OACP2C,SAAU,OACVnnB,WAAY,QAGpBumB,MAAO,CACH+R,SAAS,EACTtoB,MAAO,CACHwU,MAAO,OACP2C,SAAU,UACVnnB,WAAY,MACZynB,UAAW,OACX8Q,SAAU,oBACVC,WAAY,UAEhB9Q,MAAO,OACPS,OAAQ,GACRsQ,SAAU,GAEdhS,SAAU,CACNzW,MAAO,CACHwU,MAAO,OACP2C,SAAU,UACVnnB,WAAY,OAEhB0nB,MAAO,QAEXd,QAAS,CACL/tB,SAAU,CACN6uB,MAAO,OACP7qB,EAAG,GAEPmT,MAAO,CACHwU,MAAO,OACP2C,SAAU,OACVnnB,WAAY,MACZynB,UAAW,OACXiR,OAAQ,WAEZC,KAAM,IAEV7R,MAAO,CACHP,MAAO,CACHvW,MAAO,CACHwU,MAAO,OACP2C,SAAU,OACVnnB,WAAY,MACZ44B,KAAM,EACNnR,UAAW,OACXoR,aAAc,YAElBnR,MAAO,OACPoR,SAAU,EACVrR,UAAW,OACX3rB,OAAQ,EACRgB,GAAI,GACJD,EAAG,GACHk8B,cAAc,GAElBC,UAAW,OACXC,UAAW,EACXjQ,cAAe,kBACfC,cAAe,GACf5G,OAAQ,CACJrS,MAAO,CACHwU,MAAO,OACP2C,SAAU,OACVnnB,WAAY,OAEhBmjB,aAAc,CAAC,GACf+V,cAAc,EACdzV,UAAW1J,GAA8BlC,KAGjD+P,MAAO,CACHvF,OAAQ,CACJrS,MAAO,CACHwU,MAAO,OACP2C,SAAU,OACVnnB,WAAY,OAEhBk5B,cAAc,EACd/V,aAAc,CAAC,IAEnBoD,MAAO,CACHvW,MAAO,CACHwU,MAAO,OACP2C,SAAU,OACVnnB,WAAY,QAGpBg5B,UAAW,OACXC,UAAW,EACXE,WAAW,GAEfpR,OAAQ,CACJpB,SAAS,EACTyS,UAAW,CACPjS,SAAU,OACVnnB,WAAY,MACZwkB,MAAO,QAEXkD,MAAO,UAEXwB,YAAa,CACT2B,IAAK,CACD1B,WAAY,CACRxC,SAAS,EACT2R,SAAS,EACTe,eAAgB,cAChBC,eAAgB,UAChBtpB,MAAO,CACHmX,SAAU,OACVnnB,WAAY,MACZwkB,MAAO,OACPqU,aAAc,UAI1Bl/B,OAAQ,CACJ4/B,aAAc,GACdC,aAAc,IACdC,aAAc,EACdC,YAAa,GAEjBnP,IAAK,CACDgP,aAAc,GACdC,aAAc,IACdC,aAAc,EACdC,YAAa,GAEjBzgB,OAAQ,CACJqM,WAAY,IAGvB,EClQe,SAAAqU,GAAgBlhB,EAAYZ,EAAgBxO,EAAwBuwB,EAAqBC,GAErG,IAAMC,EAAYp4B,SAASq4B,eAAeH,GAC1C,IAAKE,EAAW,MAAU,IAAA13B,MAAM,uDAEhC,IAEI,IAAM43B,EAmEE,SAAcvhB,EAAYZ,OAAcoiB,EAAAC,EAC9CC,EAA+CF,OAAlCA,EAAGxhB,EAAK6C,iBAAiB,GAAGzlB,QAAMokC,EAAI,EACnDG,EAAkDF,OAArCA,EAAGzhB,EAAKQ,OAAO,GAAGiC,aAAarlB,QAAMqkC,EAAI,EAEtDF,EAA0B1kC,OAAOC,OAAOmM,SAASmI,cAAc,SAAU,CAAEwwB,SAAU,IAE3F,GAAIF,EAAgB,EAAG,CACnB,IAAMG,EAwBd,SAA+BC,EAAyC1iB,GAGpE,IAFA,IAAM2iB,EAAWC,GAAkBF,GAC7BJ,EAAuC,GACpCO,EAAM,EAAGA,EAAMH,EAAc,GAAG1kC,OAAQ6kC,IAAO,CAEpD,IADA,IAAMC,EAAWj5B,SAASmI,cAAc,MAC/B+wB,EAAM,EAAGA,EAAML,EAAc1kC,OAAQ+kC,GAAOJ,EAASE,GAAM,CAChE,IAAMG,EAAKn5B,SAASmI,cAAc,MAClCgxB,EAAG9wB,aAAa,UAAWywB,EAASE,GAAKptB,YACzCutB,EAAG9wB,aAAa,QAAS,OACzB8wB,EAAG5xB,YAAcsxB,EAAcK,GAAKF,GAAK7iB,GACzC8iB,EAASrhC,OAAOuhC,EACpB,CACAV,EAAc3gC,KAAKmhC,EACvB,CACA,OAAOR,CACX,CAvC8BW,CAAsBriB,EAAK6C,iBAAkBzD,GAGnE,GAAIuiB,EAAgB,EAAG,CACnB,IAAMW,EAAKr5B,SAASmI,cAAc,MAClCkxB,EAAGhxB,aAAa,UAAWqwB,EAAc9sB,YACzCytB,EAAGhxB,aAAa,UAAWowB,EAAc7sB,YACzCgtB,EAAc,GAAGU,QAAQD,EAC7B,CAEA,IAAME,EAAQv5B,SAASmI,cAAc,SACrCoxB,EAAM3hC,OAAMpD,MAAZ+kC,EAAgBX,GAChBN,EAAM1gC,OAAO2hC,EACjB,CAEA,GAAIxiB,EAAKQ,OAAOpjB,OAAS,EAAG,CACxB,IAAMqlC,EAAQx5B,SAASmI,cAAc,SACrCqxB,EAAM5hC,OAAMpD,MAAZglC,EAwBR,SAAuBjiB,EAAuBpB,GAI1C,IAHA,IAAMsjB,EAAkC,GAClCC,EAAWC,GAAkBpiB,GAE1ByhB,EAAM,EAAGA,EAAMzhB,EAAOpjB,OAAQ6kC,IAAO,CAI1C,IAHA,IAAMC,EAAWj5B,SAASmI,cAAc,MAG/ByxB,EAAO,EAAGA,EAAOriB,EAAOyhB,GAAKxf,aAAarlB,OAAQylC,IACvD,GAAIZ,EAAMU,EAASE,KAAU,EAAG,CAC5B,IAAMT,EAAKn5B,SAASmI,cAAc,MAClCgxB,EAAG9wB,aAAa,UAAWqxB,EAASE,GAAMhuB,YAC1CutB,EAAG9wB,aAAa,QAAS,OACzB8wB,EAAG5xB,YAAcgQ,EAAOyhB,GAAKxf,aAAaogB,GAAMzjB,GAChD8iB,EAASrhC,OAAOuhC,EACpB,CAIJ,IAAAjM,IAAyCH,EAAzCG,EAAAC,EAAuB5V,EAAOyhB,GAAKzhB,UAAMwV,EAAAG,KAAAE,MAAE,CAAA,IAAhC5D,EAAQuD,EAAAp2B,MACT0iC,EAAKr5B,SAASmI,cAAc,MACLkxB,EAAG9xB,YAAT,OAAnBiiB,EAAS7yB,MAAiCggB,GAAkB6S,EAAS5S,YAAaT,GAAQ,GACxEF,GAAmBuT,EAAS7yB,MAAO6yB,EAAStT,UAAWC,GAAQ,GACrF8iB,EAASrhC,OAAOyhC,EACpB,CAEAI,EAAS3hC,KAAKmhC,EAClB,CACA,OAAOQ,CACX,CArDwBI,CAAc9iB,EAAKQ,OAAQpB,IAC3CmiB,EAAM1gC,OAAO4hC,EACjB,CAEA,OAAOlB,CACX,CAhGsBwB,CAAc/iB,EAAMZ,GAElC,GAAIxO,EAAQwc,WAAY,CACpB,IAAM4V,EAAa7B,EAAW,SACxB8B,EAAeh6B,SAASmI,cAAc,KAK5C,GAJA6xB,EAAaztB,GAAKwtB,EAClBC,EAAazyB,YAAcwP,EAAK+N,OAAO3O,GACvC6jB,EAAarsB,UAAY,mBAErBoJ,EAAKiO,gBAAgB7wB,OAAS,EAAG,CACjC,IAAM4wB,EAAmBhO,EAAKiO,gBAAgBzoB,IAAI,SAAA5F,UAASA,EAAMwf,EAAO,GAAE9Z,KAAK,OAC/E29B,EAAapiC,OAAOoI,SAASmI,cAAc,MAAO4c,EACtD,CAEAuT,EAAMjwB,aAAa,kBAAmB0xB,GAEtC3B,EAAUxgC,OAAOoiC,EACrB,CAEA5B,EAAUxgC,OAAO0gC,GAEjB,IAAI2B,GAA2B,EAGzBC,EAAc,SAAChc,GACjB,IAAMic,EAAOn6B,SAASmI,cAAc,QAC/B8xB,GAAiBE,EAAKviC,OAAOoI,SAASmI,cAAc,OACzDgyB,EAAKviC,OAAOsmB,GACZka,EAAUxgC,OAAOuiC,GACjBF,GAAkB,CACtB,EAGA,GAAItyB,EAAQyyB,UAAW,CACnB,IAAMC,EAAWlgB,GAAkBpD,EAAKkE,MAAO9E,GAE/C+jB,EADyBnlB,GAAazE,KAAK6F,GAAO,KAAKkkB,EAE3D,CAQA,GALIlC,GACA+B,EAAY/B,GAIZxwB,EAAQ6c,iBAAmBzN,EAAK1C,YAAa,CAC7C,IAAMoQ,EAAkBnJ,GAA4BvE,EAAK1C,YAAa8B,GAClEsO,GACAyV,EAAYzV,EAEpB,CAGI9c,EAAQ2yB,aAERJ,EAD2BnlB,GAAa1E,OAAO8F,GAAYY,KAAAA,EAAKuN,QAAQ/nB,IAAI,SAAA8T,GAAM,OAAIA,EAAO8F,EAAO,GAAE9Z,KAAK,MAInH,CAAE,MAAOmF,GACLD,QAAQC,MAAMA,GACd42B,EAAUmC,kBACV,IAAMC,EAAex6B,SAASmI,cAAc,MAC5CqyB,EAAa5iC,OAAOmd,GAAaxE,mBAAmB4F,IACpDiiB,EAAUxgC,OAAO4iC,EACrB,CACJ,CAiFA,IAAMn2B,GAAU,SAAC1I,EAAyBC,GAAuB,OAC7DhI,OAAOib,KAAKlT,GAAGklB,MAAM,SAAAuT,GAAQ,OAAAz4B,EAAEy4B,IAASx4B,EAAEw4B,EAAK,EAAC,EAE9CuF,GAAoB,SAACpiB,GACvB,IAAKA,EAAO,GAAGiC,cAAkD,IAAlCjC,EAAO,GAAGiC,aAAarlB,OAAc,MAAO,GAG3E,IAFA,IAAMulC,EAAqB1kC,MAAMuiB,EAAO,GAAGiC,aAAarlB,QAAQsmC,KAAK,GAE5DvB,EAAM,EAAGA,EAAM3hB,EAAO,GAAGiC,aAAarlB,OAAQ+kC,IACnD,IAAK,IAAIF,EAAM,EAAGA,EAAMzhB,EAAOpjB,OAAS,GAChCkQ,GAAQkT,EAAOyhB,GAAKxf,aAAa0f,GAAM3hB,EAAOyhB,EAAI,GAAGxf,aAAa0f,IAD/BF,IACsCU,EAASR,KAI9F,OAAOQ,CACX,EAEMX,GAAoB,SAACnf,GACvB,IAAKA,GAAgD,IAA5BA,EAAiBzlB,OAAc,MAAO,GAG/D,IAFA,IAAM2kC,EAAqB9jC,MAAM4kB,EAAiB,GAAGzlB,QAAQsmC,KAAK,GAEzDzB,EAAM,EAAGA,EAAMpf,EAAiB,GAAGzlB,OAAQ6kC,IAClD,IAAK,IAAIE,EAAM,EAAGA,EAAMtf,EAAiBzlB,OAAS,GAC7CkQ,GAAQuV,EAAiBsf,GAAKF,GAAMpf,EAAiBsf,EAAM,GAAGF,IADdE,IACqBJ,EAASE,KAIrF,OAAOF,CACX,EC3La4B,GAAmB,SAAC9H,GAC7B,IAAM+H,EAAwB/H,EAAiBA,EAAexrB,MAAM,KAAK,GAAK,GAExEmU,EAAO,IAAIC,KASjB,OAAUmf,EAAqB,IAPlBpf,EAAKgH,eACHhH,EAAKiH,WAAa,GAAG5W,WAAWgvB,SAAS,EAAG,KAC/Crf,EAAKsf,UAAUjvB,WAAWgvB,SAAS,EAAG,SACpCrf,EAAKuf,WAAWlvB,WAAWgvB,SAAS,EAAG,KACrCrf,EAAKwf,aAAanvB,WAAWgvB,SAAS,EAAG,KACzCrf,EAAKyf,aAAapvB,WAAWgvB,SAAS,EAAG,IAG7D,ECLaK,GAAc,SAAClkB,EAAYZ,GAA0B,IAAA+L,EAAAQ,EAAA6V,EAAA2C,EAAA1C,EAAA2C,EAAAC,EAAAC,IAEhC,OAA1BnZ,EAAAnL,EAAK4D,4BAAqB,EAA1BuH,EAA4BtH,qBAAsBjL,2BAAmBmL,4BACxC,OAA1B4H,EAAA3L,EAAK4D,4BAAqB,EAA1B+H,EAA4B9H,qBAAsBjL,2BAAmBoL,2BAEzDhE,EAAOgd,GAAkBhd,IAE5C,IAAM0hB,EAAgDF,OAAnCA,SAAA2C,EAAGnkB,EAAK6C,iBAAiB,WAAtBshB,EAA0B/mC,QAAMokC,EAAI,EACpDG,EAAmD,OAAtCF,EAAiB,OAAjB2C,EAAGpkB,EAAKQ,OAAO,SAAE,EAAd4jB,EAAgB3hB,aAAarlB,QAAMqkC,EAAI,EACvD8C,GAA0CF,OAA9BA,EAACC,OAADA,EAACtkB,EAAKQ,OAAO,SAAZ8jB,EAAAA,EAAgB9jB,OAAOpjB,QAAMinC,EAAI,GAAK1C,EAGnDt/B,EAAiD,KAArC2b,GAAarE,aAAayF,GAAiB,IAAM,IAC7DolB,EAAY,KAEdC,EAAMC,GAAY,CAAA,IAAK1kB,EAAK+N,OAAO3O,QAAa,EAAGmlB,EAAWliC,EAAWmiC,GAGzExkB,EAAKiO,gBAAgB7wB,OAAS,IAC9BqnC,GAAOC,GAAY,CAAK1kB,IAAAA,EAAKiO,gBAAgBzoB,IAAI,SAAA5F,GAAS,OAAAA,EAAMwf,EAAO,GAAE9Z,KAAK,OAAU,KAAE,EAAGi/B,EAAWliC,EAAWmiC,IAIvH,IAHC,IAAAtO,WAAA31B,GAIGkkC,GAAOC,GAAY1kB,EAAK6C,iBAAiBrd,IAAI,SAAAm/B,GAAK,MAAA,IAAQA,EAAMpkC,GAAO6e,GAAU,GAAA,GAAGuiB,EAAe4C,EAAWliC,EAAWmiC,EAC7H,EAFSjkC,EAAQ,EAAGA,EAAQmhC,EAAenhC,IAAO21B,EAAA31B,GAwBlD,OAnBAyf,EAAKQ,OAAO/W,QAAQ,SAACm7B,GACjB,IAAI3C,EAAgB,GAChB2C,EAAMniB,aAAarlB,OAAS,IAAG6kC,EAAM2C,EAAMniB,aAAajd,IAAI,SAAAsG,GAAI,MAAA,IAAQA,EAAKsT,GAAU,GAAA,IAG3F6iB,EAAMA,EAAI9jC,OAAOymC,EAAMpkB,OAAOhb,IAAI,SAAAtI,GAC9B,OAAgB,OAAZA,EAAE0C,MAAuBggB,GAAkB1iB,EAAE2iB,YAAaT,GAClDF,GAAmBhiB,EAAE0C,MAAO1C,EAAEiiB,UAAWC,EACzD,IAEAqlB,GAAOC,GAAYzC,EAAK,EAAGsC,EAAWliC,EAAWmiC,EACrD,GAGAC,GAAOC,GAAY,KAAK1mB,GAAazE,KAAK6F,GAAYgE,KAAAA,GAAkBpD,EAAKkE,MAAO9E,GAAW,KAAE,EAAGmlB,EAAWliC,EAAWmiC,GAG1HC,GAAOC,GAAY,CAAK1mB,IAAAA,GAAa1E,OAAO8F,GAAO,KAAKY,EAAKuN,QAAQ/nB,IAAI,SAAA8T,GAAM,OAAIA,EAAO8F,EAAO,GAAE9Z,KAAK,MAAK,KAAM,EAAGi/B,EAAWliC,EAGrI,EAEawiC,GAA0B,SAAC7kB,EAAYZ,GAAc,MAA6C,CAC3G0lB,QAAS,WACL,IAAML,EAAMP,GAAYlkB,EAAMZ,GACxB2lB,EAmBH,IAAIC,KAAK,CADJ,SAlBqBP,GAmBJ,CAAEjjC,KAAM,4BAhB3ByjC,EAAMC,IAAIC,gBAAgBJ,GAC1BK,EAAOn8B,SAASmI,cAAc,KACpCg0B,EAAK9zB,aAAa,OAAQ2zB,GAC1BG,EAAK9zB,aAAa,WAAYqyB,GAAiB3jB,EAAK4b,oBAAsB,QAG1E3yB,SAASo8B,KAAK3zB,YAAY0zB,GAG1BA,EAAKE,OACT,EACAne,KAAMnJ,GAAa7C,YAAYiE,GAClC,EAOD,SAASslB,GAAY5X,EAAgByY,EAAoBC,EAAgBnjC,EAAmBojC,YAAAA,IAAAA,EAAmB,IAE3G,IADA,IAAIhB,EAAM,GACDxnC,EAAI,EAAGA,EAAIuoC,EAAQvoC,IACpBA,GAAKsoC,GAActoC,EAAIsoC,EAAazY,EAAK1vB,SACzCqnC,GAAO3X,EAAK7vB,EAAIsoC,IAEhBtoC,EAAIuoC,EAAS,IAAGf,GAAOpiC,GAE/B,OAAOoiC,EAAMgB,CACjB,KCjFaC,GAAiC,CAC1C,oEACA,yEACA,+CACA,qEACA,gFACA,4EACA,4EACA,kEC0BJ,SAASC,GAAgBC,GAGrB,IAAMrhC,EAAS/E,KAAKinB,MAAMmf,EAAW,IAC/BC,EAASpmC,OAAOqmC,cAAc,GAAMF,EAAW,IAAKG,cAE1D,OAAe,IAAXxhC,EAAqBshC,EACbF,GAAgBphC,EAAS,GAAKshC,CAC9C,CAEA,ICrDaG,GAAgB,sEFFiB,CAC1C,oEACA,gFACA,qEACA,yEACA,+CACA,4EACA,4EACA,kEEL2B1gC,KAAK,KAAI,+JC4DxC,SAAS2gC,GAAanZ,EAA2ByY,EAAoBC,GAEjE,IADA,IAAMU,EAAmB,IAAIjoC,MAAMunC,GAC1BvoC,EAAI,EAAGA,EAAIuoC,EAAQvoC,IAC6BipC,EAAQjpC,GAAzDA,GAAKsoC,GAActoC,EAAIsoC,EAAazY,EAAK1vB,OAAqB0vB,EAAK7vB,EAAIsoC,GACzD,KAEtB,OAAOW,CACX,CC3CsB,wCAAAC,GAAyB,SAACnmB,EAAaZ,GAAc,IAEvE,IAAMgnB,EDpB8D,SAACpmB,EAAMZ,GAAU+L,IAAAA,EAAAQ,EAAA6V,EAAA2C,EAAA1C,EAAA2C,EAAAC,EAAAC,IAGjFnZ,OAAAA,EAAAnL,EAAK4D,4BAALuH,EAAAA,EAA4BtH,qBAAsBjL,QAAkBA,mBAACmL,4BAClE4H,OAAAA,EAAA3L,EAAK4D,4BAAL+H,EAAAA,EAA4B9H,qBAAsBjL,QAAkBA,mBAACoL,2BAEzDhE,EAAOgd,GAAkBhd,IAE5C,IAAM0hB,EAAgD,OAAnCF,EAA2B,OAA3B2C,EAAGnkB,EAAK6C,iBAAiB,SAAE,EAAxBshB,EAA0B/mC,QAAMokC,EAAI,EACpDG,EAAmD,OAAtCF,EAAG2C,OAAHA,EAAGpkB,EAAKQ,OAAO,SAAZ4jB,EAAAA,EAAgB3hB,aAAarlB,QAAMqkC,EAAI,EACvD8C,GAA0C,OAA9BF,EAACC,OAADA,EAACtkB,EAAKQ,OAAO,SAAZ8jB,EAAAA,EAAgB9jB,OAAOpjB,QAAMinC,EAAI,GAAK1C,EAGnD0E,EAAYJ,GAAa,CAACjmB,EAAK+N,OAAO3O,IAAU,EAAGmlB,GAGnD+B,EAAgBtmB,EAAKiO,gBAAgB7wB,OAAS,EAC9C,CAAC6oC,GAAa,CAACjmB,EAAKiO,gBAAgBzoB,IAAI,SAAA5F,GAAK,OAAIA,EAAMwf,EAAO,GAAE9Z,KAAK,QAAS,EAAGi/B,IACjF,GAGAgC,EAAmBtoC,MAAMJ,KAAK,CAAET,OAAQskC,GAAiB,SAAC/8B,EAAGpE,GAAK,OACpE0lC,GAAajmB,EAAK6C,iBAAiBrd,IAAI,SAAAm/B,UAASA,EAAMpkC,GAAO6e,EAAO,GAAGuiB,EAAe4C,EAAU,GAI9F7B,EAAW1iB,EAAKQ,OAAOhb,IAAI,SAACo/B,GAC9B,IAAI3C,EAA2B,GAS/B,OARI2C,EAAMniB,aAAarlB,OAAS,IAAG6kC,EAAM2C,EAAMniB,aAAajd,IAAI,SAAAsG,GAAQ,OAAAA,EAAKsT,EAAO,IAQ7E6mB,GALPhE,EAAMA,EAAI9jC,OAAOymC,EAAMpkB,OAAOhb,IAAI,SAAAtI,GAC9B,OAAgB,OAAZA,EAAE0C,MAAuBggB,GAAkB1iB,EAAE2iB,YAAaT,GAClDsE,OAAOxmB,EAAE0C,MAAM+jB,QAAQzmB,EAAEiiB,WACzC,IAEyB,EAAGolB,EAChC,GAGMiC,EAAUP,GAAa,CAAIjoB,GAAazE,KAAK6F,GAAO,KAAKgE,GAAkBpD,EAAKkE,MAAO9E,IAAY,EAAGmlB,GACtGkC,EAAYR,GAAa,CAAIjoB,GAAa1E,OAAO8F,GAAYY,KAAAA,EAAKuN,QAAQ/nB,IAAI,SAAA8T,GAAU,OAAAA,EAAO8F,EAAO,GAAE9Z,KAAK,OAAU,EAAGi/B,GAGhI,MAAA,CACI8B,GAASloC,OACNmoC,EACAC,EACA7D,GACH8D,EACAC,GAER,CChCiBC,CAAc1mB,EAAMZ,GAC3BunB,EH1BmB,SAACP,GAC1B,IAAMQ,EAOV,SAAsBC,GAGlB,IADA,IAAMC,EAAiB,GACf7pC,EAAI,EAAGA,GAAK4pC,EAAW5pC,IAC3B6pC,EAAK/lC,KAAkB9D,aAAAA,YAAWA,EAAC,kBAEvC,OAAO6pC,EAAI,SAAYA,EAAgB,UAAA,EAC3C,CAduBC,CAAavnC,KAAK2lB,IAAG1nB,MAAR+B,KAAY4mC,EAAK5gC,IAAI,SAAAgE,UAAKA,EAAEpM,MAAM,KAC5D4pC,EAgBV,SAAmBZ,GAEf,OAAOA,EAAK5gC,IAAI,SAACy8B,EAAK7J,GAClB,IAAM6O,EAAWhF,EACZz8B,IAAI,SAACupB,EAAMmY,UAQxB,SAAmBnY,EAAaoY,EAAsBC,GAElD,OAAa,OAATrY,EAA0B,KAGT,iBAAVA,EACQ4W,SAAAA,GAAgBwB,GAAgBC,6BIvC7CC,EAAwC,CAC1C,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UJkCoGtY,EIhChGnb,WAAW,WAAY,SAAA0zB,GAAQ,OAAAD,EAAWC,EAAK,8BJiC5C3B,GAAgBwB,GAAgBC,EAAS,QAAQrY,EAAc,WIzC7E,IACIsY,CJ0CV,CAjBsCE,CAAUxY,EAAMmY,EAAW9O,EAAW,EAAE,GACjEp3B,OAAO,SAAA+tB,GAAI,OAAa,OAATA,CAAa,GAC5BzpB,KAAK,IACV,MAAA,YAAkB8yB,EAAW,GAAM6O,KAAAA,UACvC,GAAG3hC,KAAK,GACZ,CAzBoBkiC,CAAUpB,GAC1B,OAgDwB,SAACQ,EAAoBI,GACpCtB,MAAAA,sCAAAA,GAAoBpgC,KAAK,eAChCshC,EAAU,8BAENI,EAEG,kCAAA,CAtDFS,CAAoBb,EAAYI,EAC3C,CGsBsBU,CAActB,GAE1BuB,EAAU,CACZC,GAAI,CACA,wBAAyBC,EAAOA,QAAClB,GACjC,eAAgBkB,EAAAA,QAAQ7B,IACxB,0BAA2B6B,EAAAA,oTAE/B,cAAeA,EAAOA,QF1BA,6UE2BtB,sBAAuBA,EAAOA,QFD7B,6iBEIL,OAAAC,QAAAC,QAAO,IAAID,QAAc,SAACC,EAASC,GAS/BC,EAAGA,IAACN,EAR4B,SAACO,EAAKpb,GAClC,GAAIob,EAAK,OAAOF,EAAOE,GACvB,IAAMnD,EAAO,IAAIC,KACb,CAAClY,EAAKqb,kBAAkBC,YAActb,EAAKqb,OAAS,IAAIE,WAAWvb,IACnE,CAAEtrB,KAAM,sEAEZ,OAAOumC,EAAQhD,EACnB,EAEJ,GACJ,CAAC,MAAA//B,GAAA,OAAA8iC,QAAAE,OAAAhjC,KA7CYsjC,GAA0B,SAACtoB,EAAYZ,GAAoE,MAAA,CACpH0lB,QAAOA,WAAa,OAAAgD,QAAAC,QACG5B,GAA0BnmB,EAAMZ,IAAOmpB,KAApDxD,SAAAA,GAGN,IAAME,EAAMC,IAAIC,gBAAgBJ,GAC1BK,EAAOn8B,SAASmI,cAAc,KACpCg0B,EAAK9zB,aAAa,OAAQ2zB,GAC1BG,EAAK9zB,aAAa,WAAYqyB,GAAiB3jB,EAAK4b,oBAAsB,SAG1E3yB,SAASo8B,KAAK3zB,YAAY0zB,GAG1BA,EAAKE,OAAQ,EACjB,EACAne,KAAMnJ,GAAa9C,aAAakE,GACnC,EExBYopB,GAAW,CAAC,OAAQ,QAAS,WAAY,eAAgB,QCSzDC,GAA6B,SAAzBhhB,GAA2B,IAAAihB,EAAIjhB,EAAJihB,KAAIC,EAAAlhB,EAAEmhB,aAAAA,WAAYD,GAAMA,EAChE,OAAOD,GACH,IAAK,OACD,OACIG,EAAkB,QAAAz3B,cAAA,MAAA,CAAA,eAAA,EAAM03B,MAAM,6BAA6B3c,MAAM,UAAUC,OAAO,UAAU2c,QAAQ,oBAChGF,UAAYz3B,cAAA,OAAAkN,EAAAsqB,GAAAA,EAAe,CAAE,EAAG,CAACrxB,MAAO,CAACmsB,KAAM,YAAa3+B,CAAAA,EAAE,oNAC9D8jC,EAAY,QAAAz3B,cAAA,OAAAkN,EAAA,CAAA,EAAAsqB,EAAe,CAAE,EAAG,CAACrxB,MAAO,CAACmsB,KAAM,YAAW,CAAE3+B,EAAE,mOAC9D8jC,EAAAA,QAAYz3B,cAAA,OAAAkN,EAAAsqB,CAAAA,EAAAA,EAAe,CAAE,EAAG,CAACrxB,MAAO,CAACmsB,KAAM,YAAa3+B,CAAAA,EAAE,0OAG1E,IAAK,QACD,OACI8jC,EAAAA,QAAkBz3B,cAAA,MAAA,CAAA,eAAA,EAAM03B,MAAM,6BAA6B3c,MAAM,UAAUC,OAAO,UAAU2c,QAAQ,mBAChGF,UAAYz3B,cAAA,OAAAkN,EAAA,CAAA,EAAAsqB,EAAe,CAAE,EAAG,CAACrxB,MAAO,CAACmsB,KAAM,YAAW,CAAE3+B,EAAE,2RAC9D8jC,UAAYz3B,cAAA,OAAAkN,EAAAsqB,CAAAA,EAAAA,EAAe,CAAA,EAAK,CAACrxB,MAAO,CAACmsB,KAAM,YAAa3+B,CAAAA,EAAE,opBAG1E,IAAK,WACD,OACI8jC,EAAkB,QAAAz3B,cAAA,MAAA,CAAA,eAAA,EAAM03B,MAAM,6BAA6B3c,MAAM,UAAUC,OAAO,UAAU2c,QAAQ,mBAChGF,EAAY,QAAAz3B,cAAA,OAAAkN,EAAAsqB,CAAAA,EAAAA,EAAe,CAAA,EAAK,CAACrxB,MAAO,CAACmsB,KAAM,YAAa3+B,CAAAA,EAAE,2cAC9D8jC,EAAY,QAAAz3B,cAAA,OAAAkN,KAAAsqB,EAAe,GAAK,CAACrxB,MAAO,CAACmsB,KAAM,aAAa3+B,EAAE,kOAG1E,IAAK,eACD,OACI8jC,UAAkBz3B,cAAA,MAAA,CAAA,eAAA,EAAM03B,MAAM,6BAA6B3c,MAAM,UAAUC,OAAO,UAAU2c,QAAQ,qBAChGF,EAAY,QAAAz3B,cAAA,OAAAkN,EAAAsqB,CAAAA,EAAAA,EAAe,CAAE,EAAG,CAACrxB,MAAO,CAACmsB,KAAM,YAAa3+B,CAAAA,EAAE,0lBAC9D8jC,EAAAA,QAAYz3B,cAAA,OAAAkN,EAAA,GAAAsqB,EAAe,CAAA,EAAK,CAACrxB,MAAO,CAACmsB,KAAM,YAAW,CAAE3+B,EAAE,8iBAG1E,IAAK,OACD,OACI8jC,EAAkB,QAAAz3B,cAAA,MAAA,CAAA,eAAA,EAAM03B,MAAM,6BAA6B3c,MAAM,UAAUC,OAAO,UAAU2c,QAAQ,mBAChGF,UAAYz3B,cAAA,OAAAkN,KAAAsqB,EAAe,CAAE,EAAG,CAACrxB,MAAO,CAACmsB,KAAM,aAAa3+B,EAAE,4eAC9D8jC,EAAY,QAAAz3B,cAAA,OAAAkN,EAAA,CAAA,EAAAsqB,EAAe,GAAK,CAACrxB,MAAO,CAACmsB,KAAM,YAAW,CAAE3+B,EAAE,4VAG1E,QACI,OACI8jC,EAAAA,QAAAz3B,cAAA,OAAA,oBAAmBs3B,EACnBG,EAAA,QAAAz3B,cAAA,MAAA,CAAA,eAAkB,EAAM03B,MAAM,6BAA6B3c,MAAM,UAAUC,OAAO,UAAU2c,QAAQ,mBAChGF,EAAY,QAAAz3B,cAAA,OAAAkN,EAAA,CAAA,EAAAsqB,EAAe,GAAK,CAACrxB,MAAO,CAACmsB,KAAM,YAAW,CAAE3+B,EAAE,uRAC9D8jC,EAAAA,QAAYz3B,cAAA,OAAAkN,EAAAsqB,CAAAA,EAAAA,EAAe,GAAK,CAACrxB,MAAO,CAACmsB,KAAM,YAAa3+B,CAAAA,EAAE,g3BAKlF,EC1CMikC,GAASC,GAAOrxB,EAAUA,WAA8D,SAACnW,EAAOkW,GAAS,OAAAkxB,UAAAz3B,cAAA,SAAAkN,GAAQ3G,IAAKA,GAASlW,GAAS,GAA/HwnC,CAAkIC,KAAAA,GAAAC,EAAA,CAAA,oZAkB3IC,GAAaH,GAAOrkC,EAACykC,KAAAA,GAAAF,EAa1B,CAAA,sUAEKG,GAAWL,GAAOM,GAAEC,KAAAA,GAAAL,EACK,CAAA,kCAAA,kCAAA,sCAAA,qCAAA,yBAAA,kEAAA,SAAA9rC,GAAC,OAAIA,EAAEosC,SAAW,OAAS,KAAK,EACjC,SAAApsC,GAAC,OAAIA,EAAEosC,SAAW,OAAS,KAAK,EAC5B,SAAApsC,GAAK,OAAAA,EAAEqsC,QAAU,OAAS,KAAK,EAChC,SAAArsC,GAAC,OAAIA,EAAEqsC,QAAU,OAAS,KAAK,EAC3C,SAAArsC,GAAK,OAAAA,EAAEssC,WAAa,oBAAsB,KAAK,GAM9DC,GAAiBX,GAAOpjB,IAAGgkB,KAAAA,GAAAV,EAAA,CAAA,0MAW3BW,GAAcb,GAAOpjB,IAAGkkB,KAAAA,GAAAZ,EAAA,CAAA,qIAUxBa,GAAcf,GAAO7F,KAAI6G,KAAAA,GAAAd,EAAA,CAAA,sBAAA,wBAAA,SACZ,SAAA9rC,GAAC,OAAIA,EAAE6sC,eAAiB,SAAW,KAAK,EACvC,SAAA7sC,GAAC,OAAIA,EAAE8sC,eAAiB,SAAW,KAAK,GAGtDC,GAAmBnB,GAAO7F,KAAIiH,KAAAA,GAAAlB,+KA2BvBmB,GAAW1yB,EAAUA,WAAwD,SAAA6P,EAAgL9P,GAA7K,IAErF4yB,EAKAC,EAPqFrjB,EAAIM,EAAJN,KAAM2d,EAAOrd,EAAPqd,QAASG,EAAGxd,EAAHwd,IAAKwF,EAAUhjB,EAAVgjB,WAAYC,EAAUjjB,EAAVijB,WAAYC,EAAUljB,EAAVkjB,WAAYC,EAAUnjB,EAAVmjB,WAAYxrB,EAAMqI,EAANrI,OAAQyrB,EAAQpjB,EAARojB,SAAQC,EAAArjB,EAAEsjB,gBAAAA,WAAeD,GAAQA,EAAAE,EAAAvjB,EAAEwjB,QAAAA,OAAU,IAAHD,GAAQA,EAAAE,EAAAzjB,EAAE0jB,OAAAA,OAAM,IAAAD,GAAQA,EAAAE,EAAA3jB,EAAEma,SAAAA,WAAQwJ,GAAI,EAACA,EAAAC,EAAA5jB,EAAElnB,MAAAA,OAAQ,IAAH8qC,GAAI,EAACA,EAG9PV,IACAJ,EAA2C,iBAAfI,GAA2BnC,GAASr0B,SAASw2B,GAAwB9B,EAAAA,QAAAz3B,cAACq3B,GAAI,CAACG,cAAc,EAAMF,KAAMiC,IAA0BA,GAI3JC,IACAJ,EAA2C,iBAAfI,GAA2BpC,GAASr0B,SAASy2B,GAAwB/B,EAAAA,QAAAz3B,cAACq3B,GAAI,CAACG,cAAc,EAAMF,KAAMkC,IAA0BD,GAG/J,IAaMhD,EACFkB,EAAAA,QAAAz3B,cAACw4B,GAAc,KAEPW,GAAqB1B,EAAA,QAAAz3B,cAAC04B,GAAW,KAAES,GAEvC1B,EAAA,QAAAz3B,cAAC44B,GAAW,CAAAE,iBAAmBS,EAAUR,iBAAoBS,GAAcF,GAAavjB,GAEpFyjB,GAAc/B,EAAAA,QAAAz3B,cAAC04B,GAAW,KAAEU,GAG5BE,GAAc7B,EAAA,QAAAz3B,cAAAy3B,EAAA,QAAAyC,SAAA,KAAEzC,EAAC,QAAAz3B,cAAAg5B,QAAkBpsB,GAAaf,aAAamC,IAA2BypB,UAAAz3B,cAAC04B,GAAW,KAACjB,EAAA,QAAAz3B,cAACq3B,GAAI,CAACG,cAAc,EAAMF,KAAM,oBAKjJ,OAAIzD,EAEI4D,EAAAA,sBAACS,GAAQ,CAAAG,SAAWwB,EAAkBvB,QAAAyB,aAAoBJ,GACtDlC,EAAAA,QAAAz3B,cAACg4B,GAAU,CAACmC,KAAK,WAAW/1B,GAAOq1B,EAAQ,aAAatqC,EAASoX,IAAKA,EAAqCuoB,KAAM+E,EAAKp0B,OAAQ45B,EAAa,cAAWhsC,EAAW+sC,IAAKf,EAAa,2BAAwBhsC,EAAWqvB,MAAO3G,eAAkBA,EAAMskB,UA/B3O,SAACzmC,GACL,MAAVA,EAAEqZ,MACFrZ,EAAE0mC,iBACD1mC,EAAE6L,OAA6By0B,QAExC,EA0B2RR,QAxBvQ,SAAC9/B,GACb8/B,GACAA,GAER,EAoBiTlD,SAAUA,GAC1S+F,IAMb7C,EACQ+D,wBAACS,GAAQ,CAAAG,SAAWwB,EAAkBvB,QAAAyB,aAAoBJ,GAC9DlC,EAAA,QAAAz3B,cAAC43B,GAAM,CAACuC,KAAK,WAAW/1B,GAAOq1B,EAAQ,aAAatqC,EAASoX,IAAKA,EAAqCmtB,QAASA,EAASlD,SAAUA,GAC9H+F,IAILkB,EAAK,QAAAz3B,cAAAy3B,EAAA,QAAAyC,SAAA,KACjB,GC9JMK,GAAgB1C,GAAOpjB,IAAGqjB,KAAAA,GAAAC,EAG/B,CAAA,kDAEKyC,GAAY3C,GAAO4C,OAAMxC,KAAAA,GAAAF,EAAA,CAAA,8LAYzB2C,GAAa7C,GAAOpjB,IAAG2jB,KAAAA,GAAAL,EAI5B,CAAA,oEAEK4C,GAAc9C,GAAOpjB,IAAGgkB,KAAAA,GAAAV,EAAA,CAAA,2MAUxB6C,GAAO/C,GAAOgD,GAAElC,KAAAA,GAAAZ,EAIrB,CAAA,sEAgCe,SAAA+C,GAA0BC,GACtC,IAiBIC,EACAC,EAhBEC,EAA+B,IAG/BC,EAAqBJ,EAAS7jB,MAAMkkB,WACpCC,EAAsBN,EAAS7jB,MAAMokB,YAGvC9mC,EAAsBpG,KAAK2lB,IATS,GAWpC3lB,KAAKovB,IAV+B,EAYhC2d,EAAaE,IAwBrB,OAhBI7mC,EAAc,GAEdwmC,GADAC,EAAc7sC,KAAK2lB,IAAImnB,EAAsB9sC,KAAKovB,IAnBjB,IAmB2C6d,KACjD7mC,GACV0mC,IAEbD,GADAD,EAAaE,GACc1mC,IAI/BymC,GADAD,EAAa5sC,KAAK2lB,IAAImnB,EAAsB9sC,KAAKovB,IA1BhB,IA0B0C2d,KAChD3mC,GACT0mC,IAEdF,GADAC,EAAcC,GACa1mC,GAI5B,CAAEwmC,WAAAA,EAAYC,YAAAA,EACzB,CAEA,IAAMM,GAAc,SAACpsC,EAAeqsC,GAChC,OAAyB,GAAlBA,GAAuBA,IAAkBrsC,EAAQ,GAAK,CACjE,EAEassC,GAAyC,SAA/BplB,GAAkC,IAAAqlB,EAAQrlB,EAARqlB,SAAUC,EAAetlB,EAAfslB,gBAAiBC,EAAWvlB,EAAXulB,YAAaC,EAAmBxlB,EAAnBwlB,oBAAqB7tB,EAAMqI,EAANrI,OAAM8tB,EAAAzlB,EAAE0lB,qBAAAA,OAAuB,IAAHD,GAAQA,EAAEE,EAAuB3lB,EAAvB2lB,wBAAyB/d,EAAiB5H,EAAjB4H,kBACjLge,EAA4BxE,EAAAA,QAAMl+B,UAAS,GAApC2iC,EAAMD,EAAEE,GAAAA,EAASF,EACxB,GAAAG,EAA0C3E,EAAK,QAACl+B,UAAU,GAAnDiiC,EAAaY,EAAA,GAAEC,EAAgBD,EAAA,GAChC3C,EAAmB6C,EAAAA,QAEnBC,EAAY9E,EAAK,QAAC+E,OAAO,IAAI9jC,KAC7B+jC,EAAUhF,EAAAA,QAAM+E,OAAY,MAC5BE,EAAY,SAAC9oC,GACX6oC,EAAQE,SAAWT,IAAWO,EAAQE,QAAQC,SAAShpC,EAAE6L,SACzDo9B,GAAe,EAEvB,EAEApF,EAAAA,QAAMqF,UAAU,WACZC,GACJ,EAAG,CAACvB,IAGJ,IAAMwB,EAAoB,SAAC7tC,GAAkB,OAAA,SAAC8tC,GAC1CV,EAAUI,QAAQ5jC,IAAI5J,EAAO8tC,EACjC,CAAC,EAEDplC,SAASqlC,iBAAiB,YAAaR,GACvC,IAAMS,EAAY1J,GAAwBiI,EAAU1tB,GAC9CovB,EAAalG,GAAwBwE,EAAU1tB,GAC/CqvB,EAAsBxB,MAAAA,OAAAA,EAAAA,EAAqBznC,IAAI,SAACkpC,EAAoBnuC,GACtE,MAAI,YAAamuC,EACN7F,wBAACyB,GAAQ,CACZ1I,SAAU+K,GAAYpsC,EAAOqsC,GAC7B3B,QAAmB,IAAV1qC,EACTA,MAAOA,EACPwqC,gBAAiBxqC,EAAQ,IAAM0sC,EAAoB7vC,OACnDgiB,OAAQA,EACRurB,WAAY+D,EAAmB/D,WAC/BC,WAAY8D,EAAmB9D,WAC/BvsB,IAAwBqwB,mBAAAA,EAAmBvnB,KAC3CA,KAAMunB,EAAmBvnB,KACzB2d,QAAS,WAAF,OAAQ6J,EAAoBD,EAAmB5J,QAAQ,EAC9DntB,IAAKy2B,EAAkB7tC,GACvBsqC,SAAUA,IAId,QAAS6D,EACF7F,EAAAA,QAAAz3B,cAACk5B,GACJ,CAAA1I,SAAU+K,GAAYpsC,EAAOqsC,GAC7B3B,QAAmB,IAAV1qC,EACTA,MAAOA,EACPwqC,gBAAiBxqC,EAAQ,IAAM0sC,EAAoB7vC,OACnDgiB,OAAQA,EACRurB,WAAY+D,EAAmB/D,WAC/BC,WAAY8D,EAAmB9D,WAC/BF,WAAYgE,EAAmBhE,WAC/BrsB,IAAG,mBAAqBqwB,EAAmBvnB,KAC3CA,KAAI,GAAKunB,EAAmBvnB,KAC5B8d,IAAKyJ,EAAmBzJ,IACxBwF,WAAYiE,EAAmBjE,WAC/B3F,QAAS,WAAM,OAAA6J,GAAqB,EACpCh3B,IAAKy2B,EAAkB7tC,GACvBsqC,SAAUA,SAhBlB,CAmBJ,GAEM+D,EAAwB,WAC1B,IAAMC,EAAQ,GACVC,EAAY7B,EAAsBA,EAAoB7vC,OAAS,EAyGnE,OAvGAyxC,EAAM9tC,KAAK8nC,EAAAA,QAAAz3B,cAACk5B,GAAQ,CAChB/pC,MAAOuuC,EACP7D,SAAUgC,EACV7tB,OAAQA,EACRurB,WAAY,WACZxjB,KAAMqnB,EAAWrnB,KACjB2d,QAAS,WAAF,OAAQ6J,EAAoBH,EAAW1J,QAAQ,EACtDlD,SAAU+K,GAAYmC,EAAWlC,GACjCj1B,IAAKy2B,EAAkBU,GACvBzwB,IAAG,iBACHwsB,SAAUA,KAGdiE,IACAD,EAAM9tC,KAAK8nC,EAAAA,QAAAz3B,cAACk5B,GACR,CAAA/pC,MAAOuuC,EACP3D,QAAS4B,EACThC,kBAAmBgC,EACnB3tB,OAAQA,EACRurB,WAAY,WACZxjB,KAAMonB,EAAUpnB,KAChB2d,QAAS,WAAF,OAAQ6J,EAAoBJ,EAAUzJ,QAAQ,EACrDlD,SAAU+K,GAAYmC,EAAWlC,GACjCj1B,IAAKy2B,EAAkBU,GACvBzwB,IAAG,gBACHwsB,SAAUA,KAGVkC,IACA+B,IACAD,EAAM9tC,KAAK8nC,EAAA,QAAAz3B,cAACk5B,GACR,CAAA/pC,MAAOuuC,EACP1vB,OAAQA,EACRurB,WAAY,WACZxjB,KAAMnJ,GAAa/C,YAAYmE,GAC/B0lB,QAAS,WAAM,OAAA6J,EAAoB,WAC/B,OAAA5B,EAAgBzkB,MAAMuI,UAAUke,YAAY,CACxCC,SAAarL,GAAAA,GAAiBmJ,EAASlR,oBACvCp6B,KAAM,gBACNytC,YAAa/C,GAA0Ba,GAAiBX,WACxD8C,aAAchD,GAA0Ba,GAAiBV,YACzDzkC,MAAO,GACR,CAAA,EAAG,EAAC,EAEXg6B,SAAU+K,GAAYmC,EAAWlC,GACjCj1B,IAAKy2B,EAAkBU,GACvBzwB,IAAG,gBACHwsB,SAAUA,KAGdiE,IACAD,EAAM9tC,KAAK8nC,EAAC,QAAAz3B,cAAAk5B,IACR/pC,MAAOuuC,EACP3D,QAAS6B,EACTjC,kBAAmBiC,EACnB5tB,OAAQA,EACRurB,WAAY,WACZxjB,KAAMnJ,GAAahD,YAAYoE,GAC/B0lB,QAAS,WAAF,OAAQ6J,EAAoB,WAAA,OAC/B5B,EAAgBzkB,MAAMuI,UAAUke,YAAY,CACxCC,SAAQ,GAAKrL,GAAiBmJ,EAASlR,oBACvCqT,YAAa/C,GAA0Ba,GAAiBX,WACxD8C,aAAchD,GAA0Ba,GAAiBV,YACzDzkC,MAAO,GACR,CAAE,EAAC,EAAC,EAEXg6B,SAAU+K,GAAYmC,EAAWlC,GACjCj1B,IAAKy2B,EAAkBU,GACvBzwB,IAAoB,gBACpBwsB,SAAUA,MAIdsE,IACAL,IACAD,EAAM9tC,KAAK8nC,EAAA,QAAAz3B,cAACk5B,GACR,CAAA/pC,MAAOuuC,EACP7D,SAAS,EACT7rB,OAAQA,EACR+H,KAAMkI,EAAoBrR,GAAaX,2BAA2B+B,GAAUpB,GAAaZ,0BAA0BgC,GACnH0lB,QAAS,WAAF,OAAQ6J,EAAoBvB,EAAwB,EAC3DxL,SAAU+K,GAAYmC,EAAWlC,GACjCj1B,IAAKy2B,EAAkBU,GACvBzwB,IAAG,4BACHwsB,SAAUA,MAIdmC,IACA8B,IACAD,EAAM9tC,KAAK8nC,EAAAA,QAACz3B,cAAAk5B,IACR/pC,MAAOuuC,EACP3D,QAAQ,EACR/rB,OAAQA,EACR+H,KAAM6lB,EAAYoC,UAAYpxB,GAAahB,uBAAuBoC,GAAUpB,GAAajB,sBAAsBqC,GAC/G0lB,QAAS,WAAM,OAAA6J,EAAoB3B,EAAYqC,cAAc,EAC7DzN,SAAU+K,GAAYmC,EAAWlC,GACjCj1B,IAAKy2B,EAAkBU,GACvBzwB,IAAmB,eACnBwsB,SAAUA,MAIXgE,CACX,EAEAX,EAASA,UAAC,WAIN,OAHAT,EAAiBH,EAAS,GAAK,GAC/BrkC,SAASqlC,iBAAiB,YAAaR,GACvC7kC,SAASqlC,iBAAiB,UAAWgB,GAC9B,WACHrmC,SAASsmC,oBAAoB,YAAazB,GAC1C7kC,SAASsmC,oBAAoB,UAAWD,EAC5C,CACJ,EAAG,CAAChC,IAEJ,IAAMkC,EAAsB,WAExB,OADqCvC,EAAsBA,EAAoB7vC,OAAS,GAC1DwxC,IAAwBxxC,OAAS,CACnE,EAEMkyC,EAAgB,SAACtqC,IACL,WAAVA,EAAEqZ,KACS,QAAVrZ,EAAEqZ,KAAiBivB,IACpBW,GAAe,EAAiB,WAAVjpC,EAAEqZ,KAEd,cAAVrZ,EAAEqZ,KAAuBivB,IACzBtoC,EAAE0mC,iBACF+B,EAAiB,SAACgC,GACd,IAAMC,EAAYD,EAAY,EAE9B,OAAOC,EADUF,IACa,EAAIE,CACtC,IAEU,YAAV1qC,EAAEqZ,KAAqBivB,IACvBtoC,EAAE0mC,iBACF+B,EAAiB,SAACgC,GACd,IAAMC,EAAYD,EAAY,EACxBE,EAAWH,IACjB,OAAOE,EAAY,EAAIC,EAAWD,CACtC,GAER,EAEME,EAAY/G,EAAAA,QAAM+E,OAA0B,MAC5Ce,EAAsB,SAAC7J,GACzBmJ,GAAe,GAAO,GAClBnJ,GAASA,GACjB,EAEMmJ,EAAiB,SAAC4B,EAAeC,GAEH,IAAAC,OAFgC,IAA7BD,IAAAA,GAA6B,GAChEvC,EAAUsC,IACLA,GAAQC,IACQ,OAAjBC,EAAAH,EAAU7B,UAAVgC,EAAmBC,QAE3B,EAEM7B,EAAqB,WAImB8B,IAAAA,GAHnB,IAAnBrD,GAGAe,EAAUI,QAAQ9jC,IAAI2iC,KACtBqD,OAAAA,EAAAtC,EAAUI,QAAQ7jC,IAAI0iC,KAAtBqD,EAAsCD,QAE9C,EAEMb,IACAnC,IACDA,EAAYoC,WACbtC,EAASlpB,sBAAsBC,mBAAqBjL,QAAkBA,mBAACga,YAE3E,OACIiW,EAAAA,QAACz3B,cAAAu6B,GAAc,CAAAh0B,IAAKk2B,GAChBhF,EAAAA,QAAAz3B,cAACw6B,GAAS,CAACj0B,IAAKi4B,EAAuB,aAAA,GAAG5xB,GAAavD,eAAe2E,mBAA0BkuB,EAAQxI,QAAS,WAAQmJ,GAAgBX,EAAQ,EAAiB,gBAAA,OAAsB,gBAAGzC,EAAe,SACtMhC,EAAAA,QAAAz3B,cAACq3B,GAAK,CAAAG,aAAcuE,EAAsBzE,KAAM4E,EAAS,QAAU,UAEvEzE,EAAAA,QAACz3B,cAAA06B,QAEOwB,GACAzE,EAAAA,QAAAz3B,cAAC26B,GAAW,KACJlD,EAAA,QAAAz3B,cAAC46B,GAAK,CAAAx2B,GAAOq1B,EAAQ,QAASU,KAAK,oBAAsBvtB,GAAAA,GAAavD,eAAe2E,GAA4B,mBAAA,mCAAqCyrB,EAAQ,aAAa+B,EAAiBhL,SAAU0L,EAAS,GAAK,GAC/ML,GAAuBwB,EACvBG,OAOjC,EC/XA,MAAMsB,GAAY,GAClB,IAAK,IAAIjzC,EAAI,EAAGA,EAAI,MAAOA,EACvBizC,GAAUnvC,MAAM9D,EAAI,KAAO4X,SAAS,IAAI3W,MAAM,ICHlD,IAAIiyC,GACJ,MAAMC,GAAQ,IAAI/H,WAAW,ICA7B,ICDAa,GCAAA,GCAAA,GAAAG,GAAAG,GAAAK,GHCewG,GAAA,CAAEC,WADoB,oBAAXC,QAA0BA,OAAOD,YAAcC,OAAOD,WAAWE,KAAKD,SIanFE,GAAuC,SAA9BhpB,GAAsE,IAArCzH,EAAIyH,EAAJzH,KAAMZ,EAAMqI,EAANrI,OAAQxO,EAAO6W,EAAP7W,QAASwwB,EAAQ3Z,EAAR2Z,SACpEsP,EAAOC,EAAAA,QAAQ,WAAA,OCUjBN,GAAOC,WACAD,GAAOC,aAtBtB,SAAa1/B,GAET,MAAMggC,GADNhgC,EAAUA,GAAW,IACAigC,QAAUjgC,EAAQkgC,SNH5B,WACX,IAAKX,GAAiB,CAClB,GAAsB,oBAAXI,SAA2BA,OAAOJ,gBACzC,MAAM,IAAIxmC,MAAM,4GAEpBwmC,GAAkBI,OAAOJ,gBAAgBK,KAAKD,OACjD,CACD,OAAOJ,GAAgBC,GAC3B,CMLsDU,GAClD,GAAIF,EAAKxzC,OAAS,GACd,MAAM,IAAIuM,MAAM,qCAcpB,OAZAinC,EAAK,GAAgB,GAAVA,EAAK,GAAa,GAC7BA,EAAK,GAAgB,GAAVA,EAAK,GAAa,IPL1B,SAAyBlV,EAAKr4B,EAAS,GAC1C,OAAQ6sC,GAAUxU,EAAIr4B,EAAS,IAC3B6sC,GAAUxU,EAAIr4B,EAAS,IACvB6sC,GAAUxU,EAAIr4B,EAAS,IACvB6sC,GAAUxU,EAAIr4B,EAAS,IACvB,IACA6sC,GAAUxU,EAAIr4B,EAAS,IACvB6sC,GAAUxU,EAAIr4B,EAAS,IACvB,IACA6sC,GAAUxU,EAAIr4B,EAAS,IACvB6sC,GAAUxU,EAAIr4B,EAAS,IACvB,IACA6sC,GAAUxU,EAAIr4B,EAAS,IACvB6sC,GAAUxU,EAAIr4B,EAAS,IACvB,IACA6sC,GAAUxU,EAAIr4B,EAAS,KACvB6sC,GAAUxU,EAAIr4B,EAAS,KACvB6sC,GAAUxU,EAAIr4B,EAAS,KACvB6sC,GAAUxU,EAAIr4B,EAAS,KACvB6sC,GAAUxU,EAAIr4B,EAAS,KACvB6sC,GAAUxU,EAAIr4B,EAAS,MAAM2I,aACrC,COLW+kC,CAAgBH,EAC3B,CAKWI,MDboBC,EAAQ,EAAE,CAACjxB,EAAMZ,IAO5C,OALAypB,EAAAA,QAAMqF,UAAU,WAAKgD,IAAAA,EACY,OAA7BA,EAAAjoC,SAASq4B,eAAeoP,KAAxBQ,EAA+B1N,kBAC/BtC,GAAgBlhB,EAAMZ,EAAQxO,EAAS8/B,EAAMtP,EACjD,EAAG,CAACphB,EAAMZ,EAAQxO,EAASwwB,IAEpByH,EAAAA,QAAAz3B,cAAA,MAAA,CAAKwF,UAAW,aAAcpB,GAAIk7B,GAC7C,EHpBaS,GrDFko3B,SAAYj0C,GAAG,IAAI,IAAIsM,EAAE,GAAGxM,EAAE,EAAEA,EAAEG,UAAUC,OAAOJ,IAAIwM,EAAExM,EAAE,GAAGG,UAAUH,GAAG,IAAIC,EAAEgb,GAAGxa,WAAW,EAAEuH,EAAE,CAAC9H,GAAGsM,GAAE,IAAK5E,EAAE,aAAazG,OAAOwN,GAAEqT,KAAK3Z,UAAUpI,KAAK6H,EAAE,IAAIwT,GAAGrb,EAAE2H,GAAG,eAAe8D,QAAQC,IAAIU,UAAU1E,GAAEC,GAAG,IAAIkE,EAAE,IAAIsoC,QAAQpzC,EAAE,SAASgH,GAAG,IAAIjI,EAAEqY,KAAKlY,EAAEqM,EAAC,QAAC8L,WAAWyB,IAAItN,EAAEV,EAAEoB,IAAInN,EAAEmY,YAAY,YAAY,IAAI1L,IAAIA,EAAEzM,EAAEmY,WAAWjC,mBAAmBrO,GAAGkE,EAAEqB,IAAIpN,EAAEmY,WAAW1L,IAAI,eAAed,QAAQC,IAAIU,UAAUE,EAAAA,QAAE8nC,SAAS7uC,MAAMwC,EAAEtD,WAAW8I,QAAQI,KAAK,8BAA8BzM,OAAOyG,EAAE,sEAAsE,eAAe8D,QAAQC,IAAIU,UAAUpM,EAAEwH,KAAK,SAASO,GAAG,MAAM,iBAAiBA,IAAI,IAAIA,EAAE3E,QAAQ,UAAU,IAAImK,QAAQI,KAAK,iVAAiV,oBAAoB5B,SAASjM,EAAEmY,WAAWrC,SAASxV,EAAEmM,EAAExE,EAAEjI,EAAEmY,WAAWhY,EAAEH,EAAEoY,QAAQ5L,EAAAA,QAAE+nC,gBAAgB,WAAW,OAAOv0C,EAAEmY,WAAWrC,QAAQxV,EAAEmM,EAAExE,EAAEjI,EAAEmY,WAAWhY,EAAEH,EAAEoY,QAAQ,WAAW,IAAInQ,EAAEF,EAAE0T,aAAahP,EAAEzM,EAAEmY,YAAYlQ,EAAEjI,EAAEmY,WAAWtE,QAAQC,OAAO,oBAAoB5H,WAAW,MAAMjE,EAAEA,EAAEiE,UAAU6H,iBAAiB,6BAA6B3S,OAAOyG,EAAE,OAAO6E,QAAQ,SAASzE,GAAG,OAAOA,EAAEusC,QAAQ,EAAE,CAAC,EAAE,CAAC/nC,EAAExE,EAAEjI,EAAEmY,WAAWhY,EAAEH,EAAEoY,SAAS,IAAI,EAAE,SAAS9X,EAAE2H,EAAE9H,EAAEqM,EAAEC,EAAExM,GAAG,GAAG8H,EAAEyR,SAASzR,EAAE2T,aAAazT,EAAEC,GAAEsE,EAAEvM,OAAO,CAAC,IAAIC,EAAEF,EAAEA,EAAE,GAAGG,GAAG,CAACiO,MAAMD,GAAEhO,EAAEsM,EAAExL,EAAE0O,gBAAgB5H,EAAE2T,aAAazT,EAAE/H,EAAEsM,EAAEvM,EAAE,CAAC,CAAC,OAAOuM,EAAC,QAACioC,KAAKxzC,EAAE,CqDErs6ByzC,CAAiBvI,KAAAA,GAAAC,EAyE3C,CAAA,oqDCvEKuI,GAAezI,GAAOpjB,IAAGqjB,KAAAA,GAAAC,EAAA,CAAA,+FAUlBwI,GAAuC,SAA9BlqB,GAClB,OACIohB,EAAAA,sBAAC6I,GAAY,KACT7I,EAAK,QAAAz3B,cAAA,KAAA,KAAA4M,GAAaxE,mBAH+BiO,EAANrI,SAMvD,EITawyB,gBAAc,SAAAC,GACvB,SAAAD,EAAYnwC,GAA0Bsc,IAAAA,EAEH,OADjCA,EAAA8zB,EAAAr0C,KAAMiE,KAAAA,IAAM/D,MACPo0C,MAAQ,CAAEC,UAAU,GAAQh0B,CACnC,WAAC8zB,KAAAD,yEAAAA,EAEMhlC,yBAAP,WACE,MAAO,CAAEmlC,UAAU,EACrB,EAAC,IAAAla,EAAA+Z,EAAAt0C,UAYAs0C,OAZA/Z,EAEDma,kBAAA,SAAkBvnC,EAAcwnC,GAC9BznC,QAAQC,MAAMA,EAAOwnC,EAAKC,eAC5B,EAACra,EAEDrqB,OAAA,WACE,OAAI9P,KAAKo0C,MAAMC,cACDtwC,MAAM0wC,SAGbz0C,KAAK+D,MAAMC,QACpB,EAACkwC,CAAA,CApBsB,CAAQQ,EAAmDA,WH4BhFC,GAAepJ,GAAOpjB,IAAGqjB,KAAAA,GAAAC,EAAA,CAAA,qDAAA,SAGhB,SAAA9rC,UAAKA,EAAEi1C,cAAgB,OAAS,GAAG,GAO5CC,GAAgBtJ,GAAOpjB,IAAGwjB,KAAAA,GAAAF,mEAEzB,SAAA9rC,GAAK,OAAAA,EAAEm1C,0BAA4B,OAAS,GAAG,GAahDC,GAAiBxJ,GAAOpjB,IAAG2jB,KAAAA,GAAAL,EACtB,CAAA,cAAA,4CAAA,SAAA9rC,GAAK,OAAAA,EAAEq1C,WAAa,OAAS,OAAO,GAKzCC,GAAiB1J,GAAOpjB,IAAGgkB,KAAAA,GAAAV,0BACtB,SAAA9rC,GAAK,OAAAA,EAAEq1C,WAAa,QAAU,MAAM,GAkBzCE,GAAoC,SAA1BnrB,OACZorB,EAAWprB,EAAXorB,YACAzR,EAAQ3Z,EAAR2Z,SAEA6L,EAAmBxlB,EAAnBwlB,oBAAmB6F,EAAArrB,EACnBsrB,sBAAAA,OAAwB,IAAHD,EAAG,KAAIA,EAAAE,EAAAvrB,EAC5BwrB,gBAAAA,WAAeD,GAAOA,EAAA9F,EAAAzlB,EACtB0lB,qBAAAA,OAAoB,IAAAD,GAAQA,EAC5B9f,EAAU3F,EAAV2F,WACA8lB,EAAczrB,EAAdyrB,eACAC,EAAgB1rB,EAAhB0rB,iBACA9U,EAAU5W,EAAV4W,WAAU+U,EAAA3rB,EACVgG,gBAAAA,OAAkB,IAAH2lB,GAAQA,EACjBC,EAAc7xB,GAVdiG,EAANrI,SArEyB,SAACA,EAAgBif,GAChB,iBAAfpT,EAAAA,UACPA,EAAAA,QAAWqoB,KAAKroB,EAAU,QAACsoB,YAAYj2C,UAAW,OAAQ,SAAqBk2C,GAC3EA,EAAQ/1C,MAAMC,KAAMO,MAAMX,UAAUY,MAAMV,KAAKL,UAAW,IAEtDO,KAAK+1C,IAAI/xC,SAAS,IADJ,0BACoB5C,KAAKpB,KAAK+1C,IAAI/xC,SAAS,GAAGgyC,YAC5Dh2C,KAAK+1C,IAAI/xC,SAAS,GAAG6vC,QAE7B,GACAtmB,EAAAA,QAAW0oB,WAAWvV,GAAahf,EAAQif,IAEnD,CAqEIuV,CAAqBP,EAAahV,GAElC,IAqCIwV,EArCE1H,EAA6EtD,EAAK,QAAC+E,OAAO,MAEhGP,EAA8CxE,EAAAA,QAAMl+B,SAASwhC,EAAS4B,SAA/DhB,EAAeM,EAAA,GAAEyG,EAAkBzG,EAC1C,GAAAG,EAAkC3E,EAAK,QAACl+B,UAAS,GAA1CykC,EAAS5B,KAAEuG,EAAYvG,EAAA,GAC9BwG,EAAkDnL,EAAAA,QAAMl+B,UAAS,GAA1D0kB,EAAiB2kB,EAAA,GAAEC,EAAoBD,EAC9C,GAAAE,EAA0BrL,EAAAA,QAAMl+B,SAAS,GAAlCwhB,EAAK+nB,EAAA,GAAEC,EAAQD,EAEtB,GAAME,EAAqBzD,EAAAA,QAAQ,WAC/B,IACI,OAAOrd,GAAgCuf,EAAYtf,wBAAyBsf,EAAYrf,SAAUqf,EAAYjvB,sBAAsB6P,+BAAgCsf,EACxK,CACA,MAAOtoC,GAEH,OADAD,QAAQC,MAAMA,GACP,CAAE,CACb,CACJ,EAAG,CAACsoC,EAAuBF,IAErB7yB,EAAoB2wB,EAAAA,QAAQ,WAC9B,IACI,OAAO1W,GAA4B4Y,EAAauB,EACpD,CACA,MAAO3pC,GAEH,OADAD,QAAQC,MAAMA,GACH,IACf,CACJ,EAAG,CAAC2pC,EAAoBvB,IAElBjiC,EAAyB+/B,EAAAA,QAAQ,WAAA,MAAO,CAC1CvjB,WAAYA,MAAAA,GAAAA,EACZiW,YAAa6P,EACb3P,YAA6B,MAAhB4P,GAAAA,EACb1lB,gBAAiBA,EACjB4B,kBAAmBA,EACnBgP,WAAYA,EACf,EAAG,CAACjR,EAAY8lB,EAAgBC,EAAkB1lB,EAAiB4B,EAAmBgP,IAIvF,SAASgW,IACDloB,IAAUnjB,OAAOsrC,YACjBH,EAASnrC,OAAOsrC,WAExB,CAOItrC,QACAA,OAAOslC,iBAAiB,SAN5B,WACIiG,aAAaV,GACbA,EAAgBW,WAAWH,EAAU,IACzC,GAcAxL,UAAMqF,UAAU,WACR/B,EAAS4B,SACT+F,EAAmB3H,EAAS4B,QAEpC,EAAG,CAAC5B,EAAS4B,UAEb,IAEI,GAAI/tB,GAAQ6yB,EAAYjvB,sBAAsBC,oBAAsBjL,QAAAA,mBAAmB67B,MAAO,CAC1F,IAAMC,EAAmBxkB,GAAiCmjB,EAAarzB,EAAMpP,GACvE+jC,EAA+BvF,IAAoC,IAAvBx+B,EAAQwc,WAC1D,OACIyb,EAAC,QAAAz3B,cAAAihC,GAA4B,CAAAC,eAAuB,IAAvB1hC,EAAQwc,YAAuB6lB,GAEpDA,GACApK,EAAAA,QAACz3B,cAAAmhC,8BAAyCoC,GAClC9L,EAAA,QAAAz3B,cAACy7B,GAAW,CAAAI,oBAAqBA,EAAqBH,SAAU9sB,EAAM+sB,gBAAiBA,EAAiB3tB,OAAQi0B,EAAarG,YAAa,CAAEoC,UAAWA,EAAWC,cAxBtK,WACpB0E,GAAc3E,EAClB,GAsBgOjC,qBAAsBA,EAAsB9d,kBAAmBA,EAAmB+d,wBApBlR,WAC5B6G,GAAsB5kB,EAC1B,KAqBgBwZ,EAAAA,QAACz3B,cAAAqhC,eAA2BkC,GACxB9L,EAAA,QAAAz3B,cAACwjC,EAAAA,gBACG,CAAAj9B,IAAKw0B,EACL0I,WAAW,EACXC,WAAY7pB,EAAU,QACtBra,QAAS8jC,KAGjB7L,UAACz3B,cAAAuhC,eAA2BgC,GACxB9L,EAAC,QAAAz3B,cAAAq/B,IAAU7/B,QAASA,EAASwwB,SAAUA,EAAUphB,KAAMA,EAAMZ,OAAQi0B,KAIrF,CAGA,GAAIrzB,GAAQ6yB,EAAYjvB,sBAAsBC,oBAAsBjL,QAAAA,mBAAmB67B,MACnF,OACI5L,EAAC,QAAAz3B,cAAAihC,GAA4B,CAAAC,eAAuB,IAAvB1hC,EAAQwc,YAAuB6lB,GAEpDA,GACApK,EAAAA,QAAAz3B,cAACmhC,GAAyC,CAAAC,2BAAuB,IAAvB5hC,EAAQwc,YAC1Cyb,EAAA,QAAAz3B,cAACy7B,GAAW,CAAAI,oBAAqBA,EAAqBH,SAAU9sB,EAAMZ,OAAQi0B,EAAalG,qBAAsBA,KAG7HtE,EAAC,QAAAz3B,cAAAq/B,IAAU7/B,QAASA,EAASwwB,SAAUA,EAAUphB,KAAMA,EAAMZ,OAAQi0B,IAIrF,CAAE,MAAO5oC,GAEL,OADAD,QAAQC,MAAMA,GACPo+B,wBAAC8I,GAAS,CAACvyB,OAAQi0B,GAC9B,CAGA,OAAOxK,wBAAC8I,GAAS,CAACvyB,OAAQi0B,GAC9B,mCpDhNgCj1B,GAC5BP,GAAQM,gBAAgBC,EAC5B,sCoDgN4C,SAAC3c,GACzC,IAAM4xC,EAAc7xB,GAAa/f,EAAM2d,QACvC,OACIypB,EAAA,QAAAz3B,cAACwgC,GAAa,CAACO,SAAUtJ,EAAAA,QAACz3B,cAAAugC,GAAU,CAAAvyB,OAAQi0B,KACxCxK,EAAAA,QAAAz3B,cAAC+/B,GAAc,MACftI,EAAAA,QAAAz3B,cAACwhC,GAAUt0B,KAAK7c,IAG5B,qVI/MyB,SACrB4/B,EACAwR,EACAzzB,EACA2zB,EACAniC,GAAkD,IAAAmkC,WADlDhC,IAAAA,EAAoD,WACf,IAArCniC,IAAAA,OAAqCnS,GAlBX,WAC1B,QAA0BA,IAAtBu2C,WAAWhsC,OACX,IACIisC,QAAQ,sCACRA,QAAQ,uCACRA,QAAQ,mCACRA,QAAQ,0CACZ,CAAE,MAAOjwC,GACLwF,QAAQC,MAAM,oCAAqCzF,EACvD,CAER,CASIkwC,GACA,IAAM7B,EAAc7xB,GAAapC,GACjC6L,EAAW0oB,WAAWvV,GAAaiV,EAAa0B,OAAFA,EAAEnkC,QAAAmkC,EAAAA,EAAS1W,aACzD,IACMre,EAAOia,GAA4B4Y,EADdvf,GAAgCuf,EAAYtf,wBAAyBsf,EAAYrf,SAAUqf,EAAYjvB,sBAAsB6P,+BAAgCsf,IAElL2B,EAAmBxkB,GAAiCmjB,EAAarzB,EAAMpP,GAC7E,OAAOqa,EAAW3C,MAAM+Y,EAAWqT,EACvC"}