@d3plus/core 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/README.md +6219 -0
  2. package/es/index.js +4 -0
  3. package/es/src/charts/AreaPlot.js +86 -0
  4. package/es/src/charts/BarChart.js +93 -0
  5. package/es/src/charts/BoxWhisker.js +97 -0
  6. package/es/src/charts/BumpChart.js +148 -0
  7. package/es/src/charts/Donut.js +84 -0
  8. package/es/src/charts/Geomap.js +833 -0
  9. package/es/src/charts/LinePlot.js +84 -0
  10. package/es/src/charts/Matrix.js +358 -0
  11. package/es/src/charts/Network.js +787 -0
  12. package/es/src/charts/Pack.js +318 -0
  13. package/es/src/charts/Pie.js +242 -0
  14. package/es/src/charts/Plot.js +2212 -0
  15. package/es/src/charts/Priestley.js +312 -0
  16. package/es/src/charts/Radar.js +365 -0
  17. package/es/src/charts/RadialMatrix.js +393 -0
  18. package/es/src/charts/Rings.js +777 -0
  19. package/es/src/charts/Sankey.js +413 -0
  20. package/es/src/charts/StackedArea.js +80 -0
  21. package/es/src/charts/Tree.js +312 -0
  22. package/es/src/charts/Treemap.js +406 -0
  23. package/es/src/charts/Viz.js +2017 -0
  24. package/es/src/charts/drawSteps/drawAttribution.js +14 -0
  25. package/es/src/charts/drawSteps/drawBack.js +23 -0
  26. package/es/src/charts/drawSteps/drawColorScale.js +69 -0
  27. package/es/src/charts/drawSteps/drawLegend.js +120 -0
  28. package/es/src/charts/drawSteps/drawSubtitle.js +31 -0
  29. package/es/src/charts/drawSteps/drawTimeline.js +80 -0
  30. package/es/src/charts/drawSteps/drawTitle.js +31 -0
  31. package/es/src/charts/drawSteps/drawTotal.js +32 -0
  32. package/es/src/charts/drawSteps/zoomControls.js +254 -0
  33. package/es/src/charts/events/click.legend.js +76 -0
  34. package/es/src/charts/events/click.shape.js +26 -0
  35. package/es/src/charts/events/mouseenter.js +31 -0
  36. package/es/src/charts/events/mouseleave.js +21 -0
  37. package/es/src/charts/events/mousemove.legend.js +64 -0
  38. package/es/src/charts/events/mousemove.shape.js +42 -0
  39. package/es/src/charts/events/touchstart.body.js +7 -0
  40. package/es/src/charts/helpers/matrixData.js +104 -0
  41. package/es/src/charts/helpers/tileAttributions.js +34 -0
  42. package/es/src/charts/index.js +21 -0
  43. package/es/src/charts/plotBuffers/Bar.js +65 -0
  44. package/es/src/charts/plotBuffers/Box.js +60 -0
  45. package/es/src/charts/plotBuffers/Circle.js +39 -0
  46. package/es/src/charts/plotBuffers/Line.js +30 -0
  47. package/es/src/charts/plotBuffers/Rect.js +40 -0
  48. package/es/src/charts/plotBuffers/discreteBuffer.js +24 -0
  49. package/es/src/charts/plotBuffers/numericBuffer.js +111 -0
  50. package/es/src/components/Axis.js +1567 -0
  51. package/es/src/components/AxisBottom.js +77 -0
  52. package/es/src/components/AxisLeft.js +77 -0
  53. package/es/src/components/AxisRight.js +77 -0
  54. package/es/src/components/AxisTop.js +77 -0
  55. package/es/src/components/ColorScale.js +958 -0
  56. package/es/src/components/Legend.js +673 -0
  57. package/es/src/components/Message.js +95 -0
  58. package/es/src/components/TextBox.js +752 -0
  59. package/es/src/components/Timeline.js +760 -0
  60. package/es/src/components/Tooltip.js +726 -0
  61. package/es/src/components/index.js +11 -0
  62. package/es/src/shapes/Area.js +361 -0
  63. package/es/src/shapes/Bar.js +342 -0
  64. package/es/src/shapes/Box.js +482 -0
  65. package/es/src/shapes/Circle.js +201 -0
  66. package/es/src/shapes/Image.js +255 -0
  67. package/es/src/shapes/Line.js +289 -0
  68. package/es/src/shapes/Path.js +186 -0
  69. package/es/src/shapes/Rect.js +215 -0
  70. package/es/src/shapes/Shape.js +1156 -0
  71. package/es/src/shapes/Whisker.js +330 -0
  72. package/es/src/shapes/index.js +10 -0
  73. package/es/src/utils/BaseClass.js +204 -0
  74. package/es/src/utils/RESET.js +4 -0
  75. package/es/src/utils/accessor.js +19 -0
  76. package/es/src/utils/configPrep.js +76 -0
  77. package/es/src/utils/constant.js +15 -0
  78. package/es/src/utils/getProp.js +9 -0
  79. package/es/src/utils/index.js +7 -0
  80. package/es/src/utils/uuid.js +13 -0
  81. package/package.json +68 -0
  82. package/umd/d3plus-core.full.js +56459 -0
  83. package/umd/d3plus-core.full.js.map +1 -0
  84. package/umd/d3plus-core.full.min.js +7241 -0
  85. package/umd/d3plus-core.js +14422 -0
  86. package/umd/d3plus-core.js.map +1 -0
  87. package/umd/d3plus-core.min.js +4564 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"d3plus-core.js","sources":["../src/utils/accessor.js","../src/utils/RESET.js","../src/utils/uuid.js","../src/utils/BaseClass.js","../src/utils/configPrep.js","../src/utils/constant.js","../src/utils/getProp.js","../src/shapes/Image.js","../src/shapes/Shape.js","../src/shapes/Area.js","../src/shapes/Bar.js","../src/shapes/Circle.js","../src/shapes/Rect.js","../src/shapes/Line.js","../src/shapes/Whisker.js","../src/shapes/Box.js","../src/shapes/Path.js","../src/components/Axis.js","../src/components/AxisBottom.js","../src/components/AxisLeft.js","../src/components/AxisRight.js","../src/components/AxisTop.js","../src/components/Legend.js","../src/components/ColorScale.js","../src/components/Message.js","../src/components/TextBox.js","../src/components/Timeline.js","../src/components/Tooltip.js","../src/charts/drawSteps/drawBack.js","../src/charts/drawSteps/drawColorScale.js","../src/charts/drawSteps/drawLegend.js","../src/charts/drawSteps/drawSubtitle.js","../src/charts/drawSteps/drawTimeline.js","../src/charts/drawSteps/drawTitle.js","../src/charts/drawSteps/drawTotal.js","../src/charts/drawSteps/zoomControls.js","../src/charts/drawSteps/drawAttribution.js","../src/charts/events/click.shape.js","../src/charts/events/click.legend.js","../src/charts/events/mouseenter.js","../src/charts/events/mouseleave.js","../src/charts/events/mousemove.legend.js","../src/charts/events/mousemove.shape.js","../src/charts/events/touchstart.body.js","../src/charts/Viz.js","../src/charts/plotBuffers/discreteBuffer.js","../src/charts/plotBuffers/Bar.js","../src/charts/plotBuffers/Box.js","../src/charts/plotBuffers/numericBuffer.js","../src/charts/plotBuffers/Circle.js","../src/charts/plotBuffers/Line.js","../src/charts/plotBuffers/Rect.js","../src/charts/Plot.js","../src/charts/AreaPlot.js","../src/charts/BarChart.js","../src/charts/BoxWhisker.js","../src/charts/BumpChart.js","../src/charts/Pie.js","../src/charts/Donut.js","../src/charts/helpers/tileAttributions.js","../src/charts/Geomap.js","../src/charts/LinePlot.js","../src/charts/helpers/matrixData.js","../src/charts/Matrix.js","../src/charts/Network.js","../src/charts/Pack.js","../src/charts/Priestley.js","../src/charts/Radar.js","../src/charts/RadialMatrix.js","../src/charts/Rings.js","../src/charts/Sankey.js","../src/charts/StackedArea.js","../src/charts/Tree.js","../src/charts/Treemap.js"],"sourcesContent":["/**\n @function accessor\n @desc Wraps an object key in a simple accessor function.\n @param {String} key The key to be returned from each Object passed to the function.\n @param {*} [def] A default value to be returned if the key is not present.\n @example <caption>this</caption>\naccessor(\"id\");\n @example <caption>returns this</caption>\nfunction(d) {\n return d[\"id\"];\n}\n*/\nexport default function(key, def) {\n if (def === undefined) return d => d[key];\n return d => d[key] === undefined ? def : d[key];\n}\n","/**\n @constant RESET\n @desc String constant used to reset an individual config property.\n*/\nexport default \"D3PLUS-COMMON-RESET\";\n","/**\n @function s\n @desc Returns 4 random characters, used for constructing unique identifiers.\n @private\n*/\nfunction s() {\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n}\n\n/**\n @function uuid\n @summary Returns a unique identifier.\n*/\nexport default function() {\n return `${s()}${s()}-${s()}-${s()}-${s()}-${s()}${s()}${s()}`;\n}\n","import {assign, isObject} from \"@d3plus/dom\";\nimport {findLocale, translateLocale as dictionaries} from \"@d3plus/locales\";\n\nimport RESET from \"./RESET.js\";\nimport uuid from \"./uuid.js\";\n\n/**\n @desc Recursive function that resets nested Object configs.\n @param {Object} obj\n @param {Object} defaults\n @private\n*/\nfunction nestedReset(obj, defaults) {\n if (isObject(obj)) {\n for (const nestedKey in obj) {\n if ({}.hasOwnProperty.call(obj, nestedKey) && !nestedKey.startsWith(\"_\")) {\n const defaultValue = defaults && isObject(defaults) ? defaults[nestedKey] : undefined;\n if (obj[nestedKey] === RESET) {\n if (defaultValue) obj[nestedKey] = defaultValue;\n else delete obj[nestedKey];\n }\n else if (isObject(obj[nestedKey])) {\n nestedReset(obj[nestedKey], defaultValue);\n }\n }\n }\n }\n}\n\n/**\n * @desc finds all prototype methods of a class and it's parent classes\n * @param {*} obj\n * @private\n */\nfunction getAllMethods(obj) {\n let props = [];\n do {\n props = props.concat(Object.getOwnPropertyNames(obj));\n obj = Object.getPrototypeOf(obj);\n } while (obj && obj !== Object.prototype);\n return props.filter(e => e.indexOf(\"_\") !== 0 && ![\"config\", \"constructor\", \"parent\", \"render\"].includes(e));\n}\n\n/**\n @class BaseClass\n @summary An abstract class that contains some global methods and functionality.\n*/\nexport default class BaseClass {\n\n /**\n @memberof BaseClass\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n this._locale = \"en-US\";\n this._on = {};\n this._parent = {};\n this._translate = (d, locale = this._locale) => {\n const dictionary = dictionaries[locale];\n return dictionary && dictionary[d] ? dictionary[d] : d;\n };\n this._uuid = uuid();\n }\n\n /**\n @memberof BaseClass\n @desc If *value* is specified, sets the methods that correspond to the key/value pairs and returns this class. If *value* is not specified, returns the current configuration.\n @param {Object} [*value*]\n @chainable\n */\n config(_) {\n\n if (!this._configDefault) {\n const config = {};\n getAllMethods(this.__proto__).forEach(k => {\n const v = this[k]();\n if (v !== this) config[k] = isObject(v) ? assign({}, v) : v;\n });\n this._configDefault = config;\n }\n\n if (arguments.length) {\n for (const k in _) {\n if ({}.hasOwnProperty.call(_, k) && k in this) {\n const v = _[k];\n if (v === RESET) {\n if (k === \"on\") this._on = this._configDefault[k];\n else this[k](this._configDefault[k]);\n }\n else {\n nestedReset(v, this._configDefault[k]);\n this[k](v);\n }\n }\n }\n return this;\n }\n else {\n\n const config = {};\n getAllMethods(this.__proto__).forEach(k => {\n config[k] = this[k]();\n });\n return config;\n\n }\n }\n\n /**\n @memberof BaseClass\n @desc Sets the locale used for all text and number formatting. This method supports the locales defined in [d3plus-format](https://github.com/d3plus/d3plus-format/blob/master/src/locale.js). The locale can be defined as a complex Object (like in d3plus-format), a locale code (like \"en-US\"), or a 2-digit language code (like \"en\"). If a 2-digit code is provided, the \"findLocale\" function is used to identify the most approximate locale from d3plus-format.\n @param {Object|String} [*value* = \"en-US\"]\n @chainable\n @example\n {\n separator: \"\",\n suffixes: [\"y\", \"z\", \"a\", \"f\", \"p\", \"n\", \"µ\", \"m\", \"\", \"k\", \"M\", \"B\", \"t\", \"q\", \"Q\", \"Z\", \"Y\"],\n grouping: [3],\n delimiters: {\n thousands: \",\",\n decimal: \".\"\n },\n currency: [\"$\", \"\"]\n }\n */\n locale(_) {\n return arguments.length ? (this._locale = findLocale(_), this) : this._locale;\n }\n\n /**\n @memberof BaseClass\n @desc Adds or removes a *listener* to each object for the specified event *typenames*. If a *listener* is not specified, returns the currently assigned listener for the specified event *typename*. Mirrors the core [d3-selection](https://github.com/d3/d3-selection#selection_on) behavior.\n @param {String} [*typenames*]\n @param {Function} [*listener*]\n @chainable\n @example <caption>By default, listeners apply globally to all objects, however, passing a namespace with the class name gives control over specific elements:</caption>\nnew Plot\n .on(\"click.Shape\", function(d) {\n console.log(\"data for shape clicked:\", d);\n })\n .on(\"click.Legend\", function(d) {\n console.log(\"data for legend clicked:\", d);\n })\n */\n on(_, f) {\n return arguments.length === 2 ? (this._on[_] = f, this) : arguments.length ? typeof _ === \"string\" ? this._on[_] : (this._on = Object.assign({}, this._on, _), this) : this._on;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the parent config used by the wrapper and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n parent(_) {\n return arguments.length ? (this._parent = _, this) : this._parent;\n }\n\n /**\n @memberof BaseClass\n @desc Defines how informational text strings should be displayed. By default, this function will try to find the string in question (which is the first argument provided to this function) inside of an internally managed translation Object. If you'd like to override to use custom text, simply pass this method your own custom formatting function.\n @param {Function} [*value*]\n @chainable\n @example <caption>For example, if we wanted to only change the string \"Back\" and allow all other string to return in English:</caption>\n.translate(function(d) {\n return d === \"Back\" ? \"Get outta here\" : d;\n})\n */\n translate(_) {\n return arguments.length ? (this._translate = _, this) : this._translate;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the config method for each shape and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n shapeConfig(_) {\n return arguments.length ? (this._shapeConfig = assign(this._shapeConfig, _), this) : this._shapeConfig;\n }\n\n}\n","/**\n @function configPrep\n @desc Preps a config object for d3plus data, and optionally bubbles up a specific nested type. When using this function, you must bind a d3plus class' `this` context.\n @param {Object} [config = this._shapeConfig] The configuration object to parse.\n @param {String} [type = \"shape\"] The event classifier to user for \"on\" events. For example, the default event type of \"shape\" will apply all events in the \"on\" config object with that key, like \"click.shape\" and \"mouseleave.shape\", in addition to any gloval events like \"click\" and \"mouseleave\".\n @param {String} [nest] An optional nested key to bubble up to the parent config level.\n*/\nexport default function configPrep(config = this._shapeConfig, type = \"shape\", nest = false) {\n\n const newConfig = {duration: this._duration, on: {}};\n\n const wrapFunction = func => (d, i, s, e) => {\n if (!func) return func;\n let parent;\n while (d.__d3plus__) {\n if (parent) d.__d3plusParent__ = parent;\n parent = d;\n i = d.i;\n d = d.data || d.feature;\n }\n return func.bind(this)(d, i, s || parent, e);\n };\n\n const parseEvents = (newObj, on) => {\n\n for (const event in on) {\n\n if ({}.hasOwnProperty.call(on, event) && !event.includes(\".\") || event.includes(`.${type}`)) {\n newObj.on[event] = wrapFunction(on[event]);\n }\n\n }\n\n };\n\n const arrayEval = arr => arr.map(d => {\n if (d instanceof Array) return arrayEval(d);\n else if (typeof d === \"object\") return keyEval({}, d);\n else if (typeof d === \"function\") return wrapFunction(d);\n else return d;\n });\n\n const keyEval = (newObj, obj) => {\n\n for (const key in obj) {\n\n if ({}.hasOwnProperty.call(obj, key)) {\n\n if (key === \"on\") parseEvents(newObj, obj[key]);\n else if (typeof obj[key] === \"function\") {\n newObj[key] = wrapFunction(obj[key]);\n }\n else if (obj[key] instanceof Array) {\n newObj[key] = arrayEval(obj[key]);\n }\n else if (typeof obj[key] === \"object\") {\n if (!newObj[key]) newObj[key] = {};\n newObj[key].on = {};\n keyEval(newObj[key], obj[key]);\n }\n else newObj[key] = obj[key];\n\n }\n\n }\n\n };\n\n keyEval(newConfig, config);\n if (this._on) parseEvents(newConfig, this._on);\n if (nest && config[nest]) {\n keyEval(newConfig, config[nest]);\n if (config[nest].on) parseEvents(newConfig, config[nest].on);\n }\n\n return newConfig;\n\n}\n","/**\n @function constant\n @desc Wraps non-function variables in a simple return function.\n @param {Array|Number|Object|String} value The value to be returned from the function.\n @example <caption>this</caption>\nconstant(42);\n @example <caption>returns this</caption>\nfunction() {\n return 42;\n}\n*/\nexport default function(value) {\n return function constant() {\n return value;\n };\n}\n","/**\n @module getProp\n @param {String} type\n @param {Object} d\n @param {Number} i\n @private\n*/\nexport default function(type, d, i) {\n return d[type] || this[`_${type}`](d, i);\n}\n","import {select} from \"d3-selection\";\nimport {transition} from \"d3-transition\";\n\nimport {accessor, constant} from \"../utils/index.js\";\n\n/**\n @class Image\n @desc Creates SVG images based on an array of data.\n @example <caption>a sample row of data</caption>\nvar data = {\"url\": \"file.png\", \"width\": \"100\", \"height\": \"50\"};\n@example <caption>passed to the generator</caption>\nnew Image().data([data]).render();\n@example <caption>creates the following</caption>\n<image class=\"d3plus-Image\" opacity=\"1\" href=\"file.png\" width=\"100\" height=\"50\" x=\"0\" y=\"0\"></image>\n@example <caption>this is shorthand for the following</caption>\nimage().data([data])();\n@example <caption>which also allows a post-draw callback function</caption>\nimage().data([data])(function() { alert(\"draw complete!\"); })\n*/\nexport default class Image {\n\n /**\n @memberof Image\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n this._duration = 600;\n this._height = accessor(\"height\");\n this._id = accessor(\"id\");\n this._opacity = constant(1);\n this._pointerEvents = constant(\"auto\");\n this._select;\n this._url = accessor(\"url\");\n this._width = accessor(\"width\");\n this._x = accessor(\"x\", 0);\n this._y = accessor(\"y\", 0);\n }\n\n /**\n @memberof Image\n @desc Renders the current Image to the page. If a *callback* is specified, it will be called once the images are done drawing.\n @param {Function} [*callback*]\n @chainable\n */\n render(callback) {\n\n if (this._select === void 0) this.select(select(\"body\").append(\"svg\").style(\"width\", `${window.innerWidth}px`).style(\"height\", `${window.innerHeight}px`).style(\"display\", \"block\").node());\n\n const images = this._select.selectAll(\".d3plus-Image\").data(this._data, this._id);\n\n const enter = images.enter().append(\"image\")\n .attr(\"class\", \"d3plus-Image\")\n .attr(\"opacity\", 0)\n .attr(\"width\", 0)\n .attr(\"height\", 0)\n .attr(\"x\", (d, i) => this._x(d, i) + this._width(d, i) / 2)\n .attr(\"y\", (d, i) => this._y(d, i) + this._height(d, i) / 2);\n\n const t = transition().duration(this._duration),\n that = this,\n update = enter.merge(images);\n\n update\n .attr(\"xlink:href\", this._url)\n .style(\"pointer-events\", this._pointerEvents)\n .transition(t)\n .attr(\"opacity\", this._opacity)\n .attr(\"width\", (d, i) => this._width(d, i))\n .attr(\"height\", (d, i) => this._height(d, i))\n .attr(\"x\", (d, i) => this._x(d, i))\n .attr(\"y\", (d, i) => this._y(d, i))\n .each(function(d, i) {\n const image = select(this), link = that._url(d, i);\n const fullAddress = link.indexOf(\"http://\") === 0 || link.indexOf(\"https://\") === 0;\n if (!fullAddress || link.indexOf(window.location.hostname) === 0) {\n const img = new Image();\n img.src = link;\n img.crossOrigin = \"Anonymous\";\n img.onload = function() {\n const canvas = document.createElement(\"canvas\");\n canvas.width = this.width;\n canvas.height = this.height;\n const context = canvas.getContext(\"2d\");\n context.drawImage(this, 0, 0);\n image.attr(\"xlink:href\", canvas.toDataURL(\"image/png\"));\n };\n }\n });\n\n images.exit().transition(t)\n .attr(\"width\", (d, i) => this._width(d, i))\n .attr(\"height\", (d, i) => this._height(d, i))\n .attr(\"x\", (d, i) => this._x(d, i))\n .attr(\"y\", (d, i) => this._y(d, i))\n .attr(\"opacity\", 0).remove();\n\n if (callback) setTimeout(callback, this._duration + 100);\n\n return this;\n\n }\n\n /**\n @memberof Image\n @desc If *data* is specified, sets the data array to the specified array and returns the current class instance. If *data* is not specified, returns the current data array. An <image> tag will be drawn for each object in the array.\n @param {Array} [*data* = []]\n @chainable\n */\n data(_) {\n return arguments.length ? (this._data = _, this) : this._data;\n }\n\n /**\n @memberof Image\n @desc If *ms* is specified, sets the animation duration to the specified number and returns the current class instance. If *ms* is not specified, returns the current animation duration.\n @param {Number} [*ms* = 600]\n @chainable\n */\n duration(_) {\n return arguments.length ? (this._duration = _, this) : this._duration;\n }\n\n /**\n @memberof Image\n @desc If *value* is specified, sets the height accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.height;\n}\n */\n height(_) {\n return arguments.length ? (this._height = typeof _ === \"function\" ? _ : constant(_), this) : this._height;\n }\n\n /**\n @memberof Image\n @desc If *value* is specified, sets the id accessor to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.id;\n}\n */\n id(_) {\n return arguments.length ? (this._id = _, this) : this._id;\n }\n\n /**\n @memberof Image\n @desc Sets the opacity of the image.\n @param {Number} [*value* = 1]\n @chainable\n */\n opacity(_) {\n return arguments.length ? (this._opacity = typeof _ === \"function\" ? _ : constant(_), this) : this._opacity;\n }\n\n /**\n @memberof Image\n @desc If *value* is specified, sets the pointer-events accessor to the specified function or string and returns the current class instance.\n @param {Function|String} [*value* = \"auto\"]\n @chainable\n */\n pointerEvents(_) {\n return arguments.length ? (this._pointerEvents = typeof _ === \"function\" ? _ : constant(_), this) : this._pointerEvents;\n }\n\n /**\n @memberof Image\n @desc If *selector* is specified, sets the SVG container element to the specified d3 selector or DOM element and returns the current class instance. If *selector* is not specified, returns the current SVG container element.\n @param {String|HTMLElement} [*selector* = d3.select(\"body\").append(\"svg\")]\n @chainable\n */\n select(_) {\n return arguments.length ? (this._select = select(_), this) : this._select;\n }\n\n /**\n @memberof Image\n @desc If *value* is specified, sets the URL accessor to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.url;\n}\n */\n url(_) {\n return arguments.length ? (this._url = _, this) : this._url;\n }\n\n /**\n @memberof Image\n @desc If *value* is specified, sets the width accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.width;\n}\n */\n width(_) {\n return arguments.length ? (this._width = typeof _ === \"function\" ? _ : constant(_), this) : this._width;\n }\n\n /**\n @memberof Image\n @desc If *value* is specified, sets the x accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.x || 0;\n}\n */\n x(_) {\n return arguments.length ? (this._x = typeof _ === \"function\" ? _ : constant(_), this) : this._x;\n }\n\n /**\n @memberof Image\n @desc If *value* is specified, sets the y accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.y || 0;\n}\n */\n y(_) {\n return arguments.length ? (this._y = typeof _ === \"function\" ? _ : constant(_), this) : this._y;\n }\n\n}\n","import {min} from \"d3-array\";\nimport {color} from \"d3-color\";\nimport {pointer, select, selectAll} from \"d3-selection\";\nimport * as paths from \"d3-shape\";\nimport {transition} from \"d3-transition\";\nimport textures from \"textures\";\n\nimport {colorContrast} from \"@d3plus/color\";\nimport {unique} from \"@d3plus/data\";\nimport {assign, attrize, elem, isObject} from \"@d3plus/dom\";\nimport {pointDistance} from \"@d3plus/math\";\nimport {strip} from \"@d3plus/text\";\n\nimport {TextBox} from \"../components/index.js\";\nimport {accessor, BaseClass, configPrep, constant} from \"../utils/index.js\";\n\nimport Image from \"./Image.js\";\n\n/**\n @class Shape\n @extends BaseClass\n @desc An abstracted class for generating shapes.\n*/\nexport default class Shape extends BaseClass {\n\n /**\n @memberof Shape\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor(tagName = \"g\") {\n\n super();\n\n this._activeOpacity = 0.25;\n this._activeStyle = {\n \"stroke\": (d, i) => {\n let c = this._fill(d, i);\n if ([\"transparent\", \"none\"].includes(c)) c = this._stroke(d, i);\n return color(c).darker(1);\n },\n \"stroke-width\": (d, i) => {\n const s = this._strokeWidth(d, i) || 1;\n return s * 3;\n }\n };\n this._ariaLabel = constant(\"\");\n this._backgroundImage = constant(false);\n this._backgroundImageClass = new Image();\n this._data = [];\n this._duration = 600;\n this._fill = constant(\"black\");\n this._fillOpacity = constant(1);\n\n this._hoverOpacity = 0.5;\n this._hoverStyle = {\n \"stroke\": (d, i) => {\n let c = this._fill(d, i);\n if ([\"transparent\", \"none\"].includes(c)) c = this._stroke(d, i);\n return color(c).darker(0.5);\n },\n \"stroke-width\": (d, i) => {\n const s = this._strokeWidth(d, i) || 1;\n return s * 2;\n }\n };\n this._id = (d, i) => d.id !== void 0 ? d.id : i;\n this._label = constant(false);\n this._labelClass = new TextBox();\n this._labelConfig = {\n fontColor: (d, i) => colorContrast(this._fill(d, i)),\n fontSize: 12,\n padding: 5\n };\n this._name = \"Shape\";\n this._opacity = constant(1);\n this._pointerEvents = constant(\"visiblePainted\");\n this._role = constant(\"presentation\");\n this._rotate = constant(0);\n this._rx = constant(0);\n this._ry = constant(0);\n this._scale = constant(1);\n this._shapeRendering = constant(\"geometricPrecision\");\n this._stroke = (d, i) => color(this._fill(d, i)).darker(1).formatHex();\n this._strokeDasharray = constant(\"0\");\n this._strokeLinecap = constant(\"butt\");\n this._strokeOpacity = constant(1);\n this._strokeWidth = constant(0);\n this._tagName = tagName;\n this._textAnchor = constant(\"start\");\n this._texture = constant(false);\n this._textureDefault = {};\n this._textureDefs = {};\n this._vectorEffect = constant(\"non-scaling-stroke\");\n this._verticalAlign = constant(\"top\");\n\n this._x = accessor(\"x\", 0);\n this._y = accessor(\"y\", 0);\n\n }\n\n /**\n @memberof Shape\n @desc Given a specific data point and index, returns the aesthetic properties of the shape.\n @param {Object} *data point*\n @param {Number} *index*\n @private\n */\n _aes() {\n return {};\n }\n\n /**\n @memberof Shape\n @desc Adds event listeners to each shape group or hit area.\n @param {D3Selection} *update* The update cycle of the data binding.\n @private\n */\n _applyEvents(handler) {\n\n const events = Object.keys(this._on);\n for (let e = 0; e < events.length; e++) {\n handler.on(events[e], (event, d, i) => {\n if (!this._on[events[e]]) return;\n if (d.i !== void 0) i = d.i;\n if (d.nested && d.values) {\n const calcPoint = (d, i) => {\n if (this._discrete === \"x\") return [this._x(d, i), cursor[1]];\n else if (this._discrete === \"y\") return [cursor[0], this._y(d, i)];\n else return [this._x(d, i), this._y(d, i)];\n };\n const cursor = pointer(event, this._select.node()),\n values = d.values.map(d => pointDistance(cursor, calcPoint(d, i)));\n i = values.indexOf(min(values));\n d = d.values[i];\n }\n this._on[events[e]].bind(this)(d, i, undefined, event);\n });\n }\n\n }\n\n /**\n @memberof Shape\n @desc Provides the updated styling to the given shape elements.\n @param {HTMLElement} *elem*\n @param {Object} *style*\n @private\n */\n _updateStyle(elem, style) {\n\n const that = this;\n\n if (elem.size() && elem.node().tagName === \"g\") elem = elem.selectAll(\"*\");\n\n /**\n @desc Determines whether a shape is a nested collection of data points, and uses the appropriate data and index for the given function context.\n @param {Object} *d* data point\n @param {Number} *i* index\n @private\n */\n function styleLogic(d, i) {\n return typeof this !== \"function\" ? this\n : d.nested && d.key && d.values\n ? this(d.values[0], that._data.indexOf(d.values[0]))\n : this(d, i);\n }\n\n const styleObject = {};\n for (const key in style) {\n if ({}.hasOwnProperty.call(style, key)) {\n styleObject[key] = styleLogic.bind(style[key]);\n }\n }\n\n elem.transition().duration(0).call(attrize, styleObject);\n\n }\n\n /**\n @memberof Shape\n @desc Provides the default styling to the shape elements.\n @param {HTMLElement} *elem*\n @private\n */\n _applyStyle(elem) {\n\n const that = this;\n\n if (elem.size() && elem.node().tagName === \"g\") elem = elem.selectAll(\"*\");\n\n /**\n @desc Determines whether a shape is a nested collection of data points, and uses the appropriate data and index for the given function context.\n @param {Object} *d* data point\n @param {Number} *i* index\n @private\n */\n function styleLogic(d, i) {\n return typeof this !== \"function\" ? this\n : d.nested && d.key && d.values\n ? this(d.values[0], that._data.indexOf(d.values[0]))\n : this(d, i);\n }\n\n elem\n .attr(\"fill\", (d, i) => {\n const texture = this._getTextureKey.bind(this)(d, i);\n return texture ? this._textureDefs[texture].url() : styleLogic.bind(this._fill)(d, i);\n })\n .attr(\"fill-opacity\", styleLogic.bind(this._fillOpacity))\n .attr(\"rx\", styleLogic.bind(this._rx))\n .attr(\"ry\", styleLogic.bind(this._ry))\n .attr(\"stroke\", styleLogic.bind(this._stroke))\n .attr(\"stroke-dasharray\", styleLogic.bind(this._strokeDasharray))\n .attr(\"stroke-linecap\", styleLogic.bind(this._strokeLinecap))\n .attr(\"stroke-opacity\", styleLogic.bind(this._strokeOpacity))\n .attr(\"stroke-width\", styleLogic.bind(this._strokeWidth))\n .attr(\"vector-effect\", styleLogic.bind(this._vectorEffect));\n }\n\n /**\n @memberof Shape\n @desc Calculates the transform for the group elements.\n @param {HTMLElement} *elem*\n @private\n */\n _applyTransform(elem) {\n\n elem\n .attr(\"transform\", (d, i) => `\n translate(${d.__d3plusShape__\n ? d.translate ? d.translate\n : `${this._x(d.data, d.i)},${this._y(d.data, d.i)}`\n : `${this._x(d, i)},${this._y(d, i)}`})\n scale(${d.__d3plusShape__ ? d.scale || this._scale(d.data, d.i)\n : this._scale(d, i)})\n rotate(${d.__d3plusShape__ ? d.rotate ? d.rotate\n : this._rotate(d.data || d, d.i)\n : this._rotate(d.data || d, d.i)})`);\n }\n\n /**\n @memberof Shape\n @desc Returns a full JSON string of the texture config for a given data point.\n @param {Object} *d*\n @param {Number} *i*\n @private\n */\n _getTextureKey(d, i) {\n let texture = this._texture(d, i);\n if (!texture) return false;\n\n /**\n @desc Determines whether a shape is a nested collection of data points, and uses the appropriate data and index for the given function context.\n @private\n */\n const styleLogic = (_) => {\n return typeof _ !== \"function\" ? _\n : d.nested && d.key && d.values\n ? _(d.values[0], this._data.indexOf(d.values[0]))\n : _(d, i);\n }\n\n const fallback = this._textureDefault;\n\n if (!isObject(texture)) texture = {texture};\n if (!texture.background) texture.background = styleLogic(this._fill);\n if (!texture.stroke && !fallback.stroke) texture.stroke = styleLogic(this._stroke);\n const paths = [\"squares\", \"nylon\", \"waves\", \"woven\", \"crosses\", \"caps\" , \"hexagons\"];\n if (paths.includes(texture.texture) || typeof texture.texture === \"function\") {\n texture.d = texture.texture;\n texture.texture = \"paths\";\n }\n else if (texture.texture === \"grid\") {\n if (!texture.orientation && !fallback.orientation) texture.orientation = [\"vertical\", \"horizontal\"];\n texture.texture = \"lines\";\n }\n if (!texture.fill && texture.texture !== \"paths\") texture.fill = texture.stroke;\n const retObj = assign({}, fallback, texture);\n if (typeof retObj.d === \"function\") {\n retObj.d = retObj.d(retObj.size || 20);\n }\n return JSON.stringify(retObj);\n }\n\n /**\n @memberof Shape\n @desc Checks for nested data and uses the appropriate variables for accessor functions.\n @param {HTMLElement} *elem*\n @private\n */\n _nestWrapper(method) {\n return (d, i) => method(d.__d3plusShape__ ? d.data : d, d.__d3plusShape__ ? d.i : i);\n }\n\n /**\n @memberof Shape\n @desc Modifies existing shapes to show active status.\n @private\n */\n _renderActive() {\n\n const that = this;\n\n this._group.selectAll(\".d3plus-Shape, .d3plus-Image, .d3plus-textBox\")\n .each(function(d, i) {\n\n if (!d) d = {};\n if (!d.parentNode) d.parentNode = this.parentNode;\n const parent = d.parentNode;\n\n if (select(this).classed(\"d3plus-textBox\")) d = d.data;\n if (d.__d3plusShape__ || d.__d3plus__) {\n while (d && (d.__d3plusShape__ || d.__d3plus__)) {\n i = d.i;\n d = d.data;\n }\n }\n else i = that._data.indexOf(d);\n\n const group = !that._active || typeof that._active !== \"function\" || !that._active(d, i) ? parent : that._activeGroup.node();\n if (group !== this.parentNode) {\n group.appendChild(this);\n if (this.className.baseVal.includes(\"d3plus-Shape\")) {\n if (parent === group) select(this).call(that._applyStyle.bind(that));\n else select(this).call(that._updateStyle.bind(that, select(this), that._activeStyle));\n }\n }\n\n });\n\n // this._renderImage();\n // this._renderLabels();\n\n this._group.selectAll(`g.d3plus-${this._name}-shape, g.d3plus-${this._name}-image, g.d3plus-${this._name}-text`)\n .attr(\"opacity\", this._hover ? this._hoverOpacity : this._active ? this._activeOpacity : 1);\n\n }\n\n /**\n @memberof Shape\n @desc Modifies existing shapes to show hover status.\n @private\n */\n _renderHover() {\n\n const that = this;\n\n this._group.selectAll(`g.d3plus-${this._name}-shape, g.d3plus-${this._name}-image, g.d3plus-${this._name}-text, g.d3plus-${this._name}-hover`)\n .selectAll(\".d3plus-Shape, .d3plus-Image, .d3plus-textBox\")\n .each(function(d, i) {\n\n if (!d) d = {};\n if (!d.parentNode) d.parentNode = this.parentNode;\n const parent = d.parentNode;\n\n if (select(this).classed(\"d3plus-textBox\")) d = d.data;\n if (d.__d3plusShape__ || d.__d3plus__) {\n while (d && (d.__d3plusShape__ || d.__d3plus__)) {\n i = d.i;\n d = d.data;\n }\n }\n else i = that._data.indexOf(d);\n\n const group = !that._hover || typeof that._hover !== \"function\" || !that._hover(d, i) ? parent : that._hoverGroup.node();\n if (group !== this.parentNode) group.appendChild(this);\n if (this.className.baseVal.includes(\"d3plus-Shape\")) {\n if (parent === group) select(this).call(that._applyStyle.bind(that));\n else select(this).call(that._updateStyle.bind(that, select(this), that._hoverStyle));\n }\n\n });\n\n // this._renderImage();\n // this._renderLabels();\n\n this._group.selectAll(`g.d3plus-${this._name}-shape, g.d3plus-${this._name}-image, g.d3plus-${this._name}-text`)\n .attr(\"opacity\", this._hover ? this._hoverOpacity : this._active ? this._activeOpacity : 1);\n\n }\n\n /**\n @memberof Shape\n @desc Adds background image to each shape group.\n @private\n */\n _renderImage() {\n\n const imageData = [];\n\n this._update.merge(this._enter).data()\n .forEach((datum, i) => {\n\n const aes = this._aes(datum, i);\n\n if (aes.r || aes.width && aes.height) {\n\n let d = datum;\n if (datum.nested && datum.key && datum.values) {\n d = datum.values[0];\n i = this._data.indexOf(d);\n }\n\n const height = aes.r ? aes.r * 2 : aes.height,\n url = this._backgroundImage(d, i),\n width = aes.r ? aes.r * 2 : aes.width;\n\n if (url) {\n\n let x = d.__d3plusShape__ ? d.translate ? d.translate[0]\n : this._x(d.data, d.i) : this._x(d, i),\n y = d.__d3plusShape__ ? d.translate ? d.translate[1]\n : this._y(d.data, d.i) : this._y(d, i);\n\n if (aes.x) x += aes.x;\n if (aes.y) y += aes.y;\n\n if (d.__d3plusShape__) {\n d = d.data;\n i = d.i;\n }\n\n imageData.push({\n __d3plus__: true,\n data: d,\n height,\n i,\n id: this._id(d, i),\n url,\n width,\n x: x + -width / 2,\n y: y + -height / 2\n });\n\n }\n\n }\n\n });\n\n this._backgroundImageClass\n .data(imageData)\n .duration(this._duration)\n .opacity(this._nestWrapper(this._opacity))\n .pointerEvents(\"none\")\n .select(elem(`g.d3plus-${this._name}-image`, {parent: this._group, update: {opacity: this._active ? this._activeOpacity : 1}}).node())\n .render();\n\n }\n\n /**\n @memberof Shape\n @desc Adds labels to each shape group.\n @private\n */\n _renderLabels() {\n\n const labelData = [];\n\n this._update.merge(this._enter).data()\n .forEach((datum, i) => {\n\n let d = datum;\n if (datum.nested && datum.key && datum.values) {\n d = datum.values[0];\n i = this._data.indexOf(d);\n }\n\n let labels = this._label(d, i);\n\n if (this._labelBounds && labels !== false && labels !== undefined && labels !== null) {\n\n const bounds = this._labelBounds.bind(this)(d, i, this._aes(datum, i));\n\n if (bounds) {\n\n if (labels.constructor !== Array) labels = [labels];\n\n const x = d.__d3plusShape__ ? d.translate ? d.translate[0]\n : this._x(d.data, d.i) : this._x(d, i),\n y = d.__d3plusShape__ ? d.translate ? d.translate[1]\n : this._y(d.data, d.i) : this._y(d, i);\n\n if (d.__d3plusShape__) {\n d = d.data;\n i = d.i;\n }\n\n for (let l = 0; l < labels.length; l++) {\n\n const b = bounds.constructor === Array ? bounds[l] : Object.assign({}, bounds);\n const rotate = this._rotate(d, i);\n let r = d.labelConfig && d.labelConfig.rotate ? d.labelConfig.rotate : bounds.angle !== undefined ? bounds.angle : 0;\n r += rotate;\n const rotateAnchor = rotate !== 0 ? [b.x * -1 || 0, b.y * -1 || 0] : [b.width / 2, b.height / 2];\n\n labelData.push({\n __d3plus__: true,\n data: d,\n height: b.height,\n l,\n id: `${this._id(d, i)}_${l}`,\n r,\n rotateAnchor,\n text: labels[l],\n width: b.width,\n x: x + b.x,\n y: y + b.y\n });\n\n }\n\n }\n\n }\n\n });\n\n this._labelClass\n .data(labelData)\n .duration(this._duration)\n .fontOpacity(this._nestWrapper(this._opacity))\n .pointerEvents(\"none\")\n .rotate(d => d.__d3plus__ ? d.r : d.data.r)\n .rotateAnchor(d => d.__d3plus__ ? d.rotateAnchor : d.data.rotateAnchor)\n .select(elem(`g.d3plus-${this._name}-text`, {parent: this._group, update: {opacity: this._active ? this._activeOpacity : 1}}).node())\n .config(configPrep.bind(this)(this._labelConfig))\n .render();\n\n }\n\n /**\n @memberof Shape\n @desc Renders the current Shape to the page. If a *callback* is specified, it will be called once the shapes are done drawing.\n @param {Function} [*callback*]\n @chainable\n */\n render(callback) {\n\n if (this._select === void 0) {\n this.select(select(\"body\").append(\"svg\")\n .style(\"width\", `${window.innerWidth}px`)\n .style(\"height\", `${window.innerHeight}px`)\n .style(\"display\", \"block\").node());\n }\n\n this._transition = transition(this._uuid)\n .duration(this._duration);\n\n let data = this._data, key = this._id;\n if (this._dataFilter) {\n data = this._dataFilter(data);\n if (data.key) key = data.key;\n }\n\n if (this._sort) {\n data = data.sort((a, b) => {\n while (a.__d3plusShape__ || a.__d3plus__) a = a.data;\n while (b.__d3plusShape__ || b.__d3plus__) b = b.data;\n return this._sort(a, b);\n });\n }\n\n const textureSet = unique(data\n .map(this._getTextureKey.bind(this)))\n .filter(Boolean);\n\n const existingTextureDefs = Object.keys(this._textureDefs);\n\n existingTextureDefs.forEach(key => {\n if (!textureSet.includes(key)) {\n select(this._select.select(`pattern#${this._textureDefs[key].id()}`).node().parentNode).remove();\n delete this._textureDefs[key];\n }\n })\n\n textureSet.forEach(key => {\n if (!existingTextureDefs.includes(key)) {\n const config = JSON.parse(key);\n const textureClass = config.texture;\n delete config.texture;\n const t = textures[textureClass]();\n for (const k in config) {\n if ({}.hasOwnProperty.call(t, k) && k in t) {\n if (k === \"d\") t[k](() => config[k]);\n else config[k] instanceof Array ? t[k].apply(null, config[k]) : t[k](config[k]);\n }\n }\n this._select.call(t);\n this._textureDefs[key] = t;\n }\n });\n\n selectAll(`g.d3plus-${this._name}-hover > *, g.d3plus-${this._name}-active > *`).each(function(d) {\n if (d && d.parentNode) d.parentNode.appendChild(this);\n else this.parentNode.removeChild(this);\n });\n\n // Makes the update state of the group selection accessible.\n this._group = elem(`g.d3plus-${this._name}-group`, {parent: this._select});\n const update = this._update = elem(`g.d3plus-${this._name}-shape`, {parent: this._group, update: {opacity: this._active ? this._activeOpacity : 1}})\n .selectAll(`.d3plus-${this._name}`)\n .data(data, key);\n\n // Orders and transforms the updating Shapes.\n update.order();\n if (this._duration) {\n update.transition(this._transition)\n .call(this._applyTransform.bind(this));\n }\n else {\n update.call(this._applyTransform.bind(this));\n }\n\n // Makes the enter state of the group selection accessible.\n const enter = this._enter = update.enter().append(this._tagName)\n .attr(\"class\", (d, i) => `d3plus-Shape d3plus-${this._name} d3plus-id-${strip(this._nestWrapper(this._id)(d, i))}`)\n .call(this._applyTransform.bind(this))\n .attr(\"aria-label\", this._ariaLabel)\n .attr(\"role\", this._role)\n .attr(\"opacity\", this._nestWrapper(this._opacity));\n\n const enterUpdate = enter.merge(update);\n\n let enterUpdateRender = enterUpdate.attr(\"shape-rendering\", this._nestWrapper(this._shapeRendering));\n\n if (this._duration) {\n enterUpdateRender = enterUpdateRender\n .attr(\"pointer-events\", \"none\")\n .transition(this._transition).transition().delay(100)\n .attr(\"pointer-events\", this._pointerEvents);\n }\n\n enterUpdateRender\n .attr(\"opacity\", this._nestWrapper(this._opacity));\n\n // Makes the exit state of the group selection accessible.\n const exit = this._exit = update.exit();\n if (this._duration) exit.transition().delay(this._duration).remove();\n else exit.remove();\n\n this._renderImage();\n this._renderLabels();\n\n this._hoverGroup = elem(`g.d3plus-${this._name}-hover`, {parent: this._group});\n this._activeGroup = elem(`g.d3plus-${this._name}-active`, {parent: this._group});\n\n const hitAreas = this._group.selectAll(\".d3plus-HitArea\")\n .data(this._hitArea && Object.keys(this._on).length ? data : [], key);\n\n hitAreas.order()\n .call(this._applyTransform.bind(this));\n\n const isLine = this._name === \"Line\";\n\n if (isLine) {\n const curve = this._curve.bind(this)(this.config());\n isLine && this._path\n .curve(paths[`curve${curve.charAt(0).toUpperCase()}${curve.slice(1)}`])\n .defined(this._defined)\n .x(this._x)\n .y(this._y);\n }\n\n const hitEnter = hitAreas.enter().append(isLine ? \"path\" : \"rect\")\n .attr(\"class\", (d, i) => `d3plus-HitArea d3plus-id-${strip(this._nestWrapper(this._id)(d, i))}`)\n .attr(\"fill\", \"black\")\n .attr(\"stroke\", \"black\")\n .attr(\"pointer-events\", \"painted\")\n .attr(\"opacity\", 0)\n .call(this._applyTransform.bind(this));\n\n const that = this;\n\n const hitUpdates = hitAreas.merge(hitEnter)\n .each(function(d) {\n const i = that._data.indexOf(d);\n const h = that._hitArea(d, i, that._aes(d, i));\n return h && !(that._name === \"Line\" && parseFloat(that._strokeWidth(d, i)) > 10) ? select(this).call(attrize, h) : select(this).remove();\n });\n\n hitAreas.exit().remove();\n\n this._applyEvents(this._hitArea ? hitUpdates : enterUpdate);\n\n setTimeout(() => {\n if (this._active) this._renderActive();\n else if (this._hover) this._renderHover();\n if (callback) callback();\n }, this._duration + 100);\n\n return this;\n\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the highlight accessor to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n active(_) {\n\n if (!arguments.length || _ === undefined) return this._active;\n this._active = _;\n if (this._group) {\n // this._renderImage();\n // this._renderLabels();\n this._renderActive();\n }\n return this;\n\n }\n\n /**\n @memberof Shape\n @desc When shapes are active, this is the opacity of any shape that is not active.\n @param {Number} *value* = 0.25\n @chainable\n */\n activeOpacity(_) {\n return arguments.length ? (this._activeOpacity = _, this) : this._activeOpacity;\n }\n\n /**\n @memberof Shape\n @desc The style to apply to active shapes.\n @param {Object} *value*\n @chainable\n */\n activeStyle(_) {\n return arguments.length ? (this._activeStyle = assign({}, this._activeStyle, _), this) : this._activeStyle;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the aria-label attribute to the specified function or string and returns the current class instance.\n @param {Function|String} *value*\n @chainable\n */\n ariaLabel(_) {\n return _ !== undefined\n ? (this._ariaLabel = typeof _ === \"function\" ? _ : constant(_), this)\n : this._ariaLabel;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the background-image accessor to the specified function or string and returns the current class instance.\n @param {Function|String} [*value* = false]\n @chainable\n */\n backgroundImage(_) {\n return arguments.length\n ? (this._backgroundImage = typeof _ === \"function\" ? _ : constant(_), this)\n : this._backgroundImage;\n }\n\n /**\n @memberof Shape\n @desc If *data* is specified, sets the data array to the specified array and returns the current class instance. If *data* is not specified, returns the current data array. A shape will be drawn for each object in the array.\n @param {Array} [*data* = []]\n @chainable\n */\n data(_) {\n return arguments.length\n ? (this._data = _, this)\n : this._data;\n }\n\n /**\n @memberof Shape\n @desc Determines if either the X or Y position is discrete along a Line, which helps in determining the nearest data point on a line for a hit area event.\n @param {String} *value*\n @chainable\n */\n discrete(_) {\n return arguments.length ? (this._discrete = _, this) : this._discrete;\n }\n\n /**\n @memberof Shape\n @desc If *ms* is specified, sets the animation duration to the specified number and returns the current class instance. If *ms* is not specified, returns the current animation duration.\n @param {Number} [*ms* = 600]\n @chainable\n */\n duration(_) {\n return arguments.length\n ? (this._duration = _, this)\n : this._duration;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the fill accessor to the specified function or string and returns the current class instance.\n @param {Function|String} [*value* = \"black\"]\n @chainable\n */\n fill(_) {\n return arguments.length\n ? (this._fill = typeof _ === \"function\" ? _ : constant(_), this)\n : this._fill;\n }\n\n /**\n @memberof Shape\n @desc Defines the \"fill-opacity\" attribute for the shapes.\n @param {Function|Number} [*value* = 1]\n @chainable\n */\n fillOpacity(_) {\n return arguments.length\n ? (this._fillOpacity = typeof _ === \"function\" ? _ : constant(_), this)\n : this._fillOpacity;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the highlight accessor to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n hover(_) {\n\n if (!arguments.length || _ === void 0) return this._hover;\n this._hover = _;\n if (this._group) {\n // this._renderImage();\n // this._renderLabels();\n this._renderHover();\n }\n return this;\n\n }\n\n /**\n @memberof Shape\n @desc The style to apply to hovered shapes.\n @param {Object} *value*\n @chainable\n */\n hoverStyle(_) {\n return arguments.length ? (this._hoverStyle = assign({}, this._hoverStyle, _), this) : this._hoverStyle;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the hover opacity to the specified function and returns the current class instance.\n @param {Number} [*value* = 0.5]\n @chainable\n */\n hoverOpacity(_) {\n return arguments.length ? (this._hoverOpacity = _, this) : this._hoverOpacity;\n }\n\n /**\n @memberof Shape\n @desc If *bounds* is specified, sets the mouse hit area to the specified function and returns the current class instance. If *bounds* is not specified, returns the current mouse hit area accessor.\n @param {Function} [*bounds*] The given function is passed the data point, index, and internally defined properties of the shape and should return an object containing the following values: `width`, `height`, `x`, `y`.\n @chainable\n @example\nfunction(d, i, shape) {\n return {\n \"width\": shape.width,\n \"height\": shape.height,\n \"x\": -shape.width / 2,\n \"y\": -shape.height / 2\n };\n}\n */\n hitArea(_) {\n return arguments.length ? (this._hitArea = typeof _ === \"function\" ? _ : constant(_), this) : this._hitArea;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the id accessor to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n id(_) {\n return arguments.length ? (this._id = _, this) : this._id;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the label accessor to the specified function or string and returns the current class instance.\n @param {Function|String|Array} [*value*]\n @chainable\n */\n label(_) {\n return arguments.length ? (this._label = typeof _ === \"function\" ? _ : constant(_), this) : this._label;\n }\n\n /**\n @memberof Shape\n @desc If *bounds* is specified, sets the label bounds to the specified function and returns the current class instance. If *bounds* is not specified, returns the current inner bounds accessor.\n @param {Function} [*bounds*] The given function is passed the data point, index, and internally defined properties of the shape and should return an object containing the following values: `width`, `height`, `x`, `y`. If an array is returned from the function, each value will be used in conjunction with each label.\n @chainable\n @example\nfunction(d, i, shape) {\n return {\n \"width\": shape.width,\n \"height\": shape.height,\n \"x\": -shape.width / 2,\n \"y\": -shape.height / 2\n };\n}\n */\n labelBounds(_) {\n return arguments.length ? (this._labelBounds = typeof _ === \"function\" ? _ : constant(_), this) : this._labelBounds;\n }\n\n /**\n @memberof Shape\n @desc A pass-through to the config method of the TextBox class used to create a shape's labels.\n @param {Object} [*value*]\n @chainable\n */\n labelConfig(_) {\n return arguments.length ? (this._labelConfig = assign(this._labelConfig, _), this) : this._labelConfig;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the opacity accessor to the specified function or number and returns the current class instance.\n @param {Number} [*value* = 1]\n @chainable\n */\n opacity(_) {\n return arguments.length ? (this._opacity = typeof _ === \"function\" ? _ : constant(_), this) : this._opacity;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the pointerEvents accessor to the specified function or string and returns the current class instance.\n @param {String} [*value*]\n @chainable\n */\n pointerEvents(_) {\n return arguments.length ? (this._pointerEvents = typeof _ === \"function\" ? _ : constant(_), this) : this._pointerEvents;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the role attribute to the specified function or string and returns the current class instance.\n @param {Function|String} *value*\n @chainable\n */\n role(_) {\n return _ !== undefined\n ? (this._role = typeof _ === \"function\" ? _ : constant(_), this)\n : this._role;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the rotate accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value* = 0]\n @chainable\n */\n rotate(_) {\n return arguments.length ? (this._rotate = typeof _ === \"function\" ? _ : constant(_), this) : this._rotate;\n }\n\n /**\n @memberof Shape\n @desc Defines the \"rx\" attribute for the shapes.\n @param {Function|Number} [*value* = 0]\n @chainable\n */\n rx(_) {\n return arguments.length ? (this._rx = typeof _ === \"function\" ? _ : constant(_), this) : this._rx;\n }\n\n /**\n @memberof Shape\n @desc Defines the \"rx\" attribute for the shapes.\n @param {Function|Number} [*value* = 0]\n @chainable\n */\n ry(_) {\n return arguments.length ? (this._ry = typeof _ === \"function\" ? _ : constant(_), this) : this._ry;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the scale accessor to the specified function or string and returns the current class instance.\n @param {Function|Number} [*value* = 1]\n @chainable\n */\n scale(_) {\n return arguments.length ? (this._scale = typeof _ === \"function\" ? _ : constant(_), this) : this._scale;\n }\n\n /**\n @memberof Shape\n @desc If *selector* is specified, sets the SVG container element to the specified d3 selector or DOM element and returns the current class instance. If *selector* is not specified, returns the current SVG container element.\n @param {String|HTMLElement} [*selector* = d3.select(\"body\").append(\"svg\")]\n @chainable\n */\n select(_) {\n return arguments.length ? (this._select = select(_), this) : this._select;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the shape-rendering accessor to the specified function or string and returns the current class instance.\n @param {Function|String} [*value* = \"geometricPrecision\"]\n @chainable\n @example\nfunction(d) {\n return d.x;\n}\n */\n shapeRendering(_) {\n return arguments.length ? (this._shapeRendering = typeof _ === \"function\" ? _ : constant(_), this) : this._shapeRendering;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the sort comparator to the specified function and returns the current class instance.\n @param {false|Function} [*value* = []]\n @chainable\n */\n sort(_) {\n return arguments.length ? (this._sort = _, this) : this._sort;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the stroke accessor to the specified function or string and returns the current class instance.\n @param {Function|String} [*value* = \"black\"]\n @chainable\n */\n stroke(_) {\n return arguments.length ? (this._stroke = typeof _ === \"function\" ? _ : constant(_), this) : this._stroke;\n }\n\n /**\n @memberof Shape\n @desc Defines the \"stroke-dasharray\" attribute for the shapes.\n @param {Function|String} [*value* = \"1\"]\n @chainable\n */\n strokeDasharray(_) {\n return arguments.length ? (this._strokeDasharray = typeof _ === \"function\" ? _ : constant(_), this) : this._strokeDasharray;\n }\n\n /**\n @memberof Shape\n @desc Defines the \"stroke-linecap\" attribute for the shapes. Accepted values are `\"butt\"`, `\"round\"`, and `\"square\"`.\n @param {Function|String} [*value* = \"butt\"]\n @chainable\n */\n strokeLinecap(_) {\n return arguments.length ? (this._strokeLinecap = typeof _ === \"function\" ? _ : constant(_), this) : this._strokeLinecap;\n }\n\n /**\n @memberof Shape\n @desc Defines the \"stroke-opacity\" attribute for the shapes.\n @param {Function|Number} [*value* = 1]\n @chainable\n */\n strokeOpacity(_) {\n return arguments.length ? (this._strokeOpacity = typeof _ === \"function\" ? _ : constant(_), this) : this._strokeOpacity;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the stroke-width accessor to the specified function or string and returns the current class instance.\n @param {Function|Number} [*value* = 0]\n @chainable\n */\n strokeWidth(_) {\n return arguments.length ? (this._strokeWidth = typeof _ === \"function\" ? _ : constant(_), this) : this._strokeWidth;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the text-anchor accessor to the specified function or string and returns the current class instance.\n @param {Function|String|Array} [*value* = \"start\"]\n @chainable\n */\n textAnchor(_) {\n return arguments.length ? (this._textAnchor = typeof _ === \"function\" ? _ : constant(_), this) : this._textAnchor;\n }\n\n /**\n @memberof Shape\n @desc Defines the texture used inside of each shape. This uses the [textures.js](https://riccardoscalco.it/textures/) package, and expects either a simple string (`\"lines\"` or `\"circles\"`) or a more complex Object containing the various properties of the texture (ie. `{texture: \"lines\", orientation: \"3/8\", stroke: \"darkorange\"}`). If multiple textures are necessary, provide an accsesor Function that returns the correct String/Object for each given data point and index.\n @param {String|Object|Function} [*value*]\n @chainable\n */\n texture(_) {\n return arguments.length ? (this._texture = typeof _ === \"function\" ? _ : constant(_), this) : this._texture;\n }\n\n /**\n @memberof Shape\n @desc A series of global texture methods to be used for all textures (ie. `{stroke: \"darkorange\", strokeWidth: 2}`).\n @param {Object} [*value*]\n @chainable\n */\n textureDefault(_) {\n return arguments.length ? (this._textureDefault = assign(this._textureDefault, _), this) : this._textureDefault;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the vector-effect accessor to the specified function or string and returns the current class instance.\n @param {Function|String} [*value* = \"non-scaling-stroke\"]\n @chainable\n */\n vectorEffect(_) {\n return arguments.length ? (this._vectorEffect = typeof _ === \"function\" ? _ : constant(_), this) : this._vectorEffect;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the vertical alignment accessor to the specified function or string and returns the current class instance.\n @param {Function|String|Array} [*value* = \"start\"]\n @chainable\n */\n verticalAlign(_) {\n return arguments.length ? (this._verticalAlign = typeof _ === \"function\" ? _ : constant(_), this) : this._verticalAlign;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the x accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.x;\n}\n */\n x(_) {\n return arguments.length ? (this._x = typeof _ === \"function\" ? _ : constant(_), this) : this._x;\n }\n\n /**\n @memberof Shape\n @desc If *value* is specified, sets the y accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.y;\n}\n */\n y(_) {\n return arguments.length ? (this._y = typeof _ === \"function\" ? _ : constant(_), this) : this._y;\n }\n\n}\n","import {extent} from \"d3-array\";\nimport {nest} from \"d3-collection\";\nimport {interpolatePath} from \"d3-interpolate-path\";\nimport {select} from \"d3-selection\";\nimport * as paths from \"d3-shape\";\n\nimport {merge} from \"@d3plus/data\";\nimport {largestRect} from \"@d3plus/math\";\nimport {accessor, constant} from \"../utils/index.js\";\n\nimport Shape from \"./Shape.js\";\n\n/**\n @class Area\n @extends Shape\n @desc Creates SVG areas based on an array of data.\n*/\nexport default class Area extends Shape {\n\n /**\n @memberof Area\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Shape.\n @private\n */\n constructor() {\n\n super();\n\n this._curve = constant(\"linear\");\n this._defined = () => true;\n this._labelBounds = (d, i, aes) => {\n const r = largestRect(aes.points);\n if (!r) return null;\n return {angle: r.angle, width: r.width, height: r.height, x: r.cx - r.width / 2 - this._x(d, i), y: r.cy - r.height / 2 - this._y(d, i)};\n };\n this._labelConfig = Object.assign(this._labelConfig, {\n textAnchor: \"middle\",\n verticalAlign: \"middle\"\n });\n this._name = \"Area\";\n this._x = accessor(\"x\");\n this._x0 = accessor(\"x\");\n this._x1 = null;\n this._y = constant(0);\n this._y0 = constant(0);\n this._y1 = accessor(\"y\");\n\n }\n\n /**\n @memberof Area\n @desc Given a specific data point and index, returns the aesthetic properties of the shape.\n @param {Object} *data point*\n @param {Number} *index*\n @private\n */\n _aes(d) {\n const values = d.values.slice().sort((a, b) => this._y1 ? this._x(a) - this._x(b) : this._y(a) - this._y(b));\n const points1 = values.map((v, z) => [this._x0(v, z), this._y0(v, z)]);\n const points2 = values.reverse().map((v, z) => this._y1 ? [this._x(v, z), this._y1(v, z)] : [this._x1(v, z), this._y(v, z)]);\n let points = points1.concat(points2);\n if (points1[0][1] > points2[0][1]) points = points.reverse();\n points.push(points[0]);\n return {points};\n }\n\n /**\n @memberof Area\n @desc Filters/manipulates the data array before binding each point to an SVG group.\n @param {Array} [*data* = the data array to be filtered]\n @private\n */\n _dataFilter(data) {\n\n const areas = nest().key(this._id).entries(data).map(d => {\n\n d.data = merge(d.values);\n d.i = data.indexOf(d.values[0]);\n\n const x = extent(d.values.map(this._x)\n .concat(d.values.map(this._x0))\n .concat(this._x1 ? d.values.map(this._x1) : [])\n );\n d.xR = x;\n d.width = x[1] - x[0];\n d.x = x[0] + d.width / 2;\n\n const y = extent(d.values.map(this._y)\n .concat(d.values.map(this._y0))\n .concat(this._y1 ? d.values.map(this._y1) : [])\n );\n d.yR = y;\n d.height = y[1] - y[0];\n d.y = y[0] + d.height / 2;\n\n d.nested = true;\n d.translate = [d.x, d.y];\n d.__d3plusShape__ = true;\n\n return d;\n });\n\n areas.key = d => d.key;\n return areas;\n\n }\n\n /**\n @memberof Area\n @desc Draws the area polygons.\n @param {Function} [*callback*]\n @chainable\n */\n render(callback) {\n\n super.render(callback);\n\n const userCurve = this._curve.bind(this)(this.config());\n const curve = paths[`curve${userCurve.charAt(0).toUpperCase()}${userCurve.slice(1)}`];\n\n const path = this._path = paths.area()\n .defined(this._defined)\n .curve(curve)\n .x(this._x).x0(this._x0).x1(this._x1)\n .y(this._y).y0(this._y0).y1(this._y1);\n\n const exitPath = paths.area()\n .defined(d => d)\n .curve(curve)\n .x(this._x).y(this._y)\n .x0((d, i) => this._x1 ? this._x0(d, i) + (this._x1(d, i) - this._x0(d, i)) / 2 : this._x0(d, i))\n .x1((d, i) => this._x1 ? this._x0(d, i) + (this._x1(d, i) - this._x0(d, i)) / 2 : this._x0(d, i))\n .y0((d, i) => this._y1 ? this._y0(d, i) + (this._y1(d, i) - this._y0(d, i)) / 2 : this._y0(d, i))\n .y1((d, i) => this._y1 ? this._y0(d, i) + (this._y1(d, i) - this._y0(d, i)) / 2 : this._y0(d, i));\n\n this._enter.append(\"path\")\n .attr(\"transform\", d => `translate(${-d.xR[0] - d.width / 2}, ${-d.yR[0] - d.height / 2})`)\n .attr(\"d\", d => exitPath(d.values))\n .call(this._applyStyle.bind(this))\n .transition(this._transition)\n .attrTween(\"d\", function(d) {\n return interpolatePath(select(this).attr(\"d\"), path(d.values));\n });\n\n this._update.select(\"path\").transition(this._transition)\n .attr(\"transform\", d => `translate(${-d.xR[0] - d.width / 2}, ${-d.yR[0] - d.height / 2})`)\n .attrTween(\"d\", function(d) {\n return interpolatePath(select(this).attr(\"d\"), path(d.values));\n })\n .call(this._applyStyle.bind(this));\n\n this._exit.select(\"path\").transition(this._transition)\n .attrTween(\"d\", function(d) {\n return interpolatePath(select(this).attr(\"d\"), exitPath(d.values));\n });\n\n return this;\n\n }\n\n /**\n @memberof Area\n @desc If *value* is specified, sets the area curve to the specified string and returns the current class instance. If *value* is not specified, returns the current area curve.\n @param {Function|String} [*value* = \"linear\"]\n @chainable\n */\n curve(_) {\n return arguments.length ? (this._curve = typeof _ === \"function\" ? _ : constant(_), this) : this._curve;\n }\n\n /**\n @memberof Area\n @desc If *value* is specified, sets the defined accessor to the specified function and returns the current class instance. If *value* is not specified, returns the current defined accessor.\n @param {Function} [*value*]\n @chainable\n */\n defined(_) {\n return arguments.length ? (this._defined = _, this) : this._defined;\n }\n\n /**\n @memberof Area\n @desc If *value* is specified, sets the x accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current x accessor.\n @param {Function|Number} [*value*]\n @chainable\n */\n x(_) {\n if (!arguments.length) return this._x;\n this._x = typeof _ === \"function\" ? _ : constant(_);\n this._x0 = this._x;\n return this;\n }\n\n /**\n @memberof Area\n @desc If *value* is specified, sets the x0 accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current x0 accessor.\n @param {Function|Number} [*value*]\n @chainable\n */\n x0(_) {\n if (!arguments.length) return this._x0;\n this._x0 = typeof _ === \"function\" ? _ : constant(_);\n this._x = this._x0;\n return this;\n }\n\n /**\n @memberof Area\n @desc If *value* is specified, sets the x1 accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current x1 accessor.\n @param {Function|Number|null} [*value*]\n @chainable\n */\n x1(_) {\n return arguments.length ? (this._x1 = typeof _ === \"function\" || _ === null ? _ : constant(_), this) : this._x1;\n }\n\n /**\n @memberof Area\n @desc If *value* is specified, sets the y accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current y accessor.\n @param {Function|Number} [*value*]\n @chainable\n */\n y(_) {\n if (!arguments.length) return this._y;\n this._y = typeof _ === \"function\" ? _ : constant(_);\n this._y0 = this._y;\n return this;\n }\n\n /**\n @memberof Area\n @desc If *value* is specified, sets the y0 accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current y0 accessor.\n @param {Function|Number} [*value*]\n @chainable\n */\n y0(_) {\n if (!arguments.length) return this._y0;\n this._y0 = typeof _ === \"function\" ? _ : constant(_);\n this._y = this._y0;\n return this;\n }\n\n /**\n @memberof Area\n @desc If *value* is specified, sets the y1 accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current y1 accessor.\n @param {Function|Number|null} [*value*]\n @chainable\n */\n y1(_) {\n return arguments.length ? (this._y1 = typeof _ === \"function\" || _ === null ? _ : constant(_), this) : this._y1;\n }\n\n}\n","import {accessor, constant} from \"../utils/index.js\";\n\nimport Shape from \"./Shape.js\";\n\n/**\n @class Bar\n @extends Shape\n @desc Creates SVG areas based on an array of data.\n*/\nexport default class Bar extends Shape {\n\n /**\n @memberof Bar\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Shape.\n @private\n */\n constructor() {\n\n super(\"rect\");\n\n this._name = \"Bar\";\n this._height = constant(10);\n this._labelBounds = (d, i, s) => ({\n width: s.width,\n height: s.height,\n x: this._x1 !== null ? this._getX(d, i) : -s.width / 2,\n y: this._x1 === null ? this._getY(d, i) : -s.height / 2\n });\n this._width = constant(10);\n this._x = accessor(\"x\");\n this._x0 = accessor(\"x\");\n this._x1 = null;\n this._y = constant(0);\n this._y0 = constant(0);\n this._y1 = accessor(\"y\");\n\n }\n\n /**\n @memberof Bar\n @desc Draws the bars.\n @param {Function} [*callback*]\n @chainable\n */\n render(callback) {\n\n super.render(callback);\n\n let enter = this._enter\n .attr(\"width\", (d, i) => this._x1 === null ? this._getWidth(d, i) : 0)\n .attr(\"height\", (d, i) => this._x1 !== null ? this._getHeight(d, i) : 0)\n .attr(\"x\", (d, i) => this._x1 === null ? -this._getWidth(d, i) / 2 : 0)\n .attr(\"y\", (d, i) => this._x1 !== null ? -this._getHeight(d, i) / 2 : 0)\n .call(this._applyStyle.bind(this));\n\n let update = this._update;\n\n if (this._duration) {\n enter = enter.transition(this._transition);\n update = update.transition(this._transition);\n this._exit.transition(this._transition)\n .attr(\"width\", (d, i) => this._x1 === null ? this._getWidth(d, i) : 0)\n .attr(\"height\", (d, i) => this._x1 !== null ? this._getHeight(d, i) : 0)\n .attr(\"x\", (d, i) => this._x1 === null ? -this._getWidth(d, i) / 2 : 0)\n .attr(\"y\", (d, i) => this._x1 !== null ? -this._getHeight(d, i) / 2 : 0);\n }\n\n enter\n .call(this._applyPosition.bind(this));\n\n update\n .call(this._applyStyle.bind(this))\n .call(this._applyPosition.bind(this));\n\n return this;\n\n }\n\n /**\n @memberof Bar\n @desc Given a specific data point and index, returns the aesthetic properties of the shape.\n @param {Object} *data point*\n @param {Number} *index*\n @private\n */\n _aes(d, i) {\n return {height: this._getHeight(d, i), width: this._getWidth(d, i)};\n }\n\n /**\n @memberof Bar\n @desc Provides the default positioning to the <rect> elements.\n @param {D3Selection} *elem*\n @private\n */\n _applyPosition(elem) {\n elem\n .attr(\"width\", (d, i) => this._getWidth(d, i))\n .attr(\"height\", (d, i) => this._getHeight(d, i))\n .attr(\"x\", (d, i) => this._x1 !== null ? this._getX(d, i) : -this._getWidth(d, i) / 2)\n .attr(\"y\", (d, i) => this._x1 === null ? this._getY(d, i) : -this._getHeight(d, i) / 2);\n }\n\n /**\n @memberof Bar\n @desc Calculates the height of the <rect> by assessing the x and y properties.\n @param {Object} *d*\n @param {Number} *i*\n @private\n */\n _getHeight(d, i) {\n if (this._x1 !== null) return this._height(d, i);\n return Math.abs(this._y1(d, i) - this._y(d, i));\n }\n\n /**\n @memberof Bar\n @desc Calculates the width of the <rect> by assessing the x and y properties.\n @param {Object} *d*\n @param {Number} *i*\n @private\n */\n _getWidth(d, i) {\n if (this._x1 === null) return this._width(d, i);\n return Math.abs(this._x1(d, i) - this._x(d, i));\n }\n\n /**\n @memberof Bar\n @desc Calculates the x of the <rect> by assessing the x and width properties.\n @param {Object} *d*\n @param {Number} *i*\n @private\n */\n _getX(d, i) {\n const w = this._x1 === null ? this._x(d, i) : this._x1(d, i) - this._x(d, i);\n if (w < 0) return w;\n else return 0;\n }\n\n /**\n @memberof Bar\n @desc Calculates the y of the <rect> by assessing the y and height properties.\n @param {Object} *d*\n @param {Number} *i*\n @private\n */\n _getY(d, i) {\n const h = this._x1 !== null ? this._y(d, i) : this._y1(d, i) - this._y(d, i);\n if (h < 0) return h;\n else return 0;\n }\n\n /**\n @memberof Bar\n @desc If *value* is specified, sets the height accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.height;\n}\n */\n height(_) {\n return arguments.length ? (this._height = typeof _ === \"function\" ? _ : constant(_), this) : this._height;\n }\n\n /**\n @memberof Bar\n @desc If *value* is specified, sets the width accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.width;\n}\n */\n width(_) {\n return arguments.length ? (this._width = typeof _ === \"function\" ? _ : constant(_), this) : this._width;\n }\n\n /**\n @memberof Bar\n @desc If *value* is specified, sets the x0 accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n */\n x0(_) {\n if (!arguments.length) return this._x0;\n this._x0 = typeof _ === \"function\" ? _ : constant(_);\n this._x = this._x0;\n return this;\n }\n\n /**\n @memberof Bar\n @desc If *value* is specified, sets the x1 accessor to the specified function or number and returns the current class instance.\n @param {Function|Number|null} [*value*]\n @chainable\n */\n x1(_) {\n return arguments.length ? (this._x1 = typeof _ === \"function\" || _ === null ? _ : constant(_), this) : this._x1;\n }\n\n /**\n @memberof Bar\n @desc If *value* is specified, sets the y0 accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n */\n y0(_) {\n if (!arguments.length) return this._y0;\n this._y0 = typeof _ === \"function\" ? _ : constant(_);\n this._y = this._y0;\n return this;\n }\n\n /**\n @memberof Bar\n @desc If *value* is specified, sets the y1 accessor to the specified function or number and returns the current class instance.\n @param {Function|Number|null} [*value*]\n @chainable\n */\n y1(_) {\n return arguments.length ? (this._y1 = typeof _ === \"function\" || _ === null ? _ : constant(_), this) : this._y1;\n }\n\n}\n","import {assign} from \"@d3plus/dom\";\nimport {accessor, constant} from \"../utils/index.js\";\n\nimport Shape from \"./Shape.js\";\n\n/**\n @class Circle\n @extends Shape\n @desc Creates SVG circles based on an array of data.\n*/\nexport default class Circle extends Shape {\n\n /**\n @memberof Circle\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Shape.\n @private\n */\n constructor() {\n super(\"circle\");\n this._labelBounds = (d, i, s) =>\n ({width: s.r * 1.5, height: s.r * 1.5, x: -s.r * 0.75, y: -s.r * 0.75});\n this._labelConfig = assign(this._labelConfig, {\n textAnchor: \"middle\",\n verticalAlign: \"middle\"\n });\n this._name = \"Circle\";\n this._r = accessor(\"r\");\n }\n\n /**\n @memberof Circle\n @desc Provides the default positioning to the <rect> elements.\n @private\n */\n _applyPosition(elem) {\n elem\n .attr(\"r\", (d, i) => this._r(d, i))\n .attr(\"x\", (d, i) => -this._r(d, i) / 2)\n .attr(\"y\", (d, i) => -this._r(d, i) / 2);\n }\n\n /**\n @memberof Circle\n @desc Draws the circles.\n @param {Function} [*callback*]\n @chainable\n */\n render(callback) {\n\n super.render(callback);\n\n const enter = this._enter\n .call(this._applyStyle.bind(this));\n\n let update = this._update;\n\n if (this._duration) {\n enter\n .attr(\"r\", 0).attr(\"x\", 0).attr(\"y\", 0)\n .transition(this._transition)\n .call(this._applyPosition.bind(this));\n update = update.transition(this._transition);\n this._exit.transition(this._transition)\n .attr(\"r\", 0).attr(\"x\", 0).attr(\"y\", 0);\n }\n else {\n enter.call(this._applyPosition.bind(this));\n }\n\n update\n .call(this._applyStyle.bind(this))\n .call(this._applyPosition.bind(this));\n\n return this;\n\n }\n\n /**\n @memberof Circle\n @desc Given a specific data point and index, returns the aesthetic properties of the shape.\n @param {Object} *data point*\n @param {Number} *index*\n @private\n */\n _aes(d, i) {\n return {r: this._r(d, i)};\n }\n\n /**\n @memberof Circle\n @desc If *value* is specified, sets the radius accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.r;\n}\n */\n r(_) {\n return arguments.length ? (this._r = typeof _ === \"function\" ? _ : constant(_), this) : this._r;\n }\n\n}\n","import {accessor, constant} from \"../utils/index.js\";\nimport Shape from \"./Shape.js\";\n\n/**\n @class Rect\n @extends Shape\n @desc Creates SVG rectangles based on an array of data. See [this example](https://d3plus.org/examples/d3plus-shape/getting-started/) for help getting started using the rectangle generator.\n*/\nexport default class Rect extends Shape {\n\n /**\n @memberof Rect\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Shape.\n @private\n */\n constructor() {\n super(\"rect\");\n this._height = accessor(\"height\");\n this._labelBounds = (d, i, s) =>\n ({width: s.width, height: s.height, x: -s.width / 2, y: -s.height / 2});\n this._name = \"Rect\";\n this._width = accessor(\"width\");\n }\n\n /**\n @memberof Rect\n @desc Draws the rectangles.\n @param {Function} [*callback*]\n @chainable\n */\n render(callback) {\n\n super.render(callback);\n\n let enter = this._enter\n .attr(\"width\", 0).attr(\"height\", 0)\n .attr(\"x\", 0).attr(\"y\", 0)\n .call(this._applyStyle.bind(this));\n\n let update = this._update;\n\n if (this._duration) {\n enter = enter.transition(this._transition);\n update = update.transition(this._transition);\n this._exit.transition(this._transition)\n .attr(\"width\", 0).attr(\"height\", 0)\n .attr(\"x\", 0).attr(\"y\", 0);\n }\n\n enter\n .call(this._applyPosition.bind(this));\n\n update\n .call(this._applyStyle.bind(this))\n .call(this._applyPosition.bind(this));\n\n return this;\n\n }\n\n /**\n @memberof Rect\n @desc Given a specific data point and index, returns the aesthetic properties of the shape.\n @param {Object} *data point*\n @param {Number} *index*\n @private\n */\n _aes(d, i) {\n return {width: this._width(d, i), height: this._height(d, i)};\n }\n\n /**\n @memberof Rect\n @desc Provides the default positioning to the <rect> elements.\n @param {D3Selection} *elem*\n @private\n */\n _applyPosition(elem) {\n elem\n .attr(\"width\", (d, i) => this._width(d, i))\n .attr(\"height\", (d, i) => this._height(d, i))\n .attr(\"x\", (d, i) => -this._width(d, i) / 2)\n .attr(\"y\", (d, i) => -this._height(d, i) / 2);\n }\n\n /**\n @memberof Rect\n @desc If *value* is specified, sets the height accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.height;\n}\n */\n height(_) {\n return arguments.length ? (this._height = typeof _ === \"function\" ? _ : constant(_), this) : this._height;\n }\n\n /**\n @memberof Rect\n @desc If *value* is specified, sets the width accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.width;\n}\n */\n width(_) {\n return arguments.length ? (this._width = typeof _ === \"function\" ? _ : constant(_), this) : this._width;\n }\n\n}\n","import {extent, sum} from \"d3-array\";\nimport {nest} from \"d3-collection\";\nimport {interpolatePath} from \"d3-interpolate-path\";\nimport {select} from \"d3-selection\";\nimport * as paths from \"d3-shape\";\n\nimport {merge} from \"@d3plus/data\";\nimport {constant} from \"../utils/index.js\";\n\nimport Shape from \"./Shape.js\";\n\n/**\n @class Line\n @extends Shape\n @desc Creates SVG lines based on an array of data.\n*/\nexport default class Line extends Shape {\n\n /**\n @memberof Line\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Shape.\n @private\n */\n constructor() {\n\n super();\n\n this._curve = constant(\"linear\");\n this._defined = d => d;\n this._fill = constant(\"none\");\n this._hitArea = constant({\n \"d\": d => this._path(d.values),\n \"fill\": \"none\",\n \"stroke-width\": 10,\n \"transform\": null\n });\n this._name = \"Line\";\n this._path = paths.line();\n this._stroke = constant(\"black\");\n this._strokeWidth = constant(1);\n\n }\n\n /**\n @memberof Line\n @desc Filters/manipulates the data array before binding each point to an SVG group.\n @param {Array} [*data* = the data array to be filtered]\n @private\n */\n _dataFilter(data) {\n\n const lines = nest().key(this._id).entries(data).map(d => {\n\n d.data = merge(d.values);\n d.i = data.indexOf(d.values[0]);\n\n const x = extent(d.values, this._x);\n d.xR = x;\n d.width = x[1] - x[0];\n d.x = x[0] + d.width / 2;\n\n const y = extent(d.values, this._y);\n d.yR = y;\n d.height = y[1] - y[0];\n d.y = y[0] + d.height / 2;\n\n d.nested = true;\n d.translate = [d.x, d.y];\n d.__d3plusShape__ = true;\n\n return d;\n });\n\n lines.key = d => d.key;\n return lines;\n\n }\n\n /**\n @memberof Line\n @desc Draws the lines.\n @param {Function} [*callback*]\n @chainable\n */\n render(callback) {\n\n super.render(callback);\n\n const that = this;\n\n /**\n @desc Calculates the stroke-dasharray used for animations\n @param {Object} *d* data point\n @private\n */\n function calculateStrokeDashArray(d) {\n\n d.initialLength = this.getTotalLength();\n\n let strokeArray = that._strokeDasharray(d.values[0], that._data.indexOf(d.values[0]))\n .split(\" \").map(Number);\n\n if (strokeArray.length === 1 && strokeArray[0] === 0) strokeArray = [d.initialLength];\n else if (strokeArray.length === 1) strokeArray.push(strokeArray[0]);\n else if (strokeArray.length % 2) strokeArray = strokeArray.concat(strokeArray);\n\n const newStrokeArray = [];\n let strokeLength = 0;\n while (strokeLength < d.initialLength) {\n for (let i = 0; i < strokeArray.length; i++) {\n const num = strokeArray[i];\n strokeLength += num;\n newStrokeArray.push(num);\n if (strokeLength >= d.initialLength) break;\n }\n }\n\n if (newStrokeArray.length > 1 && newStrokeArray.length % 2) newStrokeArray.pop();\n newStrokeArray[newStrokeArray.length - 1] += d.initialLength - sum(newStrokeArray);\n if (newStrokeArray.length % 2 === 0) newStrokeArray.push(0);\n d.initialStrokeArray = newStrokeArray.join(\" \");\n\n }\n\n const userCurve = this._curve.bind(this)(this.config());\n const curve = paths[`curve${userCurve.charAt(0).toUpperCase()}${userCurve.slice(1)}`];\n\n this._path\n .curve(curve)\n .defined(this._defined)\n .x(this._x)\n .y(this._y);\n\n const enter = this._enter.append(\"path\")\n .attr(\"transform\", d => `translate(${-d.xR[0] - d.width / 2}, ${-d.yR[0] - d.height / 2})`)\n .attr(\"d\", d => this._path(d.values))\n .call(this._applyStyle.bind(this));\n\n let update = this._update.select(\"path\")\n .attr(\"stroke-dasharray\", d => that._strokeDasharray(d.values[0], that._data.indexOf(d.values[0])));\n\n if (this._duration) {\n enter\n .each(calculateStrokeDashArray)\n .attr(\"stroke-dasharray\", d => `${d.initialStrokeArray} ${d.initialLength}`)\n .attr(\"stroke-dashoffset\", d => d.initialLength)\n .transition(this._transition)\n .attr(\"stroke-dashoffset\", 0);\n update = update.transition(this._transition)\n .attrTween(\"d\", function(d) {\n return interpolatePath(select(this).attr(\"d\"), that._path(d.values));\n });\n this._exit.selectAll(\"path\")\n .each(calculateStrokeDashArray)\n .attr(\"stroke-dasharray\", d => `${d.initialStrokeArray} ${d.initialLength}`)\n .transition(this._transition)\n .attr(\"stroke-dashoffset\", d => -d.initialLength);\n\n }\n else {\n update = update\n .attr(\"d\", d => that._path(d.values));\n }\n\n update\n .attr(\"transform\", d => `translate(${-d.xR[0] - d.width / 2}, ${-d.yR[0] - d.height / 2})`)\n .call(this._applyStyle.bind(this));\n\n return this;\n\n }\n\n /**\n @memberof Line\n @desc Given a specific data point and index, returns the aesthetic properties of the shape.\n @param {Object} *data point*\n @param {Number} *index*\n @private\n */\n _aes(d, i) {\n return {points: d.values.map(p => [this._x(p, i), this._y(p, i)])};\n }\n\n /**\n @memberof Line\n @desc If *value* is specified, sets the area curve to the specified string and returns the current class instance. If *value* is not specified, returns the current area curve.\n @param {Function|String} [*value* = \"linear\"]\n @chainable\n */\n curve(_) {\n return arguments.length ? (this._curve = typeof _ === \"function\" ? _ : constant(_), this) : this._curve;\n }\n\n /**\n @memberof Line\n @desc If *value* is specified, sets the defined accessor to the specified function and returns the current class instance. If *value* is not specified, returns the current defined accessor.\n @param {Function} [*value*]\n @chainable\n */\n defined(_) {\n return arguments.length ? (this._defined = _, this) : this._defined;\n }\n\n}\n","import {nest} from \"d3-collection\";\nimport {select} from \"d3-selection\";\n\nimport {assign, elem} from \"@d3plus/dom\";\nimport {accessor, BaseClass, configPrep, constant} from \"../utils/index.js\";\n\nimport Circle from \"./Circle.js\";\nimport Line from \"./Line.js\";\nimport Rect from \"./Rect.js\";\n\nconst shapes = {Circle, Rect};\n\n/**\n @class Whisker\n @extends BaseClass\n @desc Creates SVG whisker based on an array of data.\n*/\nexport default class Whisker extends BaseClass {\n\n /**\n @memberof Whisker\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from BaseClass.\n @private\n */\n constructor() {\n\n super();\n\n this._endpoint = accessor(\"endpoint\", \"Rect\");\n this._endpointConfig = {\n Circle: {\n r: accessor(\"r\", 5)\n }\n };\n this._length = accessor(\"length\", 25);\n this._lineConfig = {};\n this._orient = accessor(\"orient\", \"top\");\n this._x = accessor(\"x\", 0);\n this._y = accessor(\"y\", 0);\n\n }\n\n /**\n @memberof Whisker\n @desc Draws the whisker.\n @param {Function} [*callback*]\n @chainable\n */\n render(callback) {\n\n if (this._select === void 0) {\n this.select(select(\"body\").append(\"svg\")\n .style(\"width\", `${window.innerWidth}px`)\n .style(\"height\", `${window.innerHeight}px`)\n .style(\"display\", \"block\").node());\n }\n\n const lineData = [];\n this._data.forEach((d, i) => {\n\n const orient = this._orient(d, i);\n const x = this._x(d, i);\n const y = this._y(d, i);\n\n let endpointX = x;\n if (orient === \"left\") endpointX -= this._length(d, i);\n else if (orient === \"right\") endpointX += this._length(d, i);\n\n let endpointY = y;\n if (orient === \"top\") endpointY -= this._length(d, i);\n else if (orient === \"bottom\") endpointY += this._length(d, i);\n\n lineData.push({__d3plus__: true, data: d, i, id: i, x, y});\n lineData.push({__d3plus__: true, data: d, i, id: i, x: endpointX, y: endpointY});\n });\n\n // Draw whisker line.\n this._line = new Line()\n .data(lineData)\n .select(elem(\"g.d3plus-Whisker\", {parent: this._select}).node())\n .config(configPrep.bind(this)(this._lineConfig, \"shape\"))\n .render(callback);\n\n const whiskerData = this._data.map((d, i) => {\n\n const dataObj = {};\n dataObj.__d3plus__ = true;\n dataObj.data = d;\n dataObj.i = i;\n dataObj.endpoint = this._endpoint(d, i);\n dataObj.length = this._length(d, i);\n dataObj.orient = this._orient(d, i);\n\n let endpointX = this._x(d, i);\n if (dataObj.orient === \"left\") endpointX -= dataObj.length;\n else if (dataObj.orient === \"right\") endpointX += dataObj.length;\n\n let endpointY = this._y(d, i);\n if (dataObj.orient === \"top\") endpointY -= dataObj.length;\n else if (dataObj.orient === \"bottom\") endpointY += dataObj.length;\n\n dataObj.x = endpointX;\n dataObj.y = endpointY;\n\n return dataObj;\n\n });\n\n // Draw whisker endpoint.\n this._whiskerEndpoint = [];\n nest()\n .key(d => d.endpoint)\n .entries(whiskerData)\n .forEach(shapeData => {\n const shapeName = shapeData.key;\n this._whiskerEndpoint.push(new shapes[shapeName]()\n .data(shapeData.values)\n .select(elem(`g.d3plus-Whisker-Endpoint-${shapeName}`, {parent: this._select}).node())\n .config({\n height: d => d.orient === \"top\" || d.orient === \"bottom\" ? 5 : 20,\n width: d => d.orient === \"top\" || d.orient === \"bottom\" ? 20 : 5\n })\n .config(configPrep.bind(this)(this._endpointConfig, \"shape\", shapeName))\n .render());\n });\n\n return this;\n\n }\n\n /**\n @memberof Whisker\n @desc Sets the highlight accessor to the Shape class's active function.\n @param {Function} [*value*]\n @chainable\n */\n active(_) {\n if (this._line) this._line.active(_);\n if (this._whiskerEndpoint) this._whiskerEndpoint.forEach(endPoint => endPoint.active(_));\n }\n\n /**\n @memberof Whisker\n @desc If *data* is specified, sets the data array to the specified array and returns the current class instance. If *data* is not specified, returns the current data array.\n @param {Array} [*data* = []]\n @chainable\n */\n data(_) {\n return arguments.length ? (this._data = _, this) : this._data;\n }\n\n /**\n @memberof Whisker\n @desc If *value* is specified, sets the endpoint accessor to the specified function or string and returns the current class instance.\n @param {Function|String}\n @chainable\n */\n endpoint(_) {\n return arguments.length ? (this._endpoint = typeof _ === \"function\" ? _ : constant(_), this) : this._endpoint;\n }\n\n /**\n @memberof Whisker\n @desc If *value* is specified, sets the config method for each endpoint and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n endpointConfig(_) {\n return arguments.length ? (this._endpointConfig = assign(this._endpointConfig, _), this) : this._endpointConfig;\n }\n\n /**\n @memberof Whisker\n @desc Sets the highlight accessor to the Shape class's hover function.\n @param {Function} [*value*]\n @chainable\n */\n hover(_) {\n if (this._line) this._line.hover(_);\n if (this._whiskerEndpoint) this._whiskerEndpoint.forEach(endPoint => endPoint.hover(_));\n }\n\n /**\n @memberof Whisker\n @desc If *value* is specified, sets the length accessor for whisker and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n */\n length(_) {\n return arguments.length ? (this._length = typeof _ === \"function\" ? _ : constant(_), this) : this._length;\n }\n\n /**\n @memberof Whisker\n @desc If *value* is specified, sets the config method for line shape and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n lineConfig(_) {\n return arguments.length ? (this._lineConfig = assign(this._lineConfig, _), this) : this._lineConfig;\n }\n \n /**\n @memberof Whisker\n @desc If *value* is specified, sets the orientation to the specified value. If *value* is not specified, returns the current orientation.\n @param {Function|String} [*value* = \"top\"] Accepts \"top\", \"right\", \"bottom\" or \"left\"\n @chainable\n */\n orient(_) {\n return arguments.length ? (this._orient = typeof _ === \"function\" ? _ : constant(_), this) : this._orient;\n }\n\n /**\n @memberof Whisker\n @desc If *selector* is specified, sets the SVG container element to the specified d3 selector or DOM element and returns the current class instance. If *selector* is not specified, returns the current SVG container element.\n @param {String|HTMLElement} [*selector* = d3.select(\"body\").append(\"svg\")]\n @chainable\n */\n select(_) {\n return arguments.length ? (this._select = select(_), this) : this._select;\n }\n\n /**\n @memberof Whisker\n @desc If *value* is specified, sets the x axis to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.x;\n}\n */\n x(_) {\n return arguments.length ? (this._x = typeof _ === \"function\" ? _ : constant(_), this) : this._x;\n }\n\n /**\n @memberof Whisker\n @desc If *value* is specified, sets the y axis to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.y;\n}\n */\n y(_) {\n return arguments.length ? (this._y = typeof _ === \"function\" ? _ : constant(_), this) : this._y;\n }\n\n}\n","import {max, min, quantile} from \"d3-array\";\nimport {nest} from \"d3-collection\";\nimport {select} from \"d3-selection\";\n\nimport {merge} from \"@d3plus/data\";\nimport {assign, elem} from \"@d3plus/dom\";\nimport {accessor, BaseClass, configPrep, constant} from \"../utils/index.js\";\n\nimport Circle from \"./Circle.js\";\nimport Rect from \"./Rect.js\";\nimport Whisker from \"./Whisker.js\";\n\nconst shapes = {Circle, Rect};\n\n/**\n @class Box\n @extends BaseClass\n @desc Creates SVG box based on an array of data.\n*/\nexport default class Box extends BaseClass {\n\n /**\n @memberof Box\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from BaseClass.\n @private\n */\n constructor() {\n\n super();\n\n this._medianConfig = {\n fill: constant(\"black\")\n };\n this._orient = accessor(\"orient\", \"vertical\");\n this._outlier = accessor(\"outlier\", \"Circle\");\n this._outlierConfig = {\n Circle: {\n r: accessor(\"r\", 5)\n },\n Rect: {\n height: (d, i) => this._orient(d, i) === \"vertical\" ? 5 : 20,\n width: (d, i) => this._orient(d, i) === \"vertical\" ? 20 : 5\n }\n };\n this._rectConfig = {\n fill: constant(\"white\"),\n stroke: constant(\"black\"),\n strokeWidth: constant(1)\n };\n this._rectWidth = constant(50);\n this._whiskerConfig = {};\n this._whiskerMode = [\"tukey\", \"tukey\"];\n this._x = accessor(\"x\", 250);\n this._y = accessor(\"y\", 250);\n\n }\n\n /**\n @memberof Box\n @desc Draws the Box.\n @param {Function} [*callback*]\n @chainable\n */\n render() {\n\n if (this._select === void 0) {\n this.select(select(\"body\").append(\"svg\")\n .style(\"width\", `${window.innerWidth}px`)\n .style(\"height\", `${window.innerHeight}px`)\n .style(\"display\", \"block\").node());\n }\n\n const outlierData = [];\n\n const filteredData = nest()\n .key((d, i) => this._orient(d, i) === \"vertical\" ? this._x(d, i) : this._y(d, i))\n .entries(this._data)\n .map(d => {\n d.data = merge(d.values);\n d.i = this._data.indexOf(d.values[0]);\n d.orient = this._orient(d.data, d.i);\n const values = d.values.map(d.orient === \"vertical\" ? this._y : this._x);\n values.sort((a, b) => a - b);\n\n d.first = quantile(values, 0.25);\n d.median = quantile(values, 0.50);\n d.third = quantile(values, 0.75);\n\n const mode = this._whiskerMode;\n\n if (mode[0] === \"tukey\") {\n d.lowerLimit = d.first - (d.third - d.first) * 1.5;\n if (d.lowerLimit < min(values)) d.lowerLimit = min(values);\n }\n else if (mode[0] === \"extent\") d.lowerLimit = min(values);\n else if (typeof mode[0] === \"number\") d.lowerLimit = quantile(values, mode[0]);\n\n if (mode[1] === \"tukey\") {\n d.upperLimit = d.third + (d.third - d.first) * 1.5;\n if (d.upperLimit > max(values)) d.upperLimit = max(values);\n }\n else if (mode[1] === \"extent\") d.upperLimit = max(values);\n else if (typeof mode[1] === \"number\") d.upperLimit = quantile(values, mode[1]);\n\n const rectLength = d.third - d.first;\n\n // Compute values for vertical orientation.\n if (d.orient === \"vertical\") {\n d.height = rectLength;\n d.width = this._rectWidth(d.data, d.i);\n d.x = this._x(d.data, d.i);\n d.y = d.first + rectLength / 2;\n }\n else if (d.orient === \"horizontal\") {\n // Compute values for horizontal orientation.\n d.height = this._rectWidth(d.data, d.i);\n d.width = rectLength;\n d.x = d.first + rectLength / 2;\n d.y = this._y(d.data, d.i);\n }\n\n // Compute data for outliers.\n d.values.forEach((eachValue, index) => {\n const value = d.orient === \"vertical\" ? this._y(eachValue, index) : this._x(eachValue, index);\n\n if (value < d.lowerLimit || value > d.upperLimit) {\n const dataObj = {};\n dataObj.__d3plus__ = true;\n dataObj.data = eachValue;\n dataObj.i = index;\n dataObj.outlier = this._outlier(eachValue, index);\n\n if (d.orient === \"vertical\") {\n dataObj.x = d.x;\n dataObj.y = value;\n outlierData.push(dataObj);\n }\n else if (d.orient === \"horizontal\") {\n dataObj.y = d.y;\n dataObj.x = value;\n outlierData.push(dataObj);\n }\n }\n\n });\n\n d.__d3plus__ = true;\n\n return d;\n });\n\n // Draw box.\n this._box = new Rect()\n .data(filteredData)\n .x(d => d.x)\n .y(d => d.y)\n .select(elem(\"g.d3plus-Box\", {parent: this._select}).node())\n .config(configPrep.bind(this)(this._rectConfig, \"shape\"))\n .render();\n\n // Draw median.\n this._median = new Rect()\n .data(filteredData)\n .x(d => d.orient === \"vertical\" ? d.x : d.median)\n .y(d => d.orient === \"vertical\" ? d.median : d.y)\n .height(d => d.orient === \"vertical\" ? 1 : d.height)\n .width(d => d.orient === \"vertical\" ? d.width : 1)\n .select(elem(\"g.d3plus-Box-Median\", {parent: this._select}).node())\n .config(configPrep.bind(this)(this._medianConfig, \"shape\"))\n .render();\n\n // Draw 2 lines using Whisker class.\n // Construct coordinates for whisker startpoints and push it to the whiskerData.\n const whiskerData = [];\n filteredData.forEach((d, i) => {\n const x = d.x;\n const y = d.y;\n const topLength = d.first - d.lowerLimit;\n const bottomLength = d.upperLimit - d.third;\n\n if (d.orient === \"vertical\") {\n const topY = y - d.height / 2;\n const bottomY = y + d.height / 2;\n whiskerData.push(\n {__d3plus__: true, data: d, i, x, y: topY, length: topLength, orient: \"top\"},\n {__d3plus__: true, data: d, i, x, y: bottomY, length: bottomLength, orient: \"bottom\"}\n );\n }\n else if (d.orient === \"horizontal\") {\n const topX = x + d.width / 2;\n const bottomX = x - d.width / 2;\n whiskerData.push(\n {__d3plus__: true, data: d, i, x: topX, y, length: bottomLength, orient: \"right\"},\n {__d3plus__: true, data: d, i, x: bottomX, y, length: topLength, orient: \"left\"}\n );\n }\n\n });\n\n // Draw whiskers.\n this._whisker = new Whisker()\n .data(whiskerData)\n .select(elem(\"g.d3plus-Box-Whisker\", {parent: this._select}).node())\n .config(configPrep.bind(this)(this._whiskerConfig, \"shape\"))\n .render();\n\n // Draw outliers.\n this._whiskerEndpoint = [];\n nest()\n .key(d => d.outlier)\n .entries(outlierData)\n .forEach(shapeData => {\n const shapeName = shapeData.key;\n this._whiskerEndpoint.push(new shapes[shapeName]()\n .data(shapeData.values)\n .select(elem(`g.d3plus-Box-Outlier-${shapeName}`, {parent: this._select}).node())\n .config(configPrep.bind(this)(this._outlierConfig, \"shape\", shapeName))\n .render());\n });\n\n return this;\n }\n\n /**\n @memberof Box\n @desc Sets the highlight accessor to the Shape class's active function.\n @param {Function} [*value*]\n @chainable\n */\n active(_) {\n if (this._box) this._box.active(_);\n if (this._median) this._median.active(_);\n if (this._whisker) this._whisker.active(_);\n if (this._whiskerEndpoint) this._whiskerEndpoint.forEach(endPoint => endPoint.active(_));\n }\n\n /**\n @memberof Box\n @desc If *data* is specified, sets the data array to the specified array and returns the current class instance. If *data* is not specified, returns the current data array.\n @param {Array} [*data* = []]\n @chainable\n */\n data(_) {\n return arguments.length ? (this._data = _, this) : this._data;\n }\n\n /**\n @memberof Box\n @desc Sets the highlight accessor to the Shape class's hover function.\n @param {Function} [*value*]\n @chainable\n */\n hover(_) {\n if (this._box) this._box.hover(_);\n if (this._median) this._median.hover(_);\n if (this._whisker) this._whisker.hover(_);\n if (this._whiskerEndpoint) this._whiskerEndpoint.forEach(endPoint => endPoint.hover(_));\n }\n\n /**\n @memberof Box\n @desc If *value* is specified, sets the config method for median and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n medianConfig(_) {\n return arguments.length ? (this._medianConfig = assign(this._medianConfig, _), this) : this._medianConfig;\n }\n\n /**\n @memberof Box\n @desc If *value* is specified, sets the orientation to the specified value. If *value* is not specified, returns the current orientation.\n @param {Function|String} [*value* = \"vertical\"] Accepts \"vertical\" or \"horizontal\"\n @chainable\n */\n orient(_) {\n return arguments.length ? (this._orient = typeof _ === \"function\" ? _ : constant(_), this) : this._orient;\n }\n\n /**\n @memberof Box\n @desc If *value* is specified, sets the outlier accessor to the specified function or string and returns the current class instance.\n @param {Function|String}\n @chainable\n */\n outlier(_) {\n return arguments.length ? (this._outlier = typeof _ === \"function\" ? _ : constant(_), this) : this._outlier;\n }\n\n /**\n @memberof Box\n @desc If *value* is specified, sets the config method for each outlier point and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n outlierConfig(_) {\n return arguments.length ? (this._outlierConfig = assign(this._outlierConfig, _), this) : this._outlierConfig;\n }\n\n /**\n @memberof Box\n @desc If *value* is specified, sets the config method for rect shape and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n rectConfig(_) {\n return arguments.length ? (this._rectConfig = assign(this._rectConfig, _), this) : this._rectConfig;\n }\n\n /**\n @memberof Box\n @desc If *value* is specified, sets the width accessor to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.width;\n}\n */\n rectWidth(_) {\n return arguments.length ? (this._rectWidth = typeof _ === \"function\" ? _ : constant(_), this) : this._rectWidth;\n }\n\n /**\n @memberof Box\n @desc If *selector* is specified, sets the SVG container element to the specified d3 selector or DOM element and returns the current class instance. If *selector* is not specified, returns the current SVG container element.\n @param {String|HTMLElement} [*selector* = d3.select(\"body\").append(\"svg\")]\n @chainable\n */\n select(_) {\n return arguments.length ? (this._select = select(_), this) : this._select;\n }\n\n /**\n @memberof Box\n @desc If *value* is specified, sets the config method for whisker and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n whiskerConfig(_) {\n return arguments.length ? (this._whiskerConfig = assign(this._whiskerConfig, _), this) : this._whiskerConfig;\n }\n\n /**\n @memberof Box\n @desc Determines the value used for each whisker. Can be passed a single value to apply for both whiskers, or an Array of 2 values for the lower and upper whiskers (in that order). Accepted values are `\"tukey\"`, `\"extent\"`, or a Number representing a quantile.\n @param {String|Number|String[]|Number[]} [*value* = \"tukey\"]\n @chainable\n */\n whiskerMode(_) {\n return arguments.length ? (this._whiskerMode = _ instanceof Array ? _ : [_, _], this) : this._whiskerMode;\n }\n\n /**\n @memberof Box\n @desc If *value* is specified, sets the x axis to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.x;\n}\n */\n x(_) {\n return arguments.length ? (this._x = typeof _ === \"function\" ? _ : accessor(_), this) : this._x;\n }\n\n /**\n @memberof Box\n @desc If *value* is specified, sets the y axis to the specified function or number and returns the current class instance.\n @param {Function|Number} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.y;\n}\n */\n y(_) {\n return arguments.length ? (this._y = typeof _ === \"function\" ? _ : accessor(_), this) : this._y;\n }\n\n}\n","import {largestRect, path2polygon} from \"@d3plus/math\";\nimport {accessor, constant} from \"../utils/index.js\";\n\nimport Shape from \"./Shape.js\";\n\n/**\n @class Path\n @extends Shape\n @desc Creates SVG Paths based on an array of data.\n*/\nexport default class Path extends Shape {\n\n /**\n @memberof Path\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Shape.\n @private\n */\n constructor() {\n super(\"path\");\n this._d = accessor(\"path\");\n this._labelBounds = (d, i, aes) => {\n const r = largestRect(aes.points, {angle: this._labelConfig.rotate ? this._labelConfig.rotate(d, i) : 0});\n return r ? {angle: r.angle, width: r.width, height: r.height, x: r.cx - r.width / 2, y: r.cy - r.height / 2} : false;\n };\n this._name = \"Path\";\n this._labelConfig = Object.assign(this._labelConfig, {\n textAnchor: \"middle\",\n verticalAlign: \"middle\"\n });\n }\n\n /**\n @memberof Path\n @desc Given a specific data point and index, returns the aesthetic properties of the shape.\n @param {Object} *data point*\n @param {Number} *index*\n @private\n */\n _aes(d, i) {\n return {points: path2polygon(this._d(d, i))};\n }\n\n /**\n @memberof Path\n @desc Draws the paths.\n @param {Function} [*callback*]\n @chainable\n */\n render(callback) {\n\n super.render(callback);\n\n const enter = this._enter\n .attr(\"d\", this._d)\n .call(this._applyStyle.bind(this));\n\n let update = this._update;\n\n if (this._duration) {\n enter\n .attr(\"opacity\", 0)\n .transition(this._transition)\n .attr(\"opacity\", 1);\n update = update.transition(this._transition);\n this._exit.transition(this._transition)\n .attr(\"opacity\", 0);\n }\n\n update\n .call(this._applyStyle.bind(this))\n .attr(\"d\", this._d);\n\n return this;\n\n }\n\n /**\n @memberof Path\n @desc If *value* is specified, sets the \"d\" attribute accessor to the specified function or number and returns the current class instance.\n @param {Function|String} [*value*]\n @chainable\n @example\nfunction(d) {\n return d.path;\n}\n */\n d(_) {\n return arguments.length ? (this._d = typeof _ === \"function\" ? _ : constant(_), this) : this._d;\n }\n\n}\n","\nimport {extent, max, min, range as d3Range, sum} from \"d3-array\";\nimport {timeFormat, timeFormatDefaultLocale} from \"d3-time-format\";\nimport * as scales from \"d3-scale\";\nimport {select} from \"d3-selection\";\nimport {transition} from \"d3-transition\";\n\nimport {colorDefaults} from \"@d3plus/color\";\nimport {assign, attrize, date, elem, rtl as detectRTL} from \"@d3plus/dom\";\nimport {formatAbbreviate, formatDate} from \"@d3plus/format\";\nimport {formatLocale, locale} from \"@d3plus/locales\";\nimport {closest} from \"@d3plus/math\";\nimport {textWrap} from \"@d3plus/text\";\n\nimport {TextBox} from \"../components/index.js\";\nimport * as shapes from \"../shapes/index.js\";\nimport {configPrep, BaseClass, constant} from \"../utils/index.js\";\n\n\n/* catches for -0 and less */\nconst isNegative = d => d < 0 || Object.is(d, -0);\n\nconst floorPow = d => Math.pow(10, Math.floor(Math.log10(Math.abs(d)))) * Math.pow(-1, isNegative(d));\nconst ceilPow = d => Math.pow(10, Math.ceil(Math.log10(Math.abs(d)))) * Math.pow(-1, isNegative(d));\nconst fixFloat = d => {\n const str = `${d}`;\n if (str.includes(\"e-\") || str === \"0\") return 0;\n const nineMatch = str.match(/(-*[0-9]+\\.[0]*)([0-8]+)9{3,}[0-9]+$/);\n if (nineMatch) return +`${nineMatch[1]}${+nineMatch[2] + 1}`;\n const zeroMatch = str.match(/(-*[0-9]+\\.[0]*)([1-9]+)0*[0-9]*0{3,}[0-9]+$/);\n if (zeroMatch) return +`${zeroMatch[1]}${+zeroMatch[2]}`;\n return d;\n}\n\n/**\n * Calculates ticks from a given scale (negative and/or positive)\n * @param {scale} scale A d3-scale object\n * @private\n */\nfunction calculateStep(scale, minorTicks = false) {\n\n const stepScale = scales.scaleLinear().domain([200, 1200]).range([8, 28]);\n const scaleRange = scale.range();\n const size = Math.abs(scaleRange[1] - scaleRange[0]);\n let step = Math.floor(stepScale(size));\n\n if (this._scale === \"time\") {\n if (this._data && this._data.length) {\n const dataExtent = extent(this._data);\n const distance = this._data.reduce((n, d, i, arr) => {\n if (i) {\n const dist = Math.abs(d - arr[i - 1]);\n if (dist < n) n = dist;\n }\n return n;\n }, Infinity);\n const newStep = Math.round((dataExtent[1] - dataExtent[0]) / distance);\n step = min([step * (minorTicks ? 2 : 0.5), newStep]);\n }\n else {\n step = minorTicks ? step * 2 : step / 2;\n }\n }\n\n return Math.floor(step);\n\n}\n\n/**\n * Calculates ticks from a given scale (negative and/or positive)\n * @param {scale} scale A d3-scale object\n * @private\n */\nfunction calculateTicks(scale, minorTicks = false) {\n\n let ticks = [];\n const step = calculateStep.bind(this)(scale, minorTicks);\n const domain = scale.domain();\n const inverted = domain[1] < domain[0];\n \n if (!minorTicks && this._scale === \"log\") {\n const roundDomain = domain.map(d => Math.log10(d) % 1 === 0 ? d : (inverted ? ceilPow : floorPow)(d));\n const invertedRound = roundDomain[1] < roundDomain[0];\n const powers = roundDomain\n .map(d => (isNegative(d) ? -1 : 1) * ([-1, 1].includes(d) || Math.abs(d) < 1 ? 1 : Math.log10(Math.abs(d))));\n const powMod = Math.ceil((Math.abs(powers[1] - powers[0]) + 1) / (step * 0.65));\n \n ticks = (powMod <= 1 && powers[0] === powers[1]) || invertedRound !== inverted\n ? scale.ticks(step).filter(d => +`${d}`.replace(\"0.\", \"\") % 2 === 0)\n : d3Range(powers[0], powers[1], powers[1] < powers[0] ? -1 : 1)\n .concat([powers[1]])\n .filter(d => Math.abs(d) % powMod === 0)\n .map(d => \n +`${(isNegative(d) ? -1 : 1) * (d ? Math.pow(10, Math.abs(d)) : Math.sign(1 / d) > 0 ? 1 : -1)}`\n .replace(/9+/g, \"1\")\n );\n }\n else {\n\n ticks = scale.ticks(step);\n if (!minorTicks && ![\"log\", \"time\"].includes(this._scale) && ticks.length > 1) {\n let majorDiff = Math.abs(fixFloat(ticks[1] - ticks[0]) * 2);\n ticks = ticks.filter(d => {\n const mod = Math.abs(d) % majorDiff;\n const modFloat = fixFloat(mod);\n if (modFloat !== mod) {\n return !modFloat || modFloat === majorDiff;\n }\n return mod === 0;\n });\n }\n\n }\n \n // forces min/max into ticks, if not present\n if (!this._d3ScaleNegative || isNegative(domain[inverted ? 1 : 0]) === ticks.some(d => isNegative(d))) {\n if (!ticks.map(Number).includes(+domain[0])) {\n ticks.unshift(domain[0]);\n }\n }\n if (!this._d3ScaleNegative || isNegative(domain[inverted ? 0 : 1]) === ticks.some(d => isNegative(d))) {\n if (!ticks.map(Number).includes(+domain[1])) {\n ticks.push(domain[1]);\n }\n }\n \n\n // for time scale, if data array has been provided, filter out ticks that are not in the array\n if (this._scale === \"time\" && this._data.length) {\n const dataNumbers = this._data.map(Number);\n ticks = ticks.filter(t => dataNumbers.includes(+t));\n }\n\n return ticks;\n}\n\n/**\n @class Axis\n @extends BaseClass\n @desc Creates an SVG scale based on an array of data.\n*/\nexport default class Axis extends BaseClass {\n\n /**\n @memberof Axis\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._align = \"middle\";\n this._barConfig = {\n \"stroke\": \"#999\",\n \"stroke-width\": 1\n };\n this._data = [];\n this._domain = [0, 10];\n this._duration = 600;\n this._gridConfig = {\n \"stroke\": \"#eee\",\n \"stroke-width\": 1\n };\n this._gridLog = false;\n this._height = 400;\n this._labelOffset = false;\n this._labelRotation = false;\n this.orient(\"bottom\");\n this._outerBounds = {width: 0, height: 0, x: 0, y: 0};\n this._padding = 5;\n this._paddingInner = 0.1;\n this._paddingOuter = 0.1;\n this._rounding = \"none\";\n this._roundingInsideMinPrefix = \"< \";\n this._roundingInsideMinSuffix = \"\";\n this._roundingInsideMaxPrefix = \"\";\n this._roundingInsideMaxSuffix = \"+\";\n this._scale = \"linear\";\n this._scalePadding = 0.5;\n this._shape = \"Line\";\n this._shapeConfig = {\n fill: \"#999\",\n height: d => d.tick ? 8 : 0,\n label: d => d.text,\n labelBounds: d => d.labelBounds,\n labelConfig: {\n fontColor: \"#999\",\n fontResize: false,\n fontSize: constant(12),\n padding: 5,\n textAnchor: () => {\n const rtl = detectRTL(this._select.node());\n return this._orient === \"left\" ? rtl ? \"start\" : \"end\"\n : this._orient === \"right\" ? rtl ? \"end\" : \"start\"\n : this._labelRotation ? this._orient === \"bottom\" ? \"end\" : \"start\" : \"middle\";\n },\n verticalAlign: () => this._orient === \"bottom\" ? \"top\" : this._orient === \"top\" ? \"bottom\" : \"middle\"\n },\n r: d => d.tick ? 4 : 0,\n stroke: \"#999\",\n strokeWidth: 1,\n width: d => d.tick ? 8 : 0\n };\n this._tickSize = 8;\n this._tickSuffix = \"normal\";\n this._tickUnit = 0;\n this._timeLocale = undefined;\n this._titleClass = new TextBox();\n this._titleConfig = {\n fontColor: colorDefaults.dark,\n fontSize: 12,\n textAnchor: \"middle\"\n };\n this._width = 400;\n\n }\n\n /**\n @memberof Axis\n @desc Sets positioning for the axis bar.\n @param {D3Selection} *bar*\n @private\n */\n _barPosition(bar) {\n\n const {height, x, y, opposite} = this._position,\n offset = this._margin[opposite],\n position = [\"top\", \"left\"].includes(this._orient) ? this._outerBounds[y] + this._outerBounds[height] - offset : this._outerBounds[y] + offset;\n\n const x1mod = this._scale === \"band\" ? this._d3Scale.step() - this._d3Scale.bandwidth()\n : this._scale === \"point\" ? this._d3Scale.step() * this._d3Scale.padding()\n : 0;\n\n const x2mod = this._scale === \"band\" ? this._d3Scale.step()\n : this._scale === \"point\" ? this._d3Scale.step() * this._d3Scale.padding()\n : 0;\n\n const sortedDomain = (this._d3ScaleNegative ? this._d3ScaleNegative.domain() : []).concat(this._d3Scale ? this._d3Scale.domain() : []).sort((a, b) => a - b);\n\n bar\n .call(attrize, this._barConfig)\n .attr(`${x}1`, this._getPosition(sortedDomain[0]) - x1mod)\n .attr(`${x}2`, this._getPosition(sortedDomain[sortedDomain.length - 1]) + x2mod)\n .attr(`${y}1`, position)\n .attr(`${y}2`, position);\n\n }\n\n /**\n @memberof Axis\n @desc Returns the scale's domain, taking into account negative and positive log scales.\n @private\n */\n _getDomain() {\n\n let ticks = [];\n if (this._d3ScaleNegative) ticks = this._d3ScaleNegative.domain();\n if (this._d3Scale) ticks = ticks.concat(this._d3Scale.domain());\n\n const domain = [\"band\", \"ordinal\", \"point\"].includes(this._scale) ? ticks : extent(ticks);\n return ticks[0] > ticks[1] ? domain.reverse() : domain;\n\n }\n\n /**\n @memberof Axis\n @desc Returns a value's scale position, taking into account negative and positive log scales.\n @param {Number|String} *d*\n @private\n */\n _getPosition(d) {\n if (this._scale === \"log\") {\n if (d === 0) return (this._d3Scale || this._d3ScaleNegative).range()[this._d3Scale ? 0 : 1];\n return (isNegative(d) ? this._d3ScaleNegative || (() => 0) : this._d3Scale)(d);\n }\n return this._d3Scale(d);\n }\n\n /**\n @memberof Axis\n @desc Returns the scale's range, taking into account negative and positive log scales.\n @private\n */\n _getRange() {\n\n let ticks = [];\n if (this._d3ScaleNegative) ticks = this._d3ScaleNegative.range();\n if (this._d3Scale) ticks = ticks.concat(this._d3Scale.range());\n return ticks[0] > ticks[1] ? extent(ticks).reverse() : extent(ticks);\n\n }\n\n /**\n @memberof Axis\n @desc Returns the scale's labels, taking into account negative and positive log scales.\n @private\n */\n _getLabels() {\n let labels = [];\n if (this._d3ScaleNegative) labels = labels.concat(calculateTicks.bind(this)(this._d3ScaleNegative, false));\n if (this._d3Scale) labels = labels.concat(calculateTicks.bind(this)(this._d3Scale, false));\n if (this._scale === \"log\") {\n const diverging = labels.some(d => isNegative(d)) && labels.some(d => d > 0);\n if (diverging) {\n const minValue = min([...this._d3ScaleNegative.domain().map(Math.abs), ...this._d3Scale.domain()]);\n // add minValue if it does not exist, and should\n if (!labels.includes(minValue)) {\n labels.splice(labels.findIndex(d => d > minValue), 0, minValue);\n }\n // remove -minValue if minValue also exists\n if (labels.includes(-minValue) && labels.includes(minValue)) {\n labels.splice(labels.indexOf(-minValue), 1);\n }\n }\n }\n return labels;\n }\n\n /**\n @memberof Axis\n @desc Returns the scale's ticks, taking into account negative and positive log scales.\n @private\n */\n _getTicks() {\n if ([\"band\", \"ordinal\", \"point\", \"time\"].includes(this._scale) && this._data.length && this._data.length < this._width / 4) {\n return this._scale === \"time\" ? this._data.map(date) : this._data;\n }\n let ticks = [];\n if (this._d3ScaleNegative) ticks = ticks.concat(calculateTicks.bind(this)(this._d3ScaleNegative, true));\n if (this._d3Scale) ticks = ticks.concat(calculateTicks.bind(this)(this._d3Scale, true));\n if (this._scale === \"log\" && ticks.includes(-1) && ticks.includes(1)) ticks.splice(ticks.indexOf(-1), 1);\n return ticks;\n }\n\n /**\n @memberof Axis\n @desc Sets positioning for the grid lines.\n @param {D3Selection} *lines*\n @private\n */\n _gridPosition(lines, last = false) {\n const {height, x, y, opposite} = this._position,\n offset = this._margin[opposite],\n position = [\"top\", \"left\"].includes(this._orient) ? this._outerBounds[y] + this._outerBounds[height] - offset : this._outerBounds[y] + offset,\n scale = last ? this._lastScale || this._getPosition.bind(this) : this._getPosition.bind(this),\n size = [\"top\", \"left\"].includes(this._orient) ? offset : -offset,\n xDiff = this._scale === \"band\" ? this._d3Scale.bandwidth() / 2 : 0,\n xPos = d => scale(d.id) + xDiff;\n lines\n .call(attrize, this._gridConfig)\n .attr(`${x}1`, xPos)\n .attr(`${x}2`, xPos)\n .attr(`${y}1`, position)\n .attr(`${y}2`, last ? position : position + size);\n }\n\n /**\n @memberof Axis\n @desc Renders the current Axis to the page. If a *callback* is specified, it will be called once the legend is done drawing.\n @param {Function} [*callback* = undefined]\n @chainable\n */\n render(callback) {\n\n /**\n * Creates an SVG element to contain the axis if none\n * has been specified using the \"select\" method.\n */\n if (this._select === void 0) {\n this.select(select(\"body\").append(\"svg\")\n .attr(\"width\", `${this._width}px`)\n .attr(\"height\", `${this._height}px`)\n .node());\n }\n\n const timeLocale = this._timeLocale || locale[this._locale] || locale[\"en-US\"];\n timeFormatDefaultLocale(timeLocale).format();\n\n /**\n * Declares some commonly used variables.\n */\n const {width, height, x, y, horizontal, opposite} = this._position,\n clipId = `d3plus-Axis-clip-${this._uuid}`,\n flip = [\"top\", \"left\"].includes(this._orient),\n p = this._padding,\n parent = this._select,\n rangeOuter = [p, this[`_${width}`] - p],\n t = transition().duration(this._duration);\n\n const tickValue = this._shape === \"Circle\" ? this._shapeConfig.r\n : this._shape === \"Rect\" ? this._shapeConfig[width]\n : this._shapeConfig.strokeWidth;\n const tickGet = typeof tickValue !== \"function\" ? () => tickValue : tickValue;\n\n /**\n * Zeros out the margins for re-calculation.\n */\n const margin = this._margin = {top: 0, right: 0, bottom: 0, left: 0};\n\n let labels, range, ticks;\n\n /**\n * Constructs the tick formatter function.\n */\n const tickFormat = this._tickFormat ? this._tickFormat : d => {\n if (isNaN(d) || [\"band\", \"ordinal\", \"point\"].includes(this._scale)) {\n return d;\n }\n else if (this._scale === \"time\") {\n const refData = (this._data.length ? this._data : this._domain)\n .map(date)\n .sort((a, b) => +a - +b);\n return formatDate(d, refData, timeFormat).replace(/^Q/g, timeLocale.quarter);\n }\n else if (this._scale === \"linear\" && this._tickSuffix === \"smallest\") {\n const locale = typeof this._locale === \"object\" ? this._locale : formatLocale[this._locale];\n const {separator, suffixes} = locale;\n const suff = d >= 1000 ? suffixes[this._tickUnit + 8] : \"\";\n const tick = d / Math.pow(10, 3 * this._tickUnit);\n const number = formatAbbreviate(tick, locale, `,.${tick.toString().length}r`);\n return `${number}${separator}${suff}`;\n }\n else {\n const inverted = ticks[1] < ticks[0];\n const minTick = inverted ? ticks.length - 1 : 0;\n const maxTick = inverted ? 0 : ticks.length - 1;\n const prefix = this._rounding === \"inside\" \n ? ticks.indexOf(d) === minTick ? this._roundingInsideMinPrefix \n : ticks.indexOf(d) === maxTick ? this._roundingInsideMaxPrefix\n : \"\" : \"\";\n const suffix = this._rounding === \"inside\" \n ? ticks.indexOf(d) === minTick ? this._roundingInsideMinSuffix \n : ticks.indexOf(d) === maxTick ? this._roundingInsideMaxSuffix\n : \"\" : \"\";\n return `${prefix}${formatAbbreviate(d, this._locale)}${suffix}`;\n }\n };\n\n /**\n * (Re)calculates the internal d3 scale\n * @param {} newRange\n */\n function setScale(newRange = this._range) {\n\n /**\n * Calculates the internal \"range\" array to use, including\n * fallbacks if not specified with the \"range\" method.\n */\n range = newRange ? newRange.slice() : [undefined, undefined];\n let [minRange, maxRange] = rangeOuter;\n if (this._range) {\n if (this._range[0] !== undefined) minRange = this._range[0];\n if (this._range[this._range.length - 1] !== undefined) maxRange = this._range[this._range.length - 1];\n }\n if (range[0] === undefined || range[0] < minRange) range[0] = minRange;\n if (range[1] === undefined || range[1] > maxRange) range[1] = maxRange;\n\n const sizeInner = maxRange - minRange;\n if (this._scale === \"ordinal\" && this._domain.length > range.length) {\n if (newRange === this._range) {\n const buckets = this._domain.length + 1;\n range = d3Range(buckets)\n .map(d => range[0] + sizeInner * (d / (buckets - 1)))\n .slice(1, buckets);\n range = range.map(d => d - range[0] / 2);\n }\n else {\n const buckets = this._domain.length;\n const size = range[1] - range[0];\n range = d3Range(buckets)\n .map(d => range[0] + size * (d / (buckets - 1)));\n }\n }\n // else if (newRange === this._range) {\n // const tickScale = scales.scaleSqrt().domain([10, 400]).range([10, 50]);\n // const domain = this._scale === \"time\" ? this._domain.map(date) : this._domain;\n // const scaleTicks = d3Ticks(domain[0], domain[1], Math.floor(sizeInner / tickScale(sizeInner)));\n\n // // labels = (this._labels\n // // ? this._scale === \"time\" ? this._labels.map(date) : this._labels\n // // : scaleTicks).slice();\n // // const buckets = labels.length;\n\n // // if (buckets) {\n // // const pad = Math.ceil(sizeInner / buckets / 2);\n // // range = [range[0] + pad, range[1] - pad];\n // // }\n\n // }\n\n /**\n * Sets up the initial d3 scale, using this._domain and the\n * previously defined range variable.\n */\n const scale = `scale${this._scale.charAt(0).toUpperCase()}${this._scale.slice(1)}`;\n\n const initialDomain = this._domain.slice();\n\n this._d3Scale = scales[scale]()\n .domain(this._scale === \"time\" ? initialDomain.map(date) : initialDomain)\n .range(range);\n\n\n if (this._rounding !== \"none\") {\n\n const roundDomain = () => {\n const zeroLength = d => {\n if (smallScale) {\n if (!d) return 0;\n const m = `${d}`.match(/0\\.(0*)/);\n if (m) return +`0.${Array(m[1].length + 1).fill(0).join(\"\")}1`;\n }\n return `${Math.round(Math.abs(d))}`.length;\n };\n const smallScale = initialDomain.every(d => Math.abs(d) < 1);\n const zeroArray = [zeroLength(initialDomain[0]), zeroLength(initialDomain[1])].filter(Boolean).sort();\n const diverging = initialDomain.some(d => isNegative(d)) && initialDomain.some(d => d > 0);\n const zeros = zeroArray.length === 1 ? zeroArray[0] \n : zeroArray[0] > 1 && zeroArray[0] === zeroArray[1] ? zeroArray[0] - 1\n : this._rounding === \"outside\" || !diverging \n ? zeroArray[0] + ((zeroArray[1] - zeroArray[0]) / 2) \n : max(zeroArray);\n let factor = zeros < 1 ? fixFloat(zeros) : +`1${Array(Math.floor(fixFloat(zeros)) - 1).fill(0).join(\"\")}`;\n if (factor >= Math.abs(initialDomain[1] - initialDomain[0])) factor /= 2;\n const inverted = initialDomain[1] < initialDomain[0];\n const newDomain = [\n Math[this._rounding === \"outside\" ? inverted ? \"ceil\" : \"floor\" : inverted ? \"floor\" : \"ceil\"](\n initialDomain[0] / factor\n ) * factor,\n Math[this._rounding === \"outside\" ? inverted ? \"floor\" : \"ceil\" : inverted ? \"ceil\" : \"floor\"](\n initialDomain[1] / factor\n ) * factor\n ];\n if (this._scale === \"log\") {\n if (newDomain[0] === 0) newDomain[0] = initialDomain[0];\n if (newDomain[1] === 0) newDomain[1] = initialDomain[1];\n }\n this._d3Scale.domain(newDomain.map(fixFloat));\n }\n \n if (this._scale === \"linear\") {\n roundDomain.bind(this)();\n }\n else if (this._scale === \"log\") {\n const powDomain = [];\n const inverted = initialDomain[1] < initialDomain[0];\n powDomain[0] = (this._rounding === \"outside\" \n ? isNegative(initialDomain[0]) ? inverted ? floorPow : ceilPow : inverted ? ceilPow : floorPow \n : isNegative(initialDomain[0]) ? inverted ? ceilPow : floorPow : inverted ? floorPow : ceilPow\n )(initialDomain[0]);\n powDomain[1] = (this._rounding === \"inside\" \n ? isNegative(initialDomain[1]) ? inverted ? floorPow : ceilPow : inverted ? ceilPow : floorPow \n : isNegative(initialDomain[1]) ? inverted ? ceilPow : floorPow : inverted ? floorPow : ceilPow\n )(initialDomain[1]);\n const powInverted = powDomain[1] < powDomain[0];\n if (powDomain[0] !== powDomain[1] && powDomain.some(d => Math.abs(d) > 10) && powInverted === inverted) {\n this._d3Scale.domain(powDomain);\n }\n else {\n roundDomain.bind(this)();\n }\n }\n\n }\n\n if (this._d3Scale.padding) this._d3Scale.padding(this._scalePadding);\n if (this._d3Scale.paddingInner) this._d3Scale.paddingInner(this._paddingInner);\n if (this._d3Scale.paddingOuter) this._d3Scale.paddingOuter(this._paddingOuter);\n\n /**\n * Constructs a separate \"negative only\" scale for logarithmic\n * domains, as they cannot pass zero.\n */\n this._d3ScaleNegative = null;\n if (this._scale === \"log\") {\n const domain = this._d3Scale.domain();\n if (domain[0] === 0) {\n const smallestNumber = min([min(this._data), Math.abs(domain[1])]);\n domain[0] = smallestNumber === 0 || smallestNumber === 1 ? 1e-6 : smallestNumber <= 1 ? floorPow(smallestNumber) : 1;\n if (isNegative(domain[1])) domain[0] *= -1;\n }\n else if (domain[domain.length - 1] === 0) {\n const smallestNumber = min([min(this._data), Math.abs(domain[0])]);\n domain[domain.length - 1] = smallestNumber === 0 || smallestNumber === 1 ? 1e-6 : smallestNumber <= 1 ? floorPow(smallestNumber) : 1;\n if (isNegative(domain[0])) domain[domain.length - 1] *= -1;\n }\n const range = this._d3Scale.range();\n\n // all negatives\n if (isNegative(domain[0]) && isNegative(domain[domain.length - 1])) {\n this._d3ScaleNegative = this._d3Scale.copy()\n .domain(domain)\n .range(range);\n this._d3Scale = null;\n }\n // all positives\n else if (domain[0] > 0 && domain[domain.length - 1] > 0) {\n this._d3Scale\n .domain(domain)\n .range(range);\n }\n // crosses zero\n else {\n \n const powers = domain.map(d => Math.log10(Math.abs(d))).map(d => d || -1e-6);\n const leftPercentage = powers[0] / sum(powers);\n const zero = leftPercentage * (range[1] - range[0]);\n\n let minPositive = min([min(this._data.filter(d => d >= 0)), Math.abs(domain[1])]);\n if (minPositive === 1) minPositive = 1e-6;\n let minNegative = min([min(this._data.filter(isNegative)), Math.abs(domain[0])]);\n if (minNegative === 1) minNegative = 1e-6;\n const minPosPow = minPositive === 0 ? 1e-6 : minPositive <= 1 ? floorPow(minPositive) : 1;\n const minNegPow = minNegative === 0 ? -1e-6 : minNegative <= 1 ? floorPow(minNegative) : 1;\n const minValue = min([Math.abs(minPosPow), Math.abs(minNegPow)]);\n this._d3ScaleNegative = this._d3Scale.copy();\n (isNegative(domain[0]) ? this._d3Scale : this._d3ScaleNegative)\n .domain([isNegative(domain[0]) ? minValue : -minValue, domain[1]])\n .range([range[0] + zero, range[1]]);\n (isNegative(domain[0]) ? this._d3ScaleNegative : this._d3Scale)\n .domain([domain[0], isNegative(domain[0]) ? -minValue : minValue])\n .range([range[0], range[0] + zero]);\n }\n\n }\n\n /**\n * Determines the of values array to use\n * for the \"ticks\" and the \"labels\"\n */\n ticks = (this._ticks\n ? this._scale === \"time\" ? this._ticks.map(date) : this._ticks\n : (this._d3Scale ? this._d3Scale.ticks : this._d3ScaleNegative.ticks)\n ? this._getTicks() : this._domain).slice();\n labels = (this._labels\n ? this._scale === \"time\" ? this._labels.map(date) : this._labels\n : (this._d3Scale ? this._d3Scale.ticks : this._d3ScaleNegative.ticks)\n ? this._getLabels() : ticks).slice();\n\n if (this._scale === \"time\") {\n ticks = ticks.map(Number);\n labels = labels.map(Number);\n }\n ticks = ticks.sort((a, b) => this._getPosition(a) - this._getPosition(b));\n labels = labels.sort((a, b) => this._getPosition(a) - this._getPosition(b));\n \n /**\n * Get the smallest suffix.\n */\n if (this._scale === \"linear\" && this._tickSuffix === \"smallest\") {\n const suffixes = labels.filter(d => d >= 1000);\n if (suffixes.length > 0) {\n const min = Math.min(...suffixes);\n let i = 1;\n while (i && i < 7) {\n const n = Math.pow(10, 3 * i);\n if (min / n >= 1) {\n this._tickUnit = i;\n i += 1;\n }\n else {\n break;\n }\n }\n }\n }\n\n /**\n * Removes ticks when they overlap other ticks.\n */\n const pixels = [];\n this._availableTicks = ticks;\n ticks.forEach((d, i) => {\n let s = tickGet({id: d, tick: true}, i);\n if (this._shape === \"Circle\") s *= 2;\n const t = this._getPosition(d);\n if (!pixels.length || Math.abs(closest(t, pixels) - t) > s * 2) pixels.push(t);\n else pixels.push(false);\n });\n ticks = ticks.filter((d, i) => pixels[i] !== false);\n this._visibleTicks = ticks;\n\n }\n setScale.bind(this)();\n\n /**\n * Pre-calculates the size of the title, if defined, in order\n * to adjust the internal margins.\n */\n if (this._title) {\n const {fontFamily, fontSize, lineHeight} = this._titleConfig;\n const titleWrap = textWrap()\n .fontFamily(typeof fontFamily === \"function\" ? fontFamily() : fontFamily)\n .fontSize(typeof fontSize === \"function\" ? fontSize() : fontSize)\n .lineHeight(typeof lineHeight === \"function\" ? lineHeight() : lineHeight)\n .width(range[range.length - 1] - range[0] - p * 2)\n .height(this[`_${height}`] - this._tickSize - p * 2);\n const lines = titleWrap(this._title).lines.length;\n margin[this._orient] = lines * titleWrap.lineHeight() + p;\n }\n\n let hBuff = this._shape === \"Circle\"\n ? typeof this._shapeConfig.r === \"function\" ? this._shapeConfig.r({tick: true}) : this._shapeConfig.r\n : this._shape === \"Rect\"\n ? typeof this._shapeConfig[height] === \"function\" ? this._shapeConfig[height]({tick: true}) : this._shapeConfig[height]\n : this._tickSize,\n wBuff = tickGet({tick: true});\n\n if (typeof hBuff === \"function\") hBuff = max(ticks.map(hBuff));\n if (this._shape === \"Rect\") hBuff /= 2;\n if (typeof wBuff === \"function\") wBuff = max(ticks.map(wBuff));\n if (this._shape !== \"Circle\") wBuff /= 2;\n\n /**\n * Calculates the text wrapping and size of a given textData object.\n * @param {Object} datum\n */\n function calculateLabelSize(datum) {\n const {d, i, fF, fP, fS, rotate, space} = datum;\n \n const h = rotate ? \"width\" : \"height\",\n w = rotate ? \"height\" : \"width\";\n\n const wSize = min([this._maxSize, this._width]);\n const hSize = min([this._maxSize, this._height]);\n\n const wrap = textWrap()\n .fontFamily(fF)\n .fontSize(fS)\n .lineHeight(this._shapeConfig.lineHeight ? this._shapeConfig.lineHeight(d, i) : undefined);\n \n wrap[w](horizontal ? space : wSize - hBuff - p - this._margin.left - this._margin.right);\n wrap[h](horizontal ? hSize - hBuff - p - this._margin.top - this._margin.bottom : space);\n\n const res = wrap(tickFormat(d));\n res.lines = res.lines.filter(d => d !== \"\");\n\n res.width = res.lines.length ? Math.ceil(max(res.widths)) : 0;\n\n res.height = res.lines.length ? Math.ceil(res.lines.length * wrap.lineHeight()) + fP : 0;\n\n return res;\n\n }\n\n /** Calculates label offsets */\n function calculateOffset(arr = []) {\n let offset = 0;\n\n arr.forEach(datum => {\n const prev = arr[datum.i - 1];\n\n const h = datum.rotate && horizontal || !datum.rotate && !horizontal ? \"width\" : \"height\",\n w = datum.rotate && horizontal || !datum.rotate && !horizontal ? \"height\" : \"width\";\n\n if (!prev) {\n offset = 1;\n }\n else if (prev.position + prev[w] / 2 > datum.position - datum[w] / 2) {\n if (offset) {\n datum.offset = prev[h];\n offset = 0;\n }\n else offset = 1;\n }\n });\n }\n\n let textData = [];\n function createTextData(offset = 1) {\n\n const {fontFamily, fontSize} = this._shapeConfig.labelConfig;\n const fontPadding = this._shapeConfig.labelConfig.padding;\n \n /**\n * Calculates the space each label would take up, given\n * the provided this._space size.\n */\n textData = labels\n .map((d, i) => {\n \n const fF = typeof fontFamily === \"function\" ? fontFamily(d, i) : fontFamily,\n fP = typeof fontPadding === \"function\" ? fontPadding(d, i) : fontPadding,\n fS = typeof fontSize === \"function\" ? fontSize(d, i) : fontSize,\n position = this._getPosition(d);\n \n const lineHeight = this._shapeConfig.lineHeight ? this._shapeConfig.lineHeight(d, i) : fS * 1.4;\n const datum = {d, i, fF, fP, fS, lineHeight, position, rotate: this._labelRotation};\n return datum;\n \n });\n\n const maxSpace = this._scale === \"band\"\n ? this._d3Scale.bandwidth()\n : textData.reduce((s, d, i) => {\n const {position} = d;\n const prevPosition = !i \n ? textData.length === 1\n ? rangeOuter[0] \n : position - (textData[i + 1].position - position)\n : position - (position - textData[i - 1].position);\n const prevSpace = Math.abs(position - prevPosition);\n\n const nextPosition = i == textData.length - 1\n ? textData.length === 1\n ? rangeOuter[1] \n : position + (position - textData[i - 1].position)\n : position - (position - textData[i + 1].position);\n const nextSpace = Math.abs(position - nextPosition);\n const mod = this._scale === \"point\" ? 1 : 2;\n return max([max([prevSpace, nextSpace]) * mod, s]);\n }, 0);\n\n textData = textData.map(datum => {\n datum.space = maxSpace - datum.fP * 2;\n const res = calculateLabelSize.bind(this)(datum);\n return Object.assign(res, datum);\n });\n\n const reverseTextData = textData.slice().reverse();\n textData.forEach(datum => {\n const {fP, i, position} = datum;\n const sizeName = horizontal ? \"width\" : \"height\";\n let prev = i ? reverseTextData.find((t) => t.i < i && !t.truncated) : false;\n if (i === textData.length - 1) {\n while (prev && position - datum[sizeName] / 2 - fP < prev.position + prev[sizeName] / 2) {\n prev.truncated = true;\n prev = reverseTextData.find((t) => t.i < i && !t.truncated);\n }\n }\n datum.truncated = prev ? position - datum[sizeName] / 2 - fP < prev.position + prev[sizeName] / 2 : false;\n });\n\n if (offset > 1) calculateOffset.bind(this)(textData);\n\n }\n\n createTextData.bind(this)();\n const offsetEnabled = this._labelOffset && textData.some(d => d.truncated);\n if (offsetEnabled) createTextData.bind(this)(2);\n\n /**\n * \"spillover\" will contain the pixel spillover of the first and last label,\n * and then adjust the scale range accordingly.\n */\n const spillovers = [0, 1]\n .map(index => {\n const datum = textData[index ? textData.length - 1 : 0];\n if (!datum) return 0;\n const {height, position, rotate, width} = datum;\n const compPosition = index ? rangeOuter[1] : rangeOuter[0];\n const halfSpace = (rotate || !horizontal ? height : width) / 2;\n if (Math.abs(position - compPosition) >= halfSpace) return 0;\n const spill = halfSpace - (position - compPosition);\n return Math.abs(spill);\n });\n\n const [first, last] = range;\n const newRange = [first + spillovers[0], last - spillovers[1]];\n if (this._range) {\n if (this._range[0] !== undefined) newRange[0] = this._range[0];\n if (this._range[this._range.length - 1] !== undefined) newRange[1] = this._range[this._range.length - 1];\n }\n \n if (newRange[0] !== first || newRange[1] !== last) {\n setScale.bind(this)(newRange);\n createTextData.bind(this)(offsetEnabled ? 2 : 1);\n }\n\n const labelHeight = max(textData, t => t.height) || 0;\n this._labelRotation = horizontal && this._labelRotation === undefined\n ? textData.some(datum => {\n const {i, height, position, truncated} = datum;\n const prev = textData[i - 1];\n return truncated || i && prev.position + prev.height / 2 > position - height / 2;\n }) : this._labelRotation;\n\n const globalOffset = this._labelOffset ? max(textData, d => d.offset || 0) : 0;\n textData.forEach(datum => datum.offset = datum.offset ? globalOffset : 0);\n\n const tBuff = this._shape === \"Line\" ? 0 : hBuff;\n const bounds = this._outerBounds = {\n [height]: (max(textData, t => Math.ceil(t[t.rotate || !horizontal ? \"width\" : \"height\"] + t.offset)) || 0) + (textData.length ? p : 0),\n [width]: rangeOuter[rangeOuter.length - 1] - rangeOuter[0],\n [x]: rangeOuter[0]\n };\n\n bounds[height] = max([this._minSize, bounds[height]]);\n\n margin[this._orient] += hBuff;\n margin[opposite] = this._gridSize !== undefined ? max([this._gridSize, tBuff]) : this[`_${height}`] - margin[this._orient] - bounds[height] - p;\n bounds[height] += margin[opposite] + margin[this._orient];\n bounds[y] = this._align === \"start\" ? this._padding\n : this._align === \"end\" ? this[`_${height}`] - bounds[height] - this._padding\n : this[`_${height}`] / 2 - bounds[height] / 2;\n\n const group = elem(`g#d3plus-Axis-${this._uuid}`, {parent});\n this._group = group;\n \n const grid = elem(\"g.grid\", {parent: group}).selectAll(\"line\")\n .data((this._gridSize !== 0 ? this._grid || this._scale === \"log\" && !this._gridLog ? labels : ticks : []).map(d => ({id: d})), d => d.id);\n\n grid.exit().transition(t)\n .attr(\"opacity\", 0)\n .call(this._gridPosition.bind(this))\n .remove();\n\n grid.enter().append(\"line\")\n .attr(\"opacity\", 0)\n .attr(\"clip-path\", `url(#${clipId})`)\n .call(this._gridPosition.bind(this), true)\n .merge(grid).transition(t)\n .attr(\"opacity\", 1)\n .call(this._gridPosition.bind(this));\n\n const labelOnly = labels.filter((d, i) => textData[i].lines.length && !ticks.includes(d));\n\n const rotated = textData.some(d => d.rotate);\n\n let tickData = ticks.concat(labelOnly)\n .map(d => {\n\n const data = textData.find(td => td.d === d);\n\n const xPos = this._getPosition(d);\n const space = data ? data.space : 0;\n const lines = data ? data.lines.length : 1;\n const lineHeight = data ? data.lineHeight : 1;\n const fP = data ? data.fP : 0;\n\n const labelOffset = data && this._labelOffset ? data.offset : 0;\n\n const labelWidth = horizontal ? space : bounds.width - margin[this._position.opposite] - hBuff - margin[this._orient] + p;\n\n const offset = margin[opposite],\n size = (hBuff + labelOffset) * (flip ? -1 : 1),\n yPos = flip ? bounds[y] + bounds[height] - offset : bounds[y] + offset;\n \n const tickConfig = {\n id: d,\n labelBounds: rotated && data\n ? {\n x: -data.width / 2 + data.fS / 4,\n y: this._orient === \"bottom\" ? size + (data.width - lineHeight * lines) / 2 + fP : size * 2 - (data.width + lineHeight * lines) / 2 + fP,\n width: data.width,\n height: data.height\n } : {\n x: horizontal ? -space / 2 : this._orient === \"left\" ? -labelWidth - p + size : size + p,\n y: horizontal ? this._orient === \"bottom\" ? size + fP : size - labelHeight - fP : -space / 2,\n width: horizontal ? space : labelWidth,\n height: horizontal ? labelHeight : space\n },\n rotate: data ? data.rotate : false,\n size: labels.includes(d) || (this._scale === \"log\" && Math.log10(Math.abs(d)) % 1 === 0) ? size : ticks.includes(d) ? Math.ceil(size / 2) : this._data.find(t => +t === d) ? Math.ceil(size / 4) : 0,\n text: !(data || {}).truncated && labels.includes(d) ? tickFormat(d) : false,\n tick: ticks.includes(d),\n [x]: xPos + (this._scale === \"band\" ? this._d3Scale.bandwidth() / 2 : 0),\n [y]: yPos\n };\n\n return tickConfig;\n\n });\n\n if (this._shape === \"Line\") {\n tickData = tickData.concat(tickData.map(d => {\n const dupe = Object.assign({}, d);\n dupe[y] += d.size;\n return dupe;\n }));\n }\n \n new shapes[this._shape]()\n .data(tickData)\n .duration(this._duration)\n .labelConfig({\n ellipsis: d => d && d.length ? `${d}...` : \"\",\n rotate: d => d.rotate ? -90 : 0\n })\n .select(elem(\"g.ticks\", {parent: group}).node())\n .config(configPrep.bind(this)(this._shapeConfig))\n .labelConfig({padding: 0})\n .render();\n\n const bar = group.selectAll(\"line.bar\").data([null]);\n\n bar.enter().append(\"line\")\n .attr(\"class\", \"bar\")\n .attr(\"opacity\", 0)\n .call(this._barPosition.bind(this))\n .merge(bar).transition(t)\n .attr(\"opacity\", 1)\n .call(this._barPosition.bind(this));\n\n this._titleClass\n .data(this._title ? [{text: this._title}] : [])\n .duration(this._duration)\n .height(margin[this._orient])\n .rotate(this._orient === \"left\" ? -90 : this._orient === \"right\" ? 90 : 0)\n .select(elem(\"g.d3plus-Axis-title\", {parent: group}).node())\n .text(d => d.text)\n .verticalAlign(\"middle\")\n .width(range[range.length - 1] - range[0])\n .x(horizontal ? range[0] : this._orient === \"left\" ? bounds.x + margin.left / 2 - (range[range.length - 1] - range[0]) / 2 : bounds.x + bounds.width - margin.right / 2 - (range[range.length - 1] - range[0]) / 2)\n .y(horizontal ? this._orient === \"bottom\" ? bounds.y + bounds.height - margin.bottom : bounds.y : range[0] + (range[range.length - 1] - range[0]) / 2 - margin[this._orient] / 2)\n .config(configPrep.bind(this)(this._titleConfig))\n .render();\n\n this._lastScale = this._getPosition.bind(this);\n\n if (callback) setTimeout(callback, this._duration + 100);\n\n return this;\n\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the horizontal alignment to the specified value and returns the current class instance.\n @param {String} [*value* = \"center\"] Supports `\"left\"` and `\"center\"` and `\"right\"`.\n @chainable\n */\n align(_) {\n return arguments.length ? (this._align = _, this) : this._align;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the axis line style and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n barConfig(_) {\n return arguments.length ? (this._barConfig = Object.assign(this._barConfig, _), this) : this._barConfig;\n }\n\n /**\n @memberof Axis\n @desc An array of data points, which helps determine which ticks should be shown and which time resolution should be displayed.\n @param {Array} [*value*]\n @chainable\n */\n data(_) {\n return arguments.length ? (this._data = _, this) : this._data;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the scale domain of the axis and returns the current class instance.\n @param {Array} [*value* = [0, 10]]\n @chainable\n */\n domain(_) {\n return arguments.length ? (this._domain = _, this) : this._domain;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the transition duration of the axis and returns the current class instance.\n @param {Number} [*value* = 600]\n @chainable\n */\n duration(_) {\n return arguments.length ? (this._duration = _, this) : this._duration;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the grid values of the axis and returns the current class instance.\n @param {Array} [*value*]\n @chainable\n */\n grid(_) {\n return arguments.length ? (this._grid = _, this) : this._grid;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the grid config of the axis and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n gridConfig(_) {\n return arguments.length ? (this._gridConfig = Object.assign(this._gridConfig, _), this) : this._gridConfig;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the grid behavior of the axis when scale is logarithmic and returns the current class instance.\n @param {Boolean} [*value* = false]\n @chainable\n */\n gridLog(_) {\n return arguments.length ? (this._gridLog = _, this) : this._gridLog;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the grid size of the axis and returns the current class instance.\n @param {Number} [*value* = undefined]\n @chainable\n */\n gridSize(_) {\n return arguments.length ? (this._gridSize = _, this) : this._gridSize;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the overall height of the axis and returns the current class instance.\n @param {Number} [*value* = 100]\n @chainable\n */\n height(_) {\n return arguments.length ? (this._height = _, this) : this._height;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the visible tick labels of the axis and returns the current class instance.\n @param {Array} [*value*]\n @chainable\n */\n labels(_) {\n return arguments.length ? (this._labels = _, this) : this._labels;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets whether offsets will be used to position some labels further away from the axis in order to allow space for the text.\n @param {Boolean} [*value* = false]\n @chainable\n */\n labelOffset(_) {\n return arguments.length ? (this._labelOffset = _, this) : this._labelOffset;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets whether whether horizontal axis labels are rotated -90 degrees.\n @param {Boolean} [*value* = false]\n @chainable\n */\n labelRotation(_) {\n return arguments.length ? (this._labelRotation = _, this) : this._labelRotation;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the maximum size allowed for the space that contains the axis tick labels and title.\n @param {Number}\n @chainable\n */\n maxSize(_) {\n return arguments.length ? (this._maxSize = _, this) : this._maxSize;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the minimum size alloted for the space that contains the axis tick labels and title.\n @param {Number}\n @chainable\n */\n minSize(_) {\n return arguments.length ? (this._minSize = _, this) : this._minSize;\n }\n\n /**\n @memberof Axis\n @desc If *orient* is specified, sets the orientation of the shape and returns the current class instance. If *orient* is not specified, returns the current orientation.\n @param {String} [*orient* = \"bottom\"] Supports `\"top\"`, `\"right\"`, `\"bottom\"`, and `\"left\"` orientations.\n @chainable\n */\n orient(_) {\n if (arguments.length) {\n\n const horizontal = [\"top\", \"bottom\"].includes(_),\n opps = {top: \"bottom\", right: \"left\", bottom: \"top\", left: \"right\"};\n\n this._position = {\n horizontal,\n width: horizontal ? \"width\" : \"height\",\n height: horizontal ? \"height\" : \"width\",\n x: horizontal ? \"x\" : \"y\",\n y: horizontal ? \"y\" : \"x\",\n opposite: opps[_]\n };\n\n return this._orient = _, this;\n\n }\n return this._orient;\n }\n\n /**\n @memberof Axis\n @desc If called after the elements have been drawn to DOM, will returns the outer bounds of the axis content.\n @example\n{\"width\": 180, \"height\": 24, \"x\": 10, \"y\": 20}\n */\n outerBounds() {\n return this._outerBounds;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the padding between each tick label to the specified number and returns the current class instance.\n @param {Number} [*value* = 10]\n @chainable\n */\n padding(_) {\n return arguments.length ? (this._padding = _, this) : this._padding;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the inner padding of band scale to the specified number and returns the current class instance.\n @param {Number} [*value* = 0.1]\n @chainable\n */\n paddingInner(_) {\n return arguments.length ? (this._paddingInner = _, this) : this._paddingInner;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the outer padding of band scales to the specified number and returns the current class instance.\n @param {Number} [*value* = 0.1]\n @chainable\n */\n paddingOuter(_) {\n return arguments.length ? (this._paddingOuter = _, this) : this._paddingOuter;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the scale range (in pixels) of the axis and returns the current class instance. The given array must have 2 values, but one may be `undefined` to allow the default behavior for that value.\n @param {Array} [*value*]\n @chainable\n */\n range(_) {\n return arguments.length ? (this._range = _, this) : this._range;\n }\n\n /**\n @memberof Axis\n @desc Sets the rounding method, so that more evenly spaced ticks appear at the extents of the scale. Can be set to \"none\" (default), \"outside\", or \"inside\".\n @param {String} [*value* = \"none\"]\n @chainable\n */\n rounding(_) {\n return arguments.length ? (this._rounding = _, this) : this._rounding;\n }\n\n /**\n @memberof Axis\n @desc Sets the prefix used for the minimum value of \"inside\" rounding scales.\n @param {String} [*value* = \"< \"]\n @chainable\n */\n roundingInsideMinPrefix(_) {\n return arguments.length ? (this._roundingInsideMinPrefix = _, this) : this._roundingInsideMinPrefix;\n }\n\n /**\n @memberof Axis\n @desc Sets the suffix used for the minimum value of \"inside\" rounding scales.\n @param {String} [*value* = \"\"]\n @chainable\n */\n roundingInsideMinSuffix(_) {\n return arguments.length ? (this._roundingInsideMinSuffix = _, this) : this._roundingInsideMinSuffix;\n }\n\n /**\n @memberof Axis\n @desc Sets the prefix used for the maximum value of \"inside\" rounding scales.\n @param {String} [*value* = \"\"]\n @chainable\n */\n roundingInsideMaxPrefix(_) {\n return arguments.length ? (this._roundingInsideMaxPrefix = _, this) : this._roundingInsideMaxPrefix;\n }\n\n /**\n @memberof Axis\n @desc Sets the suffix used for the maximum value of \"inside\" rounding scales.\n @param {String} [*value* = \"\"]\n @chainable\n */\n roundingInsideMaxSuffix(_) {\n return arguments.length ? (this._roundingInsideMaxSuffix = _, this) : this._roundingInsideMaxSuffix;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the scale of the axis and returns the current class instance.\n @param {String} [*value* = \"linear\"]\n @chainable\n */\n scale(_) {\n return arguments.length ? (this._scale = _, this) : this._scale;\n }\n\n /**\n @memberof Axis\n @desc Sets the \"padding\" property of the scale, often used in point scales.\n @param {Number} [*value* = 0.5]\n @chainable\n */\n scalePadding(_) {\n return arguments.length ? (this._scalePadding = _, this) : this._scalePadding;\n }\n\n /**\n @memberof Axis\n @desc If *selector* is specified, sets the SVG container element to the specified d3 selector or DOM element and returns the current class instance. If *selector* is not specified, returns the current SVG container element.\n @param {String|HTMLElement} [*selector* = d3.select(\"body\").append(\"svg\")]\n @chainable\n */\n select(_) {\n return arguments.length ? (this._select = select(_), this) : this._select;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the tick shape constructor and returns the current class instance.\n @param {String} [*value* = \"Line\"]\n @chainable\n */\n shape(_) {\n return arguments.length ? (this._shape = _, this) : this._shape;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the tick style of the axis and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n shapeConfig(_) {\n return arguments.length ? (this._shapeConfig = assign(this._shapeConfig, _), this) : this._shapeConfig;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the tick formatter and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n tickFormat(_) {\n return arguments.length ? (this._tickFormat = _, this) : this._tickFormat;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the tick values of the axis and returns the current class instance.\n @param {Array} [*value*]\n @chainable\n */\n ticks(_) {\n return arguments.length ? (this._ticks = _, this) : this._ticks;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the tick size of the axis and returns the current class instance.\n @param {Number} [*value* = 5]\n @chainable\n */\n tickSize(_) {\n return arguments.length ? (this._tickSize = _, this) : this._tickSize;\n }\n\n /**\n @memberof Axis\n @desc Sets the behavior of the abbreviations when you are using linear scale. This method accepts two options: \"normal\" (uses formatAbbreviate to determinate the abbreviation) and \"smallest\" (uses suffix from the smallest tick as reference in every tick).\n @param {String} [*value* = \"normal\"]\n @chainable\n */\n tickSuffix(_) {\n return arguments.length ? (this._tickSuffix = _, this) : this._tickSuffix;\n }\n\n /**\n @memberof Axis\n @desc Defines a custom locale object to be used in time scale. This object must include the following properties: dateTime, date, time, periods, days, shortDays, months, shortMonths. For more information, you can revise [d3p.d3-time-format](https://github.com/d3/d3-time-format/blob/master/README.md#timeFormatLocale).\n @param {Object} [*value* = undefined]\n @chainable\n */\n timeLocale(_) {\n return arguments.length ? (this._timeLocale = _, this) : this._timeLocale;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the title of the axis and returns the current class instance.\n @param {String} [*value*]\n @chainable\n */\n title(_) {\n return arguments.length ? (this._title = _, this) : this._title;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the title configuration of the axis and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n titleConfig(_) {\n return arguments.length ? (this._titleConfig = Object.assign(this._titleConfig, _), this) : this._titleConfig;\n }\n\n /**\n @memberof Axis\n @desc If *value* is specified, sets the overall width of the axis and returns the current class instance.\n @param {Number} [*value* = 400]\n @chainable\n */\n width(_) {\n return arguments.length ? (this._width = _, this) : this._width;\n }\n\n}\n","import {default as Axis} from \"./Axis.js\";\n\n/**\n @class AxisBottom\n @extends Axis\n @desc Shorthand method for creating an axis where the ticks are drawn below the horizontal domain path. Extends all functionality of the base [Axis](#Axis) class.\n*/\nexport default class AxisBottom extends Axis {\n\n /**\n @memberof AxisBottom\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Axis.\n @private\n */\n constructor() {\n super();\n this.orient(\"bottom\");\n }\n\n}\n","import {default as Axis} from \"./Axis.js\";\n\n/**\n @class AxisLeft\n @extends Axis\n @desc Shorthand method for creating an axis where the ticks are drawn to the left of the vertical domain path. Extends all functionality of the base [Axis](#Axis) class.\n*/\nexport default class AxisLeft extends Axis {\n\n /**\n @memberof AxisLeft\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Axis.\n @private\n */\n constructor() {\n super();\n this.orient(\"left\");\n }\n\n}\n","import {default as Axis} from \"./Axis.js\";\n\n/**\n @class AxisRight\n @extends Axis\n @desc Shorthand method for creating an axis where the ticks are drawn to the right of the vertical domain path. Extends all functionality of the base [Axis](#Axis) class.\n*/\nexport default class AxisRight extends Axis {\n\n /**\n @memberof AxisRight\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Axis.\n @private\n */\n constructor() {\n super();\n this.orient(\"right\");\n }\n\n}\n","import {default as Axis} from \"./Axis.js\";\n\n/**\n @class AxisTop\n @extends Axis\n @desc Shorthand method for creating an axis where the ticks are drawn above the vertical domain path. Extends all functionality of the base [Axis](#Axis) class.\n*/\nexport default class AxisTop extends Axis {\n\n /**\n @memberof AxisTop\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Axis.\n @private\n */\n constructor() {\n super();\n this.orient(\"top\");\n }\n\n}\n","\nimport {max, sum} from \"d3-array\";\nimport {select} from \"d3-selection\";\n\nimport {colorDefaults} from \"@d3plus/color\";\nimport {assign, elem, rtl as detectRTL, textWidth} from \"@d3plus/dom\";\nimport {textWrap} from \"@d3plus/text\";\n\nimport {TextBox} from \"../components/index.js\";\nimport * as shapes from \"../shapes/index.js\";\nimport {accessor, BaseClass, configPrep, constant} from \"../utils/index.js\";\n\nconst padding = 5;\n\n/**\n @class Legend\n @extends BaseClass\n @desc Creates an SVG scale based on an array of data. If *data* is specified, immediately draws based on the specified array and returns the current class instance. If *data* is not specified on instantiation, it can be passed/updated after instantiation using the [data](#shape.data) method.\n*/\nexport default class Legend extends BaseClass {\n\n /**\n @memberof Legend\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._titleClass = new TextBox();\n\n this._align = \"center\";\n this._data = [];\n this._direction = \"row\";\n this._duration = 600;\n this._height = 200;\n this._id = accessor(\"id\");\n this._label = accessor(\"id\");\n this._lineData = [];\n this._outerBounds = {width: 0, height: 0, x: 0, y: 0};\n this._padding = 5;\n this._shape = constant(\"Rect\");\n this._shapes = [];\n this._shapeConfig = {\n fill: accessor(\"color\"),\n height: constant(12),\n hitArea: (dd, i) => {\n const d = this._lineData[i],\n h = max([d.height, d.shapeHeight]);\n return {width: d.width + d.shapeWidth, height: h, x: -d.shapeWidth / 2, y: -h / 2};\n },\n labelBounds: (dd, i) => {\n const d = this._lineData[i];\n let x = d.shapeWidth / 2;\n if (d.shape === \"Circle\") x -= d.shapeR / 2;\n const height = max([d.shapeHeight, d.height]);\n const rtlMod = this._rtl ? d.shapeWidth + d.width + this._padding * 2 : 0;\n return {width: d.width, height, x: x + padding - rtlMod, y: -height / 2};\n },\n labelConfig: {\n fontColor: constant(colorDefaults.dark),\n fontFamily: this._titleClass.fontFamily(),\n fontResize: false,\n fontSize: constant(10),\n verticalAlign: \"middle\"\n },\n opacity: 1,\n r: constant(6),\n width: constant(12),\n x: (d, i) => {\n const datum = this._lineData[i];\n const y = datum.y;\n const pad = this._align === \"left\" || this._align === \"right\" && this._direction === \"column\" ? 0 : this._align === \"center\"\n ? (this._outerBounds.width - this._rowWidth(this._lineData.filter(l => y === l.y))) / 2\n : this._outerBounds.width - this._rowWidth(this._lineData.filter(l => y === l.y));\n const prevWords = this._lineData.slice(0, i).filter(l => y === l.y);\n const rtlMod = this._rtl ? datum.width + this._padding : 0;\n return this._rowWidth(prevWords) + this._padding * (prevWords.length ? datum.sentence ? 2 : 1 : 0) +\n this._outerBounds.x + datum.shapeWidth / 2 + pad + rtlMod;\n },\n y: (d, i) => {\n const ld = this._lineData[i];\n return ld.y + this._titleHeight + this._outerBounds.y +\n max(\n this._lineData.filter(l => ld.y === l.y).map(l => l.height)\n .concat(this._data.map((l, x) => this._fetchConfig(\"height\", l, x)))\n ) / 2;\n }\n };\n this._titleConfig = {\n fontSize: 12\n };\n this._verticalAlign = \"middle\";\n this._width = 400;\n\n }\n\n _fetchConfig(key, d, i) {\n const val = this._shapeConfig[key] !== undefined ? this._shapeConfig[key] : this._shapeConfig.labelConfig[key];\n if (!val && key === \"lineHeight\") return this._fetchConfig(\"fontSize\", d, i) * 1.4;\n return typeof val === \"function\" ? val(d, i) : val;\n }\n\n _rowHeight(row) {\n return max(row.map(d => d.height).concat(row.map(d => d.shapeHeight))) + this._padding;\n }\n\n _rowWidth(row) {\n return sum(row.map((d, i) => {\n const p = this._padding * (i === row.length - 1 ? 0 : d.width ? 2 : 1);\n return d.shapeWidth + d.width + p;\n }));\n }\n\n /**\n @memberof Legend\n @desc Renders the current Legend to the page. If a *callback* is specified, it will be called once the legend is done drawing.\n @param {Function} [*callback* = undefined]\n @chainable\n */\n render(callback) {\n\n if (this._select === void 0) this.select(select(\"body\").append(\"svg\").attr(\"width\", `${this._width}px`).attr(\"height\", `${this._height}px`).node());\n\n // Legend Container <g> Groups\n this._group = elem(\"g.d3plus-Legend\", {parent: this._select});\n this._titleGroup = elem(\"g.d3plus-Legend-title\", {parent: this._group});\n this._shapeGroup = elem(\"g.d3plus-Legend-shape\", {parent: this._group});\n\n let availableHeight = this._height;\n this._titleHeight = 0;\n this._titleWidth = 0;\n if (this._title) {\n\n const f = this._titleConfig.fontFamily || this._titleClass.fontFamily()(),\n s = this._titleConfig.fontSize || this._titleClass.fontSize()();\n let lH = this._titleConfig.lineHeight || this._titleClass.lineHeight();\n lH = lH ? lH() : s * 1.4;\n\n const res = textWrap()\n .fontFamily(f)\n .fontSize(s)\n .lineHeight(lH)\n .width(this._width)\n .height(this._height)(this._title);\n this._titleHeight = lH + res.lines.length + this._padding;\n this._titleWidth = max(res.widths);\n availableHeight -= this._titleHeight;\n }\n\n // Calculate Text Sizes\n this._lineData = this._data.map((d, i) => {\n\n const label = this._label(d, i);\n const shape = this._shape(d, i);\n const r = this._fetchConfig(\"r\", d, i);\n\n let res = {\n data: d,\n i,\n id: this._id(d, i),\n shape,\n shapeR: r,\n shapeWidth: shape === \"Circle\" ? r * 2 : this._fetchConfig(\"width\", d, i),\n shapeHeight: shape === \"Circle\" ? r * 2 : this._fetchConfig(\"height\", d, i),\n y: 0\n };\n\n if (!label) {\n res.sentence = false;\n res.words = [];\n res.height = 0;\n res.width = 0;\n return res;\n }\n\n const f = this._fetchConfig(\"fontFamily\", d, i),\n lh = this._fetchConfig(\"lineHeight\", d, i),\n s = this._fetchConfig(\"fontSize\", d, i);\n\n const h = availableHeight - (this._data.length + 1) * this._padding,\n w = this._width;\n\n const newRes = textWrap()\n .fontFamily(f)\n .fontSize(s)\n .lineHeight(lh)\n .width(w)\n .height(h)(label);\n\n res = Object.assign(res, newRes);\n\n res.width = Math.ceil(max(res.lines.map(t => textWidth(t, {\"font-family\": f, \"font-size\": s})))) + padding * 2;\n res.height = Math.ceil(res.lines.length * (lh + 1));\n res.og = {height: res.height, width: res.width};\n res.f = f;\n res.s = s;\n res.lh = lh;\n\n return res;\n\n });\n\n let spaceNeeded;\n const availableWidth = this._width - this._padding * 2;\n spaceNeeded = this._rowWidth(this._lineData);\n\n if (this._direction === \"column\" || spaceNeeded > availableWidth) {\n let lines = 1, newRows = [];\n\n const maxLines = max(this._lineData.map(d => d.words.length));\n this._wrapLines = function() {\n\n lines++;\n\n if (lines > maxLines) return;\n\n const wrappable = lines === 1 ? this._lineData.slice()\n : this._lineData.filter(d => d.width + d.shapeWidth + this._padding * (d.width ? 2 : 1) > availableWidth && d.words.length >= lines)\n .sort((a, b) => b.sentence.length - a.sentence.length);\n\n if (wrappable.length && availableHeight > wrappable[0].height * lines) {\n\n let truncated = false;\n for (let x = 0; x < wrappable.length; x++) {\n const label = wrappable[x];\n const h = label.og.height * lines, w = label.og.width * (1.5 * (1 / lines));\n const res = textWrap().fontFamily(label.f).fontSize(label.s).lineHeight(label.lh).width(w).height(h)(label.sentence);\n if (!res.truncated) {\n label.width = Math.ceil(max(res.lines.map(t => textWidth(t, {\"font-family\": label.f, \"font-size\": label.s})))) + label.s;\n label.height = res.lines.length * (label.lh + 1);\n }\n else {\n truncated = true;\n break;\n }\n }\n if (!truncated) this._wrapRows();\n }\n else {\n newRows = [];\n return;\n }\n\n };\n\n this._wrapRows = function() {\n newRows = [];\n let row = 1, rowWidth = 0;\n for (let i = 0; i < this._lineData.length; i++) {\n const d = this._lineData[i],\n w = d.width + this._padding * (d.width ? 2 : 1) + d.shapeWidth;\n if (sum(newRows.map(row => max(row, d => max([d.height, d.shapeHeight])))) > availableHeight) {\n newRows = [];\n break;\n }\n if (w > availableWidth) {\n newRows = [];\n this._wrapLines();\n break;\n }\n else if (rowWidth + w < availableWidth) {\n rowWidth += w;\n }\n else if (this._direction !== \"column\") {\n rowWidth = w;\n row++;\n }\n if (!newRows[row - 1]) newRows[row - 1] = [];\n newRows[row - 1].push(d);\n if (this._direction === \"column\") {\n rowWidth = 0;\n row++;\n }\n }\n };\n\n this._wrapRows();\n\n if (!newRows.length || sum(newRows, this._rowHeight.bind(this)) + this._padding > availableHeight) {\n spaceNeeded = sum(this._lineData.map(d => d.shapeWidth + this._padding)) - this._padding;\n for (let i = 0; i < this._lineData.length; i++) {\n this._lineData[i].width = 0;\n this._lineData[i].height = 0;\n }\n this._wrapRows();\n }\n\n if (newRows.length && sum(newRows, this._rowHeight.bind(this)) + this._padding < availableHeight) {\n newRows.forEach((row, i) => {\n row.forEach(d => {\n if (i) {\n d.y = sum(newRows.slice(0, i), this._rowHeight.bind(this));\n }\n });\n });\n spaceNeeded = max(newRows, this._rowWidth.bind(this));\n }\n }\n\n const innerHeight = max(this._lineData, (d, i) => max([d.height, this._fetchConfig(\"height\", d.data, i)]) + d.y) + this._titleHeight,\n innerWidth = max([spaceNeeded, this._titleWidth]);\n\n this._outerBounds.width = innerWidth;\n this._outerBounds.height = innerHeight;\n\n let xOffset = this._padding,\n yOffset = this._padding;\n if (this._align === \"center\") xOffset = (this._width - innerWidth) / 2;\n else if (this._align === \"right\") xOffset = this._width - this._padding - innerWidth;\n if (this._verticalAlign === \"middle\") yOffset = (this._height - innerHeight) / 2;\n else if (this._verticalAlign === \"bottom\") yOffset = this._height - this._padding - innerHeight;\n this._outerBounds.x = xOffset;\n this._outerBounds.y = yOffset;\n\n this._titleClass\n .data(this._title ? [{text: this._title}] : [])\n .duration(this._duration)\n .select(this._titleGroup.node())\n .textAnchor({left: \"start\", center: \"middle\", right: \"end\"}[this._align])\n .width(this._width - this._padding * 2)\n .x(this._padding)\n .y(this._outerBounds.y)\n .config(this._titleConfig)\n .render();\n\n this._shapes = [];\n const baseConfig = configPrep.bind(this)(this._shapeConfig, \"legend\"),\n config = {\n id: d => d.id,\n label: d => d.label,\n lineHeight: d => d.lH\n };\n\n const data = this._data.map((d, i) => {\n\n const obj = {\n __d3plus__: true,\n data: d, i,\n id: this._id(d, i),\n label: this._lineData[i].width ? this._label(d, i) : false,\n lH: this._fetchConfig(\"lineHeight\", d, i),\n shape: this._shape(d, i)\n };\n\n return obj;\n\n });\n\n // Legend Shapes\n this._shapes = [];\n [\"Circle\", \"Rect\"].forEach(Shape => {\n\n this._shapes.push(\n new shapes[Shape]()\n .parent(this)\n .data(data.filter(d => d.shape === Shape))\n .duration(this._duration)\n .labelConfig({padding: 0})\n .select(this._shapeGroup.node())\n .verticalAlign(\"top\")\n .config(assign({}, baseConfig, config))\n .render()\n );\n\n });\n\n if (callback) setTimeout(callback, this._duration + 100);\n\n return this;\n\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the active method for all shapes to the specified function and returns the current class instance. If *value* is not specified, returns the current active method.\n @param {Function} [*value*]\n @chainable\n */\n active(_) {\n this._shapes.forEach(s => s.active(_));\n return this;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the horizontal alignment to the specified value and returns the current class instance. If *value* is not specified, returns the current horizontal alignment.\n @param {String} [*value* = \"center\"] Supports `\"left\"` and `\"center\"` and `\"right\"`.\n @chainable\n */\n align(_) {\n return arguments.length ? (this._align = _, this) : this._align;\n }\n\n /**\n @memberof Legend\n @desc If *data* is specified, sets the data array to the specified array and returns the current class instance. If *data* is not specified, returns the current data array. A shape key will be drawn for each object in the array.\n @param {Array} [*data* = []]\n @chainable\n */\n data(_) {\n return arguments.length ? (this._data = _, this) : this._data;\n }\n\n /**\n @memberof Legend\n @desc Sets the flow of the items inside the legend. If no value is passed, the current flow will be returned.\n @param {String} [*value* = \"row\"]\n @chainable\n */\n direction(_) {\n return arguments.length ? (this._direction = _, this) : this._direction;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the transition duration of the legend and returns the current class instance. If *value* is not specified, returns the current duration.\n @param {Number} [*value* = 600]\n @chainable\n */\n duration(_) {\n return arguments.length ? (this._duration = _, this) : this._duration;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the overall height of the legend and returns the current class instance. If *value* is not specified, returns the current height value.\n @param {Number} [*value* = 100]\n @chainable\n */\n height(_) {\n return arguments.length ? (this._height = _, this) : this._height;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the hover method for all shapes to the specified function and returns the current class instance. If *value* is not specified, returns the current hover method.\n @param {Function} [*value*]\n @chainable\n */\n hover(_) {\n this._shapes.forEach(s => s.hover(_));\n return this;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the id accessor to the specified function and returns the current class instance. If *value* is not specified, returns the current id accessor.\n @param {Function} [*value*]\n @chainable\n @example\nfunction value(d) {\n return d.id;\n}\n */\n id(_) {\n return arguments.length ? (this._id = _, this) : this._id;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the label accessor to the specified function or string and returns the current class instance. If *value* is not specified, returns the current label accessor, which is the [id](#shape.id) accessor by default.\n @param {Function|String} [*value*]\n @chainable\n */\n label(_) {\n return arguments.length ? (this._label = typeof _ === \"function\" ? _ : constant(_), this) : this._label;\n }\n\n /**\n @memberof Legend\n @desc If called after the elements have been drawn to DOM, will returns the outer bounds of the legend content.\n @example\n{\"width\": 180, \"height\": 24, \"x\": 10, \"y\": 20}\n */\n outerBounds() {\n return this._outerBounds;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the padding between each key to the specified number and returns the current class instance. If *value* is not specified, returns the current padding value.\n @param {Number} [*value* = 10]\n @chainable\n */\n padding(_) {\n return arguments.length ? (this._padding = _, this) : this._padding;\n }\n\n /**\n @memberof Legend\n @desc If *selector* is specified, sets the SVG container element to the specified d3 selector or DOM element and returns the current class instance. If *selector* is not specified, returns the current SVG container element.\n @param {String|HTMLElement} [*selector* = d3.select(\"body\").append(\"svg\")]\n @chainable\n */\n select(_) {\n if (arguments.length) {\n this._select = select(_);\n this._rtl = detectRTL(this._select.node());\n return this;\n }\n return this._select;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the shape accessor to the specified function or string and returns the current class instance. If *value* is not specified, returns the current shape accessor.\n @param {Function|String} [*value* = \"Rect\"]\n @chainable\n */\n shape(_) {\n return arguments.length ? (this._shape = typeof _ === \"function\" ? _ : constant(_), this) : this._shape;\n }\n\n /**\n @memberof Legend\n @desc If *config* is specified, sets the methods that correspond to the key/value pairs for each shape and returns the current class instance. If *config* is not specified, returns the current shape configuration.\n @param {Object} [*config* = {}]\n @chainable\n */\n shapeConfig(_) {\n return arguments.length ? (this._shapeConfig = assign(this._shapeConfig, _), this) : this._shapeConfig;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the title of the legend and returns the current class instance. If *value* is not specified, returns the current title.\n @param {String} [*value*]\n @chainable\n */\n title(_) {\n return arguments.length ? (this._title = _, this) : this._title;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the title configuration of the legend and returns the current class instance. If *value* is not specified, returns the current title configuration.\n @param {Object} [*value*]\n @chainable\n */\n titleConfig(_) {\n return arguments.length ? (this._titleConfig = assign(this._titleConfig, _), this) : this._titleConfig;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the vertical alignment to the specified value and returns the current class instance. If *value* is not specified, returns the current vertical alignment.\n @param {String} [*value* = \"middle\"] Supports `\"top\"` and `\"middle\"` and `\"bottom\"`.\n @chainable\n */\n verticalAlign(_) {\n return arguments.length ? (this._verticalAlign = _, this) : this._verticalAlign;\n }\n\n /**\n @memberof Legend\n @desc If *value* is specified, sets the overall width of the legend and returns the current class instance. If *value* is not specified, returns the current width value.\n @param {Number} [*value* = 400]\n @chainable\n */\n width(_) {\n return arguments.length ? (this._width = _, this) : this._width;\n }\n\n}\n","\nimport {extent, max, min, quantile, range, deviation} from \"d3-array\";\nimport {interpolateRgb} from \"d3-interpolate\";\nimport {scaleLinear, scaleThreshold} from \"d3-scale\";\nimport {select} from \"d3-selection\";\nimport {transition} from \"d3-transition\";\n\nimport {colorDefaults, colorLighter} from \"@d3plus/color\";\nimport {unique} from \"@d3plus/data\";\nimport {assign, elem, textWidth} from \"@d3plus/dom\";\nimport {formatAbbreviate} from \"@d3plus/format\";\nimport {ckmeans} from \"@d3plus/math\";\n\nimport {Axis, TextBox} from \"../components/index.js\";\nimport {Rect} from \"../shapes/index.js\";\nimport {accessor, BaseClass, constant} from \"../utils/index.js\";\n\nimport Legend from \"./Legend.js\";\n\n/**\n @class ColorScale\n @extends BaseClass\n @desc Creates an SVG scale based on an array of data. If *data* is specified, immediately draws based on the specified array and returns the current class instance. If *data* is not specified on instantiation, it can be passed/updated after instantiation using the [data](#shape.data) method.\n*/\nexport default class ColorScale extends BaseClass {\n\n /**\n @memberof ColorScale\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._axisClass = new Axis();\n this._axisConfig = {\n gridSize: 0\n };\n this._axisTest = new Axis();\n this._align = \"middle\";\n this._buckets = 5;\n this._bucketAxis = false;\n this._bucketFormat = (tick, i, ticks, allValues) => {\n\n const format = this._axisConfig.tickFormat\n ? this._axisConfig.tickFormat : formatAbbreviate;\n\n const next = ticks[i + 1];\n const prev = i ? ticks[i - 1] : false;\n const last = i === ticks.length - 1;\n if (tick === next || last) {\n const suffix = last && tick < max(allValues) ? \"+\" : \"\";\n return `${format(tick)}${suffix}`;\n }\n else {\n const mod = next ? next / 100 : tick / 100;\n\n const pow = mod >= 1 || mod <= -1 ? Math.round(mod).toString().length - 1 : mod.toString().split(\".\")[1].replace(/([1-9])[1-9].*$/, \"$1\").length * -1;\n const ten = Math.pow(10, pow);\n\n const prevValue = prev === tick && i === 1\n ? format(min([tick + ten, allValues.find(d => d > tick && d < next)]))\n : format(tick);\n\n const nextValue = tick && i === 1\n ? format(next)\n : format(max([next - ten, allValues.reverse().find(d => d > tick && d < next)]));\n\n return this._bucketJoiner(prevValue, nextValue);\n\n }\n };\n this._bucketJoiner = (a, b) => a !== b ? `${a} - ${b}` : `${a}`;\n this._centered = true;\n this._color = [\"#54478C\", \"#2C699A\", \"#0DB39E\", \"#83E377\", \"#EFEA5A\"];\n this._colorMax = colorDefaults.on;\n this._colorMid = colorDefaults.light;\n this._colorMin = colorDefaults.off;\n this._data = [];\n this._duration = 600;\n this._height = 200;\n this._labelClass = new TextBox();\n this._labelConfig = {\n fontColor: colorDefaults.dark,\n fontSize: 12\n };\n this._legendClass = new Legend();\n this._legendConfig = {\n shapeConfig: {\n stroke: colorDefaults.dark,\n strokeWidth: 1\n }\n };\n this._midpoint = 0;\n this._orient = \"bottom\";\n this._outerBounds = {width: 0, height: 0, x: 0, y: 0};\n this._padding = 5;\n this._rectClass = new Rect().parent(this);\n this._rectConfig = {\n stroke: \"#999\",\n strokeWidth: 1\n };\n this._scale = \"linear\";\n this._size = 10;\n this._value = accessor(\"value\");\n this._width = 400;\n\n }\n\n /**\n @memberof ColorScale\n @desc Renders the current ColorScale to the page. If a *callback* is specified, it will be called once the ColorScale is done drawing.\n @param {Function} [*callback* = undefined]\n @chainable\n */\n render(callback) {\n\n if (this._select === void 0) this.select(select(\"body\").append(\"svg\").attr(\"width\", `${this._width}px`).attr(\"height\", `${this._height}px`).node());\n\n const horizontal = [\"bottom\", \"top\"].includes(this._orient);\n\n const height = horizontal ? \"height\" : \"width\",\n width = horizontal ? \"width\" : \"height\",\n x = horizontal ? \"x\" : \"y\",\n y = horizontal ? \"y\" : \"x\";\n\n // Shape <g> Group\n this._group = elem(\"g.d3plus-ColorScale\", {parent: this._select});\n\n const allValues = this._data\n .map(this._value)\n .filter(d => d !== null && typeof d === \"number\")\n .sort((a, b) => a - b);\n\n const domain = this._domain || extent(allValues);\n const negative = domain[0] < this._midpoint;\n const positive = domain[1] > this._midpoint;\n const diverging = negative && positive;\n\n const numBuckets = min([\n this._buckets instanceof Array ? this._buckets.length : this._buckets,\n diverging && this._scale !== \"jenks\" ? 2 * Math.floor(unique(allValues).length / 2) - 1 : unique(allValues).length\n ]);\n\n let colors = diverging \n && (!this._color || (this._color instanceof Array && !this._color.includes(this._colorMid))) \n ? undefined \n : this._color, \n labels, \n ticks;\n\n if (colors && !(colors instanceof Array)) {\n colors = range(0, numBuckets, 1)\n .map(i => colorLighter(colors, (i + 1) / numBuckets))\n .reverse();\n }\n\n if (this._scale === \"jenks\") {\n\n const buckets = min([colors ? colors.length : numBuckets, numBuckets, allValues.length]);\n\n let jenks = [];\n\n if (this._buckets instanceof Array) {\n ticks = this._buckets;\n }\n else {\n\n if (diverging && this._centered) {\n\n const half = Math.floor(buckets / 2);\n const residual = buckets % 2;\n\n const negatives = allValues.filter(d => d < this._midpoint);\n const negativesDeviation = deviation(negatives);\n\n const positives = allValues.concat(this._midpoint).filter(d => d >= this._midpoint);\n const positivesDeviation = deviation(positives);\n\n const isNegativeMax = negativesDeviation > positivesDeviation ? 1 : 0;\n const isPositiveMax = positivesDeviation > negativesDeviation ? 1 : 0;\n\n const negativeJenks = ckmeans(negatives, min([half + residual * isNegativeMax, negatives.length]));\n const positiveJenks = ckmeans(positives, min([half + residual * isPositiveMax, positives.length]));\n\n jenks = negativeJenks.concat(positiveJenks);\n }\n else {\n jenks = ckmeans(allValues, buckets);\n }\n\n ticks = jenks.map(c => c[0]);\n\n }\n\n const tickSet = new Set(ticks);\n\n if (ticks.length !== tickSet.size) labels = Array.from(tickSet);\n\n if (!colors) {\n if (diverging) {\n colors = [this._colorMin, this._colorMid, this._colorMax];\n const negatives = ticks\n .slice(0, buckets)\n .filter((d, i) => d < this._midpoint && ticks[i + 1] <= this._midpoint);\n const spanning = ticks\n .slice(0, buckets)\n .filter((d, i) => d <= this._midpoint && ticks[i + 1] > this._midpoint);\n const positives = ticks\n .slice(0, buckets)\n .filter(d => d > this._midpoint);\n const negativeColors = negatives.map((d, i) => !i ? colors[0] : colorLighter(colors[0], i / negatives.length));\n const spanningColors = spanning.map(() => colors[1]);\n const positiveColors = positives.map((d, i) => i === positives.length - 1 ? colors[2] : colorLighter(colors[2], 1 - (i + 1) / positives.length));\n colors = negativeColors.concat(spanningColors).concat(positiveColors);\n }\n else {\n colors = range(0, numBuckets, 1)\n .map(i => colorLighter(this._colorMax, i / numBuckets))\n .reverse();\n }\n }\n\n if (ticks.length <= buckets) colors = colors.slice(-ticks.length);\n\n colors = [colors[0]].concat(colors);\n\n this._colorScale = scaleThreshold()\n .domain(ticks)\n .range(colors);\n\n }\n else {\n\n let buckets = this._buckets instanceof Array ? this._buckets : undefined;\n if (diverging && !colors) {\n const half = Math.floor(numBuckets / 2);\n const negativeColorScale = interpolateRgb.gamma(2.2)(this._colorMin, this._colorMid);\n const negativeColors = range(0, half, 1).map(i => negativeColorScale(i / half));\n const spanningColors = (numBuckets % 2 ? [0] : []).map(() => this._colorMid);\n const positiveColorScale = interpolateRgb.gamma(2.2)(this._colorMax, this._colorMid);\n const positiveColors = range(0, half, 1).map(i => positiveColorScale(i / half)).reverse();\n colors = negativeColors.concat(spanningColors).concat(positiveColors);\n if (!buckets) {\n const step = (colors.length - 1) / 2;\n buckets = [domain[0], this._midpoint, domain[1]];\n buckets = range(domain[0], this._midpoint, -(domain[0] - this._midpoint) / step)\n .concat(range(this._midpoint, domain[1], (domain[1] - this._midpoint) / step))\n .concat([domain[1]]);\n }\n }\n else {\n if (!colors) {\n if (this._scale === \"buckets\" || this._scale === \"quantile\") {\n colors = range(0, numBuckets, 1)\n .map(i => colorLighter(negative ? this._colorMin : this._colorMax, i / numBuckets));\n if (positive) colors = colors.reverse();\n }\n else {\n colors = negative ? [this._colorMin, colorLighter(this._colorMin, 0.8)]\n : [colorLighter(this._colorMax, 0.8), this._colorMax];\n }\n }\n if (!buckets) {\n if (this._scale === \"quantile\") {\n const step = 1 / (colors.length - 1);\n buckets = range(0, 1 + step / 2, step)\n .map(d => quantile(allValues, d));\n }\n else if (diverging && this._color && this._centered) {\n const midIndex = colors.indexOf(this._colorMid);\n const negativeStep = (this._midpoint - domain[0]) / midIndex;\n const positiveStep = (domain[1] - this._midpoint) / (colors.length - midIndex);\n const negativeBuckets = range(domain[0], this._midpoint, negativeStep);\n const positiveBuckets = range(this._midpoint, domain[1] + positiveStep / 2, positiveStep);\n\n buckets = negativeBuckets.concat(positiveBuckets);\n }\n else {\n const step = (domain[1] - domain[0]) / (colors.length - 1);\n buckets = range(domain[0], domain[1] + step / 2, step);\n }\n }\n }\n\n if (this._scale === \"buckets\" || this._scale === \"quantile\") {\n ticks = buckets;\n colors = [colors[0]].concat(colors);\n }\n else if (this._scale === \"log\") {\n const negativeBuckets = buckets.filter(d => d < 0);\n if (negativeBuckets.length) {\n const minVal = negativeBuckets[0];\n const newNegativeBuckets = negativeBuckets.map(d => -Math.pow(Math.abs(minVal), d / minVal));\n negativeBuckets.forEach((bucket, i) => {\n buckets[buckets.indexOf(bucket)] = newNegativeBuckets[i];\n });\n }\n const positiveBuckets = buckets.filter(d => d > 0);\n if (positiveBuckets.length) {\n const maxVal = positiveBuckets[positiveBuckets.length - 1];\n const newPositiveBuckets = positiveBuckets.map(d => Math.pow(maxVal, d / maxVal));\n positiveBuckets.forEach((bucket, i) => {\n buckets[buckets.indexOf(bucket)] = newPositiveBuckets[i];\n });\n }\n if (buckets.includes(0)) buckets[buckets.indexOf(0)] = 1;\n }\n\n this._colorScale = (this._scale === \"buckets\" || this._scale === \"quantile\" ? scaleThreshold : scaleLinear)()\n .domain(buckets)\n .range(colors);\n\n }\n\n if (this._colorScale.clamp) this._colorScale.clamp(true);\n\n const gradient = this._bucketAxis || ![\"buckets\", \"jenks\", \"quantile\"].includes(this._scale);\n const t = transition().duration(this._duration);\n const groupParams = {enter: {opacity: 0}, exit: {opacity: 0}, parent: this._group, transition: t, update: {opacity: 1}};\n const labelGroup = elem(\"g.d3plus-ColorScale-labels\", Object.assign({condition: gradient}, groupParams));\n const rectGroup = elem(\"g.d3plus-ColorScale-Rect\", Object.assign({condition: gradient}, groupParams));\n const legendGroup = elem(\"g.d3plus-ColorScale-legend\", Object.assign({condition: !gradient}, groupParams));\n\n if (gradient) {\n\n const offsets = {x: 0, y: 0};\n\n const axisDomain = domain.slice();\n if (this._bucketAxis) {\n const last = axisDomain[axisDomain.length - 1];\n const prev = axisDomain[axisDomain.length - 2];\n const mod = last ? last / 10 : prev / 10;\n\n const pow = mod >= 1 || mod <= -1 ? Math.round(mod).toString().length - 1 : mod.toString().split(\".\")[1].replace(/([1-9])[1-9].*$/, \"$1\").length * -1;\n const ten = Math.pow(10, pow);\n axisDomain[axisDomain.length - 1] = last + ten;\n }\n\n const axisConfig = assign({\n domain: horizontal ? axisDomain : axisDomain.slice().reverse(),\n duration: this._duration,\n height: this._height,\n labels: labels || ticks,\n orient: this._orient,\n padding: this._padding,\n scale: this._scale === \"log\" ? \"log\" : \"linear\",\n ticks,\n width: this._width\n }, this._axisConfig);\n\n const labelConfig = assign({\n height: this[`_${height}`] / 2,\n width: this[`_${width}`] / 2\n }, this._labelConfig);\n\n this._labelClass.config(labelConfig);\n const labelData = [];\n\n if (horizontal && this._labelMin) {\n\n const labelCSS = {\n \"font-family\": this._labelClass.fontFamily()(this._labelMin),\n \"font-size\": this._labelClass.fontSize()(this._labelMin),\n \"font-weight\": this._labelClass.fontWeight()(this._labelMin)\n };\n\n if (labelCSS[\"font-family\"] instanceof Array) labelCSS[\"font-family\"] = labelCSS[\"font-family\"][0];\n let labelMinWidth = textWidth(this._labelMin, labelCSS);\n\n if (labelMinWidth && labelMinWidth < this[`_${width}`] / 2) {\n labelData.push(this._labelMin);\n labelMinWidth += this._padding;\n if (horizontal) offsets.x += labelMinWidth;\n axisConfig[width] -= labelMinWidth;\n }\n\n }\n if (horizontal && this._labelMax) {\n\n const labelCSS = {\n \"font-family\": this._labelClass.fontFamily()(this._labelMax),\n \"font-size\": this._labelClass.fontSize()(this._labelMax),\n \"font-weight\": this._labelClass.fontWeight()(this._labelMax)\n };\n\n if (labelCSS[\"font-family\"] instanceof Array) labelCSS[\"font-family\"] = labelCSS[\"font-family\"][0];\n let labelMaxWidth = textWidth(this._labelMax, labelCSS);\n\n if (labelMaxWidth && labelMaxWidth < this[`_${width}`] / 2) {\n labelData.push(this._labelMax);\n labelMaxWidth += this._padding;\n if (!horizontal) offsets.y += labelMaxWidth;\n axisConfig[width] -= labelMaxWidth;\n }\n\n }\n\n this._axisTest\n .select(elem(\"g.d3plus-ColorScale-axisTest\", {enter: {opacity: 0}, parent: this._group}).node())\n .config(axisConfig)\n .duration(0)\n .render();\n\n const axisBounds = this._axisTest.outerBounds();\n\n this._outerBounds[width] = this[`_${width}`] - this._padding * 2;\n this._outerBounds[height] = axisBounds[height] + this._size;\n\n this._outerBounds[x] = this._padding;\n this._outerBounds[y] = this._padding;\n if (this._align === \"middle\") this._outerBounds[y] = (this[`_${height}`] - this._outerBounds[height]) / 2;\n else if (this._align === \"end\") this._outerBounds[y] = this[`_${height}`] - this._padding - this._outerBounds[height];\n\n const axisGroupOffset = this._outerBounds[y] + ([\"bottom\", \"right\"].includes(this._orient) ? this._size : 0) - (axisConfig.padding || this._axisClass.padding());\n const transform = `translate(${offsets.x + (horizontal ? 0 : axisGroupOffset)}, ${offsets.y + (horizontal ? axisGroupOffset : 0)})`;\n this._axisClass\n .select(elem(\"g.d3plus-ColorScale-axis\", assign(groupParams, {\n condition: true,\n enter: {transform},\n update: {transform}\n })).node())\n .config(axisConfig)\n .align(\"start\")\n .render();\n\n const axisScale = this._axisTest._getPosition.bind(this._axisTest);\n const scaleRange = this._axisTest._getRange();\n\n let defs = this._group.selectAll(\"defs\").data([0]);\n const defsEnter = defs.enter().append(\"defs\");\n defsEnter.append(\"linearGradient\").attr(\"id\", `gradient-${this._uuid}`);\n defs = defsEnter.merge(defs);\n defs.select(\"linearGradient\")\n .attr(`${x}1`, horizontal ? \"0%\" : \"100%\")\n .attr(`${x}2`, horizontal ? \"100%\" : \"0%\")\n .attr(`${y}1`, \"0%\")\n .attr(`${y}2`, \"0%\");\n const stops = defs.select(\"linearGradient\").selectAll(\"stop\")\n .data(colors);\n const scaleDomain = this._colorScale.domain();\n const offsetScale = scaleLinear()\n .domain(scaleRange)\n .range(horizontal ? [0, 100] : [100, 0]);\n\n stops.enter().append(\"stop\").merge(stops)\n .attr(\"offset\", (d, i) => `${i <= scaleDomain.length - 1 ? offsetScale(axisScale(scaleDomain[i])) : 100}%`)\n .attr(\"stop-color\", String);\n\n /** determines the width of buckets */\n const bucketWidth = (d, i) => {\n const next = ticks[i + 1] || axisDomain[axisDomain.length - 1];\n return Math.abs(axisScale(next) - axisScale(d));\n };\n\n const rectConfig = assign({\n duration: this._duration,\n fill: ticks ? d => this._colorScale(d) : `url(#gradient-${this._uuid})`,\n [x]: ticks ? (d, i) => axisScale(d) + bucketWidth(d, i) / 2 - ([\"left\", \"right\"].includes(this._orient) ? bucketWidth(d, i) : 0) : scaleRange[0] + (scaleRange[1] - scaleRange[0]) / 2 + offsets[x],\n [y]: this._outerBounds[y] + ([\"top\", \"left\"].includes(this._orient) ? axisBounds[height] : 0) + this._size / 2 + offsets[y],\n [width]: ticks ? bucketWidth : scaleRange[1] - scaleRange[0],\n [height]: this._size\n }, this._rectConfig);\n\n this._rectClass\n .data(ticks || [0])\n .id((d, i) => i)\n .select(rectGroup.node())\n .config(rectConfig)\n .render();\n\n labelConfig.height = this._outerBounds[height];\n labelConfig.width = this._outerBounds[width];\n this._labelClass\n .config(labelConfig)\n .data(labelData)\n .select(labelGroup.node())\n .x(d => d === this._labelMax\n ? rectConfig.x + rectConfig.width / 2 + this._padding\n : this._outerBounds.x)\n .y(d => rectConfig.y - this._labelClass.fontSize()(d) / 2)\n .text(d => d)\n .rotate(horizontal ? 0 : this._orient === \"right\" ? 90 : -90)\n .render();\n\n }\n else {\n\n elem(\"g.d3plus-ColorScale-axis\", Object.assign({condition: gradient}, groupParams));\n\n let legendData = ticks.reduce((arr, tick, i) => {\n\n const label = this._bucketFormat.bind(this)(tick, i, ticks, allValues);\n arr.push({color: colors[i + 1], id: label});\n\n return arr;\n }, []);\n if (!horizontal) legendData = legendData.reverse();\n\n const legendConfig = assign({\n align: horizontal ? \"center\" : {start: \"left\", middle: \"center\", end: \"right\"}[this._align],\n direction: horizontal ? \"row\" : \"column\",\n duration: this._duration,\n height: this._height,\n padding: this._padding,\n shapeConfig: assign({\n duration: this._duration\n }, this._axisConfig.shapeConfig || {}),\n title: this._axisConfig.title,\n titleConfig: this._axisConfig.titleConfig || {},\n width: this._width,\n verticalAlign: horizontal ? {start: \"top\", middle: \"middle\", end: \"bottom\"}[this._align] : \"middle\"\n }, this._legendConfig);\n\n this._legendClass\n .data(legendData)\n .select(legendGroup.node())\n .config(legendConfig)\n .render();\n\n this._outerBounds = this._legendClass.outerBounds();\n\n }\n\n if (callback) setTimeout(callback, this._duration + 100);\n\n return this;\n\n }\n\n /**\n @memberof ColorScale\n @desc The [ColorScale](http://d3plus.org/docs/#ColorScale) is constructed by combining an [Axis](http://d3plus.org/docs/#Axis) for the ticks/labels and a [Rect](http://d3plus.org/docs/#Rect) for the actual color box (or multiple boxes, as in a jenks scale). Because of this, there are separate configs for the [Axis](http://d3plus.org/docs/#Axis) class used to display the text ([axisConfig](http://d3plus.org/docs/#ColorScale.axisConfig)) and the [Rect](http://d3plus.org/docs/#Rect) class used to draw the color breaks ([rectConfig](http://d3plus.org/docs/#ColorScale.rectConfig)). This method acts as a pass-through to the config method of the [Axis](http://d3plus.org/docs/#Axis). An example usage of this method can be seen [here](http://d3plus.org/examples/d3plus-legend/colorScale-dark/).\n @param {Object} [*value*]\n @chainable\n */\n axisConfig(_) {\n return arguments.length ? (this._axisConfig = assign(this._axisConfig, _), this) : this._axisConfig;\n }\n\n /**\n @memberof ColorScale\n @desc If *value* is specified, sets the horizontal alignment to the specified value and returns the current class instance. If *value* is not specified, returns the current horizontal alignment.\n @param {String} [*value* = \"center\"] Supports `\"left\"` and `\"center\"` and `\"right\"`.\n @chainable\n */\n align(_) {\n return arguments.length ? (this._align = _, this) : this._align;\n }\n\n /**\n @memberof ColorScale\n @desc The number of discrete buckets to create in a bucketed color scale. Will be overridden by any custom Array of colors passed to the `color` method. Optionally, users can supply an Array of values used to separate buckets, such as `[0, 10, 25, 50, 90]` for a percentage scale. This value would create 4 buckets, with each value representing the break point between each bucket (so 5 values makes 4 buckets).\n @param {Number|Array} [*value* = 5]\n @chainable\n */\n buckets(_) {\n return arguments.length ? (this._buckets = _, this) : this._buckets;\n }\n\n /**\n @memberof ColorScale\n @desc Determines whether or not to use an Axis to display bucket scales (both \"buckets\" and \"jenks\"). When set to `false`, bucketed scales will use the `Legend` class to display squares for each range of data. When set to `true`, bucketed scales will be displayed on an `Axis`, similar to \"linear\" scales.\n @param {Boolean} [*value* = false]\n @chainable\n */\n bucketAxis(_) {\n return arguments.length ? (this._bucketAxis = _, this) : this._bucketAxis;\n }\n\n /**\n @memberof ColorScale\n @desc A function for formatting the labels associated to each bucket in a bucket-type scale (\"jenks\", \"quantile\", etc). The function is passed four arguments: the start value of the current bucket, it's index in the full Array of buckets, the full Array of buckets, and an Array of every value present in the data used to construct the buckets. Keep in mind that the end value for the bucket is not actually the next bucket in the list, but includes every value up until that next bucket value (less than, but not equal to). By default, d3plus will make the end value slightly less than it's current value, so that it does not overlap with the start label for the next bucket.\n @param {Function} [*value*]\n @chainable\n */\n bucketFormat(_) {\n return arguments.length ? (this._bucketFormat = _, this) : this._bucketFormat;\n }\n\n /**\n @memberof ColorScale\n @desc A function that receives the minimum and maximum values of a bucket, and is expected to return the full label.\n @param {Function} [*value*]\n @chainable\n */\n bucketJoiner(_) {\n return arguments.length ? (this._bucketJoiner = _, this) : this._bucketJoiner;\n }\n\n /**\n @memberof ColorScale\n @desc Determines whether or not to display a midpoint centered Axis. Does not apply to quantile scales.\n @param {Boolean} [*value* = false]\n @chainable\n */\n\n centered(_) {\n return arguments.length ? (this._centered = _, this) : this._centered;\n }\n\n /**\n @memberof ColorScale\n @desc Overrides the default internal logic of `colorMin`, `colorMid`, and `colorMax` to only use just this specified color. If a single color is given as a String, then the scale is interpolated by lightening that color. Otherwise, the function expects an Array of color values to be used in order for the scale.\n @param {String|Array} [*value*]\n @chainable\n */\n color(_) {\n return arguments.length ? (this._color = _, this) : this._color;\n }\n\n /**\n @memberof ColorScale\n @desc Defines the color to be used for numbers greater than the value of the `midpoint` on the scale (defaults to `0`). Colors in between this value and the value of `colorMid` will be interpolated, unless a custom Array of colors has been specified using the `color` method.\n @param {String} [*value* = \"#0C8040\"]\n @chainable\n */\n colorMax(_) {\n return arguments.length ? (this._colorMax = _, this) : this._colorMax;\n }\n\n /**\n @memberof ColorScale\n @desc Defines the color to be used for the midpoint of a diverging scale, based on the current value of the `midpoint` method (defaults to `0`). Colors in between this value and the values of `colorMin` and `colorMax` will be interpolated, unless a custom Array of colors has been specified using the `color` method.\n @param {String} [*value* = \"#f7f7f7\"]\n @chainable\n */\n colorMid(_) {\n return arguments.length ? (this._colorMid = _, this) : this._colorMid;\n }\n\n /**\n @memberof ColorScale\n @desc Defines the color to be used for numbers less than the value of the `midpoint` on the scale (defaults to `0`). Colors in between this value and the value of `colorMid` will be interpolated, unless a custom Array of colors has been specified using the `color` method.\n @param {String} [*value* = \"#b22200\"]\n @chainable\n */\n colorMin(_) {\n return arguments.length ? (this._colorMin = _, this) : this._colorMin;\n }\n\n /**\n @memberof ColorScale\n @desc If *data* is specified, sets the data array to the specified array and returns the current class instance. If *data* is not specified, returns the current data array. A shape key will be drawn for each object in the array.\n @param {Array} [*data* = []]\n @chainable\n */\n data(_) {\n return arguments.length ? (this._data = _, this) : this._data;\n }\n\n /**\n @memberof ColorScale\n @desc In a linear scale, this Array of 2 values defines the min and max values used in the color scale. Any values outside of this range will be mapped to the nearest color value.\n @param {Array} [*value*]\n @chainable\n */\n domain(_) {\n return arguments.length ? (this._domain = _, this) : this._domain;\n }\n\n /**\n @memberof ColorScale\n @desc If *value* is specified, sets the transition duration of the ColorScale and returns the current class instance. If *value* is not specified, returns the current duration.\n @param {Number} [*value* = 600]\n @chainable\n */\n duration(_) {\n return arguments.length ? (this._duration = _, this) : this._duration;\n }\n\n /**\n @memberof ColorScale\n @desc If *value* is specified, sets the overall height of the ColorScale and returns the current class instance. If *value* is not specified, returns the current height value.\n @param {Number} [*value* = 100]\n @chainable\n */\n height(_) {\n return arguments.length ? (this._height = _, this) : this._height;\n }\n\n /**\n @memberof ColorScale\n @desc A pass-through for the [TextBox](http://d3plus.org/docs/#TextBox) class used to style the labelMin and labelMax text.\n @param {Object} [*value*]\n @chainable\n */\n labelConfig(_) {\n return arguments.length ? (this._labelConfig = assign(this._labelConfig, _), this) : this._labelConfig;\n }\n\n /**\n @memberof ColorScale\n @desc Defines a text label to be displayed off of the end of the minimum point in the scale (currently only available in horizontal orientation).\n @param {String} [*value*]\n @chainable\n */\n labelMin(_) {\n return arguments.length ? (this._labelMin = _, this) : this._labelMin;\n }\n\n /**\n @memberof ColorScale\n @desc Defines a text label to be displayed off of the end of the maximum point in the scale (currently only available in horizontal orientation).\n @param {String} [*value*]\n @chainable\n */\n labelMax(_) {\n return arguments.length ? (this._labelMax = _, this) : this._labelMax;\n }\n\n /**\n @memberof ColorScale\n @desc The [ColorScale](http://d3plus.org/docs/#ColorScale) is constructed by combining an [Axis](http://d3plus.org/docs/#Axis) for the ticks/labels and a [Rect](http://d3plus.org/docs/#Rect) for the actual color box (or multiple boxes, as in a jenks scale). Because of this, there are separate configs for the [Axis](http://d3plus.org/docs/#Axis) class used to display the text ([axisConfig](http://d3plus.org/docs/#ColorScale.axisConfig)) and the [Rect](http://d3plus.org/docs/#Rect) class used to draw the color breaks ([rectConfig](http://d3plus.org/docs/#ColorScale.rectConfig)). This method acts as a pass-through to the config method of the [Axis](http://d3plus.org/docs/#Axis). An example usage of this method can be seen [here](http://d3plus.org/examples/d3plus-legend/colorScale-dark/).\n @param {Object} [*value*]\n @chainable\n */\n legendConfig(_) {\n return arguments.length ? (this._legendConfig = assign(this._legendConfig, _), this) : this._legendConfig;\n }\n\n /**\n @memberof ColorScale\n @desc The number value to be used as the anchor for `colorMid`, and defines the center point of the diverging color scale.\n @param {Number} [*value* = 0]\n @chainable\n */\n midpoint(_) {\n return arguments.length ? (this._midpoint = _, this) : this._midpoint;\n }\n\n /**\n @memberof ColorScale\n @desc Sets the flow of the items inside the ColorScale. If no value is passed, the current flow will be returned.\n @param {String} [*value* = \"bottom\"]\n @chainable\n */\n orient(_) {\n return arguments.length ? (this._orient = _, this) : this._orient;\n }\n\n /**\n @memberof ColorScale\n @desc If called after the elements have been drawn to DOM, will returns the outer bounds of the ColorScale content.\n @example\n{\"width\": 180, \"height\": 24, \"x\": 10, \"y\": 20}\n */\n outerBounds() {\n return this._outerBounds;\n }\n\n /**\n @memberof ColorScale\n @desc If *value* is specified, sets the padding between each key to the specified number and returns the current class instance. If *value* is not specified, returns the current padding value.\n @param {Number} [*value* = 10]\n @chainable\n */\n padding(_) {\n return arguments.length ? (this._padding = _, this) : this._padding;\n }\n\n /**\n @memberof ColorScale\n @desc The [ColorScale](http://d3plus.org/docs/#ColorScale) is constructed by combining an [Axis](http://d3plus.org/docs/#Axis) for the ticks/labels and a [Rect](http://d3plus.org/docs/#Rect) for the actual color box (or multiple boxes, as in a jenks scale). Because of this, there are separate configs for the [Axis](http://d3plus.org/docs/#Axis) class used to display the text ([axisConfig](http://d3plus.org/docs/#ColorScale.axisConfig)) and the [Rect](http://d3plus.org/docs/#Rect) class used to draw the color breaks ([rectConfig](http://d3plus.org/docs/#ColorScale.rectConfig)). This method acts as a pass-through to the config method of the [Rect](http://d3plus.org/docs/#Rect). An example usage of this method can be seen [here](http://d3plus.org/examples/d3plus-legend/colorScale-dark/).\n @param {Object} [*value*]\n @chainable\n */\n rectConfig(_) {\n return arguments.length ? (this._rectConfig = assign(this._rectConfig, _), this) : this._rectConfig;\n }\n\n /**\n @memberof ColorScale\n @desc If *value* is specified, sets the scale of the ColorScale and returns the current class instance. If *value* is not specified, returns the current scale value.\n @param {String} [*value* = \"linear\"] Can either be \"linear\", \"jenks\", or \"buckets\".\n @chainable\n */\n scale(_) {\n return arguments.length ? (this._scale = _, this) : this._scale;\n }\n\n /**\n @memberof ColorScale\n @desc If *selector* is specified, sets the SVG container element to the specified d3 selector or DOM element and returns the current class instance. If *selector* is not specified, returns the current SVG container element.\n @param {String|HTMLElement} [*selector* = d3.select(\"body\").append(\"svg\")]\n @chainable\n */\n select(_) {\n return arguments.length ? (this._select = select(_), this) : this._select;\n }\n\n /**\n @memberof ColorScale\n @desc The height of horizontal color scales, and width when positioned vertical.\n @param {Number} [*value* = 10]\n @chainable\n */\n size(_) {\n return arguments.length ? (this._size = _, this) : this._size;\n }\n\n /**\n @memberof ColorScale\n @desc If *value* is specified, sets the value accessor to the specified function or string and returns the current class instance. If *value* is not specified, returns the current value accessor.\n @param {Function|String} [*value*]\n @chainable\n @example\nfunction value(d) {\n return d.value;\n}\n */\n value(_) {\n return arguments.length ? (this._value = typeof _ === \"function\" ? _ : constant(_), this) : this._value;\n }\n\n /**\n @memberof ColorScale\n @desc If *value* is specified, sets the overall width of the ColorScale and returns the current class instance. If *value* is not specified, returns the current width value.\n @param {Number} [*value* = 400]\n @chainable\n */\n width(_) {\n return arguments.length ? (this._width = _, this) : this._width;\n }\n\n}\n","import {select} from \"d3-selection\";\n\nimport {stylize} from \"@d3plus/dom\";\n\n/**\n @class Message\n @desc Displays a message using plain HTML.\n @private\n*/\nexport default class Message {\n\n /**\n @memberof Message\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n this._isVisible = false;\n }\n\n /**\n @memberof Message\n @desc Removes the message from the page.\n @chainable\n */\n exit(elem, duration) {\n\n elem\n .transition().duration(duration).style(\"opacity\", 0)\n .transition().remove();\n\n this._isVisible = false;\n\n }\n\n /**\n @memberof Message\n @desc Removes the message from the page.\n @chainable\n */\n hide({duration = 600, callback} = {}) {\n\n this.mask.call(this.exit.bind(this), duration);\n this.elem.call(this.exit.bind(this), duration);\n\n if (callback) setTimeout(callback, duration + 100);\n\n this._isVisible = false;\n\n return this;\n\n }\n\n /**\n @memberof Message\n @desc Draws the message given the specified configuration.\n @param {Object} [*config*]\n @chainable\n */\n render({\n callback,\n container = \"body\",\n duration = 600,\n html = \"Please Wait\",\n mask = \"rgba(0, 0, 0, 0.05)\",\n style = {}\n } = {}) {\n\n const parent = select(container);\n\n this.mask = parent.selectAll(\"div.d3plus-Mask\").data(mask ? [mask] : []);\n\n this.mask = this.mask.enter().append(\"div\")\n .attr(\"class\", \"d3plus-Mask\")\n .style(\"opacity\", 1)\n .merge(this.mask);\n\n this.mask.exit().call(this.exit.bind(this), duration);\n\n stylize(this.mask, {\n \"background-color\": String,\n \"bottom\": \"0px\",\n \"left\": \"0px\",\n \"position\": \"absolute\",\n \"right\": \"0px\",\n \"top\": \"0px\"\n });\n\n this.elem = parent.selectAll(\"div.d3plus-Message\").data([html]);\n\n this.elem = this.elem.enter().append(\"div\")\n .attr(\"class\", \"d3plus-Message\")\n .style(\"opacity\", 1)\n .merge(this.elem)\n .html(String);\n\n stylize(this.elem, style);\n\n if (callback) setTimeout(callback, 100);\n\n this._isVisible = true;\n\n return this;\n\n }\n\n}\n","import {max, min, sum} from \"d3-array\";\nimport {select} from \"d3-selection\";\n\n// leave this import in here!\nimport {transition} from \"d3-transition\";\n\nimport {fontExists, parseSides, rtl as detectRTL, textWidth} from \"@d3plus/dom\";\nimport {fontFamily, strip, textSplit, textWrap, trim, trimRight} from \"@d3plus/text\";\n\nimport {accessor, BaseClass, constant} from \"../utils/index.js\";\n\nconst defaultHtmlLookup = {\n i: \"font-style: italic;\",\n em: \"font-style: italic;\",\n b: \"font-weight: bold;\",\n strong: \"font-weight: bold;\"\n};\n\n/**\n @class TextBox\n @extends BaseClass\n @desc Creates a wrapped text box for each point in an array of data. See [this example](https://d3plus.org/examples/d3plus-text/getting-started/) for help getting started using the TextBox class.\n*/\nexport default class TextBox extends BaseClass {\n\n /**\n @memberof TextBox\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._ariaHidden = constant(\"false\");\n this._delay = 0;\n this._duration = 0;\n this._ellipsis = (text, line) => line ? `${text.replace(/\\.|,$/g, \"\")}...` : \"\";\n this._fontColor = constant(\"black\");\n this._fontFamily = constant(fontFamily);\n this._fontMax = constant(50);\n this._fontMin = constant(8);\n this._fontOpacity = constant(1);\n this._fontResize = constant(false);\n this._fontSize = constant(10);\n this._fontStroke = constant(\"transparent\");\n this._fontStrokeWidth = constant(0);\n this._fontWeight = constant(400);\n this._height = accessor(\"height\", 200);\n this._html = defaultHtmlLookup;\n this._id = (d, i) => d.id || `${i}`;\n this._lineHeight = (d, i) => this._fontSize(d, i) * 1.2;\n this._maxLines = constant(null);\n this._on = {};\n this._overflow = constant(false);\n this._padding = constant(0);\n this._pointerEvents = constant(\"auto\");\n this._rotate = constant(0);\n this._rotateAnchor = d => [d.w / 2, d.h / 2];\n this._split = textSplit;\n this._text = accessor(\"text\");\n this._textAnchor = constant(\"start\");\n this._verticalAlign = constant(\"top\");\n this._width = accessor(\"width\", 200);\n this._x = accessor(\"x\", 0);\n this._y = accessor(\"y\", 0);\n }\n\n /**\n @memberof TextBox\n @desc Renders the text boxes. If a *callback* is specified, it will be called once the shapes are done drawing.\n @param {Function} [*callback* = undefined]\n */\n render(callback) {\n\n if (this._select === void 0) this.select(select(\"body\").append(\"svg\").style(\"width\", `${window.innerWidth}px`).style(\"height\", `${window.innerHeight}px`).node());\n\n const that = this;\n\n const boxes = this._select.selectAll(\".d3plus-textBox\").data(this._data.reduce((arr, d, i) => {\n\n let t = this._text(d, i);\n if (t === void 0) return arr;\n t = trim(t);\n\n const resize = this._fontResize(d, i);\n const lHRatio = this._lineHeight(d, i) / this._fontSize(d, i);\n\n let fS = resize ? this._fontMax(d, i) : this._fontSize(d, i),\n lH = resize ? fS * lHRatio : this._lineHeight(d, i),\n line = 1,\n lineData = [],\n sizes,\n wrapResults;\n\n const style = {\n \"font-family\": fontExists(this._fontFamily(d, i)),\n \"font-size\": fS,\n \"font-weight\": this._fontWeight(d, i),\n \"line-height\": lH\n };\n\n const padding = parseSides(this._padding(d, i));\n\n const h = this._height(d, i) - (padding.top + padding.bottom),\n w = this._width(d, i) - (padding.left + padding.right);\n\n const wrapper = textWrap()\n .fontFamily(style[\"font-family\"])\n .fontSize(fS)\n .fontWeight(style[\"font-weight\"])\n .lineHeight(lH)\n .maxLines(this._maxLines(d, i))\n .height(h)\n .overflow(this._overflow(d, i))\n .width(w)\n .split(this._split);\n\n const fMax = this._fontMax(d, i),\n fMin = this._fontMin(d, i),\n vA = this._verticalAlign(d, i),\n words = this._split(t, i);\n\n /**\n Figures out the lineData to be used for wrapping.\n @private\n */\n function checkSize() {\n const truncate = () => {\n if (line < 1) lineData = [that._ellipsis(\"\", line)];\n else lineData[line - 1] = that._ellipsis(lineData[line - 1], line);\n };\n\n // Constraint the font size\n fS = max([fS, fMin]);\n fS = min([fS, fMax]);\n\n if (resize) {\n lH = fS * lHRatio;\n wrapper\n .fontSize(fS)\n .lineHeight(lH);\n style[\"font-size\"] = fS;\n style[\"line-height\"] = lH;\n }\n\n wrapResults = wrapper(t);\n lineData = wrapResults.lines.filter(l => l !== \"\");\n line = lineData.length;\n\n if (wrapResults.truncated) {\n if (resize) {\n fS--;\n if (fS < fMin) {\n fS = fMin;\n truncate();\n return;\n }\n else checkSize();\n }\n else truncate();\n }\n }\n\n if (w > fMin && (h > lH || resize && h > fMin * lHRatio)) {\n\n if (resize) {\n\n sizes = textWidth(words, style);\n\n const areaMod = 1.165 + w / h * 0.1,\n boxArea = w * h,\n maxWidth = max(sizes),\n textArea = sum(sizes, d => d * lH) * areaMod;\n\n if (maxWidth > w || textArea > boxArea) {\n const areaRatio = Math.sqrt(boxArea / textArea),\n widthRatio = w / maxWidth;\n const sizeRatio = min([areaRatio, widthRatio]);\n fS = Math.floor(fS * sizeRatio);\n }\n\n const heightMax = Math.floor(h * 0.8);\n if (fS > heightMax) fS = heightMax;\n\n }\n\n checkSize();\n\n }\n\n if (lineData.length) {\n\n const tH = line * lH;\n const r = this._rotate(d, i);\n let yP = r === 0 ? vA === \"top\" ? 0 : vA === \"middle\" ? h / 2 - tH / 2 : h - tH : 0;\n yP -= lH * 0.1;\n\n arr.push({\n aH: this._ariaHidden(d, i),\n data: d,\n i,\n lines: lineData,\n fC: this._fontColor(d, i),\n fStroke: this._fontStroke(d, i),\n fSW: this._fontStrokeWidth(d, i),\n fF: style[\"font-family\"],\n fO: this._fontOpacity(d, i),\n fW: style[\"font-weight\"],\n id: this._id(d, i),\n tA: this._textAnchor(d, i),\n vA: this._verticalAlign(d, i),\n widths: wrapResults.widths,\n fS, lH, w, h, r,\n x: this._x(d, i) + padding.left,\n y: this._y(d, i) + yP + padding.top\n });\n\n }\n\n return arr;\n\n }, []), d => this._id(d.data, d.i));\n\n const t = this._select.transition().duration(this._duration);\n\n if (this._duration === 0) {\n\n boxes.exit().remove();\n\n }\n else {\n\n boxes.exit().transition().delay(this._duration).remove();\n\n boxes.exit().selectAll(\"text\").transition(t)\n .attr(\"opacity\", 0)\n .style(\"opacity\", 0);\n\n }\n\n /**\n * Applies translate and rotate to a text element.\n * @param {D3Selection} text\n * @private\n */\n function rotate(text) {\n text.attr(\"transform\", (d, i) => {\n const rotateAnchor = that._rotateAnchor(d, i);\n return `translate(${d.x}, ${d.y}) rotate(${d.r}, ${rotateAnchor[0]}, ${rotateAnchor[1]})`;\n });\n }\n\n const update = boxes.enter().append(\"g\")\n .attr(\"class\", \"d3plus-textBox\")\n .attr(\"id\", d => `d3plus-textBox-${strip(d.id)}`)\n .call(rotate)\n .merge(boxes);\n\n const rtl = detectRTL();\n\n update\n .order()\n .style(\"pointer-events\", d => this._pointerEvents(d.data, d.i))\n .each(function(d) {\n\n /**\n Sets the inner text content of each <text> element.\n @private\n */\n function textContent(text) {\n\n let tag = false;\n\n text[that._html ? \"html\" : \"text\"](t => {\n\n let cleaned = trimRight(t)\n .replace(/&([^;&]*)/g, (str, a) => a === \"amp\" ? str : `&amp;${a}`) // replaces all non-HTML ampersands with escaped entity\n .replace(/<([^A-z^/]+)/g, (str, a) => `&lt;${a}`).replace(/<$/g, \"&lt;\") // replaces all non-HTML left angle brackets with escaped entity\n .replace(/(<[^>^/]+>)([^<^>]+)$/g, (str, a, b) => `${a}${b}${a.replace(\"<\", \"</\")}`) // ands end tag to lines before mid-HTML break\n .replace(/^([^<^>]+)(<\\/[^>]+>)/g, (str, a, b) => `${b.replace(\"</\", \"<\")}${a}${b}`); // ands start tag to lines after mid-HTML break\n\n const tagRegex = new RegExp(/<([A-z]+)[^>]*>([^<^>]+)<\\/[^>]+>/g);\n if (cleaned.match(tagRegex)) {\n cleaned = cleaned\n .replace(tagRegex, (str, a, b) => {\n tag = that._html[a] ? a : false;\n if (tag) {\n const style = that._html[tag];\n if (t.includes(`</${tag}>`)) tag = false;\n return `<tspan style=\"${style}\">${b}</tspan>`;\n }\n return b;\n });\n }\n else if (tag.length) {\n cleaned = `<tspan style=\"${that._html[tag]}\">${cleaned}</tspan>`;\n }\n\n return cleaned;\n\n });\n\n }\n\n /**\n Styles to apply to each <text> element.\n @private\n */\n function textStyle(text) {\n\n text\n .attr(\"aria-hidden\", d.aH)\n .attr(\"dir\", rtl ? \"rtl\" : \"ltr\")\n .attr(\"fill\", d.fC)\n .attr(\"stroke\", d.fStroke)\n .attr(\"stroke-width\", d.fSW)\n .attr(\"text-anchor\", d.tA)\n .attr(\"font-family\", d.fF)\n .style(\"font-family\", d.fF)\n .attr(\"font-size\", `${d.fS}px`)\n .style(\"font-size\", `${d.fS}px`)\n .attr(\"font-weight\", d.fW)\n .style(\"font-weight\", d.fW)\n .attr(\"x\", `${d.tA === \"middle\" ? d.w / 2 : rtl ? d.tA === \"start\" ? d.w : 0 : d.tA === \"end\" ? d.w : 2 * Math.sin(Math.PI * d.r / 180)}px`)\n .attr(\"y\", (t, i) => d.r === 0 || d.vA === \"top\" ? `${(i + 1) * d.lH - (d.lH - d.fS)}px`\n : d.vA === \"middle\"\n ? `${(d.h + d.fS) / 2 - (d.lH - d.fS) + (i - d.lines.length / 2 + 0.5) * d.lH}px`\n : `${d.h - 2 * (d.lH - d.fS) - (d.lines.length - (i + 1)) * d.lH + 2 * Math.cos(Math.PI * d.r / 180)}px`);\n\n }\n\n const texts = select(this).selectAll(\"text\").data(d.lines);\n\n if (that._duration === 0) {\n\n texts\n .call(textContent)\n .call(textStyle);\n\n texts.exit().remove();\n\n texts.enter().append(\"text\")\n .attr(\"dominant-baseline\", \"alphabetic\")\n .style(\"baseline-shift\", \"0%\")\n .attr(\"unicode-bidi\", \"bidi-override\")\n .call(textContent)\n .call(textStyle)\n .attr(\"opacity\", d.fO)\n .style(\"opacity\", d.fO);\n\n }\n else {\n\n texts.call(textContent).transition(t).call(textStyle);\n\n texts.exit().transition(t)\n .attr(\"opacity\", 0).remove();\n\n texts.enter().append(\"text\")\n .attr(\"dominant-baseline\", \"alphabetic\")\n .style(\"baseline-shift\", \"0%\")\n .attr(\"opacity\", 0)\n .style(\"opacity\", 0)\n .call(textContent)\n .call(textStyle)\n .merge(texts).transition(t).delay(that._delay)\n .call(textStyle)\n .attr(\"opacity\", d.fO)\n .style(\"opacity\", d.fO);\n }\n\n })\n .transition(t).call(rotate);\n\n const events = Object.keys(this._on),\n on = events.reduce((obj, e) => {\n obj[e] = (d, i) => this._on[e](d.data, i);\n return obj;\n }, {});\n for (let e = 0; e < events.length; e++) update.on(events[e], on[events[e]]);\n\n if (callback) setTimeout(callback, this._duration + 100);\n\n return this;\n\n }\n\n /**\n @memberof TextBox\n @desc If *value* is specified, sets the aria-hidden attribute to the specified function or string and returns the current class instance.\n @param {Function|String} *value*\n @chainable\n */\n ariaHidden(_) {\n return _ !== undefined\n ? (this._ariaHidden = typeof _ === \"function\" ? _ : constant(_), this)\n : this._ariaHidden;\n }\n\n /**\n @memberof TextBox\n @desc Sets the data array to the specified array. A text box will be drawn for each object in the array.\n @param {Array} [*data* = []]\n @chainable\n */\n data(_) {\n return arguments.length ? (this._data = _, this) : this._data;\n }\n\n /**\n @memberof TextBox\n @desc Sets the animation delay to the specified number in milliseconds.\n @param {Number} [*value* = 0]\n @chainable\n */\n delay(_) {\n return arguments.length ? (this._delay = _, this) : this._delay;\n }\n\n /**\n @memberof TextBox\n @desc Sets the animation duration to the specified number in milliseconds.\n @param {Number} [*value* = 0]\n @chainable\n */\n duration(_) {\n return arguments.length ? (this._duration = _, this) : this._duration;\n }\n\n /**\n @memberof TextBox\n @desc Sets the function that handles what to do when a line is truncated. It should return the new value for the line, and is passed 2 arguments: the String of text for the line in question, and the number of the line. By default, an ellipsis is added to the end of any line except if it is the first word that cannot fit (in that case, an empty string is returned).\n @param {Function|String} [*value*]\n @chainable\n @example <caption>default accessor</caption>\nfunction(text, line) {\n return line ? text.replace(/\\.|,$/g, \"\") + \"...\" : \"\";\n}\n */\n ellipsis(_) {\n return arguments.length ? (this._ellipsis = typeof _ === \"function\" ? _ : constant(_), this) : this._ellipsis;\n }\n\n /**\n @memberof TextBox\n @desc Sets the font color to the specified accessor function or static string, which is inferred from the [DOM selection](#textBox.select) by default.\n @param {Function|String} [*value* = \"black\"]\n @chainable\n */\n fontColor(_) {\n return arguments.length ? (this._fontColor = typeof _ === \"function\" ? _ : constant(_), this) : this._fontColor;\n }\n\n /**\n @memberof TextBox\n @desc Defines the font-family to be used. The value passed can be either a *String* name of a font, a comma-separated list of font-family fallbacks, an *Array* of fallbacks, or a *Function* that returns either a *String* or an *Array*. If supplying multiple fallback fonts, the [fontExists](#fontExists) function will be used to determine the first available font on the client's machine.\n @param {Array|Function|String} [*value* = [\"Inter\", \"Helvetica Neue\", \"HelveticaNeue\", \"Helvetica\", \"Arial\", \"sans-serif\"]]\n @chainable\n */\n fontFamily(_) {\n return arguments.length ? (this._fontFamily = typeof _ === \"function\" ? _ : constant(_), this) : this._fontFamily;\n }\n\n /**\n @memberof TextBox\n @desc Sets the maximum font size to the specified accessor function or static number (which corresponds to pixel units), which is used when [dynamically resizing fonts](#textBox.fontResize).\n @param {Function|Number} [*value* = 50]\n @chainable\n */\n fontMax(_) {\n return arguments.length ? (this._fontMax = typeof _ === \"function\" ? _ : constant(_), this) : this._fontMax;\n }\n\n /**\n @memberof TextBox\n @desc Sets the minimum font size to the specified accessor function or static number (which corresponds to pixel units), which is used when [dynamically resizing fonts](#textBox.fontResize).\n @param {Function|Number} [*value* = 8]\n @chainable\n */\n fontMin(_) {\n return arguments.length ? (this._fontMin = typeof _ === \"function\" ? _ : constant(_), this) : this._fontMin;\n }\n\n /**\n @memberof TextBox\n @desc Sets the font opacity to the specified accessor function or static number between 0 and 1.\n @param {Function|Number} [*value* = 1]\n @chainable\n */\n fontOpacity(_) {\n return arguments.length ? (this._fontOpacity = typeof _ === \"function\" ? _ : constant(_), this) : this._fontOpacity;\n }\n\n /**\n @memberof TextBox\n @desc Toggles font resizing, which can either be defined as a static boolean for all data points, or an accessor function that returns a boolean. See [this example](http://d3plus.org/examples/d3plus-text/resizing-text/) for a side-by-side comparison.\n @param {Function|Boolean} [*value* = false]\n @chainable\n */\n fontResize(_) {\n return arguments.length ? (this._fontResize = typeof _ === \"function\" ? _ : constant(_), this) : this._fontResize;\n }\n\n /**\n @memberof TextBox\n @desc Sets the font size to the specified accessor function or static number (which corresponds to pixel units), which is inferred from the [DOM selection](#textBox.select) by default.\n @param {Function|Number} [*value* = 10]\n @chainable\n */\n fontSize(_) {\n return arguments.length ? (this._fontSize = typeof _ === \"function\" ? _ : constant(_), this) : this._fontSize;\n }\n\n /**\n @memberof TextBox\n @desc Sets the font stroke color for the rendered text.\n @param {Function|String} [*value* = \"transparent\"]\n @chainable\n */\n fontStroke(_) {\n return arguments.length ? (this._fontStroke = typeof _ === \"function\" ? _ : constant(_), this) : this._fontStroke;\n }\n\n /**\n @memberof TextBox\n @desc Sets the font stroke width for the rendered text.\n @param {Function|Number} [*value* = 0]\n @chainable\n */\n fontStrokeWidth(_) {\n return arguments.length ? (this._fontStrokeWidth = typeof _ === \"function\" ? _ : constant(_), this) : this._fontStrokeWidth;\n }\n\n /**\n @memberof TextBox\n @desc Sets the font weight to the specified accessor function or static number, which is inferred from the [DOM selection](#textBox.select) by default.\n @param {Function|Number|String} [*value* = 400]\n @chainable\n */\n fontWeight(_) {\n return arguments.length ? (this._fontWeight = typeof _ === \"function\" ? _ : constant(_), this) : this._fontWeight;\n }\n\n /**\n @memberof TextBox\n @desc Sets the height for each box to the specified accessor function or static number.\n @param {Function|Number} [*value*]\n @chainable\n @example <caption>default accessor</caption>\nfunction(d) {\n return d.height || 200;\n}\n */\n height(_) {\n return arguments.length ? (this._height = typeof _ === \"function\" ? _ : constant(_), this) : this._height;\n }\n\n /**\n @memberof TextBox\n @desc Configures the ability to render simple HTML tags. Defaults to supporting `<b>`, `<strong>`, `<i>`, and `<em>`, set to false to disable or provide a mapping of tags to svg styles\n @param {Object|Boolean} [*value* = {\n i: 'font-style: italic;',\n em: 'font-style: italic;',\n b: 'font-weight: bold;',\n strong: 'font-weight: bold;'\n }]\n @chainable\n */\n html(_) {\n return arguments.length ? (this._html = typeof _ === \"boolean\" ? _ ? defaultHtmlLookup : false : _, this) : this._html;\n }\n\n\n /**\n @memberof TextBox\n @desc Defines the unique id for each box to the specified accessor function or static number.\n @param {Function|Number} [*value*]\n @chainable\n @example <caption>default accessor</caption>\nfunction(d, i) {\n return d.id || i + \"\";\n}\n */\n id(_) {\n return arguments.length ? (this._id = typeof _ === \"function\" ? _ : constant(_), this) : this._id;\n }\n\n /**\n @memberof TextBox\n @desc Sets the line height to the specified accessor function or static number, which is 1.2 times the [font size](#textBox.fontSize) by default.\n @param {Function|Number} [*value*]\n @chainable\n */\n lineHeight(_) {\n return arguments.length ? (this._lineHeight = typeof _ === \"function\" ? _ : constant(_), this) : this._lineHeight;\n }\n\n /**\n @memberof TextBox\n @desc Restricts the maximum number of lines to wrap onto, which is null (unlimited) by default.\n @param {Function|Number} [*value*]\n @chainable\n */\n maxLines(_) {\n return arguments.length ? (this._maxLines = typeof _ === \"function\" ? _ : constant(_), this) : this._maxLines;\n }\n\n /**\n @memberof TextBox\n @desc Sets the text overflow to the specified accessor function or static boolean.\n @param {Function|Boolean} [*value* = false]\n @chainable\n */\n overflow(_) {\n return arguments.length ? (this._overflow = typeof _ === \"function\" ? _ : constant(_), this) : this._overflow;\n }\n\n /**\n @memberof TextBox\n @desc Sets the padding to the specified accessor function, CSS shorthand string, or static number, which is 0 by default.\n @param {Function|Number|String} [*value*]\n @chainable\n */\n padding(_) {\n return arguments.length ? (this._padding = typeof _ === \"function\" ? _ : constant(_), this) : this._padding;\n }\n\n /**\n @memberof TextBox\n @desc Sets the pointer-events to the specified accessor function or static string.\n @param {Function|String} [*value* = \"auto\"]\n @chainable\n */\n pointerEvents(_) {\n return arguments.length ? (this._pointerEvents = typeof _ === \"function\" ? _ : constant(_), this) : this._pointerEvents;\n }\n\n /**\n @memberof TextBox\n @desc Sets the rotate percentage for each box to the specified accessor function or static string.\n @param {Function|Number} [*value* = 0]\n @chainable\n */\n rotate(_) {\n return arguments.length ? (this._rotate = typeof _ === \"function\" ? _ : constant(_), this) : this._rotate;\n }\n\n /**\n @memberof TextBox\n @desc Sets the anchor point around which to rotate the text box.\n @param {Function|Number[]}\n @chainable\n */\n rotateAnchor(_) {\n return arguments.length ? (this._rotateAnchor = typeof _ === \"function\" ? _ : constant(_), this) : this._rotateAnchor;\n }\n\n /**\n @memberof TextBox\n @desc Sets the SVG container element to the specified d3 selector or DOM element. If not explicitly specified, an SVG element will be added to the page for use.\n @param {String|HTMLElement} [*selector*]\n @chainable\n */\n select(_) {\n return arguments.length ? (this._select = select(_), this) : this._select;\n }\n\n /**\n @memberof TextBox\n @desc Sets the word split behavior to the specified function, which when passed a string is expected to return that string split into an array of words.\n @param {Function} [*value*]\n @chainable\n */\n split(_) {\n return arguments.length ? (this._split = _, this) : this._split;\n }\n\n /**\n @memberof TextBox\n @desc Sets the text for each box to the specified accessor function or static string.\n @param {Function|String} [*value*]\n @chainable\n @example <caption>default accessor</caption>\nfunction(d) {\n return d.text;\n}\n */\n text(_) {\n return arguments.length ? (this._text = typeof _ === \"function\" ? _ : constant(_), this) : this._text;\n }\n\n /**\n @memberof TextBox\n @desc Sets the horizontal text anchor to the specified accessor function or static string, whose values are analagous to the SVG [text-anchor](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/text-anchor) property.\n @param {Function|String} [*value* = \"start\"]\n @chainable\n */\n textAnchor(_) {\n return arguments.length ? (this._textAnchor = typeof _ === \"function\" ? _ : constant(_), this) : this._textAnchor;\n }\n\n /**\n @memberof TextBox\n @desc Sets the vertical alignment to the specified accessor function or static string. Accepts `\"top\"`, `\"middle\"`, and `\"bottom\"`.\n @param {Function|String} [*value* = \"top\"]\n @chainable\n */\n verticalAlign(_) {\n return arguments.length ? (this._verticalAlign = typeof _ === \"function\" ? _ : constant(_), this) : this._verticalAlign;\n }\n\n /**\n @memberof TextBox\n @desc Sets the width for each box to the specified accessor function or static number.\n @param {Function|Number} [*value*]\n @chainable\n @example <caption>default accessor</caption>\nfunction(d) {\n return d.width || 200;\n}\n */\n width(_) {\n return arguments.length ? (this._width = typeof _ === \"function\" ? _ : constant(_), this) : this._width;\n }\n\n /**\n @memberof TextBox\n @desc Sets the x position for each box to the specified accessor function or static number. The number given should correspond to the left side of the textBox.\n @param {Function|Number} [*value*]\n @chainable\n @example <caption>default accessor</caption>\nfunction(d) {\n return d.x || 0;\n}\n */\n x(_) {\n return arguments.length ? (this._x = typeof _ === \"function\" ? _ : constant(_), this) : this._x;\n }\n\n /**\n @memberof TextBox\n @desc Sets the y position for each box to the specified accessor function or static number. The number given should correspond to the top side of the textBox.\n @param {Function|Number} [*value*]\n @chainable\n @example <caption>default accessor</caption>\nfunction(d) {\n return d.y || 0;\n}\n */\n y(_) {\n return arguments.length ? (this._y = typeof _ === \"function\" ? _ : constant(_), this) : this._y;\n }\n\n}\n","import {extent, max, min} from \"d3-array\";\nimport {brushX} from \"d3-brush\";\nimport {scaleTime} from \"d3-scale\";\nimport {pointers} from \"d3-selection\";\n\nimport {colorDefaults} from \"@d3plus/color\";\nimport {assign, attrize, date, elem, textWidth} from \"@d3plus/dom\";\nimport {formatDate} from \"@d3plus/format\";\nimport {locale} from \"@d3plus/locales\";\nimport {closest} from \"@d3plus/math\";\nimport {textWrap} from \"@d3plus/text\";\n\nimport {Axis, TextBox} from \"../components/index.js\";\nimport {constant} from \"../utils/index.js\";\n\nconst colorMid = \"#bbb\";\n\n/**\n @class Timeline\n @extends Axis\n*/\nexport default class Timeline extends Axis {\n\n /**\n @memberof Timeline\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Axis.\n @private\n */\n constructor() {\n\n super();\n\n this._barConfig = assign({}, this._barConfig, {\n stroke: () => this._buttonBehaviorCurrent === \"buttons\" ? \"transparent\" : colorMid,\n \"stroke-width\": () => this._buttonBehaviorCurrent === \"buttons\" ? 0 : 1\n });\n this._brushing = true;\n this._brushFilter = event => !event.button && event.detail < 2;\n this._brushMin = constant(1);\n this._buttonAlign = \"middle\";\n this._buttonBehavior = \"auto\";\n this._buttonPadding = 10;\n this._buttonHeight = 24;\n this._domain = [2001, 2010];\n this._gridSize = 0;\n this._handleConfig = {\n fill: colorDefaults.light,\n stroke: \"#228be6\",\n \"stroke-width\": 2,\n rx: 2,\n ry: 2\n };\n this._handleSize = 6;\n this._height = 100;\n this._labelOffset = false;\n this._on = {};\n this.orient(\"bottom\");\n this._playButton = true;\n this._playButtonClass = new TextBox()\n .on(\"click\", () => {\n\n // if playing, pause\n if (this._playTimer) {\n clearInterval(this._playTimer);\n this._playTimer = false;\n this._playButtonClass.render();\n }\n // otherwise, start playing\n else {\n let firstTime = true;\n const nextYear = () => {\n let selection = this._selection || [this._domain[this._domain.length - 1]];\n if (!(selection instanceof Array)) selection = [selection];\n selection = selection.map(date).map(Number);\n if (selection.length === 1) selection.push(selection[0]);\n const ticks = this._ticks.map(Number);\n const firstIndex = ticks.indexOf(selection[0]);\n const lastIndex = ticks.indexOf(selection[selection.length - 1]);\n if (lastIndex === ticks.length - 1) {\n if (!firstTime) {\n clearInterval(this._playTimer);\n this._playTimer = false;\n this._playButtonClass.render();\n }\n else {\n this.selection([\n this._ticks[0], \n this._ticks[lastIndex - firstIndex]\n ]).render();\n }\n }\n else {\n if (lastIndex + 1 === ticks.length - 1) {\n clearInterval(this._playTimer);\n this._playTimer = false;\n }\n this.selection([\n this._ticks[firstIndex + 1], \n this._ticks[lastIndex + 1]\n ]).render();\n }\n firstTime = false;\n }\n this._playTimer = setInterval(nextYear, this._playButtonInterval);\n nextYear();\n }\n })\n .on(\"mousemove\", () => this._playButtonClass.select().style(\"cursor\", \"pointer\"));\n this._playButtonConfig = {\n fontColor: colorDefaults.dark,\n fontSize: 15,\n text: () => this._playTimer ? \"&#x23f8;&#xFE0E;\" : \"⏵\",\n textAnchor: \"middle\",\n verticalAlign: \"middle\"\n };\n this._playButtonInterval = 1000;\n this._selectionConfig = {\n \"fill\": \"#228be6\",\n \"fill-opacity\": () => this._buttonBehaviorCurrent === \"buttons\" ? 0.3 : 1,\n \"stroke-width\": 0\n };\n this._shape = \"Rect\";\n this._shapeConfig = assign({}, this._shapeConfig, {\n labelBounds: d => this._buttonBehaviorCurrent === \"buttons\" \n ? {x: d.labelBounds.x, y: -this._buttonHeight / 2 + 1, width: d.labelBounds.width, height: this._buttonHeight} \n : d.labelBounds,\n labelConfig: {\n fontColor: colorDefaults.dark,\n fontSize: () => 12,\n verticalAlign: () => this._buttonBehaviorCurrent === \"buttons\" ? \"middle\" : \"top\"\n },\n fill: () => this._buttonBehaviorCurrent === \"buttons\" ? \"#fff\" : colorMid,\n stroke: () => this._buttonBehaviorCurrent === \"buttons\" ? colorMid : \"transparent\",\n height: d => this._buttonBehaviorCurrent === \"buttons\" ? this._buttonHeight : d.tick ? this._handleSize : 0,\n width: d => this._buttonBehaviorCurrent === \"buttons\" \n ? this._ticksWidth / this._availableTicks.length \n : d.tick \n ? this._domain.map(Number).includes(d.id) ? 2 : 1 \n : 0,\n y: d => this._buttonBehaviorCurrent === \"buttons\" \n ? this._align === \"middle\" ? this._height / 2 \n : this._align === \"start\" ? this._margin.top + this._buttonHeight / 2 \n : this._height - this._buttonHeight / 2 - this._margin.bottom \n : d.y,\n rx: d => this._buttonBehaviorCurrent === \"buttons\" ? 0 : this._domain.map(Number).includes(d.id) ? 1 : 0,\n ry: d => this._buttonBehaviorCurrent === \"buttons\" ? 0 : this._domain.map(Number).includes(d.id) ? 1 : 0\n });\n this._snapping = true;\n\n }\n\n\n /**\n @memberof Timeline\n @desc Triggered on brush \"brush\".\n @private\n */\n _brushBrush(event) {\n\n if (event.sourceEvent && event.sourceEvent.offsetX && event.selection !== null && (!this._brushing || this._snapping)) {\n\n clearInterval(this._playTimer);\n this._playTimer = false;\n this._playButtonClass.render();\n\n const domain = this._updateDomain(event);\n this._brushGroup.call(this._brush.move, this._updateBrushLimit(domain));\n\n }\n\n this._brushStyle();\n if (this._on.brush) this._on.brush(this._selection);\n\n }\n\n /**\n @memberof Timeline\n @desc Triggered on brush \"end\".\n @private\n */\n _brushEnd(event) {\n\n if (!event.sourceEvent) return; // Only transition after input.\n\n const domain = this._updateDomain(event);\n\n this._brushStyle();\n\n if (this._brushing || !this._snapping) this._brushGroup.transition(this._transition).call(this._brush.move, this._updateBrushLimit(domain));\n\n if (this._on.end) this._on.end(this._selection);\n\n }\n\n /**\n @memberof Timeline\n @desc Triggered on brush \"start\".\n @private\n */\n _brushStart(event) {\n\n if (event.sourceEvent !== null && (!this._brushing || this._snapping)) {\n\n clearInterval(this._playTimer);\n this._playTimer = false;\n this._playButtonClass.render();\n\n const domain = this._updateDomain(event);\n this._brushGroup.call(this._brush.move, this._updateBrushLimit(domain));\n\n }\n\n this._brushStyle();\n if (this._on.start) this._on.start(event);\n\n }\n\n /**\n @memberof Timeline\n @desc Overrides the default brush styles.\n @private\n */\n _brushStyle() {\n\n const {height} = this._position;\n const timelineHeight = this._shape === \"Circle\"\n ? typeof this._shapeConfig.r === \"function\" ? this._shapeConfig.r({tick: true}) * 2 : this._shapeConfig.r\n : this._shape === \"Rect\"\n ? typeof this._shapeConfig[height] === \"function\" ? this._shapeConfig[height]({tick: true}) : this._shapeConfig[height]\n : this._tickSize;\n\n const brushSelection = this._brushGroup.selectAll(\".selection\")\n .call(attrize, this._selectionConfig)\n .attr(\"transform\", \"translate(0,-1)\")\n .attr(\"height\", timelineHeight + 2);\n\n const brushHandle = this._brushGroup.selectAll(\".handle\")\n .call(attrize, this._handleConfig)\n .attr(\"display\", this._hiddenHandles ? \"none\" : \"block\")\n .attr(\"transform\", d => this._buttonBehaviorCurrent === \"buttons\" ? `translate(${d.type === \"w\" ? -this._handleSize / 2 : 0},-1)` : \"\")\n .attr(\"height\", this._buttonBehaviorCurrent === \"buttons\" ? this._buttonHeight + 2 : timelineHeight + this._handleSize);\n\n this._brushGroup.selectAll(\".overlay\")\n .attr(\"x\", this._paddingLeft)\n .attr(\"cursor\", \"pointer\")\n .attr(\"transform\", `translate(0,${this._buttonBehaviorCurrent === \"buttons\" ? this._buttonHeight / 2 : -this._handleSize})`)\n .attr(\"width\", this._buttonBehaviorCurrent === \"buttons\" ? this._ticksWidth : this._width)\n .attr(\"height\", this._buttonBehaviorCurrent === \"buttons\" ? this._buttonHeight : this._handleSize * 2);\n\n if (this._buttonBehaviorCurrent === \"buttons\") {\n\n const yTransform = this._align === \"middle\"\n ? this._height / 2 - this._buttonHeight / 2\n : this._align === \"start\"\n ? this._margin.top : this._height - this._buttonHeight - this._margin.bottom;\n\n brushHandle.attr(\"y\", yTransform);\n brushSelection.attr(\"y\", yTransform);\n }\n\n }\n\n /**\n @memberof Timeline\n @desc Updates domain of the timeline used in brush functions.\n @private\n */\n _updateDomain(event) {\n\n const x = pointers(event, this._select.node());\n let domain = event.selection && this._brushing || !x.length ? event.selection : [x[0][0], x[0][0]];\n\n if (this._buttonBehaviorCurrent === \"ticks\") domain = domain.map(this._d3Scale.invert);\n domain = domain.map(Number);\n\n if (event.type === \"brush\" && this._brushing && this._buttonBehaviorCurrent === \"buttons\") {\n const diffs = event.selection.map(d => Math.abs(d - event.sourceEvent.offsetX));\n\n domain = diffs[1] <= diffs[0]\n ? [event.selection[0], event.sourceEvent.offsetX].sort((a, b) => a - b)\n : [event.sourceEvent.offsetX, event.selection[1]].sort((a, b) => a - b);\n\n }\n\n const ticks = this._buttonBehaviorCurrent === \"ticks\"\n ? this._availableTicks.map(Number)\n : this._d3Scale.range();\n\n if (this._buttonBehaviorCurrent === \"ticks\") {\n\n // find closest min and max ticks from data\n // and their indices in the ticks Array\n let minDomain = date(closest(domain[0], ticks));\n let minIndex = ticks.indexOf(+minDomain);\n let maxDomain = date(closest(domain[1], ticks));\n let maxIndex = ticks.indexOf(+maxDomain);\n\n // using the indices, determine if the 2 ends of the brush\n // are too close to each other. \"ticksApart\" always needs to\n // be less than the current current brushMin minus 1. For\n // example, a brushMin of \"2\" means that the min and max domain\n // values need to be \"1\" space apart from eachother.\n let ticksApart = Math.abs(maxIndex - minIndex);\n const minTicksAllowed = this._brushMin() - 1;\n\n // if the min and max are not far enough apart to satisfy\n // brushMin, then forcibly extend the domain.\n if (ticksApart < minTicksAllowed) {\n\n // push the maxDomain out as far as possible to account for brushMin\n maxIndex = min([ticks.length - 1, maxIndex + (minTicksAllowed - ticksApart)]);\n maxDomain = ticks[maxIndex];\n ticksApart = Math.abs(maxIndex - minIndex);\n\n // if the domain is still not far enough apart, extent the minDomain\n // as far as possible to allow for brushMin\n if (ticksApart < minTicksAllowed) {\n minIndex = max([0, minIndex - (minTicksAllowed - ticksApart)]);\n minDomain = ticks[minIndex];\n }\n\n }\n\n domain[0] = minDomain;\n domain[1] = maxDomain;\n\n }\n else {\n domain[0] = closest(domain[0], ticks);\n domain[1] = closest(domain[1], ticks);\n }\n\n // if the brush event has finished, update the current \"selection\" value\n const single = +domain[0] === +domain[1];\n if (event.type === \"brush\" || event.type === \"end\") {\n this._selection = this._buttonBehaviorCurrent === \"ticks\"\n ? single ? domain[0] : domain\n : single\n ? date(this._availableTicks[ticks.indexOf(domain[0])])\n : [date(this._availableTicks[ticks.indexOf(domain[0])]), date(this._availableTicks[ticks.indexOf(domain[1])])];\n }\n\n return domain;\n\n }\n\n /**\n @memberof Timeline\n @desc Updates limits of the brush.\n @private\n */\n _updateBrushLimit(domain) {\n\n const selection = this._buttonBehaviorCurrent === \"ticks\" ? domain.map(date).map(this._d3Scale) : domain;\n\n if (selection[0] === selection[1]) {\n selection[0] -= 0.1;\n selection[1] += 0.1;\n }\n\n if (this._buttonBehaviorCurrent === \"buttons\") {\n const handleSize = this._hiddenHandles ? 0 : this._handleSize;\n const buttonWidth = 0.5 * (this._ticksWidth / this._availableTicks.length - handleSize);\n selection[0] -= buttonWidth;\n selection[1] += buttonWidth;\n }\n\n return selection;\n }\n\n /**\n @memberof Timeline\n @desc Draws the timeline.\n @param {Function} [*callback* = undefined]\n @chainable\n */\n render(callback) {\n const {height, y} = this._position;\n\n if (this._ticks) this._ticks = this._ticks.map(date);\n if (this._data) this._data = this._data.map(date);\n\n let ticks = this._ticks ? this._ticks : this._domain.map(date);\n if (!this._ticks) {\n const d3Scale = scaleTime().domain(ticks).range([0, this._width]);\n ticks = d3Scale.ticks();\n }\n \n const timeLocale = this._timeLocale || locale[this._locale] || locale[\"en-US\"];\n if (this._userFormat === undefined) this._userFormat = this._tickFormat || false;\n const tickFormat = this._tickFormat = this._userFormat ? this._userFormat : d => formatDate(d, ticks).replace(/^Q/g, timeLocale.quarter);\n\n // Measures size of ticks\n this._ticksWidth = this._width;\n if ([\"auto\", \"buttons\"].includes(this._buttonBehavior)) {\n let maxLabel = 0;\n ticks.forEach((d, i) => {\n\n const {fontFamily, fontSize} = this._shapeConfig.labelConfig\n \n const f = typeof fontFamily === \"function\" ? fontFamily(d, i) : fontFamily,\n s = typeof fontSize === \"function\" ? fontSize(d, i) : fontSize;\n \n const wrap = textWrap()\n .fontFamily(f)\n .fontSize(s)\n .lineHeight(this._shapeConfig.lineHeight ? this._shapeConfig.lineHeight(d, i) : undefined);\n \n const res = wrap(tickFormat(d));\n \n let width = res.lines.length\n ? Math.ceil(max(res.lines.map(line => textWidth(line, {\"font-family\": f, \"font-size\": s})))) + s / 4\n : 0;\n \n if (width % 2) width++;\n if (maxLabel < width) maxLabel = width + 2 * this._buttonPadding;\n \n });\n this._ticksWidth = maxLabel * ticks.length;\n }\n\n const playButtonWidth = this._playButton ? this._buttonHeight : 0;\n const space = this._width - playButtonWidth;\n \n this._buttonBehaviorCurrent = this._buttonBehavior === \"auto\" ? this._ticksWidth < space ? \"buttons\" : \"ticks\" : this._buttonBehavior;\n const hiddenHandles = this._hiddenHandles = this._buttonBehaviorCurrent === \"buttons\" && !this._brushing;\n\n if (this._buttonBehaviorCurrent === \"buttons\") {\n\n this._scale = \"ordinal\";\n const domain = scaleTime().domain(this._domain.map(date)).ticks().map(Number);\n\n this._domain = this._ticks ? this._ticks : Array.from(Array(domain[domain.length - 1] - domain[0] + 1), (_, x) => domain[0] + x).map(date);\n\n this._ticks = this._domain;\n\n const buttonMargin = 0.5 * this._ticksWidth / this._ticks.length;\n\n const emptySpace = this._width - this._ticksWidth - playButtonWidth;\n\n this._paddingLeft = this._buttonAlign === \"middle\" ? emptySpace / 2 + playButtonWidth\n : this._buttonAlign === \"end\" ? emptySpace + playButtonWidth\n : playButtonWidth;\n\n this._range = [\n this._paddingLeft + buttonMargin,\n this._paddingLeft + this._ticksWidth - buttonMargin\n ];\n }\n else {\n this._scale = \"time\";\n this._domain = extent(ticks);\n this._range = [playButtonWidth ? playButtonWidth * 1.5 : undefined, undefined];\n this._paddingLeft = playButtonWidth;\n }\n\n super.render(callback);\n\n const offset = this._outerBounds[y],\n range = this._d3Scale.range();\n\n const brush = this._brush = brushX()\n .extent([[range[0], offset], [range[range.length - 1], offset + this._outerBounds[height]]])\n .filter(this._brushFilter)\n .handleSize(hiddenHandles ? 0 : this._handleSize)\n .on(\"start\", this._brushStart.bind(this))\n .on(\"brush\", this._brushBrush.bind(this))\n .on(\"end\", this._brushEnd.bind(this));\n\n // data Array to be used when detecting the default value\n const defaultData = this._buttonBehaviorCurrent === \"ticks\"\n ? this._availableTicks\n : range;\n\n // the default selection, if needed\n const defaultSelection = [\n this._brushMin() > defaultData.length\n ? defaultData[0]\n : defaultData[defaultData.length - this._brushMin()],\n defaultData[defaultData.length - 1]\n ];\n\n // the current selection, considering user input, defaults, and data\n const selection = this._selection === void 0 ? defaultSelection\n : this._selection instanceof Array\n ? this._buttonBehaviorCurrent === \"buttons\"\n ? this._selection.map(date).map(d => range[this._ticks.map(Number).indexOf(+d)])\n : this._selection.map(date)\n : this._buttonBehaviorCurrent === \"buttons\"\n ? [range[this._ticks.map(Number).indexOf(+this._selection)]]\n : [this._selection];\n\n if (selection.length === 1) selection.push(selection[0]);\n this._updateBrushLimit(selection);\n\n this._brushGroup = elem(\"g.brushGroup\", {parent: this._group});\n this._brushGroup.call(brush).transition(this._transition)\n .call(brush.move, this._buttonBehaviorCurrent === \"ticks\" ? this._updateBrushLimit(selection) : selection);\n\n this._outerBounds.y -= this._handleSize / 2;\n this._outerBounds.height += this._handleSize / 2;\n\n const playButtonGroup = elem(\"g.d3plus-Timeline-play\", {parent: this._group});\n \n this._playButtonClass\n .data(this._playButton ? [{\n x: this._paddingLeft - playButtonWidth, \n y: this._buttonBehaviorCurrent === \"buttons\" \n ? this._align === \"middle\" ? this._height / 2 - this._buttonHeight / 2 \n : this._align === \"start\" ? this._margin.top\n : this._height - this._buttonHeight - this._margin.bottom \n : this._outerBounds.y, \n width: playButtonWidth,\n height: playButtonWidth\n }] : [])\n .select(playButtonGroup.node())\n .config(this._playButtonConfig)\n .render();\n\n return this;\n }\n\n /**\n @memberof Timeline\n @desc If *value* is specified, sets the button padding and returns the current class instance. If *value* is not specified, returns the current button padding.\n @param {Number} [*value* = 10]\n @chainable\n */\n buttonPadding(_) {\n return arguments.length ? (this._buttonPadding = _, this) : this._buttonPadding;\n }\n\n /**\n @memberof Timeline\n @desc If *value* is specified, toggles the brushing value and returns the current class instance. If *value* is not specified, returns the current brushing value.\n @param {Boolean} [*value* = true]\n @chainable\n */\n brushing(_) {\n return arguments.length ? (this._brushing = _, this) : this._brushing;\n }\n\n /**\n @memberof Timeline\n @desc If *value* is specified, sets the brush event filter and returns the current class instance. If *value* is not specified, returns the current brush event filter.\n @param {Function} [*value*]\n @chainable\n @example\nfunction() {\n return !event.button && event.detail < 2;\n}\n */\n brushFilter(_) {\n return arguments.length ? (this._brushFilter = _, this) : this._brushFilter;\n }\n\n /**\n @memberof Timeline\n @desc Sets the minimum number of \"ticks\" to allow to be highlighted when using \"ticks\" buttonBehavior. Helpful when using x/y plots where you don't want the user to select less than 2 time periods. Value passed can either be a static Number, or a function that is expected to return a Number.\n @param {Number|Function} [*value* = 1]\n @chainable\n */\n brushMin(_) {\n return arguments.length ? (this._brushMin = typeof _ === \"function\" ? _ : constant(_), this) : this._brushMin;\n }\n\n /**\n @memberof Timeline\n @desc If *value* is specified, toggles the horizontal alignment of the button timeline. Accepted values are `\"start\"`, `\"middle\"` and `\"end\"`. If *value* is not specified, returns the current button value.\n @param {String} [*value* = \"middle\"]\n @chainable\n */\n buttonAlign(_) {\n return arguments.length ? (this._buttonAlign = _, this) : this._buttonAlign;\n }\n\n /**\n @memberof Timeline\n @desc If *value* is specified, toggles the style of the timeline. Accepted values are `\"auto\"`, `\"buttons\"` and `\"ticks\"`. If *value* is not specified, returns the current button value.\n @param {String} [*value* = \"auto\"]\n @chainable\n */\n buttonBehavior(_) {\n return arguments.length ? (this._buttonBehavior = _, this) : this._buttonBehavior;\n }\n\n /**\n @memberof Timeline\n @desc If *value* is specified, sets the button height and returns the current class instance. If *value* is not specified, returns the current button height.\n @param {Number} [*value* = 30]\n @chainable\n */\n buttonHeight(_) {\n return arguments.length ? (this._buttonHeight = _, this) : this._buttonHeight;\n }\n\n /**\n @memberof Timeline\n @desc If *value* is specified, sets the handle style and returns the current class instance. If *value* is not specified, returns the current handle style.\n @param {Object} [*value*]\n @chainable\n */\n handleConfig(_) {\n return arguments.length ? (this._handleConfig = assign(this._handleConfig, _), this) : this._handleConfig;\n }\n\n /**\n @memberof Timeline\n @desc If *value* is specified, sets the handle size and returns the current class instance. If *value* is not specified, returns the current handle size.\n @param {Number} [*value* = 6]\n @chainable\n */\n handleSize(_) {\n return arguments.length ? (this._handleSize = _, this) : this._handleSize;\n }\n\n /**\n @memberof Timeline\n @desc Adds or removes a *listener* for the specified brush event *typename*. If a *listener* is not specified, returns the currently-assigned listener for the specified event *typename*. Mirrors the core [d3-brush](https://github.com/d3/d3-brush#brush_on) behavior.\n @param {String|Object} [*typename*]\n @param {Function} [*listener*]\n @chainable\n */\n on(_, f) {\n return arguments.length === 2 ? (this._on[_] = f, this) : arguments.length ? typeof _ === \"string\" ? this._on[_] : (this._on = assign({}, this._on, _), this) : this._on;\n }\n\n /**\n @memberof Timeline\n @desc Determines the visibility of the play button to the left the of timeline, which will cycle through the available periods at a rate defined by the playButtonInterval method.\n @param {Boolean} [*value* = true]\n @chainable\n */\n playButton(_) {\n return arguments.length ? (this._playButton = _, this) : this._playButton;\n }\n\n /**\n @memberof Timeline\n @desc The config Object for the Rect class used to create the playButton.\n @param {Object} [*value*]\n @chainable\n */\n playButtonConfig(_) {\n return arguments.length ? (this._playButtonConfig = assign(this._playButtonConfig, _), this) : this._playButtonConfig;\n }\n\n /**\n @memberof Timeline\n @desc The value, in milliseconds, to use when cycling through the available time periods when the user clicks the playButton.\n @param {Number} [*value* = 1000]\n @chainable\n */\n playButtonInterval(_) {\n return arguments.length ? (this._playButtonInterval = _, this) : this._playButtonInterval;\n }\n\n /**\n @memberof Timeline\n @desc If *value* is specified, sets the selection style and returns the current class instance. If *value* is not specified, returns the current selection style.\n @param {Object} [*value*]\n @chainable\n */\n selectionConfig(_) {\n return arguments.length ? (this._selectionConfig = assign(this._selectionConfig, _), this) : this._selectionConfig;\n }\n\n /**\n @memberof Timeline\n @desc If *value* is specified, sets the selection and returns the current class instance. If *value* is not specified, returns the current selection. Defaults to the most recent year in the timeline.\n @param {Array|Date|Number|String} [*value*]\n @chainable\n */\n selection(_) {\n return arguments.length ? (this._selection = _, this) : this._selection;\n }\n\n /**\n @memberof Timeline\n @desc If *value* is specified, toggles the snapping value and returns the current class instance. If *value* is not specified, returns the current snapping value.\n @param {Boolean} [*value* = true]\n @chainable\n */\n snapping(_) {\n return arguments.length ? (this._snapping = _, this) : this._snapping;\n }\n\n}\n","import {select} from \"d3-selection\";\nimport {createPopper} from '@popperjs/core';\n\nimport {colorDefaults} from \"@d3plus/color\";\nimport {elem, prefix, stylize} from \"@d3plus/dom\";\nimport {fontFamily, fontFamilyStringify} from \"@d3plus/text\";\n\nimport {accessor, BaseClass, constant} from \"../utils/index.js\";\n\n/**\n * Creates a reference element for popper.\n * @param {Number[]} position\n * @prrivate\n */\nfunction generateReference(position = [0, 0]) {\n return () => ({\n width: 0,\n height: 0,\n top: position[1],\n right: position[0],\n bottom: position[1],\n left: position[0]\n });\n}\n\n/**\n @class Tooltip\n @extends BaseClass\n @desc Creates HTML tooltips in the body of a webpage.\n*/\nexport default class Tooltip extends BaseClass {\n\n /**\n @memberof Tooltip\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._arrow = accessor(\"arrow\", \"\");\n this._arrowStyle = {\n \"content\": \"\",\n \"background\": \"inherit\",\n \"border\": \"inherit\",\n \"border-width\": \"0 1px 1px 0\",\n \"height\": \"10px\",\n \"position\": \"absolute\",\n \"transform\": \"rotate(45deg)\",\n \"width\": \"10px\",\n \"z-index\": \"-1\"\n };\n this._background = constant(colorDefaults.light);\n this._body = accessor(\"body\", \"\");\n this._bodyStyle = {\n \"font-size\": \"12px\",\n \"font-weight\": \"400\",\n \"z-index\": \"1\"\n };\n this._border = constant(\"1px solid rgba(0, 0, 0, 0.25)\");\n this._borderRadius = constant(\"4px\");\n this._className = \"d3plus-tooltip\";\n this._data = [];\n this._footer = accessor(\"footer\", \"\");\n this._footerStyle = {\n \"font-size\": \"9px\",\n \"font-weight\": \"400\",\n \"margin-top\": \"5px\",\n \"z-index\": \"1\"\n };\n this._height = constant(\"auto\");\n this._id = (d, i) => `${i}`;\n this._offset = constant(5);\n this._padding = constant(\"10px\");\n this._pointerEvents = constant(\"auto\");\n this._popperClasses = {};\n this._position = d => [d.x, d.y];\n this._prefix = prefix();\n this._tableStyle = {\n \"border-collapse\": \"collapse\",\n \"border-spacing\": \"0\",\n \"width\": \"100%\"\n };\n this._tbody = [];\n this._tbodyStyle = {\n \"font-size\": \"12px\",\n \"text-align\": \"center\"\n };\n this._thead = [];\n this._theadStyle = {\n \"font-size\": \"12px\",\n \"font-weight\": \"600\",\n \"text-align\": \"center\"\n };\n this._title = accessor(\"title\", \"\");\n this._titleStyle = {\n \"font-size\": \"14px\",\n \"font-weight\": \"600\",\n \"margin-bottom\": \"5px\"\n };\n this._tooltipStyle = {\n \"box-shadow\": \"0 1px 5px rgba(0, 0, 0, 0.25)\",\n \"color\": colorDefaults.dark,\n \"font-family\": fontFamilyStringify(fontFamily)\n };\n this._trStyle = {\n \"border-top\": (d, i) => i ? \"1px solid rgba(0, 0, 0, 0.1)\" : \"none\"\n };\n this._tdStyle = {};\n this._width = constant(\"150px\");\n }\n\n /**\n The inner return object and draw function that gets assigned the public methods.\n @private\n */\n render(callback) {\n\n const that = this;\n\n const portal = elem(\"div#d3plus-portal\");\n const tooltips = portal.selectAll(`.${this._className}`)\n .data(this._data, this._id);\n\n const enter = tooltips.enter().append(\"div\")\n .attr(\"class\", this._className);\n\n const update = tooltips.merge(enter);\n stylize(update, this._tooltipStyle);\n\n /**\n Creates DIV elements with a unique class and styles.\n @private\n */\n function divElement(cat) {\n\n enter.append(\"div\")\n .attr(\"class\", `d3plus-tooltip-${cat}`)\n .attr(\"id\", (d, i) => `d3plus-tooltip-${cat}-${d ? that._id(d, i) : \"\"}`);\n\n const div = update.select(`.d3plus-tooltip-${cat}`)\n .html((d, i) => that[`_${cat}`](d, i))\n .style(\"display\", (d, i) => {\n const val = that[`_${cat}`](d, i);\n const visible = val !== false && val !== undefined && val !== null;\n return visible ? \"block\" : \"none\";\n });\n\n stylize(div, that[`_${cat}Style`]);\n\n }\n\n /**\n Fetches table contents given functions or values.\n @private\n */\n function cellContent(d) {\n if (typeof d === \"function\") {\n const datum = select(this.parentNode.parentNode).datum();\n return d(datum, that._data.indexOf(datum));\n }\n else return d;\n }\n\n /**\n Sets styles for both enter and update.\n @private\n */\n function boxStyles(box) {\n\n box\n .style(\"background\", that._background)\n .style(`${that._prefix}border-radius`, that._borderRadius)\n .style(\"pointer-events\", that._pointerEvents)\n .style(\"padding\", that._padding)\n .style(\"width\", that._width)\n .style(\"height\", that._height)\n .style(\"border\", that._border);\n }\n\n divElement(\"title\");\n divElement(\"body\");\n\n const tableEnter = enter.append(\"table\").attr(\"class\", \"d3plus-tooltip-table\");\n const table = update.select(\".d3plus-tooltip-table\");\n stylize(table, this._tableStyle);\n\n tableEnter.append(\"thead\").attr(\"class\", \"d3plus-tooltip-thead\");\n const tableHead = update.select(\".d3plus-tooltip-thead\");\n stylize(tableHead, this._theadStyle);\n const theadTr = tableHead.selectAll(\"tr\").data([0]);\n const theadTrEnter = theadTr.enter().append(\"tr\");\n theadTr.exit().remove();\n const theadTrUpdate = theadTr.merge(theadTrEnter);\n stylize(theadTrUpdate, this._trStyle);\n const th = theadTrUpdate.selectAll(\"th\").data(this._thead);\n th.enter().append(\"th\").merge(th).html(cellContent);\n th.exit().remove();\n\n tableEnter.append(\"tbody\").attr(\"class\", \"d3plus-tooltip-tbody\");\n const tableBody = update.select(\".d3plus-tooltip-tbody\");\n stylize(tableBody, this._tbodyStyle);\n const tr = tableBody.selectAll(\"tr\").data(this._tbody);\n const trEnter = tr.enter().append(\"tr\");\n tr.exit().remove();\n const trUpdate = tr.merge(trEnter);\n stylize(trUpdate, this._trStyle);\n const td = trUpdate.selectAll(\"td\").data(d => d);\n td.enter().append(\"td\").merge(td).html(cellContent);\n stylize(td, this._tdStyle);\n\n divElement(\"footer\");\n\n divElement(\"arrow\");\n\n enter\n .attr(\"id\", (d, i) => `d3plus-tooltip-${d ? this._id(d, i) : \"\"}`)\n .call(boxStyles)\n .each((d, i) => {\n\n const id = that._id(d, i);\n const tooltip = document.getElementById(`d3plus-tooltip-${id}`);\n const arrow = document.getElementById(`d3plus-tooltip-arrow-${id}`);\n const arrowHeight = arrow.offsetHeight;\n const arrowDistance = arrow.getBoundingClientRect().height / 2;\n arrow.style.bottom = `-${arrowHeight / 2}px`;\n\n const position = that._position(d, i);\n\n const referenceObject = Array.isArray(position) ? {\n getBoundingClientRect: generateReference(position)\n }\n : position;\n\n this._popperClasses[id] = createPopper(referenceObject, tooltip, {\n placement: \"top\",\n modifiers: [\n {\n name: \"arrow\",\n options: {\n element: arrow\n }\n },\n {\n name: \"offset\",\n options: {\n offset: [0, that._offset(d, i) + arrowDistance]\n }\n },\n {\n name: \"preventOverflow\",\n options: {\n boundary: \"scrollParent\",\n padding: 5\n }\n },\n {\n name: \"flip\",\n options: {\n behavior: \"flip\",\n boundary: \"viewport\",\n fallbackPlacements: [\"bottom\"],\n padding: 5\n }\n },\n {\n name: \"update\",\n enabled: true,\n phase: \"afterWrite\",\n fn(x) {\n const {state} = x;\n const arrowElement = state.elements.arrow;\n const arrowStyles = state.styles.arrow;\n const flipped = state.modifiersData.flip._skip;\n const border = parseFloat(arrowElement.style.borderRightWidth, 10);\n if (flipped) {\n arrowElement.style.transform = `${arrowStyles.transform}rotate(225deg)`;\n arrowElement.style.top = `-${arrowHeight / 2 + border}px`;\n }\n else {\n arrowElement.style.transform = `${arrowStyles.transform}rotate(45deg)`;\n arrowElement.style.bottom = `-${arrowHeight / 2 + border}px`;\n }\n }\n }\n ],\n removeOnDestroy: true\n });\n\n });\n\n update\n .each((d, i) => {\n const id = that._id(d, i);\n const position = that._position(d, i);\n const instance = this._popperClasses[id];\n\n if (instance) {\n instance.state.elements.reference.getBoundingClientRect = Array.isArray(position)\n ? generateReference(position)\n : position;\n instance.update();\n }\n\n })\n .call(boxStyles);\n\n tooltips.exit()\n .each((d, i) => {\n const id = that._id(d, i);\n const instance = this._popperClasses[id];\n if (instance) {\n instance.destroy();\n delete this._popperClasses[id];\n }\n })\n .remove();\n\n if (callback) setTimeout(callback, 100);\n\n return this;\n\n }\n\n /**\n @memberof Tooltip\n @desc Sets the inner HTML content of the arrow element, which by default is empty.\n @param {Function|String} [*value*]\n @example <caption>default accessor</caption>\n function value(d) {\n return d.arrow || \"\";\n}\n */\n arrow(_) {\n return arguments.length ? (this._arrow = typeof _ === \"function\" ? _ : constant(_), this) : this._arrow;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the arrow styles to the specified values and returns this generator. If *value* is not specified, returns the current arrow styles.\n @param {Object} [*value*]\n @example <caption>default styles</caption>\n {\n \"content\": \"\",\n \"border-width\": \"10px\",\n \"border-style\": \"solid\",\n \"border-color\": \"rgba(255, 255, 255, 0.75) transparent transparent transparent\",\n \"position\": \"absolute\"\n }\n */\n arrowStyle(_) {\n return arguments.length ? (this._arrowStyle = Object.assign(this._arrowStyle, _), this) : this._arrowStyle;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the background accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current background accessor.\n @param {Function|String} [*value* = \"#f7f7f7\"]\n */\n background(_) {\n return arguments.length ? (this._background = typeof _ === \"function\" ? _ : constant(_), this) : this._background;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the body accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current body accessor.\n @param {Function|String} [*value*]\n @example <caption>default accessor</caption>\nfunction value(d) {\n return d.body || \"\";\n}\n */\n body(_) {\n return arguments.length ? (this._body = typeof _ === \"function\" ? _ : constant(_), this) : this._body;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the body styles to the specified values and returns this generator. If *value* is not specified, returns the current body styles.\n @param {Object} [*value*]\n @example <caption>default styles</caption>\n{\n \"font-size\": \"12px\",\n \"font-weight\": \"400\"\n}\n */\n bodyStyle(_) {\n return arguments.length ? (this._bodyStyle = Object.assign(this._bodyStyle, _), this) : this._bodyStyle;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the border accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current border accessor.\n @param {Function|String} [*value* = \"1px solid rgba(0, 0, 0, 0.1)\"]\n */\n border(_) {\n return arguments.length ? (this._border = typeof _ === \"function\" ? _ : constant(_), this) : this._border;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the border-radius accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current border-radius accessor.\n @param {Function|String} [*value* = \"2px\"]\n */\n borderRadius(_) {\n return arguments.length ? (this._borderRadius = typeof _ === \"function\" ? _ : constant(_), this) : this._borderRadius;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the class name to the specified string and returns this generator. If *value* is not specified, returns the current class name.\n @param {String} [*value* = \"d3plus-tooltip\"]\n */\n className(_) {\n return arguments.length ? (this._className = _, this) : this._className;\n }\n\n /**\n @memberof Tooltip\n @desc If *data* is specified, sets the data array to the specified array and returns this generator. If *data* is not specified, returns the current data array.\n @param {Array} [*data* = []]\n */\n data(_) {\n return arguments.length ? (this._data = _, this) : this._data;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the footer accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current footer accessor.\n @param {Function|String} [*value*]\n @example <caption>default accessor</caption>\nfunction value(d) {\n return d.footer || \"\";\n}\n */\n footer(_) {\n return arguments.length ? (this._footer = typeof _ === \"function\" ? _ : constant(_), this) : this._footer;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the footer styles to the specified values and returns this generator. If *value* is not specified, returns the current footer styles.\n @param {Object} [*value*]\n @example <caption>default styles</caption>\n{\n \"font-size\": \"12px\",\n \"font-weight\": \"400\"\n}\n */\n footerStyle(_) {\n return arguments.length ? (this._footerStyle = Object.assign(this._footerStyle, _), this) : this._footerStyle;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the height accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current height accessor.\n @param {Function|String} [*value* = \"auto\"]\n */\n height(_) {\n return arguments.length ? (this._height = typeof _ === \"function\" ? _ : constant(_), this) : this._height;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the id accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current id accessor.\n @param {Function|String} [*value*]\n @example <caption>default accessor</caption>\nfunction value(d, i) {\n return d.id || \"\" + i;\n}\n */\n id(_) {\n return arguments.length ? (this._id = typeof _ === \"function\" ? _ : constant(_), this) : this._id;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the offset accessor to the specified function or number and returns this generator. If *value* is not specified, returns the current offset accessor.\n @param {Function|Number} [*value* = 10]\n */\n offset(_) {\n return arguments.length ? (this._offset = typeof _ === \"function\" ? _ : constant(_), this) : this._offset;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the padding accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current padding accessor.\n @param {Function|String} [*value* = \"5px\"]\n */\n padding(_) {\n return arguments.length ? (this._padding = typeof _ === \"function\" ? _ : constant(_), this) : this._padding;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the pointer-events accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current pointer-events accessor.\n @param {Function|String} [*value* = \"auto\"]\n */\n pointerEvents(_) {\n return arguments.length ? (this._pointerEvents = typeof _ === \"function\" ? _ : constant(_), this) : this._pointerEvents;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the position accessor to the specified function or array and returns this generator. If *value* is not specified, returns the current position accessor. If *value* is an HTMLElement, anchors the Tooltip to that HTMLElement. If *value* is a selection string, anchors the Tooltip to the HTMLElement selected by that string. Otherwise, coordinate points must be in reference to the client viewport, not the overall page.\n @param {Function|Array|HTMLElement|String} [*value*]\n @example <caption>default accessor</caption>\n function value(d) {\n return [d.x, d.y];\n }\n */\n position(_) {\n return arguments.length ? (this._position = typeof _ === \"string\" ? constant(select(_).node() || [0, 0]) : typeof _ === \"function\" ? _ : constant(_), this) : this._position;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the table styles to the specified values and returns this generator. If *value* is not specified, returns the current table styles.\n @param {Object} [*value*]\n @example <caption>default styles</caption>\n{\n \"border-collapse\": \"collapse\",\n \"border-spacing\": \"0\",\n \"width\": \"100%\"\n}\n */\n tableStyle(_) {\n return arguments.length ? (this._tableStyle = Object.assign(this._tableStyle, _), this) : this._tableStyle;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the contents of the table body to the specified array of functions or strings and returns this generator. If *value* is not specified, returns the current table body data.\n @param {Array} [*value* = []]\n */\n tbody(_) {\n return arguments.length ? (this._tbody = _, this) : this._tbody;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the table body styles to the specified values and returns this generator. If *value* is not specified, returns the current table body styles.\n @param {Object} [*value*]\n @example <caption>default styles</caption>\n{\n \"font-size\": \"12px\",\n \"font-weight\": \"600\",\n \"text-align\": \"center\"\n}\n */\n tbodyStyle(_) {\n return arguments.length ? (this._tbodyStyle = Object.assign(this._tbodyStyle, _), this) : this._tbodyStyle;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the contents of the table head to the specified array of functions or strings and returns this generator. If *value* is not specified, returns the current table head data.\n @param {Array} [*value* = []]\n */\n thead(_) {\n return arguments.length ? (this._thead = _, this) : this._thead;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the table head styles to the specified values and returns this generator. If *value* is not specified, returns the current table head styles.\n @param {Object} [*value*]\n @example <caption>default styles</caption>\n{\n \"font-size\": \"12px\",\n \"font-weight\": \"600\",\n \"text-align\": \"center\"\n}\n */\n theadStyle(_) {\n return arguments.length ? (this._theadStyle = Object.assign(this._theadStyle, _), this) : this._theadStyle;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the title accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current title accessor.\n @param {Function|String} [*value*]\n @example <caption>default accessor</caption>\nfunction value(d) {\n return d.title || \"\";\n}\n */\n title(_) {\n return arguments.length ? (this._title = typeof _ === \"function\" ? _ : constant(_), this) : this._title;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the title styles to the specified values and returns this generator. If *value* is not specified, returns the current title styles.\n @param {Object} [*value*]\n @example <caption>default styles</caption>\n{\n \"font-size\": \"14px\",\n \"font-weight\": \"600\",\n \"padding-bottom\": \"5px\"\n}\n */\n titleStyle(_) {\n return arguments.length ? (this._titleStyle = Object.assign(this._titleStyle, _), this) : this._titleStyle;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the overall tooltip styles to the specified values and returns this generator. If *value* is not specified, returns the current title styles.\n @param {Object} [*value*]\n @example <caption>default styles</caption>\n{\n \"font-family\": \"'Inter', 'Helvetica Neue', 'HelveticaNeue', 'Helvetica', 'Arial', sans-serif\",\n \"font-size\": \"14px\",\n \"font-weight\": \"600\",\n \"padding-bottom\": \"5px\"\n}\n */\n tooltipStyle(_) {\n return arguments.length ? (this._tooltipStyle = Object.assign(this._tooltipStyle, _), this) : this._tooltipStyle;\n }\n\n /**\n @memberof Tooltip\n @desc An object with CSS keys and values to be applied to all <tr> elements inside of each <tbody>.\n @param {Object} [*value*]\n @example <caption>default styles</caption>\n {\n \"border-top\": \"1px solid rgba(0, 0, 0, 0.1)\"\n }\n */\n trStyle(_) {\n return arguments.length ? (this._trStyle = Object.assign(this._trStyle, _), this) : this._trStyle;\n }\n\n /**\n @memberof Tooltip\n @desc An object with CSS keys and values to be applied to all <td> elements inside of each <tr>.\n @param {Object} [*value*]\n */\n tdStyle(_) {\n return arguments.length ? (this._tdStyle = Object.assign(this._tdStyle, _), this) : this._tdStyle;\n }\n\n /**\n @memberof Tooltip\n @desc If *value* is specified, sets the width accessor to the specified function or string and returns this generator. If *value* is not specified, returns the current width accessor.\n @param {Function|String} [*value* = \"auto\"]\n */\n width(_) {\n return arguments.length ? (this._width = typeof _ === \"function\" ? _ : constant(_), this) : this._width;\n }\n\n}\n","import {elem} from \"@d3plus/dom\";\n\n/**\n @function _drawBack\n @desc Draws a back button if there are states in this._history.\n @private\n*/\nexport default function() {\n\n const visible = this._history.length;\n\n const backGroup = elem(\"g.d3plus-viz-back\", {\n parent: this._select,\n duration: this._duration,\n update: {transform: `translate(${this._margin.left}, ${this._margin.top})`}\n }).node();\n\n this._backClass\n .data(visible ? [{text: `← ${this._translate(\"Back\")}`, x: 0, y: 0}] : [])\n .select(backGroup)\n .config(this._backConfig)\n .render();\n\n this._margin.top += visible ? this._backClass.fontSize()() + this._backClass.padding()() * 2 : 0;\n\n}\n","import {min} from \"d3-array\";\nimport {elem} from \"@d3plus/dom\";\n\n/**\n @function _drawColorScale\n @desc Renders the color scale if this._colorScale is not falsey.\n @private\n*/\nexport default function() {\n\n const data = this._data;\n\n let position = this._colorScalePosition.bind(this)(this.config());\n if (![false, \"top\", \"bottom\", \"left\", \"right\"].includes(position)) position = \"bottom\";\n const wide = [\"top\", \"bottom\"].includes(position);\n const showColorScale = this._colorScale && position;\n const padding = this._colorScalePadding() ? this._padding : {top: 0, right: 0, bottom: 0, left: 0};\n\n const availableWidth = this._width - (this._margin.left + this._margin.right + padding.left + padding.right);\n\n const width = wide\n ? min([this._colorScaleMaxSize, availableWidth])\n : this._width - (this._margin.left + this._margin.right);\n\n const availableHeight = this._height - (this._margin.bottom + this._margin.top + padding.bottom + padding.top);\n\n const height = !wide\n ? min([this._colorScaleMaxSize, availableHeight])\n : this._height - (this._margin.bottom + this._margin.top);\n\n const transform = {\n opacity: position ? 1 : 0,\n transform: `translate(${wide ? this._margin.left + padding.left + (availableWidth - width) / 2 : this._margin.left}, ${wide ? this._margin.top : this._margin.top + padding.top + (availableHeight - height) / 2})`\n };\n\n const scaleGroup = elem(\"g.d3plus-viz-colorScale\", {\n condition: showColorScale && !this._colorScaleConfig.select,\n enter: transform,\n parent: this._select,\n duration: this._duration,\n update: transform\n }).node();\n\n if (this._colorScale) {\n\n const scaleData = data.filter((d, i) => {\n const c = this._colorScale(d, i);\n return c !== undefined && c !== null;\n });\n\n this._colorScaleClass\n .align({bottom: \"end\", left: \"start\", right: \"end\", top: \"start\"}[position] || \"bottom\")\n .duration(this._duration)\n .data(scaleData)\n .height(height)\n .locale(this._locale)\n .orient(position)\n .select(scaleGroup)\n .value(this._colorScale)\n .width(width)\n .config(this._colorScaleConfig)\n .render();\n\n if (showColorScale) {\n\n const scaleBounds = this._colorScaleClass.outerBounds();\n if (!this._colorScaleConfig.select && scaleBounds.height) {\n if (wide) this._margin[position] += scaleBounds.height + this._legendClass.padding() * 2;\n else this._margin[position] += scaleBounds.width + this._legendClass.padding() * 2;\n }\n\n }\n\n }\n\n\n\n}\n","import {rollup} from \"d3-array\";\nimport {merge} from \"@d3plus/data\";\nimport {elem} from \"@d3plus/dom\";\nimport {configPrep} from \"../../utils/index.js\";\n\nconst legendAttrs = [\"fill\", \"opacity\", \"texture\"];\n\n/**\n @function legendLabel\n @desc Default label function for the legend.\n @private\n*/\nexport function legendLabel(d, i) {\n return this._drawLabel(d, i, this._legendDepth);\n}\n\n/**\n @function _drawLegend\n @desc Renders the legend if this._legend is not falsy.\n @param {Array} data The filtered data array to be displayed.\n @private\n*/\nexport default function(data = []) {\n\n const legendData = [];\n\n const getAttr = (d, i, attr) => {\n const shape = this._shape(d, i);\n if (attr === \"fill\" && shape === \"Line\") attr = \"stroke\";\n const value = this._shapeConfig[shape] && this._shapeConfig[shape][attr]\n ? this._shapeConfig[shape][attr] : this._shapeConfig[attr];\n return typeof value === \"function\" ? value.bind(this)(d, i) : value;\n };\n\n const fill = (d, i) => legendAttrs.map(a => getAttr(d, i, a)).join(\"_\");\n\n const rollupData = this._colorScale ? data.filter((d, i) => this._colorScale(d, i) === undefined) : data;\n rollup(rollupData, leaves => legendData.push(merge(leaves, this._aggs)), fill);\n\n legendData.sort(this._legendSort);\n\n const labels = legendData.map((d, i) => this._ids(d, i).slice(0, this._drawDepth + 1));\n this._legendDepth = 0;\n for (let x = 0; x <= this._drawDepth; x++) {\n const values = labels.map(l => l[x]);\n if (!values.some(v => v instanceof Array) && Array.from(new Set(values)).length === legendData.length) {\n this._legendDepth = x;\n break;\n }\n }\n\n const hidden = (d, i) => {\n let id = this._id(d, i);\n if (id instanceof Array) id = id[0];\n return this._hidden.includes(id) || this._solo.length && !this._solo.includes(id);\n };\n\n const legendBounds = this._legendClass.outerBounds();\n const config = this.config();\n let position = this._legendPosition.bind(this)(config);\n if (![false, \"top\", \"bottom\", \"left\", \"right\"].includes(position)) position = \"bottom\";\n const wide = [\"top\", \"bottom\"].includes(position);\n const padding = this._legendPadding() ? this._padding : {top: 0, right: 0, bottom: 0, left: 0};\n const transform = {transform: `translate(${wide ? this._margin.left + padding.left : this._margin.left}, ${wide ? this._margin.top : this._margin.top + padding.top})`};\n const visible = this._legend.bind(this)(config, legendData);\n\n const legendGroup = elem(\"g.d3plus-viz-legend\", {\n condition: visible && !this._legendConfig.select,\n enter: transform,\n parent: this._select,\n duration: this._duration,\n update: transform\n }).node();\n\n this._legendClass\n .id(fill)\n .align(wide ? \"center\" : position)\n .direction(wide ? \"row\" : \"column\")\n .duration(this._duration)\n .data(visible ? legendData : [])\n .height(wide ? this._height - (this._margin.bottom + this._margin.top) : this._height - (this._margin.bottom + this._margin.top + padding.bottom + padding.top))\n .locale(this._locale)\n .parent(this)\n .select(legendGroup)\n .verticalAlign(!wide ? \"middle\" : position)\n .width(wide ? this._width - (this._margin.left + this._margin.right + padding.left + padding.right) : this._width - (this._margin.left + this._margin.right))\n .shapeConfig(configPrep.bind(this)(this._shapeConfig, \"legend\"))\n .shapeConfig({\n fill: (d, i) => hidden(d, i) ? this._hiddenColor(d, i) : getAttr(d, i, \"fill\"),\n labelConfig: {\n fontOpacity: (d, i) => hidden(d, i) ? this._hiddenOpacity(d, i) : 1\n },\n })\n .config(this._legendConfig)\n .render();\n\n if (!this._legendConfig.select && legendBounds.height) {\n if (wide) this._margin[position] += legendBounds.height + this._legendClass.padding() * 2;\n else this._margin[position] += legendBounds.width + this._legendClass.padding() * 2;\n }\n\n}\n","import {elem} from \"@d3plus/dom\";\n\n/**\n @function _drawSubtitle\n @desc Draws a subtitle if this._subtitle is defined.\n @param {Array} [*data*] The currently filtered dataset.\n @private\n*/\nexport default function(data = []) {\n\n const text = this._subtitle ? this._subtitle(data) : false;\n const padding = this._subtitlePadding() ? this._padding : {top: 0, right: 0, bottom: 0, left: 0};\n\n const transform = {transform: `translate(${this._margin.left + padding.left}, ${this._margin.top})`};\n\n const group = elem(\"g.d3plus-viz-subtitle\", {\n enter: transform,\n parent: this._select,\n duration: 0,\n update: transform\n }).node();\n\n this._subtitleClass\n .data(text ? [{text}] : [])\n .locale(this._locale)\n .select(group)\n .width(this._width - (this._margin.left + this._margin.right + padding.left + padding.right))\n .config(this._subtitleConfig)\n .render();\n\n this._margin.top += text ? group.getBBox().height + this._subtitleConfig.padding * 2 : 0;\n\n}\n","import {extent} from \"d3-array\";\n\nimport {unique} from \"@d3plus/data\";\nimport {date, elem} from \"@d3plus/dom\";\n\n/**\n @function setTimeFilter\n @desc Determines whether or not to update the timeFilter method of the Viz.\n @param {Array|Date} The timeline selection given from the d3 brush.\n @private\n*/\nfunction setTimeFilter(s) {\n if (!(s instanceof Array)) s = [s, s];\n if (JSON.stringify(s) !== JSON.stringify(this._timelineSelection)) {\n this._timelineSelection = s;\n s = s.map(Number);\n this.timeFilter(d => {\n const ms = date(this._time(d)).getTime();\n return ms >= s[0] && ms <= s[1];\n }).render();\n }\n}\n\n/**\n @function _drawTimeline\n @desc Renders the timeline if this._time and this._timeline are not falsy and there are more than 1 tick available.\n @param {Array} data The filtered data array to be displayed.\n @private\n*/\nexport default function(data = []) {\n\n let timelinePossible = this._time && this._timeline;\n const ticks = timelinePossible ? unique(this._data.map(this._time)).map(date) : [];\n timelinePossible = timelinePossible && ticks.length > 1;\n const padding = this._timelinePadding() ? this._padding : {top: 0, right: 0, bottom: 0, left: 0};\n\n const transform = {transform: `translate(${this._margin.left + padding.left}, 0)`};\n\n const timelineGroup = elem(\"g.d3plus-viz-timeline\", {\n condition: timelinePossible,\n enter: transform,\n parent: this._select,\n duration: this._duration,\n update: transform\n }).node();\n\n if (timelinePossible) {\n\n const timeline = this._timelineClass\n .domain(extent(ticks))\n .duration(this._duration)\n .height(this._height - this._margin.bottom)\n .locale(this._locale)\n .select(timelineGroup)\n .ticks(ticks.sort((a, b) => +a - +b))\n .width(this._width - (this._margin.left + this._margin.right + padding.left + padding.right));\n\n const dataExtent = extent(data.map(this._time).map(date));\n if (!this._timelineSelection) {\n this._timelineSelection = this._timelineDefault || dataExtent;\n }\n else {\n if (this._timelineSelection[0] < dataExtent[0]) this._timelineSelection[0] = dataExtent[0];\n if (this._timelineSelection[1] > dataExtent[1]) this._timelineSelection[1] = dataExtent[1];\n }\n timeline.selection(this._timelineSelection);\n\n const config = this._timelineConfig;\n\n timeline\n .config(config)\n .on(\"brush\", s => {\n setTimeFilter.bind(this)(s);\n if (config.on && config.on.brush) config.on.brush(s);\n })\n .on(\"end\", s => {\n setTimeFilter.bind(this)(s);\n if (config.on && config.on.end) config.on.end(s);\n })\n .render();\n\n this._margin.bottom += timeline.outerBounds().height + timeline.padding() * 2;\n\n }\n\n}\n","import {elem} from \"@d3plus/dom\";\n\n/**\n @function _drawTitle\n @desc Draws a title if this._title is defined.\n @param {Array} [*data*] The currently filtered dataset.\n @private\n*/\nexport default function(data = []) {\n\n const text = this._title ? this._title(data) : false;\n const padding = this._titlePadding() ? this._padding : {top: 0, right: 0, bottom: 0, left: 0};\n\n const transform = {transform: `translate(${this._margin.left + padding.left}, ${this._margin.top})`};\n\n const group = elem(\"g.d3plus-viz-title\", {\n enter: transform,\n parent: this._select,\n duration: 0,\n update: transform\n }).node();\n\n this._titleClass\n .data(text ? [{text}] : [])\n .locale(this._locale)\n .select(group)\n .width(this._width - (this._margin.left + this._margin.right + padding.left + padding.right))\n .config(this._titleConfig)\n .render();\n\n this._margin.top += text ? group.getBBox().height + this._titleConfig.padding * 2 : 0;\n\n}\n","import {sum} from \"d3-array\";\n\nimport {elem} from \"@d3plus/dom\";\n\n/**\n @function _drawTotal\n @desc Draws a total title if this._total is defined.\n @param {Array} [*data*] The currently filtered dataset.\n @private\n*/\nexport default function(data = []) {\n\n const total = typeof this._total === \"function\" ? sum(data.map(this._total))\n : this._total === true && this._size ? sum(data.map(this._size)) : false;\n\n const padding = this._totalPadding() ? this._padding : {top: 0, right: 0, bottom: 0, left: 0};\n\n const transform = {transform: `translate(${this._margin.left + padding.left}, ${this._margin.top})`};\n\n const group = elem(\"g.d3plus-viz-total\", {\n enter: transform,\n parent: this._select,\n duration: 0,\n update: transform\n }).node();\n\n this._totalClass\n .data(total ? [{text: this._totalFormat(total)}] : [])\n .locale(this._locale)\n .select(group)\n .width(this._width - (this._margin.left + this._margin.right + padding.left + padding.right))\n .config(this._totalConfig)\n .render();\n\n this._margin.top += total ? group.getBBox().height + this._totalConfig.padding * 2 : 0;\n\n}\n","import {select} from \"d3-selection\";\nimport {zoomTransform} from \"d3-zoom\";\n\nimport {attrize, stylize} from \"@d3plus/dom\";\n\nlet brushing = false;\n\n/**\n @name zoomControls\n @desc Sets up initial zoom events and controls.\n @private\n*/\nexport default function() {\n\n if (!this._container || !this._zoomGroup) return;\n\n const height = this._zoomHeight || this._height - this._margin.top - this._margin.bottom,\n that = this,\n width = this._zoomWidth || this._width - this._margin.left - this._margin.right;\n\n this._zoomBehavior\n .extent([[0, 0], [width, height]])\n .scaleExtent([1, this._zoomMax])\n .translateExtent([[0, 0], [width, height]])\n .on(\"zoom\", event => zoomed.bind(this)(event.transform));\n\n this._zoomToBounds = zoomToBounds.bind(this);\n\n let control = select(this._select.node().parentNode).selectAll(\"div.d3plus-zoom-control\").data(this._zoom ? [0] : []);\n const controlEnter = control.enter().append(\"div\").attr(\"class\", \"d3plus-zoom-control\");\n control.exit().remove();\n control = control.merge(controlEnter)\n .style(\"position\", \"absolute\")\n .style(\"top\", `${this._margin.top}px`)\n .style(\"left\", `${this._margin.left}px`);\n\n controlEnter.append(\"div\").attr(\"class\", \"zoom-control zoom-in\");\n control.select(\".zoom-in\")\n .on(\"click\", zoomMath.bind(this, this._zoomFactor))\n .html(\"&#65291;\");\n\n controlEnter.append(\"div\").attr(\"class\", \"zoom-control zoom-out\");\n control.select(\".zoom-out\")\n .on(\"click\", zoomMath.bind(this, 1 / this._zoomFactor))\n .html(\"&#65293;\");\n\n controlEnter.append(\"div\").attr(\"class\", \"zoom-control zoom-reset\");\n control.select(\".zoom-reset\")\n .on(\"click\", zoomMath.bind(this, 0))\n .html(\"&#8634\");\n\n controlEnter.append(\"div\").attr(\"class\", \"zoom-control zoom-brush\");\n control.select(\".zoom-brush\")\n .on(\"click\", function() {\n select(this)\n .classed(\"active\", !brushing)\n .call(stylize, brushing ? that._zoomControlStyle || {} : that._zoomControlStyleActive || {});\n zoomEvents.bind(that)(!brushing);\n })\n .html(\"&#164\");\n\n control.selectAll(\".zoom-control\")\n .call(stylize, that._zoomControlStyle)\n .on(\"mouseenter\", function() {\n select(this).call(stylize, that._zoomControlStyleHover || {});\n })\n .on(\"mouseleave\", function() {\n select(this).call(stylize, select(this).classed(\"active\") ? that._zoomControlStyleActive || {} : that._zoomControlStyle || {});\n });\n\n this._zoomBrush\n .extent([[0, 0], [width, height]])\n .filter(event => !event.button && event.detail < 2)\n .handleSize(this._zoomBrushHandleSize)\n .on(\"start\", brushStart.bind(this))\n .on(\"brush\", brushBrush.bind(this))\n .on(\"end\", brushEnd.bind(this));\n\n const brushGroup = this._container.selectAll(\"g.brush\").data([0]);\n this._brushGroup = brushGroup.enter().append(\"g\")\n .attr(\"class\", \"brush\")\n .merge(brushGroup)\n .call(this._zoomBrush);\n\n zoomEvents.bind(this)();\n if (this._renderTiles) this._renderTiles(zoomTransform(this._container.node()), 0);\n\n}\n\n/**\n @name zoomEvents\n @desc Handles adding/removing zoom event listeners.\n @private\n*/\nfunction zoomEvents(brush = false) {\n\n brushing = brush;\n\n if (brushing) this._brushGroup.style(\"display\", \"inline\");\n else this._brushGroup.style(\"display\", \"none\");\n\n if (!brushing && this._zoom) {\n this._container.call(this._zoomBehavior);\n if (!this._zoomScroll) {\n this._container\n .on(\"wheel.zoom\", null);\n }\n if (!this._zoomPan) {\n this._container\n .on(\"mousedown.zoom mousemove.zoom\", null)\n .on(\"touchstart.zoom touchmove.zoom touchend.zoom touchcancel.zoom\", null);\n }\n }\n else {\n this._container.on(\".zoom\", null);\n }\n\n}\n\n/**\n @name zoomed\n @desc Handles events dispatched from this._zoomBehavior\n @param {Object} [*transform* = event.transform]\n @param {Number} [*duration* = 0]\n @private\n*/\nfunction zoomed(transform = false, duration = 0) {\n\n if (this._zoomGroup) {\n if (!duration) this._zoomGroup.attr(\"transform\", transform);\n else this._zoomGroup.transition().duration(duration).attr(\"transform\", transform);\n }\n\n if (this._renderTiles) this._renderTiles(zoomTransform(this._container.node()), duration);\n\n}\n\n/**\n @name zoomMath\n @desc Zooms in or out based on the provided multiplier.\n @param {Number} [*factor* = 0]\n @private\n*/\nfunction zoomMath(factor = 0) {\n\n if (!this._container) return;\n\n const center = this._zoomBehavior.extent().bind(document)()[1].map(d => d / 2),\n scaleExtent = this._zoomBehavior.scaleExtent(),\n t = zoomTransform(this._container.node());\n\n if (!factor) {\n t.k = scaleExtent[0];\n t.x = 0;\n t.y = 0;\n }\n else {\n const translate0 = [(center[0] - t.x) / t.k, (center[1] - t.y) / t.k];\n t.k = Math.min(scaleExtent[1], t.k * factor);\n if (t.k <= scaleExtent[0]) {\n t.k = scaleExtent[0];\n t.x = 0;\n t.y = 0;\n }\n else {\n t.x += center[0] - (translate0[0] * t.k + t.x);\n t.y += center[1] - (translate0[1] * t.k + t.y);\n }\n\n }\n\n zoomed.bind(this)(t, this._duration);\n\n}\n\n/**\n @name zoomToBounds\n @desc Zooms to given bounds.\n @param {Array} *bounds*\n @param {Number} [*duration* = 0]\n @private\n*/\nfunction zoomToBounds(bounds, duration = this._duration) {\n\n const scaleExtent = this._zoomBehavior.scaleExtent(),\n t = zoomTransform(this._container.node());\n\n if (bounds) {\n\n const [width, height] = this._zoomBehavior.translateExtent()[1],\n dx = bounds[1][0] - bounds[0][0],\n dy = bounds[1][1] - bounds[0][1];\n\n let k = Math.min(scaleExtent[1], 1 / Math.max(dx / width, dy / height));\n\n let xMod, yMod;\n if (dx / dy < width / height) {\n k *= (height - this._zoomPadding * 2) / height;\n xMod = (width - dx * k) / 2 / k;\n yMod = this._zoomPadding / k;\n }\n else {\n k *= (width - this._zoomPadding * 2) / width;\n yMod = (height - dy * k) / 2 / k;\n xMod = this._zoomPadding / k;\n }\n\n t.x = (t.x - bounds[0][0] + xMod) * (t.k * k / t.k);\n t.y = (t.y - bounds[0][1] + yMod) * (t.k * k / t.k);\n t.k *= k;\n\n if (t.x > 0) t.x = 0;\n else if (t.x < width * -t.k + width) t.x = width * -t.k + width;\n if (t.y > 0) t.y = 0;\n else if (t.y < height * -t.k + height) t.y = height * -t.k + height;\n\n }\n else {\n\n t.k = scaleExtent[0];\n t.x = 0;\n t.y = 0;\n\n }\n\n zoomed.bind(this)(t, duration);\n\n}\n\n/**\n @desc Triggered on brush \"brush\".\n @private\n*/\nfunction brushBrush() {\n brushStyle.bind(this)();\n}\n\n/**\n @desc Triggered on brush \"end\".\n @private\n*/\nfunction brushEnd(event) {\n\n if (!event.selection) return; // Only transition after input.\n\n this._brushGroup.call(this._zoomBrush.move, null);\n zoomToBounds.bind(this)(event.selection);\n\n}\n\n/**\n @desc Triggered on brush \"start\".\n @private\n*/\nfunction brushStart() {\n brushStyle.bind(this)();\n}\n\n/**\n @desc Overrides the default brush styles.\n @private\n*/\nfunction brushStyle() {\n\n this._brushGroup.selectAll(\".selection\")\n .call(attrize, this._zoomBrushSelectionStyle || {});\n\n this._brushGroup.selectAll(\".handle\")\n .call(attrize, this._zoomBrushHandleStyle || {});\n\n}\n","import {select} from \"d3-selection\";\nimport {stylize} from \"@d3plus/dom\";\n\n/**\n @name _drawAttribution\n @desc Draws absolute positioned attribution text.\n @private\n*/\nexport default function() {\n\n let attr = select(this._select.node().parentNode)\n .selectAll(\"div.d3plus-attribution\")\n .data(this._attribution ? [0] : []);\n\n const attrEnter = attr.enter().append(\"div\")\n .attr(\"class\", \"d3plus-attribution\");\n\n attr.exit().remove();\n\n attr = attr.merge(attrEnter)\n .style(\"position\", \"absolute\")\n .html(this._attribution)\n .style(\"right\", `${this._margin.right}px`)\n .style(\"bottom\", `${this._margin.bottom}px`)\n .call(stylize, this._attributionStyle);\n\n}\n","/**\n @module clickShape\n @desc On click event for all shapes in a Viz.\n @param {Object} *d* The data object being interacted with.\n @param {Number} *i* The index of the data object being interacted with.\n @private\n*/\nexport default function(d, i, x, event) {\n event.stopPropagation();\n\n if (this._drawDepth < this._groupBy.length - 1) {\n\n this._select.style(\"cursor\", \"auto\");\n\n const filterGroup = this._groupBy[this._drawDepth],\n filterId = filterGroup(d, i);\n\n this.hover(false);\n if (this._tooltip(d, i)) this._tooltipClass.data([]).render();\n\n const oldFilter = this._filter;\n\n this._history.push({\n depth: this._depth,\n filter: oldFilter\n });\n\n this.config({\n depth: this._drawDepth + 1,\n filter: (f, x) => (!oldFilter || oldFilter(f, x)) && filterGroup(f, x) === filterId\n }).render();\n\n }\n\n}\n","import {merge} from \"d3-array\";\n\n/**\n @module clickLegend\n @desc On click event for all legend shapes in a Viz.\n @param {Object} *d* The data object being interacted with.\n @param {Number} *i* The index of the data object being interacted with.\n @private\n*/\nexport default function(d, i, x, event) {\n\n this._select.style(\"cursor\", \"auto\");\n if (this._tooltip(d, i)) this._tooltipClass.data([]).render();\n\n let id = this._id(d, i);\n if (!(id instanceof Array)) id = [id];\n const hiddenIndex = this._hidden.indexOf(id[0]);\n const soloIndex = this._solo.indexOf(id[0]);\n const dataLength = merge(this._legendClass.data().map((d, i) => {\n let id = this._id(d, i);\n if (!(id instanceof Array)) id = [id];\n return id;\n })).length;\n\n const inverted = this._legendFilterInvert.bind(this)();\n\n if (inverted) {\n\n if (event.shiftKey) {\n\n if (hiddenIndex < 0 && !this._solo.length) {\n this._hidden = this._hidden.concat(id);\n if (soloIndex >= 0) this._solo = [];\n if (this._hidden.length === dataLength) this._hidden = [];\n this.render();\n }\n else if (soloIndex >= 0) {\n this._solo = [];\n this._hidden = [];\n this.render();\n }\n\n }\n else {\n if (soloIndex < 0 && this._hidden.length < dataLength - 1) {\n this._solo = id;\n this._hidden = [];\n }\n else {\n this._solo = [];\n this._hidden = [];\n }\n this.render();\n }\n\n }\n else {\n\n if (event.shiftKey && soloIndex < 0) {\n this._solo = id;\n this._hidden = [];\n this.render();\n }\n else if (!event.shiftKey) {\n if (hiddenIndex >= 0) {\n this._hidden.splice(hiddenIndex, id.length);\n }\n else if (soloIndex >= 0) {\n this._solo = [];\n this._hidden = [];\n }\n else if (this._solo.length && soloIndex < 0) {\n this._solo = this._solo.concat(id);\n if (this._solo.length === dataLength) this._solo = [];\n }\n else {\n this._hidden = this._hidden.concat(id);\n if (this._hidden.length === dataLength) this._hidden = [];\n }\n this.render();\n\n }\n\n }\n\n}\n","/**\n @module mouseEnter\n @desc On mouseenter event for all shapes in a Viz.\n @param {Object} *d* The data object being interacted with.\n @param {Number} *i* The index of the data object being interacted with.\n @private\n*/\nexport default function(d, i) {\n\n if (this._shapeConfig.hoverOpacity !== 1) {\n\n let filterIds = this._id(d, i);\n if (!(filterIds instanceof Array)) filterIds = [filterIds];\n \n this.hover((h, x) => {\n let id = this._id(h, x);\n if (!(id instanceof Array)) id = [id];\n return filterIds.some(f => id.includes(f));\n });\n\n }\n\n}\n","/**\n @module mouseLeave\n @desc On mouseleave event for all shapes in a Viz.\n @param {Object} *d* The data object being interacted with.\n @param {Number} *i* The index of the data object being interacted with.\n @private\n*/\nexport default function(d, i) {\n\n setTimeout(() => {\n if (this._shapeConfig.hoverOpacity !== 1 && this._hover ? this._hover(d, i) : true) {\n this.hover(false);\n }\n const tooltipData = this._tooltipClass.data();\n if (tooltipData.length && this._tooltip(d, i)) {\n let tooltipDatum = tooltipData[0];\n while (tooltipDatum.__d3plus__ && tooltipDatum.data) tooltipDatum = tooltipDatum.data;\n if (this._id(tooltipDatum) === this._id(d)) this._tooltipClass.data([]).render();\n }\n }, 50);\n\n this._select.style(\"cursor\", \"auto\");\n\n}\n","import {merge} from \"d3-array\";\nimport clickLegend from \"./click.legend.js\";\nimport {legendLabel} from \"../drawSteps/drawLegend.js\";\nimport {configPrep} from \"../../utils/index.js\";\n\n/**\n @module mouseMoveLegend\n @desc Tooltip logic for a specified data point.\n @param {Object} *d* The data object being interacted with.\n @param {Number} *i* The index of the data object being interacted with.\n @param {Object} [*config*] Optional configuration methods for the Tooltip class.\n @private\n*/\nexport default function(d, i, x, event) {\n\n const position = event.touches ? [event.touches[0].clientX, event.touches[0].clientY] : [event.clientX, event.clientY];\n const dataLength = merge(this._legendClass.data().map((d, i) => {\n let id = this._id(d, i);\n if (!(id instanceof Array)) id = [id];\n return id;\n })).length;\n\n if (d && this._tooltip(d, i)) {\n\n let id = this._id(d, i);\n if (id instanceof Array) id = id[0];\n\n const t = this._translate;\n const defaultClick = clickLegend.bind(this).toString();\n\n // does the legend have any user-defined click events?\n const hasUserClick = Object.keys(this._on)\n .some(e =>\n // all valid click event keys,\n [\"click\", \"click.legend\"].includes(e) &&\n // truthy values (no nulls),\n this._on[e] &&\n // and it is not our default click.legend function\n this._on[e].toString() !== defaultClick\n );\n\n // does the legend still have our default \"click.legend\" event?\n // (if the user only sets \"click\", both functions will fire)\n const hasDefaultClick = this._on[\"click.legend\"] &&\n this._on[\"click.legend\"].toString() === defaultClick;\n\n // can the viz show deeper data?\n const hasDeeperLevel = this._drawDepth < this._groupBy.length - 1;\n\n // only show the hand cursor when the shape has a click event\n this._select.style(\"cursor\",\n hasUserClick || hasDefaultClick && hasDeeperLevel ? \"pointer\" : \"auto\");\n\n const invertedBehavior = this._legendFilterInvert.bind(this)();\n\n const solo = this._solo.includes(id);\n const hidden = this._hidden.includes(id);\n\n this._tooltipClass.data([x || d])\n .footer(\n hasDefaultClick\n ? invertedBehavior\n ? this._solo.length && !solo || hidden ? t(\"Click to Highlight\")\n : this._solo.length === 1 && solo || this._hidden.length === dataLength - 1 ? t(\"Click to Show All\")\n : `${t(\"Click to Highlight\")}<br />${t(\"Shift+Click to Hide\")}`\n\n : this._solo.length && !solo || hidden ? `${t(\"Click to Show\")}<br />${t(\"Shift+Click to Highlight\")}`\n : this._solo.length === 1 && solo || this._hidden.length === dataLength - 1 ? t(\"Click to Show All\")\n : `${t(\"Click to Hide\")}<br />${t(\"Shift+Click to Highlight\")}`\n : false\n )\n .title(this._legendConfig.label ? this._legendClass.label() : legendLabel.bind(this))\n .position(position)\n .config(configPrep.bind(this)(this._tooltipConfig))\n .config(configPrep.bind(this)(this._legendTooltip))\n .render();\n\n }\n\n}\n","import {configPrep} from \"../../utils/index.js\";\nimport clickShape from \"./click.shape.js\";\n\n/**\n @module mouseMoveShape\n @desc Tooltip logic for a specified data point.\n @param {Object} *d* The data object being interacted with.\n @param {Number} *i* The index of the data object being interacted with.\n @param {Object} [*config*] Optional configuration methods for the Tooltip class.\n @private\n*/\nexport default function(d, i, x, event) {\n\n if (d && this._tooltip(d, i)) {\n\n const defaultClick = clickShape.bind(this).toString();\n\n // does the shape have any user-defined click events?\n const hasUserClick = Object.keys(this._on)\n .some(e =>\n // all valid click event keys,\n [\"click\", \"click.shape\"].includes(e) &&\n // truthy values (no nulls),\n this._on[e] &&\n // and it is not our default click.shape function\n this._on[e].toString() !== defaultClick\n );\n\n // does the shape still have our default \"click.shape\" event?\n // (if the user only sets \"click\", both functions will fire)\n const hasDefaultClick = this._on[\"click.shape\"] &&\n this._on[\"click.shape\"].toString() === defaultClick;\n\n // can the viz show deeper data?\n const hasDeeperLevel = this._drawDepth < this._groupBy.length - 1;\n\n // only show the hand cursor when the shape has a click event\n this._select.style(\"cursor\",\n hasUserClick || hasDefaultClick && hasDeeperLevel ? \"pointer\" : \"auto\");\n\n const position = event.touches\n ? [event.touches[0].clientX, event.touches[0].clientY]\n : [event.clientX, event.clientY];\n\n this._tooltipClass.data([x || d])\n .footer(\n hasDefaultClick && hasDeeperLevel\n ? this._translate(\"Click to Expand\")\n : false\n )\n .title(this._drawLabel)\n .position(position)\n .config(configPrep.bind(this)(this._tooltipConfig))\n .render();\n }\n\n}\n","/**\n @module touchStartBody\n @desc On touchstart event for the Body element.\n @private\n */\nexport default function() {\n this._tooltipClass.data([]).render();\n}\n","\nimport {group, max, merge as arrayMerge, min, range, rollup} from \"d3-array\";\nimport {brush} from \"d3-brush\";\nimport {color} from \"d3-color\";\nimport {queue} from \"d3-queue\";\nimport {select} from \"d3-selection\";\nimport {scaleOrdinal} from \"d3-scale\";\nimport {zoom} from \"d3-zoom\";\n\nimport lrucache from \"lrucache\";\n\nimport {colorAssign, colorContrast, colorDefaults} from \"@d3plus/color\";\nimport {addToQueue, merge, unique} from \"@d3plus/data\";\nimport {assign, date, getSize, inViewport} from \"@d3plus/dom\";\nimport {formatAbbreviate} from \"@d3plus/format\";\nimport {fontFamily, fontFamilyStringify} from \"@d3plus/text\";\n\nimport {ColorScale, Legend, TextBox, Timeline, Tooltip} from \"../components/index.js\";\nimport {accessor, BaseClass, configPrep, constant} from \"../utils/index.js\";\n// import {Rect} from \"../shape/index.js\";\n\nimport Message from \"../components/Message.js\";\n\nimport drawBack from \"./drawSteps/drawBack.js\";\nimport drawColorScale from \"./drawSteps/drawColorScale.js\";\nimport {default as drawLegend, legendLabel} from \"./drawSteps/drawLegend.js\";\nimport drawSubtitle from \"./drawSteps/drawSubtitle.js\";\nimport drawTimeline from \"./drawSteps/drawTimeline.js\";\nimport drawTitle from \"./drawSteps/drawTitle.js\";\nimport drawTotal from \"./drawSteps/drawTotal.js\";\n\nimport zoomControls from \"./drawSteps/zoomControls.js\";\nimport drawAttribution from \"./drawSteps/drawAttribution.js\";\n\nimport clickShape from \"./events/click.shape.js\";\nimport clickLegend from \"./events/click.legend.js\";\nimport mouseenter from \"./events/mouseenter.js\";\nimport mouseleave from \"./events/mouseleave.js\";\nimport mousemoveLegend from \"./events/mousemove.legend.js\";\nimport mousemoveShape from \"./events/mousemove.shape.js\";\nimport touchstartBody from \"./events/touchstart.body.js\";\n\n/**\n * Default padding logic that will return false if the screen is less than 600 pixels wide.\n */\nfunction defaultPadding() {\n return typeof window !== \"undefined\" ? window.innerWidth > 600 : true;\n}\n\n/**\n * Turns an array of values into a list string.\n */\nfunction listify(n) {\n return n.reduce((str, item, i) => {\n if (!i) str += item;\n else if (i === n.length - 1 && i === 1) str += ` and ${item}`;\n else if (i === n.length - 1) str += `, and ${item}`;\n else str += `, ${item}`;\n return str;\n }, \"\");\n}\n\n/**\n * A function that introspects the `d` Data Object for internally nested\n * d3plus data and indices, runs the accessor function on that user data.\n * @param {Function} acc Accessor function to use.\n * @param {Object} d Data Object\n * @param {Number} i Index of Data Object in Array\n * @private\n */\nfunction accessorFetch(acc, d, i) {\n while (d.__d3plus__ && d.data) {\n d = d.data;\n i = d.i;\n }\n return acc(d, i);\n}\n\n/**\n @class Viz\n @extends BaseClass\n @desc Creates an x/y plot based on an array of data. If *data* is specified, immediately draws the tree map based on the specified array and returns the current class instance. If *data* is not specified on instantiation, it can be passed/updated after instantiation using the [data](#treemap.data) method. See [this example](https://d3plus.org/examples/d3plus-treemap/getting-started/) for help getting started using the treemap generator.\n*/\nexport default class Viz extends BaseClass {\n\n /**\n @memberof Viz\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._aggs = {};\n this._ariaHidden = true;\n this._attribution = false;\n this._attributionStyle = {\n background: \"rgba(255, 255, 255, 0.75)\",\n border: \"1px solid rgba(0, 0, 0, 0.25)\",\n color: \"rgba(0, 0, 0, 0.75)\",\n display: \"block\",\n font: `400 11px/11px ${fontFamilyStringify(fontFamily)}`,\n margin: \"5px\",\n opacity: 0.75,\n padding: \"4px 6px 3px\"\n };\n this._backClass = new TextBox()\n .on(\"click\", () => {\n if (this._history.length) this.config(this._history.pop()).render();\n else this.depth(this._drawDepth - 1).filter(false).render();\n })\n .on(\"mousemove\", () => this._backClass.select().style(\"cursor\", \"pointer\"));\n this._backConfig = {\n fontSize: 10,\n padding: 5,\n resize: false\n };\n this._cache = true;\n\n this._color = (d, i) => this._groupBy[0](d, i);\n this._colorDefaults = {\n ...colorDefaults, \n scale: scaleOrdinal().range(colorDefaults.scale.range())\n };\n this._colorScaleClass = new ColorScale();\n this._colorScaleConfig = {\n axisConfig: {\n rounding: \"inside\",\n },\n scale: \"jenks\"\n };\n this._colorScalePadding = defaultPadding;\n this._colorScalePosition = () => this._width > this._height * 1.5 ? \"right\" : \"bottom\";\n this._colorScaleMaxSize = 600;\n\n this._data = [];\n this._dataCutoff = 100;\n this._detectResize = true;\n this._detectResizeDelay = 400;\n this._detectVisible = true;\n this._detectVisibleInterval = 1000;\n this._downloadButton = false;\n this._downloadConfig = {type: \"png\"};\n this._downloadPosition = \"top\";\n this._duration = 600;\n this._fontFamily = fontFamily;\n this._hidden = [];\n this._hiddenColor = constant(\"#aaa\");\n this._hiddenOpacity = constant(0.5);\n this._history = [];\n this._groupBy = [accessor(\"id\")];\n\n this._legend = (config, arr) => {\n const maxGrouped = max(arr, (d, i) => {\n const id = this._groupBy[this._legendDepth].bind(this)(d, i);\n return id instanceof Array ? id.length : 1;\n });\n return arr.length > 1 && maxGrouped <= 2;\n };\n this._legendClass = new Legend();\n this._legendConfig = {\n label: legendLabel.bind(this),\n shapeConfig: {\n ariaLabel: legendLabel.bind(this),\n labelConfig: {\n fontColor: undefined,\n fontResize: false,\n padding: 0\n }\n }\n };\n this._legendFilterInvert = constant(false);\n this._legendPadding = defaultPadding;\n this._legendPosition = () => this._width > this._height * 1.5 ? \"right\" : \"bottom\";\n this._legendSort = (a, b) => this._drawLabel(a).localeCompare(this._drawLabel(b));\n this._legendTooltip = {};\n\n this._loadingHTML = () => `\n <div style=\"left: 50%; top: 50%; position: absolute; transform: translate(-50%, -50%);\">\n <strong>${this._translate(\"Loading Visualization\")}</strong>\n <sub style=\"bottom: 0; display: block; line-height: 1; margin-top: 5px;\"><a href=\"https://d3plus.org\" target=\"_blank\">${this._translate(\"Powered by D3plus\")}</a></sub>\n </div>`;\n\n this._loadingMessage = true;\n this._lrucache = lrucache(10);\n this._messageClass = new Message();\n this._messageMask = \"rgba(0, 0, 0, 0.05)\";\n this._messageStyle = {\n \"bottom\": \"0\",\n \"left\": \"0\",\n \"position\": \"absolute\",\n \"right\": \"0\",\n \"text-align\": \"center\",\n \"top\": \"0\"\n };\n\n this._noDataHTML = () => `\n <div style=\"left: 50%; top: 50%; position: absolute; transform: translate(-50%, -50%);\">\n <strong>${this._translate(\"No Data Available\")}</strong>\n </div>`;\n\n this._noDataMessage = true;\n this._on = {\n \"click.shape\": clickShape.bind(this),\n \"click.legend\": clickLegend.bind(this),\n \"mouseenter\": mouseenter.bind(this),\n \"mouseleave\": mouseleave.bind(this),\n \"mousemove.shape\": mousemoveShape.bind(this),\n \"mousemove.legend\": mousemoveLegend.bind(this)\n };\n this._queue = [];\n this._resizeContainer = typeof window === \"undefined\" ? \"\" : window;\n this._scrollContainer = typeof window === \"undefined\" ? \"\" : window;\n this._shape = constant(\"Rect\");\n this._shapes = [];\n this._shapeConfig = {\n ariaLabel: (d, i) => this._drawLabel(d, i),\n fill: (d, i) => {\n while (d.__d3plus__ && d.data) {\n d = d.data;\n i = d.i;\n }\n if (this._colorScale) {\n const c = this._colorScale(d, i);\n if (c !== undefined && c !== null) {\n const scale = this._colorScaleClass._colorScale;\n const colors = this._colorScaleClass.color();\n if (!scale) return colors instanceof Array ? colors[colors.length - 1] : colors;\n else if (!scale.domain().length) return scale.range()[scale.range().length - 1];\n return scale(c);\n }\n }\n const c = this._color(d, i);\n if (color(c)) return c;\n return colorAssign(typeof c === \"string\" ? c : JSON.stringify(c), this._colorDefaults);\n },\n labelConfig: {\n fontColor: (d, i) => {\n const c = typeof this._shapeConfig.fill === \"function\" ? this._shapeConfig.fill(d, i) : this._shapeConfig.fill;\n return colorContrast(c);\n }\n },\n opacity: constant(1),\n stroke: (d, i) => {\n const c = typeof this._shapeConfig.fill === \"function\" ? this._shapeConfig.fill(d, i) : this._shapeConfig.fill;\n return color(c).darker(0.25);\n },\n role: \"presentation\",\n strokeWidth: constant(0)\n };\n this._solo = [];\n\n this._subtitleClass = new TextBox();\n this._subtitleConfig = {\n ariaHidden: true,\n fontSize: 12,\n padding: 5,\n resize: false,\n textAnchor: \"middle\"\n };\n this._subtitlePadding = defaultPadding;\n\n this._svgDesc = \"\";\n this._svgTitle = \"\";\n\n this._timeline = true;\n this._timelineClass = new Timeline().align(\"end\");\n this._timelineConfig = {\n brushing: false,\n padding: 5\n };\n this._timelinePadding = defaultPadding;\n\n this._threshold = constant(0.0001);\n this._thresholdKey = undefined;\n this._thresholdName = () => this._translate(\"Values\");\n\n this._titleClass = new TextBox();\n this._titleConfig = {\n ariaHidden: true,\n fontSize: 16,\n padding: 5,\n resize: false,\n textAnchor: \"middle\"\n };\n this._titlePadding = defaultPadding;\n\n this._tooltip = constant(true);\n this._tooltipClass = new Tooltip();\n this._tooltipConfig = {\n pointerEvents: \"none\",\n titleStyle: {\n \"max-width\": \"200px\"\n }\n };\n\n this._totalClass = new TextBox();\n this._totalConfig = {\n fontSize: 10,\n padding: 5,\n resize: false,\n textAnchor: \"middle\"\n };\n this._totalFormat = d => `${this._translate(\"Total\")}: ${formatAbbreviate(d, this._locale)}`;\n this._totalPadding = defaultPadding;\n\n this._zoom = false;\n this._zoomBehavior = zoom();\n this._zoomBrush = brush();\n this._zoomBrushHandleSize = 1;\n this._zoomBrushHandleStyle = {\n fill: \"#444\"\n };\n this._zoomBrushSelectionStyle = {\n \"fill\": \"#777\",\n \"stroke-width\": 0\n };\n this._zoomControlStyle = {\n \"background\": \"rgba(255, 255, 255, 0.75)\",\n \"border\": \"1px solid rgba(0, 0, 0, 0.75)\",\n \"color\": \"rgba(0, 0, 0, 0.75)\",\n \"display\": \"block\",\n \"font\": `900 15px/21px ${fontFamilyStringify(fontFamily)}`,\n \"height\": \"20px\",\n \"margin\": \"5px\",\n \"opacity\": 0.75,\n \"padding\": 0,\n \"text-align\": \"center\",\n \"width\": \"20px\"\n };\n this._zoomControlStyleActive = {\n background: \"rgba(0, 0, 0, 0.75)\",\n color: \"rgba(255, 255, 255, 0.75)\",\n opacity: 1\n };\n this._zoomControlStyleHover = {\n cursor: \"pointer\",\n opacity: 1\n };\n this._zoomFactor = 2;\n this._zoomMax = 16;\n this._zoomPadding = 20;\n this._zoomPan = true;\n this._zoomScroll = true;\n\n }\n\n /**\n @memberof Viz\n @desc Called by draw before anything is drawn. Formats the data and performs preparations for draw.\n @private\n */\n _preDraw() {\n const that = this;\n // based on the groupBy, determine the draw depth and current depth id\n this._drawDepth = this._depth !== void 0\n ? min([this._depth >= 0 ? this._depth : 0, this._groupBy.length - 1])\n : this._groupBy.length - 1;\n\n // Returns the current unique ID for a data point, coerced to a String.\n this._id = (d, i) => {\n const groupByDrawDepth = accessorFetch(this._groupBy[this._drawDepth], d, i);\n return typeof groupByDrawDepth === \"number\" ? `${groupByDrawDepth}` : groupByDrawDepth;\n };\n\n // Returns an array of the current unique groupBy ID for a data point, coerced to Strings.\n this._ids = (d, i) => this._groupBy\n .map(g => `${accessorFetch(g, d, i)}`)\n .filter(Boolean);\n\n this._drawLabel = (d, i, depth = this._drawDepth) => {\n if (!d) return \"\";\n while (d.__d3plus__ && d.data) {\n d = d.data;\n i = d.i;\n }\n if (d._isAggregation) {\n return `${this._thresholdName(d, i)} < ${formatAbbreviate(d._threshold * 100, this._locale)}%`;\n }\n if (this._label && depth === this._drawDepth) return `${this._label(d, i)}`;\n const l = that._ids(d, i).slice(0, depth + 1);\n const n = l.reverse().find(ll => !(ll instanceof Array)) || l[l.length - 1];\n return n instanceof Array ? listify(n) : `${n}`;\n };\n\n // set the default timeFilter if it has not been specified\n if (this._time && !this._timeFilter && this._data.length) {\n\n const dates = this._data.map(this._time).map(date);\n const d = this._data[0], i = 0;\n\n if (this._discrete && `_${this._discrete}` in this && this[`_${this._discrete}`](d, i) === this._time(d, i)) {\n this._timeFilter = () => true;\n }\n else {\n const latestTime = +max(dates);\n this._timeFilter = (d, i) => +date(this._time(d, i)) === latestTime;\n }\n\n }\n\n this._filteredData = [];\n this._legendData = [];\n let flatData = [];\n if (this._data.length) {\n\n flatData = this._timeFilter ? this._data.filter(this._timeFilter) : this._data;\n if (this._filter) flatData = flatData.filter(this._filter);\n const nestKeys = [];\n for (let i = 0; i <= this._drawDepth; i++) nestKeys.push(this._groupBy[i]);\n if (this._discrete && `_${this._discrete}` in this) nestKeys.push(this[`_${this._discrete}`]);\n if (this._discrete && `_${this._discrete}2` in this) nestKeys.push(this[`_${this._discrete}2`]);\n\n const tree = rollup(flatData, leaves => {\n\n const index = this._data.indexOf(leaves[0]);\n const shape = this._shape(leaves[0], index);\n const id = this._id(leaves[0], index);\n\n const d = merge(leaves, this._aggs);\n\n if (!this._hidden.includes(id) && (!this._solo.length || this._solo.includes(id))) {\n if (!this._discrete && shape === \"Line\") this._filteredData = this._filteredData.concat(leaves);\n else this._filteredData.push(d);\n }\n this._legendData.push(d);\n\n }, ...nestKeys);\n\n this._filteredData = this._thresholdFunction(this._filteredData, tree);\n\n }\n\n // overrides the hoverOpacity of shapes if data is larger than cutoff\n const uniqueIds = group(this._filteredData, this._id).size;\n if (uniqueIds > this._dataCutoff) {\n if (this._userHover === undefined) this._userHover = this._shapeConfig.hoverOpacity || 0.5;\n if (this._userDuration === undefined) this._userDuration = this._shapeConfig.duration || 600;\n this._shapeConfig.hoverOpacity = 1;\n this._shapeConfig.duration = 0;\n }\n else if (this._userHover !== undefined) {\n this._shapeConfig.hoverOpacity = this._userHover;\n this._shapeConfig.duration = this._userDuration;\n }\n\n if (this._noDataMessage && !this._filteredData.length) {\n this._messageClass.render({\n container: this._select.node().parentNode,\n html: this._noDataHTML(this),\n mask: false,\n style: this._messageStyle\n });\n this._select.transition().duration(this._duration).attr(\"opacity\", 0);\n }\n\n }\n\n /**\n @memberof Viz\n @desc Called by render once all checks are passed.\n @private\n */\n _draw() {\n\n // Sanitizes user input for legendPosition and colorScalePosition\n let legendPosition = this._legendPosition.bind(this)(this.config());\n if (![false, \"top\", \"bottom\", \"left\", \"right\"].includes(legendPosition)) legendPosition = \"bottom\";\n let colorScalePosition = this._colorScalePosition.bind(this)(this.config());\n if (![false, \"top\", \"bottom\", \"left\", \"right\"].includes(colorScalePosition)) colorScalePosition = \"bottom\";\n\n // Draws legend and colorScale if they are positioned \"left\" or \"right\"\n if (legendPosition === \"left\" || legendPosition === \"right\") drawLegend.bind(this)(this._legendData);\n if (colorScalePosition === \"left\" || colorScalePosition === \"right\" || colorScalePosition === false) drawColorScale.bind(this)(this._filteredData);\n\n // Draws all of the top/bottom UI elements\n drawBack.bind(this)();\n drawTitle.bind(this)(this._filteredData);\n drawSubtitle.bind(this)(this._filteredData);\n drawTotal.bind(this)(this._filteredData);\n drawTimeline.bind(this)(this._filteredData);\n\n // Draws legend and colorScale if they are positioned \"top\" or \"bottom\"\n if (legendPosition === \"top\" || legendPosition === \"bottom\") drawLegend.bind(this)(this._legendData);\n if (colorScalePosition === \"top\" || colorScalePosition === \"bottom\") drawColorScale.bind(this)(this._filteredData);\n\n this._shapes = [];\n\n // Draws a container and zoomGroup to test functionality.\n // this._testGroup = this._select.selectAll(\"g.d3plus-viz-testGroup\").data([0]);\n // const enterTest = this._testGroup.enter().append(\"g\").attr(\"class\", \"d3plus-viz-testGroup\")\n // .merge(this._testGroup);\n // this._testGroup = enterTest.merge(this._testGroup);\n // const bgHeight = this._height - this._margin.top - this._margin.bottom;\n // const bgWidth = this._width - this._margin.left - this._margin.right;\n // new Rect()\n // .data([{id: \"background\"}])\n // .select(this._testGroup.node())\n // .x(bgWidth / 2 + this._margin.left)\n // .y(bgHeight / 2 + this._margin.top)\n // .width(bgWidth)\n // .height(bgHeight)\n // .fill(\"#ccc\")\n // .render();\n\n // this._zoomGroup = this._select.selectAll(\"g.d3plus-viz-zoomGroup\").data([0]);\n // const enter = this._zoomGroup.enter().append(\"g\").attr(\"class\", \"d3plus-viz-zoomGroup\")\n // .merge(this._zoomGroup);\n\n // this._zoomGroup = enter.merge(this._zoomGroup);\n // const testConfig = {\n // on: {\n // click: this._on[\"click.shape\"],\n // mouseenter: this._on.mouseenter,\n // mouseleave: this._on.mouseleave,\n // mousemove: this._on[\"mousemove.shape\"]\n // }\n // };\n\n // const testWidth = 50;\n // this._shapes.push(new Rect()\n // .config(this._shapeConfig)\n // .config(configPrep.bind(this)(testConfig))\n // .data(this._filteredData)\n // .label(\"Test Label\")\n // .select(this._zoomGroup.node())\n // .id(this._id)\n // .x(d => {\n // if (!d.x) d.x = Math.random() * bgWidth;\n // return d.x;\n // })\n // .y(d => {\n // if (!d.y) d.y = Math.random() * bgHeight;\n // return d.y;\n // })\n // .width(testWidth)\n // .height(testWidth)\n // .render());\n\n }\n\n /**\n * Applies the threshold algorithm according to the type of chart used.\n * @param {Array} data The data to process.\n */\n _thresholdFunction(data) {\n return data;\n }\n\n /**\n @memberof Viz\n @desc Draws the visualization given the specified configuration.\n @param {Function} [*callback*] An optional callback function that, if passed, will be called after animation is complete.\n @chainable\n */\n render(callback) {\n\n // Resets margins and padding\n this._margin = {bottom: 0, left: 0, right: 0, top: 0};\n this._padding = {bottom: 0, left: 0, right: 0, top: 0};\n\n // Appends a fullscreen SVG to the BODY if a container has not been provided through .select().\n if (this._select === void 0 || this._select.node().tagName.toLowerCase() !== \"svg\") {\n const parent = this._select === void 0 ? select(\"body\").append(\"div\") : this._select;\n const svg = parent.select(\".d3plus-viz\").size() ? parent.select(\".d3plus-viz\") : parent.append(\"svg\");\n this.select(svg.node());\n }\n\n /** detects width and height and sets SVG properties */\n function setSVGSize() {\n\n const display = this._select.style(\"display\");\n this._select.style(\"display\", \"none\");\n\n let [w, h] = getSize(this._select.node().parentNode);\n w -= parseFloat(this._select.style(\"border-left-width\"), 10);\n w -= parseFloat(this._select.style(\"border-right-width\"), 10);\n h -= parseFloat(this._select.style(\"border-top-width\"), 10);\n h -= parseFloat(this._select.style(\"border-bottom-width\"), 10);\n this._select.style(\"display\", display);\n\n if (this._autoWidth) {\n this.width(w);\n this._select.style(\"width\", `${this._width}px`).attr(\"width\", `${this._width}px`);\n }\n if (this._autoHeight) {\n this.height(h);\n this._select.style(\"height\", `${this._height}px`).attr(\"height\", `${this._height}px`);\n }\n\n }\n\n // Calculates the width and/or height of the Viz based on the this._select, if either has not been defined.\n if ((!this._width || !this._height) && (!this._detectVisible || inViewport(this._select.node()))) {\n this._autoWidth = this._width === undefined;\n this._autoHeight = this._height === undefined;\n setSVGSize.bind(this)();\n }\n\n this._select\n .attr(\"class\", \"d3plus-viz\")\n .attr(\"aria-hidden\", this._ariaHidden)\n .attr(\"aria-labelledby\", `${this._uuid}-title ${this._uuid}-desc`)\n .attr(\"role\", \"img\")\n .attr(\"xmlns\", \"http://www.w3.org/2000/svg\")\n .attr(\"xmlns:xlink\", \"http://www.w3.org/1999/xlink\")\n .transition().duration(this._duration)\n .style(\"width\", this._width !== undefined ? `${this._width}px` : undefined)\n .style(\"height\", this._height !== undefined ? `${this._height}px` : undefined)\n .attr(\"width\", this._width !== undefined ? `${this._width}px` : undefined)\n .attr(\"height\", this._height !== undefined ? `${this._height}px` : undefined);\n\n // sets \"position: relative\" on the SVG parent if currently undefined\n const parent = select(this._select.node().parentNode);\n const position = parent.style(\"position\");\n if (position === \"static\") parent.style(\"position\", \"relative\");\n parent.style(\"font-family\", fontFamilyStringify(this._fontFamily));\n\n // sets initial opacity to 1, if it has not already been set\n if (this._select.attr(\"opacity\") === null) this._select.attr(\"opacity\", 1);\n\n // Updates the <title> tag if already exists else creates a new <title> tag on this.select.\n const svgTitle = this._select.selectAll(\"title\").data([0]);\n const svgTitleEnter = svgTitle.enter().append(\"title\").attr(\"id\", `${this._uuid}-title`);\n svgTitle.merge(svgTitleEnter).text(this._svgTitle);\n\n // Updates the <desc> tag if already exists else creates a new <desc> tag on this.select.\n const svgDesc = this._select.selectAll(\"desc\").data([0]);\n const svgDescEnter = svgDesc.enter().append(\"desc\").attr(\"id\", `${this._uuid}-desc`);\n svgDesc.merge(svgDescEnter).text(this._svgDesc);\n\n this._visiblePoll = clearInterval(this._visiblePoll);\n this._resizePoll = clearTimeout(this._resizePoll);\n this._scrollPoll = clearTimeout(this._scrollPoll);\n select(this._scrollContainer).on(`scroll.${this._uuid}`, null);\n select(this._resizeContainer).on(`resize.${this._uuid}`, null);\n if (this._detectVisible && this._select.style(\"visibility\") === \"hidden\") {\n\n this._visiblePoll = setInterval(() => {\n if (this._select.style(\"visibility\") !== \"hidden\") {\n this._visiblePoll = clearInterval(this._visiblePoll);\n this.render(callback);\n }\n }, this._detectVisibleInterval);\n\n }\n else if (this._detectVisible && this._select.style(\"display\") === \"none\") {\n\n this._visiblePoll = setInterval(() => {\n if (this._select.style(\"display\") !== \"none\") {\n this._visiblePoll = clearInterval(this._visiblePoll);\n this.render(callback);\n }\n }, this._detectVisibleInterval);\n\n }\n else if (this._detectVisible && !inViewport(this._select.node())) {\n\n select(this._scrollContainer).on(`scroll.${this._uuid}`, () => {\n if (!this._scrollPoll) {\n this._scrollPoll = setTimeout(() => {\n if (inViewport(this._select.node())) {\n select(this._scrollContainer).on(`scroll.${this._uuid}`, null);\n this.render(callback);\n }\n this._scrollPoll = clearTimeout(this._scrollPoll);\n }, this._detectVisibleInterval);\n }\n });\n\n }\n else {\n const q = queue();\n\n this._queue.forEach(p => {\n const cache = this._cache\n ? this._lrucache.get(`${p[3]}_${p[1]}`)\n : undefined;\n if (!cache) q.defer(...p);\n else this[`_${p[3]}`] = p[2] ? p[2](cache) : cache;\n });\n this._queue = [];\n\n if (this._loadingMessage && q._tasks.length) {\n this._messageClass.render({\n container: this._select.node().parentNode,\n html: this._loadingHTML(this),\n mask: this._filteredData ? this._messageMask : false,\n style: this._messageStyle\n });\n }\n\n q.awaitAll(() => {\n\n // creates a data table as DOM elements inside of the SVG for accessibility\n // only if this._ariaHidden is set to true\n const columns = this._data instanceof Array && this._data.length > 0 ? Object.keys(this._data[0]) : [];\n const svgTable = this._select.selectAll(\"g.data-table\")\n .data(!this._ariaHidden && this._data instanceof Array && this._data.length ? [0] : []);\n const svgTableEnter = svgTable.enter().append(\"g\")\n .attr(\"class\", \"data-table\")\n .attr(\"role\", \"table\");\n svgTable.exit().remove();\n const rows = svgTable.merge(svgTableEnter)\n .selectAll(\"text\")\n .data(this._data instanceof Array ? range(0, this._data.length + 1) : []);\n rows.exit().remove();\n const cells = rows.merge(rows.enter().append(\"text\").attr(\"role\", \"row\"))\n .selectAll(\"tspan\")\n .data((d, i) => columns.map(c => ({\n role: i ? \"cell\" : \"columnheader\",\n text: i ? this._data[i - 1][c] : c\n })));\n cells.exit().remove();\n cells.merge(cells.enter().append(\"tspan\"))\n .attr(\"role\", d => d.role)\n .attr(\"dy\", \"-1000px\")\n .html(d => d.text);\n\n // finishes the draw cycle\n this._preDraw();\n this._draw(callback);\n zoomControls.bind(this)();\n drawAttribution.bind(this)();\n\n if (this._messageClass._isVisible && (!this._noDataMessage || this._filteredData.length)) {\n this._messageClass.hide();\n if (this._select.attr(\"opacity\") === \"0\") this._select.transition().duration(this._duration).attr(\"opacity\", 1);\n }\n\n if (this._detectResize && (this._autoWidth || this._autoHeight)) {\n select(this._resizeContainer).on(`resize.${this._uuid}`, () => {\n this._resizePoll = clearTimeout(this._resizePoll);\n this._resizePoll = setTimeout(() => {\n this._resizePoll = clearTimeout(this._resizePoll);\n setSVGSize.bind(this)();\n this.render(callback);\n }, this._detectResizeDelay);\n });\n }\n\n if (callback) setTimeout(callback, this._duration + 100);\n });\n\n }\n\n // Attaches touchstart event listener to the BODY to hide the tooltip when the user touches any element without data\n select(\"body\").on(`touchstart.${this._uuid}`, touchstartBody.bind(this));\n\n return this;\n\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the active method to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n active(_) {\n\n this._active = _;\n\n if (this._shapeConfig.activeOpacity !== 1) {\n this._shapes.forEach(s => s.active(_));\n if (this._legend) this._legendClass.active(_);\n }\n\n return this;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the aggregation method for each key in the object and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n aggs(_) {\n return arguments.length ? (this._aggs = assign(this._aggs, _), this) : this._aggs;\n }\n\n /**\n @memberof Viz\n @desc Sets the \"aria-hidden\" attribute of the containing SVG element. The default value is \"false\", but it you need to hide the SVG from screen readers set this property to \"true\".\n @param {Boolean} [*value* = true]\n @chainable\n */\n ariaHidden(_) {\n return arguments.length ? (this._ariaHidden = _, this) : this._ariaHidden;\n }\n\n /**\n @memberof Viz\n @desc Sets text to be shown positioned absolute on top of the visualization in the bottom-right corner. This is most often used in Geomaps to display the copyright of map tiles. The text is rendered as HTML, so any valid HTML string will render as expected (eg. anchor links work).\n @param {HTMLString|Boolean} *value* = false\n @chainable\n */\n attribution(_) {\n return arguments.length ? (this._attribution = _, this) : this._attribution;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the config method for the back button and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n attributionStyle(_) {\n return arguments.length ? (this._attributionStyle = assign(this._attributionStyle, _), this) : this._attributionStyle;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the config method for the back button and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n backConfig(_) {\n return arguments.length ? (this._backConfig = assign(this._backConfig, _), this) : this._backConfig;\n }\n\n /**\n @memberof Viz\n @desc Enables a lru cache that stores up to 5 previously loaded files/URLs. Helpful when constantly writing over the data array with a URL in the render function of a react component.\n @param {Boolean} [*value* = false]\n @chainable\n */\n cache(_) {\n return arguments.length ? (this._cache = _, this) : this._cache;\n }\n\n /**\n @memberof Viz\n @desc Defines the main color to be used for each data point in a visualization. Can be either an accessor function or a string key to reference in each data point. If a color value is returned, it will be used as is. If a string is returned, a unique color will be assigned based on the string.\n @param {Function|String|False} [*value*]\n @chainable\n */\n color(_) {\n return arguments.length ? (this._color = !_ || typeof _ === \"function\" ? _ : accessor(_), this) : this._color;\n }\n\n /**\n @memberof Viz\n @desc Defines the value to be used for a color scale. Can be either an accessor function or a string key to reference in each data point.\n @param {Function|String|False} [*value*]\n @chainable\n */\n colorScale(_) {\n return arguments.length ? (this._colorScale = !_ || typeof _ === \"function\" ? _ : accessor(_), this) : this._colorScale;\n }\n\n /**\n @memberof Viz\n @desc A pass-through to the config method of ColorScale.\n @param {Object} [*value*]\n @chainable\n */\n colorScaleConfig(_) {\n return arguments.length ? (this._colorScaleConfig = assign(this._colorScaleConfig, _), this) : this._colorScaleConfig;\n }\n\n /**\n @memberof Viz\n @desc Tells the colorScale whether or not to use the internal padding defined by the visualization in it's positioning. For example, d3plus-plot will add padding on the left so that the colorScale appears centered above the x-axis. By default, this padding is only applied on screens larger than 600 pixels wide.\n @param {Boolean|Function} [*value*]\n @chainable\n */\n colorScalePadding(_) {\n return arguments.length ? (this._colorScalePadding = typeof _ === \"function\" ? _ : constant(_), this) : this._colorScalePadding;\n }\n\n /**\n @memberof Viz\n @desc Defines which side of the visualization to anchor the color scale. Acceptable values are `\"top\"`, `\"bottom\"`, `\"left\"`, `\"right\"`, and `false`. A `false` value will cause the color scale to not be displayed, but will still color shapes based on the scale.\n @param {Function|String|Boolean} [*value* = \"bottom\"]\n @chainable\n */\n colorScalePosition(_) {\n return arguments.length ? (this._colorScalePosition = typeof _ === \"function\" ? _ : constant(_), this) : this._colorScalePosition;\n }\n\n /**\n @memberof Viz\n @desc Sets the maximum pixel size for drawing the color scale: width for horizontal scales and height for vertical scales.\n @param {Number} [*value* = 600]\n @chainable\n */\n colorScaleMaxSize(_) {\n return arguments.length ? (this._colorScaleMaxSize = _, this) : this._colorScaleMaxSize;\n }\n\n /**\n @memberof Viz\n @desc Sets the primary data array to be used when drawing the visualization. The value passed should be an *Array* of objects or a *String* representing a filepath or URL to be loaded. The following filetypes are supported: `csv`, `tsv`, `txt`, and `json`.\n\nIf your data URL needs specific headers to be set, an Object with \"url\" and \"headers\" keys may also be passed.\n\nAdditionally, a custom formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final array of obejcts to be used as the primary data array. For example, some JSON APIs return the headers split from the data values to save bandwidth. These would need be joined using a custom formatter.\n\nIf you would like to specify certain configuration options based on the yet-to-be-loaded data, you can also return a full `config` object from the data formatter (including the new `data` array as a key in the object).\n\nIf *data* is not specified, this method returns the current primary data array, which defaults to an empty array (`[]`);\n @param {Array|String} *data* = []\n @param {Function} [*formatter*]\n @chainable\n */\n data(_, f) {\n if (arguments.length) {\n addToQueue.bind(this)(_, f, \"data\");\n this._hidden = [];\n this._solo = [];\n if (this._userData && JSON.stringify(_) !== JSON.stringify(this._userData)) {\n this._timeFilter = false;\n this._timelineSelection = false;\n }\n this._userData = _;\n return this;\n }\n return this._data;\n }\n\n /**\n @memberof Viz\n @desc If the number of visible data points exceeds this number, the default hover behavior will be disabled (helpful for very large visualizations bogging down the DOM with opacity updates).\n @param {Number} [*value* = 100]\n @chainable\n */\n dataCutoff(_) {\n return arguments.length ? (this._dataCutoff = _, this) : this._dataCutoff;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the depth to the specified number and returns the current class instance. The *value* should correspond with an index in the [groupBy](#groupBy) array.\n @param {Number} [*value*]\n @chainable\n */\n depth(_) {\n return arguments.length ? (this._depth = _, this) : this._depth;\n }\n\n /**\n @memberof Viz\n @desc If the width and/or height of a Viz is not user-defined, it is determined by the size of it's parent element. When this method is set to `true`, the Viz will listen for the `window.onresize` event and adjust it's dimensions accordingly.\n @param {Boolean} *value* = true\n @chainable\n */\n detectResize(_) {\n return arguments.length ? (this._detectResize = _, this) : this._detectResize;\n }\n\n /**\n @memberof Viz\n @desc When resizing the browser window, this is the millisecond delay to trigger the resize event.\n @param {Number} *value* = 400\n @chainable\n */\n detectResizeDelay(_) {\n return arguments.length ? (this._detectResizeDelay = _, this) : this._detectResizeDelay;\n }\n\n /**\n @memberof Viz\n @desc Toggles whether or not the Viz should try to detect if it visible in the current viewport. When this method is set to `true`, the Viz will only be rendered when it has entered the viewport either through scrolling or if it's display or visibility is changed.\n @param {Boolean} *value* = true\n @chainable\n */\n detectVisible(_) {\n return arguments.length ? (this._detectVisible = _, this) : this._detectVisible;\n }\n\n /**\n @memberof Viz\n @desc The interval, in milliseconds, for checking if the visualization is visible on the page.\n @param {Number} *value* = 1000\n @chainable\n */\n detectVisibleInterval(_) {\n return arguments.length ? (this._detectVisibleInterval = _, this) : this._detectVisibleInterval;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the discrete accessor to the specified method name (usually an axis) and returns the current class instance.\n @param {String} [*value*]\n @chainable\n */\n discrete(_) {\n return arguments.length ? (this._discrete = _, this) : this._discrete;\n }\n\n /**\n @memberof Viz\n @desc Shows a button that allows for downloading the current visualization.\n @param {Boolean} [*value* = false]\n @chainable\n */\n downloadButton(_) {\n return arguments.length ? (this._downloadButton = _, this) : this._downloadButton;\n }\n\n /**\n @memberof Viz\n @desc Sets specific options of the saveElement function used when downloading the visualization.\n @param {Object} [*value* = {type: \"png\"}]\n @chainable\n */\n downloadConfig(_) {\n return arguments.length ? (this._downloadConfig = assign(this._downloadConfig, _), this) : this._downloadConfig;\n }\n\n /**\n @memberof Viz\n @desc Defines which control group to add the download button into.\n @param {String} [*value* = \"top\"]\n @chainable\n */\n downloadPosition(_) {\n return arguments.length ? (this._downloadPosition = _, this) : this._downloadPosition;\n }\n\n /**\n @memberof Viz\n @desc If *ms* is specified, sets the animation duration to the specified number and returns the current class instance. If *ms* is not specified, returns the current animation duration.\n @param {Number} [*ms* = 600]\n @chainable\n */\n duration(_) {\n return arguments.length ? (this._duration = _, this) : this._duration;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the filter to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n filter(_) {\n return arguments.length ? (this._filter = _, this) : this._filter;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the filter to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n fontFamily(_) {\n if (arguments.length) {\n const labelConfig = {fontFamily: _};\n\n const axisConfig = {titleConfig: labelConfig, shapeConfig: {labelConfig}};\n\n this.shapeConfig({labelConfig});\n this.colorScaleConfig({axisConfig});\n\n [\"axis\", \"column\", \"row\", \"timeline\", \"x\", \"y\", \"x2\", \"y2\"].forEach(axis => {\n const method = `${axis}Config`;\n if (this[method]) this[method](axisConfig);\n });\n [\"back\", \"title\", \"total\", \"subtitle\"].forEach(label => {\n const method = `${label}Config`;\n if (this[method]) this[method](labelConfig);\n });\n\n this.tooltipConfig({tooltipStyle: {\"font-family\": fontFamilyStringify(_)}});\n\n this._fontFamily = _;\n return this;\n }\n return this._fontFamily;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the group accessor(s) to the specified string, function, or array of values and returns the current class instance.\n @param {String|Function|Array} [*value*]\n @chainable\n @example\nfunction value(d) {\n return d.id;\n}\n */\n groupBy(_) {\n if (!arguments.length) return this._groupBy;\n this._groupByRaw = _;\n if (!(_ instanceof Array)) _ = [_];\n return this._groupBy = _.map(k => {\n if (typeof k === \"function\") return k;\n else {\n if (!this._aggs[k]) {\n this._aggs[k] = (a, c) => {\n const v = unique(a.map(c).map(String));\n return v.length === 1 ? v[0] : v;\n };\n }\n return accessor(k);\n }\n }), this;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the overall height to the specified number and returns the current class instance.\n @param {Number} [*value* = window.innerHeight]\n @chainable\n */\n height(_) {\n return arguments.length ? (this._height = _, this) : this._height;\n }\n\n /**\n @memberof Viz\n @desc Defines the color used for legend shapes when the corresponding grouping is hidden from display (by clicking on the legend).\n @param {Function|String} [*value* = \"#aaa\"]\n @chainable\n */\n hiddenColor(_) {\n return arguments.length ? (this._hiddenColor = typeof _ === \"function\" ? _ : constant(_), this) : this._hiddenColor;\n }\n\n /**\n @memberof Viz\n @desc Defines the opacity used for legend labels when the corresponding grouping is hidden from display (by clicking on the legend).\n @param {Function|Number} [*value* = 0.5]\n @chainable\n */\n hiddenOpacity(_) {\n return arguments.length ? (this._hiddenOpacity = typeof _ === \"function\" ? _ : constant(_), this) : this._hiddenOpacity;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the hover method to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n hover(_) {\n\n let hoverFunction = this._hover = _;\n\n if (this._shapeConfig.hoverOpacity !== 1) {\n\n if (typeof _ === \"function\") {\n\n let shapeData = arrayMerge(this._shapes.map(s => s.data()));\n shapeData = shapeData.concat(this._legendClass.data());\n const activeData = _ ? shapeData.filter(_) : [];\n\n let activeIds = [];\n activeData.map(this._ids).forEach(ids => {\n for (let x = 1; x <= ids.length; x++) {\n activeIds.push(JSON.stringify(ids.slice(0, x)));\n }\n });\n activeIds = activeIds.filter((id, i) => activeIds.indexOf(id) === i);\n\n if (activeIds.length) hoverFunction = (d, i) => activeIds.includes(JSON.stringify(this._ids(d, i)));\n\n }\n\n this._shapes.forEach(s => s.hover(hoverFunction));\n if (this._legend) this._legendClass.hover(hoverFunction);\n\n }\n\n return this;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the label accessor to the specified function or string and returns the current class instance.\n @param {Function|String} [*value*]\n @chainable\n */\n label(_) {\n return arguments.length ? (this._label = typeof _ === \"function\" ? _ : constant(_), this) : this._label;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, toggles the legend based on the specified boolean and returns the current class instance.\n @param {Boolean|Function} [*value* = true]\n @chainable\n */\n legend(_) {\n return arguments.length ? (this._legend = typeof _ === \"function\" ? _ : constant(_), this) : this._legend;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, the object is passed to the legend's config method.\n @param {Object} [*value*]\n @chainable\n */\n legendConfig(_) {\n return arguments.length ? (this._legendConfig = assign(this._legendConfig, _), this) : this._legendConfig;\n }\n\n /**\n @memberof Viz\n @desc Defines the click functionality of categorical legend squares. When set to false, clicking will hide that category and shift+clicking will solo that category. When set to true, clicking with solo that category and shift+clicking will hide that category.\n @param {Boolean|Function} [*value* = false]\n @chainable\n */\n legendFilterInvert(_) {\n return arguments.length ? (this._legendFilterInvert = typeof _ === \"function\" ? _ : constant(_), this) : this._legendFilterInvert;\n }\n\n /**\n @memberof Viz\n @desc Tells the legend whether or not to use the internal padding defined by the visualization in it's positioning. For example, d3plus-plot will add padding on the left so that the legend appears centered underneath the x-axis. By default, this padding is only applied on screens larger than 600 pixels wide.\n @param {Boolean|Function} [*value*]\n @chainable\n */\n legendPadding(_) {\n return arguments.length ? (this._legendPadding = typeof _ === \"function\" ? _ : constant(_), this) : this._legendPadding;\n }\n\n /**\n @memberof Viz\n @desc Defines which side of the visualization to anchor the legend. Expected values are `\"top\"`, `\"bottom\"`, `\"left\"`, and `\"right\"`.\n @param {Function|String} [*value* = \"bottom\"]\n @chainable\n */\n legendPosition(_) {\n return arguments.length ? (this._legendPosition = typeof _ === \"function\" ? _ : constant(_), this) : this._legendPosition;\n }\n\n /**\n @memberof Viz\n @desc A JavaScript [sort comparator function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) used to sort the legend.\n @param {Function} *value*\n @chainable\n */\n legendSort(_) {\n return arguments.length ? (this._legendSort = _, this) : this._legendSort;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the config method for the legend tooltip and returns the current class instance.\n @param {Object} [*value* = {}]\n @chainable\n */\n legendTooltip(_) {\n return arguments.length ? (this._legendTooltip = assign(this._legendTooltip, _), this) : this._legendTooltip;\n }\n\n /**\n @memberof Viz\n @desc Sets the inner HTML of the status message that is displayed when loading AJAX requests and displaying errors. Must be a valid HTML string or a function that, when passed this Viz instance, returns a valid HTML string.\n @param {Function|String} [*value*]\n @chainable\n */\n loadingHTML(_) {\n return arguments.length ? (this._loadingHTML = typeof _ === \"function\" ? _ : constant(_), this) : this._loadingHTML;\n }\n\n /**\n @memberof Viz\n @desc Toggles the visibility of the status message that is displayed when loading AJAX requests and displaying errors.\n @param {Boolean} [*value* = true]\n @chainable\n */\n loadingMessage(_) {\n return arguments.length ? (this._loadingMessage = _, this) : this._loadingMessage;\n }\n\n /**\n @memberof Viz\n @desc Sets the color of the mask used underneath the status message that is displayed when loading AJAX requests and displaying errors. Additionally, `false` will turn off the mask completely.\n @param {Boolean|String} [*value* = \"rgba(0, 0, 0, 0.1)\"]\n @chainable\n */\n messageMask(_) {\n return arguments.length ? (this._messageMask = _, this) : this._messageMask;\n }\n\n /**\n @memberof Viz\n @desc Defines the CSS style properties for the status message that is displayed when loading AJAX requests and displaying errors.\n @param {Object} [*value*]\n @chainable\n */\n messageStyle(_) {\n return arguments.length ? (this._messageStyle = assign(this._messageStyle, _), this) : this._messageStyle;\n }\n\n /**\n @memberof Viz\n @desc Sets the inner HTML of the status message that is displayed when no data is supplied to the visualization. Must be a valid HTML string or a function that, when passed this Viz instance, returns a valid HTML string.\n @param {Function|String} [*value*]\n @chainable\n */\n noDataHTML(_) {\n return arguments.length ? (this._noDataHTML = typeof _ === \"function\" ? _ : constant(_), this) : this._noDataHTML;\n }\n\n /**\n @memberof Viz\n @desc Toggles the visibility of the status message that is displayed when no data is supplied to the visualization.\n @param {Boolean} [*value* = true]\n @chainable\n */\n noDataMessage(_) {\n return arguments.length ? (this._noDataMessage = _, this) : this._noDataMessage;\n }\n\n /**\n @memberof Viz\n @desc If using resize detection, this method allow a custom override of the element to which the resize detection function gets attached.\n @param {String|HTMLElement} *selector*\n @chainable\n */\n resizeContainer(_) {\n return arguments.length ? (this._resizeContainer = _, this) : this._resizeContainer;\n }\n\n /**\n @memberof Viz\n @desc If using scroll or visibility detection, this method allow a custom override of the element to which the scroll detection function gets attached.\n @param {String|HTMLElement} *selector*\n @chainable\n */\n scrollContainer(_) {\n return arguments.length ? (this._scrollContainer = _, this) : this._scrollContainer;\n }\n\n /**\n @memberof Viz\n @desc If *selector* is specified, sets the SVG container element to the specified d3 selector or DOM element and returns the current class instance. If *selector* is not specified, returns the current SVG container element, which is `undefined` by default.\n @param {String|HTMLElement} [*selector*]\n @chainable\n */\n select(_) {\n return arguments.length ? (this._select = select(_), this) : this._select;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the shape accessor to the specified function or number and returns the current class instance.\n @param {Function|String} [*value*]\n @chainable\n */\n shape(_) {\n return arguments.length ? (this._shape = typeof _ === \"function\" ? _ : constant(_), this) : this._shape;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the config method for each shape and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n shapeConfig(_) {\n return arguments.length ? (this._shapeConfig = assign(this._shapeConfig, _), this) : this._shapeConfig;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the subtitle accessor to the specified function or string and returns the current class instance.\n @param {Function|String} [*value*]\n @chainable\n */\n subtitle(_) {\n return arguments.length ? (this._subtitle = typeof _ === \"function\" ? _ : constant(_), this) : this._subtitle;\n }\n \n /**\n @memberof Viz\n @desc If *value* is specified, sets the config method for the subtitle and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n subtitleConfig(_) {\n return arguments.length ? (this._subtitleConfig = assign(this._subtitleConfig, _), this) : this._subtitleConfig;\n }\n \n /**\n @memberof Viz\n @desc Tells the subtitle whether or not to use the internal padding defined by the visualization in it's positioning. For example, d3plus-plot will add padding on the left so that the subtitle appears centered above the x-axis. By default, this padding is only applied on screens larger than 600 pixels wide.\n @param {Boolean|Function} [*value*]\n @chainable\n */\n subtitlePadding(_) {\n return arguments.length ? (this._subtitlePadding = typeof _ === \"function\" ? _ : constant(_), this) : this._subtitlePadding;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the description accessor to the specified string and returns the current class instance.\n @param {String} [*value*]\n @chainable\n */\n svgDesc(_) {\n return arguments.length ? (this._svgDesc = _, this) : this._svgDesc;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the title accessor to the specified string and returns the current class instance.\n @param {String} [*value*]\n @chainable\n */\n svgTitle(_) {\n return arguments.length ? (this._svgTitle = _, this) : this._svgTitle;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the threshold for buckets to the specified function or string, and returns the current class instance.\n @param {Function|Number} [value]\n @chainable\n */\n threshold(_) {\n if (arguments.length) {\n if (typeof _ === \"function\") {\n this._threshold = _;\n }\n else if (isFinite(_) && !isNaN(_)) {\n this._threshold = constant(_ * 1);\n }\n return this;\n }\n else return this._threshold;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the accesor for the value used in the threshold algorithm, and returns the current class instance.\n @param {Function|Number} [value]\n @chainable\n */\n thresholdKey(key) {\n if (arguments.length) {\n if (typeof key === \"function\") {\n this._thresholdKey = key;\n }\n else {\n this._thresholdKey = accessor(key);\n }\n return this;\n }\n else return this._thresholdKey;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the label for the bucket item, and returns the current class instance.\n @param {Function|String} [value]\n @chainable\n */\n thresholdName(_) {\n return arguments.length ? (this._thresholdName = typeof _ === \"function\" ? _ : constant(_), this) : this._thresholdName;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the time accessor to the specified function or string and returns the current class instance.\n @param {Function|String} [*value*]\n @chainable\n */\n time(_) {\n if (arguments.length) {\n if (typeof _ === \"function\") {\n this._time = _;\n }\n else {\n this._time = accessor(_);\n if (!this._aggs[_]) {\n this._aggs[_] = (a, c) => {\n const v = unique(a.map(c));\n return v.length === 1 ? v[0] : v;\n };\n }\n if (this._userTime && JSON.stringify(_) !== JSON.stringify(this._userTime)) {\n this._timeFilter = false;\n this._timelineSelection = false;\n }\n this._userTime = _;\n }\n return this;\n }\n else return this._time;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the time filter to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n timeFilter(_) {\n return arguments.length ? (this._timeFilter = _, this) : this._timeFilter;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, toggles the timeline based on the specified boolean and returns the current class instance.\n @param {Boolean} [*value* = true]\n @chainable\n */\n timeline(_) {\n return arguments.length ? (this._timeline = _, this) : this._timeline;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the config method for the timeline and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n timelineConfig(_) {\n return arguments.length ? (this._timelineConfig = assign(this._timelineConfig, _), this) : this._timelineConfig;\n }\n\n /**\n @memberof Viz\n @desc Sets the starting time or range for the timeline. The value provided can either be a single Date/String, or an Array of 2 values representing the min and max.\n @param {Date|String|Array} [*value*]\n @chainable\n */\n timelineDefault(_) {\n if (arguments.length) {\n if (!(_ instanceof Array)) _ = [_, _];\n this._timelineDefault = _.map(date);\n return this;\n }\n else return this._timelineDefault;\n }\n\n /**\n @memberof Viz\n @desc Tells the timeline whether or not to use the internal padding defined by the visualization in it's positioning. For example, d3plus-plot will add padding on the left so that the timeline appears centered underneath the x-axis. By default, this padding is only applied on screens larger than 600 pixels wide.\n @param {Boolean|Function} [*value*]\n @chainable\n */\n timelinePadding(_) {\n return arguments.length ? (this._timelinePadding = typeof _ === \"function\" ? _ : constant(_), this) : this._timelinePadding;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the title accessor to the specified function or string and returns the current class instance.\n @param {Function|String} [*value*]\n @chainable\n */\n title(_) {\n return arguments.length ? (this._title = typeof _ === \"function\" ? _ : constant(_), this) : this._title;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the config method for the title and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n titleConfig(_) {\n return arguments.length ? (this._titleConfig = assign(this._titleConfig, _), this) : this._titleConfig;\n }\n\n /**\n @memberof Viz\n @desc Tells the title whether or not to use the internal padding defined by the visualization in it's positioning. For example, d3plus-plot will add padding on the left so that the title appears centered above the x-axis. By default, this padding is only applied on screens larger than 600 pixels wide.\n @param {Boolean|Function} [*value*]\n @chainable\n */\n titlePadding(_) {\n return arguments.length ? (this._titlePadding = typeof _ === \"function\" ? _ : constant(_), this) : this._titlePadding;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, toggles the tooltip based on the specified boolean and returns the current class instance.\n @param {Boolean|Function} [*value* = true]\n @chainable\n */\n tooltip(_) {\n return arguments.length ? (this._tooltip = typeof _ === \"function\" ? _ : constant(_), this) : this._tooltip;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the config method for the tooltip and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n tooltipConfig(_) {\n return arguments.length ? (this._tooltipConfig = assign(this._tooltipConfig, _), this) : this._tooltipConfig;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the total accessor to the specified function or string and returns the current class instance.\n @param {Boolean|Function|String} [*value*]\n @chainable\n */\n total(_) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._total = _;\n else if (_) this._total = accessor(_);\n else this._total = false;\n return this;\n }\n else return this._total;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the config method for the total and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n totalConfig(_) {\n return arguments.length ? (this._totalConfig = assign(this._totalConfig, _), this) : this._totalConfig;\n }\n\n /**\n @memberof Viz\n @desc Formatter function for the value in the total bar.\n @param {Function} *value*\n @chainable\n */\n totalFormat(_) {\n return arguments.length ? (this._totalFormat = _, this) : this._totalFormat;\n }\n\n /**\n @memberof Viz\n @desc Tells the total whether or not to use the internal padding defined by the visualization in it's positioning. For example, d3plus-plot will add padding on the left so that the total appears centered above the x-axis. By default, this padding is only applied on screens larger than 600 pixels wide.\n @param {Boolean|Function} [*value*]\n @chainable\n */\n totalPadding(_) {\n return arguments.length ? (this._totalPadding = typeof _ === \"function\" ? _ : constant(_), this) : this._totalPadding;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the overallwidth to the specified number and returns the current class instance.\n @param {Number} [*value* = window.innerWidth]\n @chainable\n */\n width(_) {\n return arguments.length ? (this._width = _, this) : this._width;\n }\n\n /**\n @memberof Viz\n @desc Toggles the ability to zoom/pan the visualization. Certain parameters for zooming are required to be hooked up on a visualization by visualization basis.\n @param {Boolean} *value* = false\n @chainable\n */\n zoom(_) {\n return arguments.length ? (this._zoom = _, this) : this._zoom;\n }\n\n /**\n @memberof Viz\n @desc The pixel stroke-width of the zoom brush area.\n @param {Number} *value* = 1\n @chainable\n */\n zoomBrushHandleSize(_) {\n return arguments.length ? (this._zoomBrushHandleSize = _, this) : this._zoomBrushHandleSize;\n }\n\n /**\n @memberof Viz\n @desc An object containing CSS key/value pairs that is used to style the outer handle area of the zoom brush. Passing `false` will remove all default styling.\n @param {Object|Boolean} *value*\n @chainable\n */\n zoomBrushHandleStyle(_) {\n return arguments.length ? (this._zoomBrushHandleStyle = _, this) : this._zoomBrushHandleStyle;\n }\n\n /**\n @memberof Viz\n @desc An object containing CSS key/value pairs that is used to style the inner selection area of the zoom brush. Passing `false` will remove all default styling.\n @param {Object|Boolean} *value*\n @chainable\n */\n zoomBrushSelectionStyle(_) {\n return arguments.length ? (this._zoomBrushSelectionStyle = _, this) : this._zoomBrushSelectionStyle;\n }\n\n /**\n @memberof Viz\n @desc An object containing CSS key/value pairs that is used to style each zoom control button (`.zoom-in`, `.zoom-out`, `.zoom-reset`, and `.zoom-brush`). Passing `false` will remove all default styling.\n @param {Object|Boolean} *value*\n @chainable\n */\n zoomControlStyle(_) {\n return arguments.length ? (this._zoomControlStyle = _, this) : this._zoomControlStyle;\n }\n\n /**\n @memberof Viz\n @desc An object containing CSS key/value pairs that is used to style each zoom control button when active (`.zoom-in`, `.zoom-out`, `.zoom-reset`, and `.zoom-brush`). Passing `false` will remove all default styling.\n @param {Object|Boolean} *value*\n @chainable\n */\n zoomControlStyleActive(_) {\n return arguments.length ? (this._zoomControlStyleActive = _, this) : this._zoomControlStyleActive;\n }\n\n /**\n @memberof Viz\n @desc An object containing CSS key/value pairs that is used to style each zoom control button on hover (`.zoom-in`, `.zoom-out`, `.zoom-reset`, and `.zoom-brush`). Passing `false` will remove all default styling.\n @param {Object|Boolean} *value*\n @chainable\n */\n zoomControlStyleHover(_) {\n return arguments.length ? (this._zoomControlStyleHover = _, this) : this._zoomControlStyleHover;\n }\n\n /**\n @memberof Viz\n @desc The multiplier that is used in with the control buttons when zooming in and out.\n @param {Number} *value* = 2\n @chainable\n */\n zoomFactor(_) {\n return arguments.length ? (this._zoomFactor = _, this) : this._zoomFactor;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, sets the max zoom scale to the specified number and returns the current class instance. If *value* is not specified, returns the current max zoom scale.\n @param {Number} *value* = 16\n @chainable\n */\n zoomMax(_) {\n return arguments.length ? (this._zoomMax = _, this) : this._zoomMax;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, toggles panning to the specified boolean and returns the current class instance. If *value* is not specified, returns the current panning value.\n @param {Boolean} *value* = true\n @chainable\n */\n zoomPan(_) {\n return arguments.length ? (this._zoomPan = _, this) : this._zoomPan;\n }\n\n /**\n @memberof Viz\n @desc A pixel value to be used to pad all sides of a zoomed area.\n @param {Number} *value* = 20\n @chainable\n */\n zoomPadding(_) {\n return arguments.length ? (this._zoomPadding = _, this) : this._zoomPadding;\n }\n\n /**\n @memberof Viz\n @desc If *value* is specified, toggles scroll zooming to the specified boolean and returns the current class instance. If *value* is not specified, returns the current scroll zooming value.\n @param {Boolean} [*value* = true]\n @chainable\n */\n zoomScroll(_) {\n return arguments.length ? (this._zoomScroll = _, this) : this._zoomScroll;\n }\n\n}\n","/**\n @module discreteBuffer\n @desc Adds left/right padding to a point or time scale.\n @private\n*/\nexport default (scale, data, discrete) => {\n\n if (scale.padding) scale.padding(0.5);\n else {\n let uniqueValues = Array.from(new Set(data.map(d => +d[discrete])));\n const closest = uniqueValues.reduce((acc, curr, i, arr) => {\n if (!i) return acc;\n const prev = arr[i - 1];\n if (!acc || curr - prev < acc) return curr - prev;\n else return acc;\n }, 0);\n const domain = scale.domain().slice();\n if (discrete === \"y\") domain.reverse();\n domain[0] = new Date(+domain[0] - closest / 2);\n domain[1] = new Date(+domain[1] + closest / 2);\n if (discrete === \"y\") domain.reverse();\n scale.domain(domain);\n }\n\n};\n","import {max, min, sum} from \"d3-array\";\nimport {nest} from \"d3-collection\";\n\n/**\n @module barBuffer\n @desc Adds a buffer to either side of the non-discrete axis.\n @param {Array} data\n @param {D3Scale} x\n @param {D3Scale} y\n @param {Object} [config]\n @param {Number} [buffer = 10]\n @private\n*/\nexport default function({data, x, y, x2, y2, buffer = 10}) {\n const xKey = x2 ? \"x2\" : \"x\";\n const yKey = y2 ? \"y2\" : \"y\";\n\n const oppScale = this._discrete === \"x\" ? y : x;\n\n const oppDomain = oppScale.domain().slice();\n\n const isDiscreteX = this._discrete === \"x\";\n\n if (isDiscreteX) oppDomain.reverse();\n\n let negVals, posVals;\n if (this._stacked) {\n const groupedData = nest()\n .key(d => `${d[this._discrete]}_${d.group}`)\n .entries(data)\n .map(d => d.values.map(x => x[isDiscreteX ? yKey : xKey]));\n posVals = groupedData.map(arr => sum(arr.filter(d => d > 0)));\n negVals = groupedData.map(arr => sum(arr.filter(d => d < 0)));\n }\n else {\n const allValues = data.map(d => d[isDiscreteX ? yKey : xKey]);\n posVals = allValues.filter(d => d > 0);\n negVals = allValues.filter(d => d < 0);\n }\n\n let bMax = oppScale(max(posVals));\n if (isDiscreteX ? bMax < oppScale(0) : bMax > oppScale(0)) bMax += isDiscreteX ? -buffer : buffer;\n bMax = oppScale.invert(bMax);\n\n let bMin = oppScale(min(negVals));\n if (isDiscreteX ? bMin > oppScale(0) : bMin < oppScale(0)) bMin += isDiscreteX ? buffer : -buffer;\n bMin = oppScale.invert(bMin);\n\n if (bMax > oppDomain[1]) oppDomain[1] = bMax;\n if (bMin < oppDomain[0]) oppDomain[0] = bMin;\n\n if (isDiscreteX) oppDomain.reverse();\n \n oppScale.domain(oppDomain);\n\n return [x, y];\n\n}\n","import {max, min, sum} from \"d3-array\";\nimport {nest} from \"d3-collection\";\n\n/**\n @module boxBuffer\n @desc Adds a buffer to either side of the non-discrete axis.\n @param {Array} data\n @param {D3Scale} x\n @param {D3Scale} y\n @param {Object} [config]\n @param {Number} [buffer = 10]\n @private\n*/\nexport default function({data, x, y, x2, y2, buffer = 10}) {\n const xKey = x2 ? \"x2\" : \"x\";\n const yKey = y2 ? \"y2\" : \"y\";\n\n const oppScale = this._discrete === \"x\" ? y : x;\n\n const oppDomain = oppScale.domain().slice();\n\n const isDiscreteX = this._discrete === \"x\";\n\n if (isDiscreteX) oppDomain.reverse();\n\n let negVals, posVals;\n if (this._stacked) {\n const groupedData = nest()\n .key(d => d[this._discrete])\n .entries(data)\n .map(d => d.values.map(x => x[isDiscreteX ? yKey : xKey]));\n posVals = groupedData.map(arr => sum(arr.filter(d => d > 0)));\n negVals = groupedData.map(arr => sum(arr.filter(d => d < 0)));\n }\n else {\n posVals = data.map(d => d[isDiscreteX ? yKey : xKey]);\n negVals = posVals;\n }\n\n let bMax = oppScale(max(posVals));\n bMax += isDiscreteX ? -buffer : buffer;\n bMax = oppScale.invert(bMax);\n\n let bMin = oppScale(min(negVals));\n bMin += isDiscreteX ? buffer : -buffer;\n bMin = oppScale.invert(bMin);\n\n if (bMax > oppDomain[1]) oppDomain[1] = bMax;\n if (bMin < oppDomain[0]) oppDomain[0] = bMin;\n\n if (isDiscreteX) oppDomain.reverse();\n\n oppScale.domain(oppDomain);\n\n return [x, y];\n\n}\n","import {scaleLog} from \"d3-scale\";\n\nconst floor10 = v => Math.pow(10, Math.floor(Math.log10(Math.abs(v)))) * Math.pow(-1, v < 0);\nconst ceil10 = v => Math.pow(10, Math.ceil(Math.log10(Math.abs(v)))) * Math.pow(-1, v < 0);\n\n/**\n @module numericBuffer\n @private\n*/\nexport default function(axis, scale, value, size, range, domain, index, invert) {\n\n if (value === undefined || isNaN(domain[0]) || isNaN(domain[1])) return domain;\n\n if (invert) {\n domain = domain.slice().reverse();\n range = range.slice().reverse();\n }\n\n if (domain[0] === domain[1]) {\n domain = domain.slice();\n if (scale === \"log\") {\n domain = [floor10(domain[0]), ceil10(domain[0])];\n if (domain[1] < domain[0]) domain.reverse();\n }\n else {\n const mod = Math.abs(parseFloat(domain[0].toPrecision(1).replace(/[0-9]{1}$/, \"1\")));\n domain[0] -= mod;\n domain[1] += mod;\n }\n axis.domain(invert ? domain.slice().reverse() : domain);\n return invert ? domain.reverse() : domain;\n }\n\n const logMod = domain[0] === domain[1] ? 10 : Math.abs(Math.log(domain[1] - domain[0]) / 100);\n\n const needsBuffer = () => {\n let tempAxis = axis.copy();\n let diverging = false;\n if (scale === \"log\") {\n let d = axis.domain().slice(),\n r = axis.range().slice();\n if (invert) {\n d = d.reverse();\n r = r.reverse();\n }\n diverging = d[0] * d[1] < 0;\n if (diverging) {\n const percentScale = scaleLog().domain([1e-6, Math.abs(d[index])]).range([0, 1]);\n const leftPercentage = percentScale(Math.abs(d[index ? 0 : 1]));\n const zero = leftPercentage / (leftPercentage + 1) * (r[1] - r[0]);\n d = (index === 0 ? [d[0], 1e-6] : [1e-6, d[1]]).map(Math.abs);\n r = index === 0 ? [r[0], r[0] + zero] : [r[0] + zero, r[1]];\n }\n tempAxis = scaleLog()\n .domain(d)\n .range(r);\n }\n\n let outside = false;\n const tempRange = tempAxis.range();\n let pixelValue;\n if (scale === \"log\") {\n pixelValue = diverging ? tempAxis(Math.abs(value)) : tempAxis(value);\n }\n else pixelValue = tempAxis(value);\n \n if (invert) {\n if (index === 0) outside = pixelValue + size > tempRange[index];\n else if (index === 1) outside = pixelValue - size < tempRange[index];\n }\n else {\n if (index === 0) outside = pixelValue - size < tempRange[index];\n else if (index === 1) outside = pixelValue + size > tempRange[index];\n }\n return outside;\n\n };\n\n if (axis.invert && needsBuffer()) {\n const mod = 10;\n if (scale === \"log\") {\n let i = 0;\n while (i < 10 && needsBuffer()) {\n const mod = (index === 0 ? -1 : 1) * (domain[index] < 0 ? -1 : 1);\n domain[index] += domain[index] * logMod * mod;\n axis.domain(invert ? domain.slice().reverse() : domain);\n i++;\n }\n }\n else if (index === 0) {\n const v = axis.invert(axis(value) + (size + mod) * (invert ? 1 : -1));\n if (v < domain[index]) {\n domain[index] = v;\n axis.domain(invert ? domain.slice().reverse() : domain);\n }\n }\n else if (index === 1) {\n const v = axis.invert(axis(value) + (size + mod) * (invert ? -1 : 1));\n if (v > domain[index]) {\n domain[index] = v;\n axis.domain(invert ? domain.slice().reverse() : domain);\n }\n }\n }\n\n return invert ? domain.reverse() : domain;\n}\n","import discreteBuffer from \"./discreteBuffer.js\";\nimport numericBuffer from \"./numericBuffer.js\";\n\n/**\n @module circleBuffer\n @desc Adds a buffer to either side of the non-discrete axis.\n @param {Array} data\n @param {D3Scale} x\n @param {D3Scale} y\n @param {Object} [config]\n @param {Number} [buffer] Defaults to the radius of the largest Circle.\n @private\n*/\nexport default function({data, x, y, x2, y2, yScale, xScale, config, buffer}) {\n\n x = x.copy();\n y = y.copy();\n\n const xKey = x2 ? \"x2\" : \"x\";\n const yKey = y2 ? \"y2\" : \"y\";\n\n let xD = x.domain().slice(),\n yD = y.domain().slice();\n\n const xR = x.range(),\n yR = y.range();\n\n if (!x.invert && x.padding) discreteBuffer(x, data, this._discrete);\n if (!y.invert && y.padding) discreteBuffer(y, data, this._discrete);\n\n if (x.invert || y.invert) {\n\n data.forEach(d => {\n\n const s = buffer ? buffer : config.r(d.data, d.i) * 2;\n\n if (x.invert) {\n xD = numericBuffer(x, xScale, d[xKey], s, xR, xD, 0, false);\n xD = numericBuffer(x, xScale, d[xKey], s, xR, xD, 1, false);\n }\n\n if (y.invert) {\n yD = numericBuffer(y, yScale, d[yKey], s, yR, yD, 0, true);\n yD = numericBuffer(y, yScale, d[yKey], s, yR, yD, 1, true);\n }\n\n });\n\n }\n\n return [x, y];\n\n}\n","import {max} from \"d3-array\";\n\n/**\n @module lineBuffer\n @desc Adds a buffer to either side of the non-discrete axis.\n @param {Array} data\n @param {D3Scale} x\n @param {D3Scale} y\n @param {Object} [config]\n @param {Number} [buffer] Defaults to the radius of the largest Circle.\n @private\n*/\nexport default function({data, x, y, x2, y2}) {\n const xKey = x2 ? \"x2\" : \"x\";\n const yKey = y2 ? \"y2\" : \"y\";\n\n const s = this._discrete === \"x\" ? y : x;\n\n const d = s.domain().slice();\n\n if (this._discrete === \"x\") d.reverse();\n\n const vals = data.map(d => d[this._discrete === \"x\" ? yKey : xKey]);\n const b = s.invert(s(max(vals)) + (this._discrete === \"x\" ? -10 : 10));\n\n if (b > d[1]) d[1] = b;\n\n if (this._discrete === \"x\") d.reverse();\n\n s.domain(d);\n\n return [x, y];\n\n}\n","import discreteBuffer from \"./discreteBuffer.js\";\nimport numericBuffer from \"./numericBuffer.js\";\n\n/**\n @module rectBuffer\n @desc Adds a buffer to either side of the non-discrete axis.\n @param {Array} data\n @param {D3Scale} x\n @param {D3Scale} y\n @param {Object} [config]\n @param {Number} [buffer] Defaults to the width/height of the largest Rect.\n @private\n*/\nexport default function({data, x, y, x2, y2, yScale, xScale, config}) {\n\n x = x.copy();\n y = y.copy();\n\n const xKey = x2 ? \"x2\" : \"x\";\n const yKey = y2 ? \"y2\" : \"y\";\n\n let xD = x.domain().slice(),\n yD = y.domain().slice();\n\n const xR = x.range(),\n yR = y.range();\n\n if (!x.invert && x.padding) discreteBuffer(x, data, this._discrete);\n if (!y.invert && y.padding) discreteBuffer(y, data, this._discrete);\n\n if (x.invert || y.invert) {\n\n data.forEach(d => {\n\n if (x.invert) {\n const w = config.width(d.data, d.i);\n xD = numericBuffer(x, xScale, d[xKey], w, xR, xD, 0, false);\n xD = numericBuffer(x, xScale, d[xKey], w, xR, xD, 1, false);\n }\n\n if (y.invert) {\n const h = config.height(d.data, d.i);\n yD = numericBuffer(y, yScale, d[yKey], h, yR, yD, 0, true);\n yD = numericBuffer(y, yScale, d[yKey], h, yR, yD, 1, true);\n }\n\n });\n\n }\n\n return [x, y];\n\n}\n\n","/* eslint no-cond-assign: 0 */\n\nimport {deviation, extent, max, mean, merge, min, range, sum} from \"d3-array\";\nimport {nest} from \"d3-collection\";\nimport * as scales from \"d3-scale\";\nimport * as d3Shape from \"d3-shape\";\n\nimport {colorAssign, colorContrast, colorDefaults, colorLegible} from \"@d3plus/color\";\nimport {merge as d3plusMerge, unique} from \"@d3plus/data\";\nimport {assign, date, elem, rtl, textWidth} from \"@d3plus/dom\";\nimport {largestRect} from \"@d3plus/math\";\nimport {formatAbbreviate} from \"@d3plus/format\";\n\nimport {AxisBottom, AxisLeft, AxisRight, AxisTop, TextBox} from \"../components/index.js\";\nimport * as shapes from \"../shapes/index.js\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\n\nconst testLineShape = new shapes.Line();\nconst testTextBox = new TextBox();\nimport Viz from \"./Viz.js\";\n\nimport {default as discreteBuffer} from \"./plotBuffers/discreteBuffer.js\";\nimport {default as BarBuffer} from \"./plotBuffers/Bar.js\";\nimport {default as BoxBuffer} from \"./plotBuffers/Box.js\";\nimport {default as CircleBuffer} from \"./plotBuffers/Circle.js\";\nimport {default as LineBuffer} from \"./plotBuffers/Line.js\";\nimport {default as RectBuffer} from \"./plotBuffers/Rect.js\";\nconst defaultBuffers = {\n Bar: BarBuffer,\n Box: BoxBuffer,\n Circle: CircleBuffer,\n Line: LineBuffer,\n Rect: RectBuffer\n};\n\n/**\n @desc Logic for determining default sizes of shapes using the sizeScaleD3 internal function.\n @private\n*/\nfunction defaultSize(d) {\n return this._sizeScaleD3(this._size ? this._size(d) : null);\n}\n\n/**\n @desc Logic for determining stackOrder ascending using groups.\n @private\n*/\nfunction stackOrderAscending(series) {\n const sums = series.map(stackSum);\n const keys = series.map(d => d.key.split(\"_\")[0]);\n return d3Shape.stackOrderNone(series).sort((a, b) => keys[b].localeCompare(keys[a]) || sums[a] - sums[b]);\n}\n\n/**\n @desc Logic for determining stackOrder descending using groups.\n @private\n*/\nfunction stackOrderDescending(series) {\n return stackOrderAscending(series).reverse();\n}\n\n/**\n @desc Logic for determining default sum of shapes using the stackSum function used in d3Shape.\n @private\n*/\nfunction stackSum(series) {\n let i = -1, s = 0, v;\n const n = series.length;\n while (++i < n) if (v = +series[i][1]) s += v;\n return s;\n}\n\n/**\n @desc Logic for determining default sum of shapes using the stackSum function used in d3Shape.\n @private\n*/\nfunction stackOffsetDiverging(series, order) {\n let n;\n if (!((n = series.length) > 0)) return;\n let d, dy, i, yn, yp;\n const m = series[order[0]].length;\n for (let j = 0; j < m; ++j) {\n for (yp = yn = 0, i = 0; i < n; ++i) {\n if ((dy = (d = series[order[i]][j])[1] - d[0]) >= 0) {\n d[0] = yp, d[1] = yp += dy;\n }\n else if (dy < 0) {\n d[1] = yn, d[0] = yn += dy;\n }\n else {\n d[0] = yp;\n }\n }\n }\n}\n\n/**\n * Determines if a Bar label should be placed outside of the Bar.\n * @param {@} d\n * @param {*} i\n * @private\n */\nfunction outside(d, i) {\n\n // Force all Stacked Bars to use \"inside\" labels.\n if (this._stacked) return false;\n\n // Detect user \"outside\" or \"inside\" override.\n const labelPosition = this._labelPosition(d, i);\n if (labelPosition === \"outside\") return true;\n else if (labelPosition === \"inside\") return false;\n\n // Run \"auto\" logic based on available space.\n const other = this._discrete.charAt(0) === \"x\" ? \"y\" : \"x\";\n const nonDiscrete = this._discrete.replace(this._discrete.charAt(0), other);\n const range = this[`_${nonDiscrete}Axis`]._d3Scale.range();\n const value = this[`_${nonDiscrete}`](d, i);\n const negative = value < 0;\n const zero = this[`_${nonDiscrete}Axis`]._getPosition(0);\n const space = nonDiscrete === \"y\"\n ? negative ? range[1] - zero : zero - range[0]\n : negative ? zero - range[0] : range[1] - zero;\n const pos = this[`_${nonDiscrete}Axis`]._getPosition(value);\n const size = Math.abs(negative ? zero - pos : pos - zero);\n return size < space / 2;\n\n}\n\n/**\n @class Plot\n @extends Viz\n @desc Creates an x/y plot based on an array of data.\n*/\nexport default class Plot extends Viz {\n\n /**\n @memberof Plot\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n this._axisPersist = false;\n this._annotations = [];\n this._backgroundConfig = {\n duration: 0,\n fill: \"transparent\"\n };\n this._barPadding = 0;\n this._buffer = assign({}, defaultBuffers, {Bar: false, Line: false});\n this._confidenceConfig = {\n fill: (d, i) => {\n const c = typeof this._shapeConfig.Line.stroke === \"function\"\n ? this._shapeConfig.Line.stroke(d, i)\n : this._shapeConfig.Line.stroke;\n return c;\n },\n fillOpacity: constant(0.5)\n };\n this._discreteCutoff = 100;\n this._groupPadding = 5;\n this._labelConnectorConfig = {\n strokeDasharray: \"1 1\"\n };\n this._labelPosition = constant(\"auto\");\n this._lineMarkerConfig = {\n fill: (d, i) => colorAssign(this._id(d, i)),\n r: constant(3)\n };\n this._lineMarkers = false;\n this._previousAnnotations = {back: [], front: []};\n this._previousShapes = [];\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n Area: {\n label: (d, i) => this._stacked ? this._drawLabel(d, i) : false,\n labelBounds: (d, i, aes) => {\n let r = largestRect(aes.points, {angle: range(-20, 20, 5)});\n if (!r || r.height < 20 || r.width < 50) r = largestRect(aes.points, {angle: range(-80, 80, 5)});\n if (!r) return null;\n const x = min(aes.points, d => d[0]);\n const y = max(aes.points.filter(d => d[0] === x), d => d[1]);\n return {\n angle: r.angle,\n width: r.width,\n height: r.height,\n x: r.cx - r.width / 2 - x,\n y: r.cy - r.height / 2 - y\n };\n },\n labelConfig: {\n fontMin: 6,\n fontResize: true,\n padding: 10\n }\n },\n ariaLabel: (d, i) => {\n let ariaLabelStr = \"\";\n if (d.nested) ariaLabelStr = `${this._drawLabel(d.data, d.i)}`;\n else {\n ariaLabelStr = `${this._drawLabel(d, i)}`;\n if (this._x(d, i) !== undefined) ariaLabelStr += `, x: ${this._x(d, i)}`;\n if (this._y(d, i) !== undefined) ariaLabelStr += `, y: ${this._y(d, i)}`;\n if (this._x2(d, i) !== undefined) ariaLabelStr += `, x2: ${this._x2(d, i)}`;\n if (this._y2(d, i) !== undefined) ariaLabelStr += `, y2: ${this._y2(d, i)}`;\n }\n return `${ariaLabelStr}.`;\n },\n Bar: {\n labelBounds(d, i, s) {\n\n const padding = 1;\n\n const width = this._discrete === \"y\" ? \"width\" : \"height\";\n const height = this._discrete === \"y\" ? \"height\" : \"width\";\n\n const other = this._discrete.charAt(0) === \"x\" ? \"y\" : \"x\";\n const invert = other === \"y\";\n const nonDiscrete = this._discrete.replace(this._discrete.charAt(0), other);\n const range = this[`_${nonDiscrete}Axis`]._d3Scale.range();\n const space = Math.abs(range[1] - range[0]);\n const negative = this[`_${nonDiscrete}`](d, i) < 0;\n\n if (outside.bind(this)(d, i)) {\n return {\n [width]: space - s[width],\n [height]: s[height],\n x: invert ? -s.width / 2 : negative ? -space : s.width + padding,\n y: invert ? negative ? s.height + padding : -space : -s.height / 2 + 1\n };\n }\n return {\n [width]: s[width],\n [height]: s[height],\n x: invert ? -s.width / 2 : negative ? this._stacked ? padding - s.width : padding - s.width : -padding,\n y: invert ? negative ? this._stacked ? padding : padding : -s.height + padding : -s.height / 2 + padding\n };\n\n },\n labelConfig: {\n fontMax: 16,\n fontMin: 6,\n fontResize: true,\n fontColor(d, i) {\n return outside.bind(this)(d, i)\n ? this._backgroundConfig.fill === \"transparent\"\n ? colorDefaults.dark\n : colorContrast(this._backgroundConfig.fill)\n : colorContrast(typeof this._shapeConfig.fill === \"function\" ? this._shapeConfig.fill(d, i) : this._shapeConfig.fill);\n },\n fontStroke(d, i) {\n return outside.bind(this)(d, i)\n ? this._backgroundConfig.fill === \"transparent\"\n ? colorDefaults.dark\n : colorContrast(this._backgroundConfig.fill)\n : \"transparent\";\n },\n fontStrokeWidth(d, i) {\n return outside.bind(this)(d, i) ? 0.1 : 0;\n },\n padding: 3,\n textAnchor(d, i) {\n const other = this._discrete.charAt(0) === \"x\" ? \"y\" : \"x\";\n const invert = other === \"y\";\n const nonDiscrete = this._discrete.replace(this._discrete.charAt(0), other);\n const negative = this[`_${nonDiscrete}`](d, i) < 0;\n const anchor = invert\n ? \"middle\"\n : outside.bind(this)(d, i)\n ? negative ? \"end\" : \"start\"\n : negative ? \"start\" : \"end\";\n return rtl() ? anchor === \"start\" ? \"end\" : anchor === \"end\" ? \"start\" : anchor : anchor; \n },\n verticalAlign(d, i) {\n const other = this._discrete.charAt(0) === \"x\" ? \"y\" : \"x\";\n const invert = other === \"y\";\n const nonDiscrete = this._discrete.replace(this._discrete.charAt(0), other);\n const negative = this[`_${nonDiscrete}`](d, i) < 0;\n return invert\n ? outside.bind(this)(d, i)\n ? negative ? \"top\" : \"bottom\"\n : negative ? \"bottom\" : \"top\"\n : \"middle\";\n }\n }\n },\n Circle: {\n r: defaultSize.bind(this)\n },\n Line: {\n curve: () => this._discrete ? `monotone${this._discrete.charAt(0).toUpperCase()}` : \"linear\",\n fill: constant(\"none\"),\n labelConfig: {\n fontColor: (d, i) => {\n const c = typeof this._shapeConfig.Line.stroke === \"function\"\n ? this._shapeConfig.Line.stroke(d, i)\n : this._shapeConfig.Line.stroke;\n return colorLegible(c);\n },\n fontResize: false,\n padding: 5,\n textAnchor: \"start\",\n verticalAlign: \"middle\"\n },\n strokeWidth: constant(2)\n },\n Rect: {\n height: d => defaultSize.bind(this)(d) * 2,\n width: d => defaultSize.bind(this)(d) * 2\n }\n });\n this._shapeOrder = [\"Area\", \"Path\", \"Bar\", \"Box\", \"Line\", \"Rect\", \"Circle\"];\n this._shapeSort = (a, b) => this._shapeOrder.indexOf(a) - this._shapeOrder.indexOf(b);\n this._sizeMax = 20;\n this._sizeMin = 5;\n this._sizeScale = \"sqrt\";\n this._stackOffset = stackOffsetDiverging;\n this._stackOrder = stackOrderDescending;\n this._timelineConfig = assign(this._timelineConfig, {\n brushing: true,\n brushMin: () => this._xTime || this._yTime || this._x2Time || this._y2Time ? 2 : 1\n });\n\n this._x = accessor(\"x\");\n this._xAxis = new AxisBottom().align(\"end\");\n this._xTest = new AxisBottom().align(\"end\").gridSize(0);\n this._xConfig = {\n gridConfig: {\n stroke: d => {\n if (this._discrete && this._discrete.charAt(0) === \"x\") return \"transparent\";\n const range = this._xAxis.range();\n // hides left-most x gridline so it doesn't overlap with the y axis\n return range[0] === this._xAxis._getPosition.bind(this._xAxis)(d.id) ? \"transparent\" : \"#eee\";\n }\n }\n };\n this._xCutoff = 150;\n\n this._x2 = accessor(\"x2\");\n this._x2Axis = new AxisTop().align(\"start\");\n this._x2Test = new AxisTop().align(\"start\").gridSize(0);\n this._x2Config = {\n padding: 0\n };\n\n this._y = accessor(\"y\");\n this._yAxis = new AxisLeft().align(\"start\");\n this._yTest = new AxisLeft().align(\"start\").gridSize(0);\n this._yConfig = {\n gridConfig: {\n stroke: d => {\n if (this._discrete && this._discrete.charAt(0) === \"y\") return \"transparent\";\n const range = this._yAxis.range();\n // hides bottom-most y gridline so it doesn't overlap with the x axis\n return range[range.length - 1] === this._yAxis._getPosition.bind(this._yAxis)(d.id) ? \"transparent\" : \"#eee\";\n }\n }\n };\n this._yCutoff = 150;\n\n this._y2 = accessor(\"y2\");\n this._y2Axis = new AxisRight().align(\"end\");\n this._y2Test = new AxisLeft().align(\"end\").gridSize(0);\n this._y2Config = {};\n\n }\n\n /**\n Extends the preDraw behavior of the abstract Viz class.\n @private\n */\n _preDraw() {\n\n // logic repeated for each axis\n [\"x\", \"y\", \"x2\", \"y2\"].forEach(k => {\n\n // if user has supplied a String key as the main method value\n if (this[`_${k}Key`]) {\n\n const str = this[`_${k}Key`];\n\n // if axis is discrete and numerical, do not sum values\n if (!this._aggs[str] && this._discrete === k) {\n this._aggs[str] = (a, c) => {\n const v = Array.from(new Set(a.map(c)));\n return v.length === 1 ? v[0] : v;\n };\n }\n\n // set axis title if not discrete\n if (str !== k && this[`_${k}Title`] === this[`_${k}Config`].title && this._discrete !== k) {\n this[`_${k}Title`] = str;\n this[`_${k}Config`].title = str;\n }\n\n }\n\n });\n\n super._preDraw();\n\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n\n if (!this._filteredData.length) return this;\n\n /* Determines whether or not any of the x or y axes are a \"time\" axis. */\n const firstElemTime = this._time ? this._time(this._filteredData[0], 0) : false;\n const x2Time = this._x2Time = firstElemTime && this._x2(this._filteredData[0], 0) === firstElemTime,\n xTime = this._xTime = firstElemTime && this._x(this._filteredData[0], 0) === firstElemTime,\n y2Time = this._y2Time = firstElemTime && this._y2(this._filteredData[0], 0) === firstElemTime,\n yTime = this._yTime = firstElemTime && this._y(this._filteredData[0], 0) === firstElemTime;\n\n const timeAxis = (xTime || x2Time || yTime || y2Time);\n\n const stackGroup = (d, i) => `${!timeAxis && this._time ? this._time(d, i) : \"time\"}_${this._stacked\n ? `${this._groupBy.length > 1 ? this._ids(d, i).slice(0, -1).join(\"_\") : \"group\"}`\n : `${this._ids(d, i).join(\"_\")}`}`;\n\n const prepData = (d, i) => {\n const newD = {\n __d3plus__: true,\n data: d,\n group: stackGroup(d, i),\n i,\n hci: this._confidence && this._confidence[1] && this._confidence[1](d, i),\n id: this._ids(d, i).slice(0, this._drawDepth + 1).join(\"_\"),\n lci: this._confidence && this._confidence[0] && this._confidence[0](d, i),\n shape: this._shape(d, i),\n x: xTime ? date(this._x(d, i)) : this._x(d, i),\n x2: x2Time ? date(this._x2(d, i)) : this._x2(d, i),\n y: yTime ? date(this._y(d, i)) : this._y(d, i),\n y2: y2Time ? date(this._y2(d, i)) : this._y2(d, i)\n };\n newD.discrete = newD.shape === \"Bar\" ? `${newD[this._discrete]}_${newD.group}` : `${newD[this._discrete]}`;\n newD.id = newD.shape === \"Bar\" ? `${newD.id}_${newD[this._discrete]}` : newD.id;\n return newD;\n };\n\n const data = this._formattedData = this._filteredData.map(prepData);\n const axisData = this._axisPersist ? this._data.map(prepData) : data;\n\n if (this._size) {\n const rExtent = extent(axisData, d => this._size(d.data));\n this._sizeScaleD3 = scales[`scale${this._sizeScale.charAt(0).toUpperCase()}${this._sizeScale.slice(1)}`]()\n .domain(rExtent)\n .range([rExtent[0] === rExtent[1] ? this._sizeMax : min([this._sizeMax / 2, this._sizeMin]), this._sizeMax]);\n }\n else {\n this._sizeScaleD3 = () => this._sizeMin;\n }\n\n const x2Exists = axisData.some(d => d.x2 !== undefined),\n y2Exists = axisData.some(d => d.y2 !== undefined);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n opp = this._discrete ? this._discrete === \"x\" ? \"y\" : \"x\" : undefined,\n opp2 = this._discrete ? this._discrete === \"x\" ? \"y2\" : \"x2\" : undefined,\n opps = [opp, opp2].filter(d => d),\n parent = this._select,\n transition = this._transition,\n width = this._width - this._margin.left - this._margin.right;\n\n /**\n * @desc Returns all unique values for a given axis.\n * @param {String} axis\n * @returns {Array}\n * @private\n */\n function getAxisValues(axis) {\n const timeData = this[`_${axis}Time`];\n const localData = timeData ? data : axisData;\n\n const filteredData = localData\n .filter(d => ![NaN, undefined, false].includes(d[axis]));\n\n if (!filteredData.length) return [];\n\n const numericValue = typeof filteredData[0][axis] === \"number\";\n\n let myData = this._discrete === axis\n ? nest()\n .key(d => d[axis])\n .rollup(leaves => leaves.length === 1 ? leaves[0].data : d3plusMerge(leaves.map(d => d.data), this._aggs))\n .entries(filteredData)\n .sort((a, b) => {\n if (this[`_${axis}Sort`]) return this[`_${axis}Sort`](a.value, b.value);\n const aKey = (timeData || numericValue) ? parseFloat(a.key, 10) : a.key; \n const bKey = (timeData || numericValue) ? parseFloat(b.key, 10) : b.key; \n return aKey - bKey;\n })\n .map(d => timeData ? date(d.key) : numericValue ? parseFloat(d.key, 10) : d.key)\n : unique(filteredData\n .sort((a, b) => this[`_${axis}Sort`] ? this[`_${axis}Sort`](a.data, b.data) : a[axis] - b[axis])\n .map(d => d[axis]), d => `${d}`);\n\n if (this._discrete !== axis.charAt(0) && this._confidence) {\n if (this._confidence[0]) myData = myData.concat(localData.map(d => d.lci));\n if (this._confidence[1]) myData = myData.concat(localData.map(d => d.hci));\n }\n\n return myData;\n }\n\n const xData = getAxisValues.bind(this)(\"x\");\n const x2Data = getAxisValues.bind(this)(\"x2\");\n const yData = getAxisValues.bind(this)(\"y\");\n const y2Data = getAxisValues.bind(this)(\"y2\");\n\n let discreteKeys, domains, stackData, stackKeys;\n if (this._stacked) {\n\n const stackedData = axisData.filter(d => [\"Area\", \"Bar\"].includes(d.shape));\n\n const groupValues = nest()\n .key(d => d.group)\n .entries(stackedData)\n .reduce((obj, d) => {\n if (!obj[d.key]) obj[d.key] = 0;\n obj[d.key] += sum(d.values, dd => dd[opp]);\n return obj;\n }, {});\n\n axisData.sort((a, b) => {\n if (this[`_${this._discrete}Sort`]) return this[`_${this._discrete}Sort`](a.data, b.data);\n const a1 = a[this._discrete], b1 = b[this._discrete];\n if (a1 - b1 !== 0) return a1 - b1;\n if (a.group !== b.group) return groupValues[b.group] - groupValues[a.group];\n return b[opp] - a[opp];\n });\n\n discreteKeys = Array.from(new Set(axisData.map(d => d.discrete)));\n stackKeys = Array.from(new Set(axisData.map(d => d.id)));\n\n stackData = nest()\n .key(d => d.discrete)\n .entries(axisData)\n .map(d => d.values);\n\n stackData.forEach(g => {\n const ids = Array.from(new Set(g.map(d => d.id)));\n if (ids.length < stackKeys.length) {\n stackKeys.forEach(k => {\n if (!ids.includes(k)) {\n const d = axisData.filter(d => d.id === k)[0];\n if (d.shape === \"Area\") {\n const group = stackGroup(d.data, d.i);\n const fillerPoint = {\n __d3plus__: true,\n data: d.data,\n discrete: d.shape === \"Bar\" ? `${g[0][this._discrete]}_${group}` : `${g[0][this._discrete]}`,\n group,\n id: d.id,\n ids: k,\n shape: d.shape,\n [this._discrete]: g[0][this._discrete],\n [opp]: 0\n };\n data.push(fillerPoint);\n }\n }\n });\n }\n });\n\n if (this[`_${this._discrete}Sort`]) {\n data.sort((a, b) => this[`_${this._discrete}Sort`](a.data, b.data));\n }\n else {\n data.sort((a, b) => a[this._discrete] - b[this._discrete]);\n }\n\n const order = this._stackOrder;\n\n if (order instanceof Array) stackKeys.sort((a, b) => order.indexOf(a) - order.indexOf(b));\n else if (order === d3Shape.stackOrderNone) stackKeys.sort((a, b) => a.localeCompare(b));\n\n stackData = d3Shape.stack()\n .keys(stackKeys)\n .offset(this._stackOffset)\n .order(order instanceof Array ? d3Shape.stackOrderNone : order)\n .value((group, key) => {\n const d = group.filter(g => g.id === key);\n return d.length ? d[0][opp] : 0;\n })(stackData);\n\n const discreteData = this._discrete === \"x\" ? xData : yData;\n\n domains = {\n [this._discrete]: this[`_${this._discrete}Time`] ? extent(discreteData) : discreteData,\n [opp]: [min(stackData.map(g => min(g.map(p => p[0])))), max(stackData.map(g => max(g.map(p => p[1]))))]\n };\n\n }\n else {\n\n const discrete = this._discrete || \"x\";\n\n if (this[`_${this._discrete}Sort`]) {\n axisData.sort((a, b) => this[`_${this._discrete}Sort`](a.data, b.data));\n }\n else {\n axisData.sort((a, b) => a[discrete] - b[discrete]);\n }\n\n domains = {\n x: !xTime && this._discrete === \"x\" || this._xSort ? xData : extent(xData),\n x2: !x2Time && this._discrete === \"x\" || this._x2Sort ? x2Data : extent(x2Data),\n y: !yTime && this._discrete === \"y\" || this._ySort ? yData : extent(yData),\n y2: !y2Time && this._discrete === \"y\" || this._y2Sort ? y2Data : extent(y2Data)\n };\n }\n\n /**\n * Determins default scale type and domain for a given axis.\n * @param {String} axis\n * @private\n */\n function domainScaleSetup(axis) {\n\n const scale = this[`_${axis}Time`] ? \"Time\" : this._discrete === axis || this[`_${axis}Sort`] ? \"Point\" : \"Linear\";\n\n const domain = this[`_${axis}Domain`] ? this[`_${axis}Domain`].slice() : domains[axis],\n domain2 = this[`_${axis}2Domain`] ? this[`_${axis}2Domain`].slice() : domains[`${axis}2`];\n\n if (scale !== \"Point\") {\n if (domain && domain[0] === void 0) domain[0] = domains[axis][0];\n if (domain && domain[1] === void 0) domain[1] = domains[axis][1];\n\n if (domain2 && domain2[0] === void 0) domain2[0] = domains[`${axis}2`][0];\n if (domain2 && domain2[1] === void 0) domain2[1] = domains[`${axis}2`][1];\n }\n\n return [domain, scale, domain2, scale];\n\n }\n\n const [xAutoDomain, xScale, x2AutoDomain, x2Scale] = domainScaleSetup.bind(this)(\"x\");\n const [yAutoDomain, yScale, y2AutoDomain, y2Scale] = domainScaleSetup.bind(this)(\"y\");\n\n const autoScale = (axis, fallback) => {\n const userScale = this[`_${axis}Config`].scale;\n if (userScale === \"auto\") {\n if (this._discrete === axis) return fallback;\n const values = axisData.map(d => d[axis]);\n return deviation(values) / mean(values) > 3 ? \"log\" : \"linear\";\n }\n return userScale || fallback;\n };\n\n const yConfigScale = this._yConfigScale = autoScale(\"y\", yScale).toLowerCase();\n const y2ConfigScale = this._y2ConfigScale = autoScale(\"y2\", y2Scale).toLowerCase();\n const xConfigScale = this._xConfigScale = autoScale(\"x\", xScale).toLowerCase();\n const x2ConfigScale = this._x2ConfigScale = autoScale(\"x2\", x2Scale).toLowerCase();\n\n domains = {x: xAutoDomain, x2: x2AutoDomain || xAutoDomain, y: yAutoDomain, y2: y2AutoDomain || yAutoDomain};\n Object.keys(domains)\n .forEach(axis => {\n if (this[`_${axis}ConfigScale`] === \"log\" && domains[axis].includes(0)) {\n if (min(domains[axis]) < 0) domains[axis][1] = max(data.map(d => d[axis]).filter(d => ![NaN, undefined, false].includes(d)));\n else domains[axis][0] = min(axisData.map(d => d[axis]).filter(d => ![NaN, undefined, false].includes(d)));\n }\n });\n\n opps.forEach(opp => {\n if (this[`_${opp}Config`].domain) {\n const d = this[`_${opp}Config`].domain;\n if (this._discrete === \"x\") d.reverse();\n domains[opp] = d;\n }\n else if (opp && this._baseline !== void 0) {\n const b = this._baseline;\n if (domains[opp] && domains[opp][0] > b) domains[opp][0] = b;\n else if (domains[opp] && domains[opp][1] < b) domains[opp][1] = b;\n }\n });\n\n let x = scales[`scale${xScale}`]().domain(domains.x).range(range(0, width + 1, width / (domains.x.length - 1))),\n x2 = scales[`scale${x2Scale}`]().domain(domains.x2).range(range(0, width + 1, width / (domains.x2.length - 1))),\n y = scales[`scale${yScale}`]().domain(domains.y.reverse()).range(range(0, height + 1, height / (domains.y.length - 1))),\n y2 = scales[`scale${y2Scale}`]().domain(domains.y2.reverse()).range(range(0, height + 1, height / (domains.y2.length - 1)));\n\n const shapeData = nest()\n .key(d => d.shape)\n .entries(data)\n .sort((a, b) => this._shapeSort(a.key, b.key));\n\n const oppScale = this._discrete === \"x\" ? yScale : xScale;\n if (oppScale !== \"Point\") {\n\n const allShapeData = nest()\n .key(d => d.shape)\n .entries(axisData);\n\n allShapeData.forEach(d => {\n if ([\"Bar\", \"Box\"].includes(d.key)) {\n discreteBuffer(this._discrete === \"x\" ? x : y, data, this._discrete);\n }\n if (this._buffer[d.key]) {\n const res = this._buffer[d.key].bind(this)({data: d.values, x, y, yScale: yConfigScale, xScale: xConfigScale, config: this._shapeConfig[d.key]});\n x = res[0];\n y = res[1];\n const res2 = this._buffer[d.key].bind(this)({data: d.values, x: x2, y: y2, yScale: y2ConfigScale, xScale: x2ConfigScale, x2: true, y2: true, config: this._shapeConfig[d.key]});\n x2 = res2[0];\n y2 = res2[1];\n }\n });\n\n }\n\n const xDomain = x.domain();\n const x2Domain = x2.domain();\n const yDomain = y.domain();\n const y2Domain = y2.domain();\n\n const defaultConfig = {\n barConfig: {\"stroke-width\": 0},\n gridSize: 0,\n labels: [],\n title: false,\n tickSize: 0\n };\n\n const defaultX2Config = x2Exists ? {data: x2Data} : defaultConfig;\n const defaultY2Config = y2Exists ? {data: y2Data} : defaultConfig;\n const showX = this._discrete === \"x\" && this._width > this._discreteCutoff || this._width > this._xCutoff;\n const showY = this._discrete === \"y\" && this._height > this._discreteCutoff || this._height > this._yCutoff;\n\n const yC = {\n data: yData,\n locale: this._locale,\n rounding: this._yDomain ? \"none\" : \"outside\",\n scalePadding: y.padding ? y.padding() : 0\n };\n if (!showX) {\n yC.barConfig = {stroke: \"transparent\"};\n yC.tickSize = 0;\n yC.shapeConfig = {\n labelBounds: (d, i) => {\n const {width, y} = d.labelBounds;\n const height = this._height / 2;\n const x = i ? -height : 0;\n return {x, y, width, height};\n },\n labelConfig: {\n padding: 0,\n rotate: 0\n },\n labelRotation: false\n };\n }\n\n const testGroup = elem(\"g.d3plus-plot-test\", {enter: {opacity: 0}, parent: this._select});\n \n /**\n * Hides an axis' ticks and labels if they all exist as labels for the data to be displayed,\n * primarily occuring in simple BarChart visualizations where the both the x-axis ticks and\n * the Bar rectangles would be displaying the same text.\n */\n\n // generates an Array of String labels using the current label function for Bar shapes\n const barConfig = configPrep.bind(this)(this._shapeConfig, \"shape\", \"Bar\");\n const barLabelFunction = barConfig.label !== undefined\n ? typeof barConfig.label === \"function\" ? barConfig.label : constant(barConfig.label)\n : this._drawLabel;\n const barLabels = axisData.map(d => barLabelFunction(d.data, d.i)).filter(d => typeof d === \"number\" || d).map(String);\n\n // sets an axis' ticks to [] if the axis scale is \"Point\" (discrete) and every tick String\n // is also in the barLabels Array\n let x2Ticks = unique(axisData.map(d => d.x2));\n x2Ticks = x2Scale === \"Point\" && x2Ticks.every(t => barLabels.includes(`${t}`)) ? [] : null;\n let xTicks = unique(axisData.map(d => d.x));\n xTicks = xScale === \"Point\" && xTicks.every(t => barLabels.includes(`${t}`)) ? [] : null;\n let y2Ticks = unique(axisData.map(d => d.y2));\n y2Ticks = y2Scale === \"Point\" && y2Ticks.every(t => barLabels.includes(`${t}`)) ? [] : null;\n let yTicks = unique(axisData.map(d => d.y));\n yTicks = yScale === \"Point\" && yTicks.every(t => barLabels.includes(`${t}`)) ? [] : null;\n\n if (showY) {\n this._yTest\n .domain(yDomain)\n .height(height)\n .maxSize(width / 2)\n .range([undefined, undefined])\n .select(testGroup.node())\n .ticks(yTicks)\n .width(width)\n .config(yC)\n .config(this._yConfig)\n .scale(yConfigScale)\n .render();\n }\n\n let yBounds = this._yTest.outerBounds();\n let yWidth = yBounds.width ? yBounds.width + this._yTest.padding() : undefined;\n\n if (y2Exists) {\n this._y2Test\n .domain(y2Domain)\n .height(height)\n .range([undefined, undefined])\n .select(testGroup.node())\n .ticks(y2Ticks)\n .width(width)\n .config(yC)\n .config(defaultY2Config)\n .config(this._y2Config)\n .scale(y2ConfigScale)\n .render();\n }\n\n let y2Bounds = this._y2Test.outerBounds();\n let y2Width = y2Bounds.width ? y2Bounds.width + this._y2Test.padding() : undefined;\n const xC = {\n data: xData,\n locale: this._locale,\n rounding: this._xDomain ? \"none\" : \"outside\",\n scalePadding: x.padding ? x.padding() : 0\n };\n if (!showY) {\n xC.barConfig = {stroke: \"transparent\"};\n xC.tickSize = 0;\n xC.shapeConfig = {\n labelBounds: (d, i) => {\n const {height, y} = d.labelBounds;\n const width = this._width / 2;\n const x = i ? -width : 0;\n return {x, y, width, height};\n },\n labelConfig: {\n padding: 0,\n rotate: 0,\n textAnchor: d => d.id === xTicks[0] ? \"start\" : \"end\"\n },\n labelRotation: false\n };\n }\n\n let xRangeMax = undefined;\n\n if (showX) {\n this._xTest\n .domain(xDomain)\n .height(height)\n .maxSize(height / 2)\n .range([undefined, xRangeMax])\n .select(testGroup.node())\n .ticks(xTicks)\n .width(width)\n .config(xC)\n .config(this._xConfig)\n .scale(xConfigScale)\n .render();\n }\n\n let largestLabel, labelWidths = [];\n const showLineLabels = this._lineLabels && !y2Exists;\n if (showLineLabels) {\n\n const labelData = data.filter(d => {\n if (d.shape !== \"Line\") return false;\n return typeof this._lineLabels === \"function\" ? this._lineLabels(d.data, d.i) : true;\n });\n\n const lineData = nest()\n .key(d => d.id)\n .entries(labelData);\n\n if (lineData.length) {\n\n const userConfig = configPrep.bind(this)(this._shapeConfig, \"shape\", \"Line\");\n testLineShape.config(userConfig);\n const lineLabelConfig = testLineShape.labelConfig();\n const fontColorAccessor = lineLabelConfig.fontColor !== undefined ? lineLabelConfig.fontColor : testTextBox.fontColor();\n const fontSizeAccessor = lineLabelConfig.fontSize !== undefined ? lineLabelConfig.fontSize : testTextBox.fontSize();\n const fontWeightAccessor = lineLabelConfig.fontWeight !== undefined ? lineLabelConfig.fontWeight : testTextBox.fontWeight();\n const fontFamilyAccessor = lineLabelConfig.fontFamily !== undefined ? lineLabelConfig.fontFamily : testTextBox.fontFamily();\n const paddingAccessor = lineLabelConfig.padding !== undefined ? lineLabelConfig.padding : testTextBox.padding();\n const labelFunction = userConfig.label || this._drawLabel;\n\n const xEstimate = d => {\n if (xConfigScale === \"log\" && d === 0) d = xDomain[0] < 0 ? this._xTest._d3Scale.domain()[1] : this._xTest._d3Scale.domain()[0];\n return this._xTest._getPosition.bind(this._xTest)(d);\n };\n\n const yEstimate = d => {\n if (yConfigScale === \"log\" && d === 0) d = yDomain[0] < 0 ? this._yTest._d3Scale.domain()[1] : this._yTest._d3Scale.domain()[0];\n return this._yTest._getPosition.bind(this._yTest)(d);\n };\n\n labelWidths = lineData\n .map(group => {\n\n let d = group.values[group.values.length - 1];\n let i;\n while (d.__d3plus__ && d.data) {\n d = d.data;\n i = d.i;\n }\n const label = typeof labelFunction === \"function\" ? labelFunction(d, i) : labelFunction;\n\n const fontColor = typeof fontColorAccessor === \"function\" ? fontColorAccessor(d, i) : fontColorAccessor;\n const fontSize = typeof fontSizeAccessor === \"function\" ? fontSizeAccessor(d, i) : fontSizeAccessor;\n const fontWeight = typeof fontWeightAccessor === \"function\" ? fontWeightAccessor(d, i) : fontWeightAccessor;\n let fontFamily = typeof fontFamilyAccessor === \"function\" ? fontFamilyAccessor(d, i) : fontFamilyAccessor;\n if (fontFamily instanceof Array) fontFamily = fontFamily.map(f => `'${f}'`).join(\", \");\n const labelPadding = typeof paddingAccessor === \"function\" ? paddingAccessor(d, i) : paddingAccessor;\n\n const labelWidth = textWidth(label, {\n \"font-size\": fontSize,\n \"font-family\": fontFamily,\n \"font-weight\": fontWeight\n });\n\n const coords = group.values.map(d => [xEstimate(d.x), yEstimate(d.y)]);\n const myMaxX = max(group.values.map(d => xEstimate(d.x)));\n const labelY = group.values.find(d => xEstimate(d.x) === myMaxX).y;\n return {\n id: group.key,\n labelWidth: labelWidth + labelPadding * 2,\n spaceNeeded: labelWidth + labelPadding * 4,\n value: labelY,\n yEstimate: yEstimate(labelY),\n padding: labelPadding,\n fontSize,\n fontColor,\n maxX: myMaxX,\n xValue: max(group.values, d => d.x),\n coords\n };\n\n })\n .sort((a, b) => yDomain[1] > yDomain[0] ? a.value - b.value : b.value - a.value)\n .filter((d, i, arr) => {\n const {fontSize, id, labelWidth, maxX, yEstimate} = d;\n const closeLabels = arr\n .filter(l => \n l.id !== id && l.coords.some(c => \n (c[0] > maxX || (c[0] === maxX && l.maxX !== maxX)) && \n c[0] <= (maxX + labelWidth) && \n c[1] <= (yEstimate + fontSize * 0.75) && \n c[1] >= (yEstimate - fontSize * 0.75)\n )\n );\n return closeLabels.length === 0;\n\n });\n\n const maxX = max(labelWidths, d => d.maxX);\n largestLabel = max(labelWidths.map(d => d.labelWidth));\n const spaceNeeded = maxX === this._xTest._getRange.bind(this._xTest)()[1] \n ? max(labelWidths.filter(d => d.maxX === maxX), d => d.spaceNeeded)\n : 0;\n if (spaceNeeded) {\n const labelSpace = min([spaceNeeded, width / 4]);\n xRangeMax = width - labelSpace - this._margin.right;\n }\n }\n }\n\n if (showX && xRangeMax) {\n this._xTest\n .domain(xDomain)\n .height(height)\n .maxSize(height / 2)\n .range([undefined, xRangeMax])\n .select(testGroup.node())\n .ticks(xTicks)\n .width(width)\n .config(xC)\n .config(this._xConfig)\n .scale(xConfigScale)\n .render();\n }\n\n if (x2Exists) {\n this._x2Test\n .domain(x2Domain)\n .height(height)\n .range([undefined, xRangeMax])\n .select(testGroup.node())\n .ticks(x2Ticks)\n .width(width)\n .config(xC)\n .tickSize(0)\n .config(defaultX2Config)\n .config(this._x2Config)\n .scale(x2ConfigScale)\n .render();\n }\n\n const xTestRange = this._xTest._getRange();\n const x2TestRange = this._x2Test._getRange();\n\n const x2Bounds = this._x2Test.outerBounds();\n const x2Height = x2Exists ? x2Bounds.height + this._x2Test.padding() : 0;\n\n let xOffsetLeft = max([yWidth, xTestRange[0], x2TestRange[0]]);\n\n if (showX) {\n this._xTest\n .range([xOffsetLeft, undefined])\n .render();\n }\n\n const topOffset = showY ? this._yTest.shapeConfig().labelConfig.fontSize() / 2 : 0;\n\n let xOffsetRight = max([y2Width, width - xTestRange[1], width - x2TestRange[1]]);\n const xBounds = this._xTest.outerBounds();\n const xHeight = xBounds.height + (showY ? this._xTest.padding() : 0);\n\n this._padding.left += xOffsetLeft;\n this._padding.right += xOffsetRight;\n this._padding.bottom += xHeight;\n this._padding.top += x2Height + topOffset;\n\n super._draw(callback);\n\n const horizontalMargin = this._margin.left + this._margin.right;\n const verticalMargin = this._margin.top + this._margin.bottom;\n let yRange = [x2Height, height - (xHeight + topOffset + verticalMargin)];\n\n if (showY) {\n this._yTest\n .domain(yDomain)\n .height(height)\n .maxSize(width / 2)\n .range(yRange)\n .select(testGroup.node())\n .ticks(yTicks)\n .width(width)\n .config(yC)\n .config(this._yConfig)\n .scale(yConfigScale)\n .render();\n }\n\n yBounds = this._yTest.outerBounds();\n yWidth = yBounds.width ? yBounds.width + this._yTest.padding() : undefined;\n xOffsetLeft = max([yWidth, xTestRange[0], x2TestRange[0]]);\n\n if (y2Exists) {\n this._y2Test\n .config(yC)\n .domain(y2Domain)\n .gridSize(0)\n .height(height)\n .range(yRange)\n .select(testGroup.node())\n .width(width - max([0, xOffsetRight - y2Width]))\n .title(false)\n .config(this._y2Config)\n .config(defaultY2Config)\n .scale(y2ConfigScale)\n .render();\n }\n\n y2Bounds = this._y2Test.outerBounds();\n y2Width = y2Bounds.width ? y2Bounds.width + this._y2Test.padding() : undefined;\n xOffsetRight = max([0, y2Width, width - xTestRange[1], width - x2TestRange[1]]);\n const xRange = [xOffsetLeft, width - (xOffsetRight + horizontalMargin)];\n\n const rectGroup = elem(\"g.d3plus-plot-background\", {parent, transition});\n\n const transform = `translate(${this._margin.left}, ${this._margin.top + x2Height + topOffset})`;\n const x2Transform = `translate(${this._margin.left}, ${this._margin.top + topOffset})`;\n\n const xGroup = showX && elem(\"g.d3plus-plot-x-axis\", {parent, transition, enter: {transform}, update: {transform}});\n const x2Group = x2Exists && elem(\"g.d3plus-plot-x2-axis\", {parent, transition, enter: {transform: x2Transform}, update: {transform: x2Transform}});\n\n const xTrans = xOffsetLeft > yWidth ? xOffsetLeft - yWidth : 0;\n const yTransform = `translate(${this._margin.left + xTrans}, ${this._margin.top + topOffset})`;\n const yGroup = showY && elem(\"g.d3plus-plot-y-axis\", {parent, transition, enter: {transform: yTransform}, update: {transform: yTransform}});\n\n const y2Transform = `translate(-${this._margin.right}, ${this._margin.top + topOffset})`;\n const y2Group = y2Exists && elem(\"g.d3plus-plot-y2-axis\", {parent, transition, enter: {transform: y2Transform}, update: {transform: y2Transform}});\n \n this._xAxis\n .domain(xDomain)\n .height(height - (x2Height + topOffset + verticalMargin))\n .maxSize(height / 2)\n .range(xRange)\n .select(showX ? xGroup.node() : undefined)\n .ticks(xTicks)\n .width(width)\n .config(xC)\n .config(this._xConfig)\n .scale(xConfigScale)\n .render();\n\n if (x2Exists) {\n this._x2Axis\n .domain(x2Domain)\n .height(height - (xHeight + topOffset + verticalMargin))\n .range(xRange)\n .select(x2Group.node())\n .ticks(x2Ticks)\n .width(width)\n .config(xC)\n .config(defaultX2Config)\n .config(this._x2Config)\n .scale(x2ConfigScale)\n .render();\n }\n\n this._xFunc = x = (d, x) => {\n if (x === \"x2\") {\n if (x2ConfigScale === \"log\" && d === 0) d = x2Domain[0] < 0 ? this._x2Axis._d3Scale.domain()[1] : this._x2Axis._d3Scale.domain()[0];\n return this._x2Axis._getPosition.bind(this._x2Axis)(d);\n }\n else {\n if (xConfigScale === \"log\" && d === 0) d = xDomain[0] < 0 ? this._xAxis._d3Scale.domain()[1] : this._xAxis._d3Scale.domain()[0];\n return this._xAxis._getPosition.bind(this._xAxis)(d);\n }\n };\n\n yRange = [this._xAxis.outerBounds().y + x2Height, height - (xHeight + topOffset + verticalMargin)];\n\n this._yAxis\n .domain(yDomain)\n .height(height)\n .maxSize(width / 2)\n .range(yRange)\n .select(showY ? yGroup.node() : undefined)\n .ticks(yTicks)\n .width(xRange[xRange.length - 1])\n .config(yC)\n .config(this._yConfig)\n .scale(yConfigScale)\n .render();\n\n if (y2Exists) {\n this._y2Axis\n .config(yC)\n .domain(y2Exists ? y2Domain : yDomain)\n .gridSize(0)\n .height(height)\n .range(yRange)\n .select(y2Group.node())\n .width(width - max([0, xOffsetRight - y2Width]))\n .title(false)\n .config(this._y2Config)\n .config(defaultY2Config)\n .scale(y2ConfigScale)\n .render();\n }\n\n let labelPositions = {};\n if (labelWidths) {\n\n nest()\n .key(d => d.xValue)\n .entries(labelWidths)\n .forEach(({values}) => {\n\n const minFontSize = max(values.map(d => d.fontSize));\n const yBuckets = range(yRange[0], yRange[1], minFontSize).reverse();\n const bumpLimit = (yRange[1] - yRange[0]) / 8;\n \n /** */\n function bumpPrevious(d, i, arr) {\n if (!d.defaultY) d.defaultY = this._yAxis._getPosition(d.value);\n if (i) {\n const prev = arr[i - 1];\n const {fontSize, padding} = d;\n const y = d.newY || d.defaultY;\n const prevY = prev.newY || prev.defaultY;\n if (y - fontSize / 2 - padding < prevY) {\n const newY = yBuckets.find(n => n < prevY);\n const change = d.defaultY - newY;\n if (change < bumpLimit) {\n prev.newY = newY;\n if (i) bumpPrevious(prev, i - 1, arr);\n }\n }\n }\n }\n \n values.forEach(bumpPrevious.bind(this));\n\n });\n\n labelPositions = labelWidths.reduce((obj, d) => {\n if (d.newY) obj[d.id] = d.newY;\n return obj;\n }, {});\n\n }\n\n this._yFunc = y = (d, y) => {\n if (y === \"y2\") {\n if (y2ConfigScale === \"log\" && d === 0) d = y2Domain[1] < 0 ? this._y2Axis._d3ScaleNegative.domain()[0] : this._y2Axis._d3Scale.domain()[1];\n return this._y2Axis._getPosition.bind(this._y2Axis)(d) - x2Height;\n }\n else {\n if (yConfigScale === \"log\" && d === 0) d = yDomain[1] < 0 ? this._yAxis._d3ScaleNegative.domain()[0] : this._yAxis._d3Scale.domain()[1];\n return this._yAxis._getPosition.bind(this._yAxis)(d) - x2Height;\n }\n };\n\n new shapes.Rect()\n .data([{}])\n .select(rectGroup.node())\n .x(xRange[0] + (xRange[1] - xRange[0]) / 2)\n .width(xRange[1] - xRange[0])\n .y(this._margin.top + topOffset + yRange[0] + (yRange[1] - yRange[0]) / 2)\n .height(yRange[1] - yRange[0])\n .config(this._backgroundConfig)\n .render();\n\n const labelConnectors = labelWidths.filter(d => d.newY !== undefined);\n if (labelConnectors.length) {\n\n const connectorGroup = elem(\"g.d3plus-plot-connectors\", {parent, transition, enter: {transform}, update: {transform}}).node();\n const data = labelConnectors.map(d => (assign({x: this._xAxis._getPosition.bind(this._xAxis)(d.xValue), y: d.defaultY}, d)))\n .concat(labelConnectors.map(d => (assign({x: this._xAxis._getPosition.bind(this._xAxis)(d.xValue) + d.padding - 1, y: d.newY || d.defaultY}, d))));\n \n new shapes.Line()\n .config({\n data,\n stroke: d => d.fontColor,\n x: d => d.x,\n y: d => d.y\n })\n .config(this._labelConnectorConfig)\n .select(connectorGroup)\n .render();\n \n }\n\n const annotationGroupBack = elem(\"g.d3plus-plot-annotations\", {parent, transition, enter: {transform}, update: {transform}}).node();\n const shapeGroup = elem(\"g.d3plus-plot-shapes\", {parent, transition, enter: {transform}, update: {transform}}).node();\n const annotationGroupFront = elem(\"g.d3plus-plot-annotations-front\", {parent, transition, enter: {transform}, update: {transform}}).node();\n\n Object.keys(this._previousAnnotations).forEach(layer => {\n\n const group = layer === \"front\" ? annotationGroupFront : annotationGroupBack;\n\n const annotationData = this._annotations.filter(d => (layer === \"back\" && !d.layer) || d.layer === layer);\n const annotationShapes = annotationData.map(d => d.shape);\n annotationData.forEach(annotation => {\n new shapes[annotation.shape]()\n .config(annotation)\n .config({\n x: d => d.x2 ? x(d.x2, \"x2\") : x(d.x),\n x0: this._discrete === \"x\" ? d => d.x2 ? x(d.x2, \"x2\") : x(d.x) : x(domains.x[0]),\n x1: this._discrete === \"x\" ? null : d => d.x2 ? x(d.x2, \"x2\") : x(d.x),\n y: d => d.y2 ? y(d.y2, \"y2\") : y(d.y),\n y0: this._discrete === \"y\" ? d => d.y2 ? y(d.y2, \"y2\") : y(d.y) : y(domains.y[1]) - yOffset,\n y1: this._discrete === \"y\" ? null : d => d.y2 ? y(d.y2, \"y2\") : y(d.y) - yOffset\n })\n .select(group)\n .render();\n });\n \n const exitAnnotations = this._previousAnnotations[layer].filter(d => !annotationShapes.includes(d));\n \n exitAnnotations.forEach(shape => {\n new shapes[shape]()\n .data([])\n .select(group)\n .render();\n });\n \n this._previousAnnotations[layer] = annotationShapes;\n\n });\n\n let yOffset = this._xAxis.barConfig()[\"stroke-width\"];\n if (yOffset) yOffset /= 2;\n\n const discrete = this._discrete || \"x\";\n \n const shapeConfig = {\n discrete: this._discrete,\n duration: this._duration,\n label: d => this._drawLabel(d.data, d.i),\n select: shapeGroup,\n x: d => d.x2 !== undefined ? x(d.x2, \"x2\") : x(d.x),\n x0: discrete === \"x\" ? d => d.x2 ? x(d.x2, \"x2\") : x(d.x) : x(typeof this._baseline === \"number\" ? this._baseline : domains.x[0]),\n x1: discrete === \"x\" ? null : d => d.x2 ? x(d.x2, \"x2\") : x(d.x),\n y: d => d.y2 !== undefined ? y(d.y2, \"y2\") : y(d.y),\n y0: discrete === \"y\" ? d => d.y2 ? y(d.y2, \"y2\") : y(d.y) : y(typeof this._baseline === \"number\" ? this._baseline : domains.y[1]) - yOffset,\n y1: discrete === \"y\" ? null : d => d.y2 ? y(d.y2, \"y2\") : y(d.y) - yOffset\n };\n\n const events = Object.keys(this._on);\n shapeData.forEach(d => {\n\n const shapeConfigInner = Object.assign({}, shapeConfig);\n if (this._stacked && [\"Area\", \"Bar\"].includes(d.key)) {\n const scale = opp === \"x\" ? x : y;\n shapeConfigInner[`${opp}`] = shapeConfigInner[`${opp}0`] = d => {\n const dataIndex = stackKeys.indexOf(d.id),\n discreteIndex = discreteKeys.indexOf(d.discrete);\n const scaleIndex = d[opp] < 0 ? 1 : 0;\n return dataIndex >= 0 ? scale(stackData[dataIndex][discreteIndex][scaleIndex]) : scale(domains[opp][opp === \"x\" ? 0 : 1]);\n }; shapeConfigInner[`${opp}1`] = d => {\n const dataIndex = stackKeys.indexOf(d.id),\n discreteIndex = discreteKeys.indexOf(d.discrete);\n const scaleIndex = d[opp] < 0 ? 0 : 1;\n return dataIndex >= 0 ? scale(stackData[dataIndex][discreteIndex][scaleIndex]) : scale(domains[opp][opp === \"x\" ? 0 : 1]);\n };\n }\n\n const s = new shapes[d.key]().config(shapeConfigInner).data(d.values);\n\n if (d.key === \"Bar\") {\n\n let space;\n const scale = this._discrete === \"x\" ? x : y;\n const scaleType = this._discrete === \"x\" ? xScale : yScale;\n const vals = this._discrete === \"x\" ? xDomain : yDomain;\n const range = this._discrete === \"x\" ? xRange : yRange;\n if (scaleType !== \"Point\" && vals.length === 2) {\n const allPositions = Array.from(new Set(d.values.map(d => scale(d[this._discrete]))));\n allPositions.unshift(range[0] - allPositions[0] - range[0]);\n allPositions.push(range[1] + range[1] - allPositions[allPositions.length - 1]);\n space = allPositions.reduce((n, d, i, arr) => {\n if (i) {\n const dist = Math.abs(d - arr[i - 1]);\n if (dist < n) n = dist;\n }\n return n;\n }, Infinity);\n }\n else if (vals.length > 1) space = scale(vals[1]) - scale(vals[0]);\n else space = range[range.length - 1] - range[0];\n if (this._groupPadding < space) space -= this._groupPadding;\n\n let barSize = space || 1;\n \n const groups = nest()\n .key(d => d[this._discrete])\n .key(d => d.group)\n .entries(d.values);\n\n const ids = merge(groups.map(d => d.values.map(v => v.key)));\n const uniqueIds = Array.from(new Set(ids));\n\n if (max(groups.map(d => d.values.length)) === 1) {\n s[this._discrete]((d, i) => shapeConfig[this._discrete](d, i));\n }\n else {\n\n barSize = (barSize - this._barPadding * uniqueIds.length - 1) / uniqueIds.length;\n\n const offset = space / 2 - barSize / 2;\n\n const xMod = scales.scaleLinear()\n .domain([0, uniqueIds.length - 1])\n .range([-offset, offset]);\n\n s[this._discrete]((d, i) => shapeConfig[this._discrete](d, i) + xMod(uniqueIds.indexOf(d.group)));\n\n }\n\n s.width(barSize);\n s.height(barSize);\n\n }\n else if (d.key === \"Line\") {\n\n s.duration(width * 1.5);\n\n if (this._confidence) {\n const areaConfig = Object.assign({}, shapeConfig);\n const discrete = this._discrete || \"x\";\n const key = discrete === \"x\" ? \"y\" : \"x\";\n const scaleFunction = discrete === \"x\" ? y : x;\n areaConfig[`${key}0`] = d => scaleFunction(this._confidence[0] ? d.lci : d[key]);\n areaConfig[`${key}1`] = d => scaleFunction(this._confidence[1] ? d.hci : d[key]);\n\n const area = new shapes.Area().config(areaConfig).data(d.values);\n const confidenceConfig = Object.assign(this._shapeConfig, this._confidenceConfig);\n\n area\n .config(assign(configPrep.bind(this)(confidenceConfig, \"shape\", \"Line\"), configPrep.bind(this)(confidenceConfig, \"shape\", \"Area\")))\n .render();\n\n this._shapes.push(area);\n }\n \n s.config({\n discrete: shapeConfig.discrete || \"x\",\n label: showLineLabels ? (d, i) => {\n const visible = typeof this._lineLabels === \"function\" ? this._lineLabels(d.data, d.i) : true;\n if (!visible) return false;\n const labelData = labelWidths.find(l => l.id === d.id);\n if (labelData) {\n const yPos = labelData.newY || labelData.defaultY;\n const allLabels = labelWidths.filter(l => l.newY === yPos);\n if (allLabels.length > 1) return allLabels[0].id !== d.id ? false \n : `+${formatAbbreviate(allLabels.length, this._locale)} ${this._translate(\"more\")}`;\n return this._drawLabel(d, i);\n }\n return false;\n } : false,\n labelBounds: showLineLabels ? (d, i, s) => {\n const [firstX, firstY] = s.points[0];\n const [lastX, lastY] = s.points[s.points.length - 1];\n const height = this._height / 4;\n const mod = labelPositions[d.id] ? lastY - labelPositions[d.id] : 0;\n return {\n x: lastX - firstX,\n y: lastY - firstY - height / 2 - mod,\n width: largestLabel,\n height\n };\n } : false\n });\n\n }\n\n const classEvents = events.filter(e => e.includes(`.${d.key}`)),\n globalEvents = events.filter(e => !e.includes(\".\")),\n shapeEvents = events.filter(e => e.includes(\".shape\"));\n for (let e = 0; e < globalEvents.length; e++) s.on(globalEvents[e], (d, i, x, event) => this._on[globalEvents[e]](d.data, d.i, x, event));\n for (let e = 0; e < shapeEvents.length; e++) s.on(shapeEvents[e], (d, i, x, event) => this._on[shapeEvents[e]](d.data, d.i, x, event));\n for (let e = 0; e < classEvents.length; e++) s.on(classEvents[e], (d, i, x, event) => this._on[classEvents[e]](d.data, d.i, x, event));\n\n const userConfig = configPrep.bind(this)(this._shapeConfig, \"shape\", d.key);\n if (this._shapeConfig.duration === undefined) delete userConfig.duration;\n s.config(userConfig).render();\n\n this._shapes.push(s);\n\n if (d.key === \"Line\") {\n const markers = new shapes.Circle()\n .data(this._lineMarkers ? d.values : [])\n .config(shapeConfig)\n .config(this._lineMarkerConfig)\n .id(d => `${d.id}_${d.discrete}`);\n\n for (let e = 0; e < globalEvents.length; e++) markers.on(globalEvents[e], (d, i, x, event) => this._on[globalEvents[e]](d.data, d.i, x, event));\n for (let e = 0; e < shapeEvents.length; e++) markers.on(shapeEvents[e], (d, i, x, event) => this._on[shapeEvents[e]](d.data, d.i, x, event));\n for (let e = 0; e < classEvents.length; e++) markers.on(classEvents[e], (d, i, x, event) => this._on[classEvents[e]](d.data, d.i, x, event));\n\n markers.render();\n this._shapes.push(markers);\n }\n\n });\n\n const dataShapes = shapeData.map(d => d.key);\n if (dataShapes.includes(\"Line\")) {\n if (this._confidence) dataShapes.push(\"Area\");\n if (this._lineMarkers) dataShapes.push(\"Circle\");\n }\n const exitShapes = this._previousShapes.filter(d => !dataShapes.includes(d));\n\n exitShapes.forEach(shape => {\n new shapes[shape]()\n .config(shapeConfig)\n .data([])\n .render();\n });\n\n this._previousShapes = dataShapes;\n\n return this;\n\n }\n\n /**\n @memberof Plot\n @desc Allows drawing custom shapes to be used as annotations in the provided x/y plot. This method accepts custom config objects for the [Shape](http://d3plus.org/docs/#Shape) class, either a single config object or an array of config objects. Each config object requires an additional parameter, the \"shape\", which denotes which [Shape](http://d3plus.org/docs/#Shape) sub-class to use ([Rect](http://d3plus.org/docs/#Rect), [Line](http://d3plus.org/docs/#Line), etc).\n\nAdditionally, each config object can also contain an optional \"layer\" key, which defines whether the annotations will be displayed in \"front\" or in \"back\" of the primary visualization shapes. This value defaults to \"back\" if not present.\n @param {Array|Object} *annotations* = []\n @chainable\n */\n annotations(_) {\n return arguments.length ? (this._annotations = _ instanceof Array ? _ : [_], this) : this._annotations;\n }\n\n /**\n @memberof Plot\n @desc Determines whether the x and y axes should have their scales persist while users filter the data, the timeline being the prime example (set this to `true` to make the axes stay consistent when the timeline changes).\n @param {Boolean} [*value* = false]\n @chainable\n */\n axisPersist(_) {\n return arguments.length ? (this._axisPersist = _, this) : this._axisPersist;\n }\n\n /**\n @memberof Plot\n @desc A d3plus-shape configuration Object used for styling the background rectangle of the inner x/y plot (behind all of the shapes and gridlines).\n @param {Object} [*value*]\n @chainable\n */\n backgroundConfig(_) {\n return arguments.length ? (this._backgroundConfig = assign(this._backgroundConfig, _), this) : this._backgroundConfig;\n }\n\n /**\n @memberof Plot\n @desc Sets the pixel space between each bar in a group of bars.\n @param {Number} *value* = 0\n @chainable\n */\n barPadding(_) {\n return arguments.length ? (this._barPadding = _, this) : this._barPadding;\n }\n\n /**\n @memberof Plot\n @desc Sets the baseline for the x/y plot. If *value* is not specified, returns the current baseline.\n @param {Number} *value*\n @chainable\n */\n baseline(_) {\n return arguments.length ? (this._baseline = _, this) : this._baseline;\n }\n\n /**\n @memberof Plot\n @desc Determines whether or not to add additional padding at the ends of x or y scales. The most commone use for this is in Scatter Plots, so that the shapes do not appear directly on the axis itself. The value provided can either be `true` or `false` to toggle the behavior for all shape types, or a keyed Object for each shape type (ie. `{Bar: false, Circle: true, Line: false}`).\n @param {Object|Boolean} [*value*]\n @chainable\n */\n buffer(_) {\n if (arguments.length) {\n if (!_) this._buffer = {};\n else if (_ === true) this._buffer = defaultBuffers;\n else {\n this._buffer = assign({}, this._buffer, _);\n for (let key in this._buffer) {\n if (this._buffer[key] === true) this._buffer[key] = defaultBuffers[key];\n }\n }\n return this;\n }\n return this._buffer;\n }\n\n /**\n @memberof Plot\n @desc Sets the confidence to the specified array of lower and upper bounds.\n @param {String[]|Function[]} *value*\n @chainable\n @example <caption>Can be called with accessor functions or static keys:</caption>\n var data = {id: \"alpha\", value: 10, lci: 9, hci: 11};\n ...\n // Accessor functions\n .confidence([function(d) { return d.lci }, function(d) { return d.hci }])\n\n // Or static keys\n .confidence([\"lci\", \"hci\"])\n */\n confidence(_) {\n if (arguments.length && _ instanceof Array) {\n this._confidence = [];\n const lower = _[0];\n this._confidence[0] = typeof lower === \"function\" || !lower ? lower : accessor(lower);\n const upper = _[1];\n this._confidence[1] = typeof upper === \"function\" || !upper ? upper : accessor(upper);\n\n return this;\n }\n else return this._confidence;\n }\n\n /**\n @memberof Plot\n @desc If *value* is specified, sets the config method for each shape rendered as a confidence interval and returns the current class instance.\n @param {Object} [*value*]\n @chainable\n */\n confidenceConfig(_) {\n return arguments.length ? (this._confidenceConfig = assign(this._confidenceConfig, _), this) : this._confidenceConfig;\n }\n\n /**\n @memberof Plot\n @desc Sets the discrete axis to the specified string. If *value* is not specified, returns the current discrete axis.\n @param {String} *value*\n @chainable\n */\n discrete(_) {\n return arguments.length ? (this._discrete = _, this) : this._discrete;\n }\n\n /**\n @memberof Plot\n @desc When the width or height of the chart is less than or equal to this pixel value, the discrete axis will not be shown. This helps produce slick sparklines. Set this value to `0` to disable the behavior entirely.\n @param {Number} *value*\n @chainable\n */\n discreteCutoff(_) {\n return arguments.length ? (this._discreteCutoff = _, this) : this._discreteCutoff;\n }\n\n /**\n @memberof Plot\n @desc Sets the pixel space between groups of bars.\n @param {Number} [*value* = 5]\n @chainable\n */\n groupPadding(_) {\n return arguments.length ? (this._groupPadding = _, this) : this._groupPadding;\n }\n\n /**\n @memberof Plot\n @desc The d3plus-shape config used on the Line shapes created to connect lineLabels to the end of their associated Line path.\n @param {Object} [*value*]\n @chainable\n */\n labelConnectorConfig(_) {\n return arguments.length ? (this._labelConnectorConfig = assign(this._labelConnectorConfig, _), this) : this._labelConnectorConfig;\n }\n\n /**\n @memberof Viz\n @desc The behavior to be used when calculating the position and size of each shape's label(s). The value passed can either be the _String_ name of the behavior to be used for all shapes, or an accessor _Function_ that will be provided each data point and will be expected to return the behavior to be used for that data point. The availability and options for this method depend on the default logic for each Shape. As an example, the values \"outside\" or \"inside\" can be set for Bar shapes, whose \"auto\" default will calculate the best position dynamically based on the available space.\n @param {Function|String} [*value* = \"auto\"]\n @chainable\n */\n labelPosition(_) {\n return arguments.length ? (this._labelPosition = typeof _ === \"function\" ? _ : constant(_), this) : this._labelPosition;\n }\n\n /**\n @memberof Plot\n @desc Draws labels on the right side of any Line shapes that are drawn on the plot.\n @param {Boolean|Function} [*value* = false]\n @chainable\n */\n lineLabels(_) {\n return arguments.length ? (this._lineLabels = _, this) : this._lineLabels;\n }\n\n /**\n @memberof Plot\n @desc Shape config for the Circle shapes drawn by the lineMarkers method.\n @param {Object} *value*\n @chainable\n */\n lineMarkerConfig(_) {\n return arguments.length ? (this._lineMarkerConfig = assign(this._lineMarkerConfig, _), this) : this._lineMarkerConfig;\n }\n\n /**\n @memberof Plot\n @desc Draws circle markers on each vertex of a Line.\n @param {Boolean} [*value* = false]\n @chainable\n */\n lineMarkers(_) {\n return arguments.length ? (this._lineMarkers = _, this) : this._lineMarkers;\n }\n\n /**\n @memberof Plot\n @desc A JavaScript [sort comparator function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort) that receives each shape Class (ie. \"Circle\", \"Line\", etc) as it's comparator arguments. Shapes are drawn in groups based on their type, so you are defining the layering order for all shapes of said type.\n @param {Function} *value*\n @chainable\n */\n shapeSort(_) {\n return arguments.length ? (this._shapeSort = _, this) : this._shapeSort;\n }\n\n /**\n @memberof Plot\n @desc Sets the size of bubbles to the given Number, data key, or function.\n @param {Function|Number|String} *value* = 10\n @chainable\n */\n size(_) {\n return arguments.length ? (this._size = typeof _ === \"function\" || !_ ? _ : accessor(_), this) : this._size;\n }\n\n /**\n @memberof Plot\n @desc Sets the size scale maximum to the specified number.\n @param {Number} *value* = 20\n @chainable\n */\n sizeMax(_) {\n return arguments.length ? (this._sizeMax = _, this) : this._sizeMax;\n }\n\n /**\n @memberof Plot\n @desc Sets the size scale minimum to the specified number.\n @param {Number} *value* = 5\n @chainable\n */\n sizeMin(_) {\n return arguments.length ? (this._sizeMin = _, this) : this._sizeMin;\n }\n\n /**\n @memberof Plot\n @desc Sets the size scale to the specified string.\n @param {String} *value* = \"sqrt\"\n @chainable\n */\n sizeScale(_) {\n return arguments.length ? (this._sizeScale = _, this) : this._sizeScale;\n }\n\n /**\n @memberof Plot\n @desc If *value* is specified, toggles shape stacking. If *value* is not specified, returns the current stack value.\n @param {Boolean} *value* = false\n @chainable\n */\n stacked(_) {\n return arguments.length ? (this._stacked = _, this) : this._stacked;\n }\n\n /**\n @memberof Plot\n @desc Sets the stack offset. If *value* is not specified, returns the current stack offset function.\n @param {Function|String} *value* = \"descending\"\n @chainable\n */\n stackOffset(_) {\n return arguments.length ? (this._stackOffset = typeof _ === \"function\" ? _ : d3Shape[`stackOffset${_.charAt(0).toUpperCase() + _.slice(1)}`], this) : this._stackOffset;\n }\n\n /**\n @memberof Plot\n @desc Sets the stack order. If *value* is not specified, returns the current stack order function.\n @param {Function|String|Array} *value* = \"none\"\n @chainable\n */\n stackOrder(_) {\n if (arguments.length) {\n if (typeof _ === \"string\") this._stackOrder = _ === \"ascending\" ? stackOrderAscending : _ === \"descending\" ? stackOrderDescending : d3Shape[`stackOrder${_.charAt(0).toUpperCase() + _.slice(1)}`];\n else this._stackOrder = _;\n return this;\n }\n else return this._stackOrder;\n }\n\n /**\n @memberof Plot\n @desc Sets the x accessor to the specified function or number. If *value* is not specified, returns the current x accessor.\n @param {Function|Number} *value*\n @chainable\n */\n x(_) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._x = _;\n else {\n this._x = accessor(_);\n this._xKey = _;\n }\n return this;\n }\n else return this._x;\n }\n\n /**\n @memberof Plot\n @desc Sets the x2 accessor to the specified function or number. If *value* is not specified, returns the current x2 accessor.\n @param {Function|Number} *value*\n @chainable\n */\n x2(_) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._x2 = _;\n else {\n this._x2 = accessor(_);\n this._x2Key = _;\n }\n return this;\n }\n else return this._x2;\n }\n\n /**\n @memberof Plot\n @desc A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the x-axis. Includes additional functionality where passing \"auto\" as the value for the [scale](http://d3plus.org/docs/#Axis.scale) method will determine if the scale should be \"linear\" or \"log\" based on the provided data.\n @param {Object} *value*\n @chainable\n */\n xConfig(_) {\n return arguments.length ? (this._xConfig = assign(this._xConfig, _), this) : this._xConfig;\n }\n\n /**\n @memberof Plot\n @desc When the width of the chart is less than or equal to this pixel value, and the x-axis is not the discrete axis, it will not be shown. This helps produce slick sparklines. Set this value to `0` to disable the behavior entirely.\n @param {Number} *value*\n @chainable\n */\n xCutoff(_) {\n return arguments.length ? (this._xCutoff = _, this) : this._xCutoff;\n }\n\n /**\n @memberof Plot\n @desc A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the secondary x-axis. Includes additional functionality where passing \"auto\" as the value for the [scale](http://d3plus.org/docs/#Axis.scale) method will determine if the scale should be \"linear\" or \"log\" based on the provided data.\n @param {Object} *value*\n @chainable\n */\n x2Config(_) {\n return arguments.length ? (this._x2Config = assign(this._x2Config, _), this) : this._x2Config;\n }\n\n /**\n @memberof Plot\n @desc Sets the x domain to the specified array. If *value* is not specified, returns the current x domain. Additionally, if either value of the array is undefined, it will be calculated from the data.\n @param {Array} *value*\n @chainable\n */\n xDomain(_) {\n return arguments.length ? (this._xDomain = _, this) : this._xDomain;\n }\n\n /**\n @memberof Plot\n @desc Sets the x2 domain to the specified array. If *value* is not specified, returns the current x2 domain. Additionally, if either value of the array is undefined, it will be calculated from the data.\n @param {Array} *value*\n @chainable\n */\n x2Domain(_) {\n return arguments.length ? (this._x2Domain = _, this) : this._x2Domain;\n }\n\n /**\n @memberof Plot\n @desc Defines a custom sorting comparitor function to be used for discrete x axes.\n @param {Function} *value*\n @chainable\n */\n xSort(_) {\n return arguments.length ? (this._xSort = _, this) : this._xSort;\n }\n\n /**\n @memberof Plot\n @desc Defines a custom sorting comparitor function to be used for discrete x2 axes.\n @param {Function} *value*\n @chainable\n */\n x2Sort(_) {\n return arguments.length ? (this._x2Sort = _, this) : this._x2Sort;\n }\n\n /**\n @memberof Plot\n @desc Sets the y accessor to the specified function or number. If *value* is not specified, returns the current y accessor.\n @param {Function|Number} *value*\n @chainable\n */\n y(_) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._y = _;\n else {\n this._y = accessor(_);\n this._yKey = _;\n }\n return this;\n }\n else return this._y;\n }\n\n /**\n @memberof Plot\n @desc Sets the y2 accessor to the specified function or number. If *value* is not specified, returns the current y2 accessor.\n @param {Function|Number} *value*\n @chainable\n */\n y2(_) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._y2 = _;\n else {\n this._y2 = accessor(_);\n this._y2Key = _;\n }\n return this;\n }\n else return this._y2;\n }\n\n /**\n @memberof Plot\n @desc A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the y-axis. Includes additional functionality where passing \"auto\" as the value for the [scale](http://d3plus.org/docs/#Axis.scale) method will determine if the scale should be \"linear\" or \"log\" based on the provided data.\n\n*Note:* If a \"domain\" array is passed to the y-axis config, it will be reversed.\n @param {Object} *value*\n @chainable\n */\n yConfig(_) {\n if (arguments.length) {\n if (_.domain) _.domain = _.domain.slice().reverse();\n this._yConfig = assign(this._yConfig, _);\n return this;\n }\n return this._yConfig;\n }\n\n /**\n @memberof Plot\n @desc When the height of the chart is less than or equal to this pixel value, and the y-axis is not the discrete axis, it will not be shown. This helps produce slick sparklines. Set this value to `0` to disable the behavior entirely.\n @param {Number} *value*\n @chainable\n */\n yCutoff(_) {\n return arguments.length ? (this._yCutoff = _, this) : this._yCutoff;\n }\n\n /**\n @memberof Plot\n @desc A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the secondary y-axis. Includes additional functionality where passing \"auto\" as the value for the [scale](http://d3plus.org/docs/#Axis.scale) method will determine if the scale should be \"linear\" or \"log\" based on the provided data.\n @param {Object} *value*\n @chainable\n */\n y2Config(_) {\n if (arguments.length) {\n if (_.domain) _.domain = _.domain.slice().reverse();\n this._y2Config = assign(this._y2Config, _);\n return this;\n }\n return this._y2Config;\n }\n\n /**\n @memberof Plot\n @desc Sets the y domain to the specified array. If *value* is not specified, returns the current y domain. Additionally, if either value of the array is undefined, it will be calculated from the data.\n @param {Array} *value*\n @chainable\n */\n yDomain(_) {\n return arguments.length ? (this._yDomain = _, this) : this._yDomain;\n }\n\n /**\n @memberof Plot\n @desc Sets the y2 domain to the specified array. If *value* is not specified, returns the current y2 domain. Additionally, if either value of the array is undefined, it will be calculated from the data.\n @param {Array} *value*\n @chainable\n */\n y2Domain(_) {\n return arguments.length ? (this._y2Domain = _, this) : this._y2Domain;\n }\n\n /**\n @memberof Plot\n @desc Defines a custom sorting comparitor function to be used for discrete y axes.\n @param {Function} *value*\n @chainable\n */\n ySort(_) {\n return arguments.length ? (this._ySort = _, this) : this._ySort;\n }\n\n /**\n @memberof Plot\n @desc Defines a custom sorting comparitor function to be used for discrete y2 axes.\n @param {Function} *value*\n @chainable\n */\n y2Sort(_) {\n return arguments.length ? (this._y2Sort = _, this) : this._y2Sort;\n }\n\n}\n","import {constant} from \"../utils/index.js\";\n\nimport {default as Plot} from \"./Plot.js\";\n\n/**\n @class AreaPlot\n @extends Plot\n @desc Creates an area plot based on an array of data.\n @example <caption>the equivalent of calling:</caption>\nnew d3plus.Plot()\n .baseline(0)\n .discrete(\"x\")\n .shape(\"Area\")\n*/\nexport default class AreaPlot extends Plot {\n\n /**\n @memberof AreaPlot\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n\n super();\n this._baseline = 0;\n this._discrete = \"x\";\n this._shape = constant(\"Area\");\n this.x(\"x\");\n\n }\n\n}\n","import {constant} from \"../utils/index.js\";\n\nimport {default as Plot} from \"./Plot.js\";\n\n/**\n @class BarChart\n @extends Plot\n @desc Creates a bar chart based on an array of data.\n @example <caption>the equivalent of calling:</caption>\nnew d3plus.Plot()\n .baseline(0)\n .discrete(\"x\")\n .shape(\"Bar\")\n*/\nexport default class BarChart extends Plot {\n\n /**\n @memberof BarChart\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n\n super();\n this._baseline = 0;\n this._discrete = \"x\";\n const defaultLegend = this._legend;\n this._legend = (config, arr) => {\n const legendIds = arr.map(this._groupBy[this._legendDepth].bind(this)).sort().join();\n const barIds = this._filteredData.map(this._groupBy[this._legendDepth].bind(this)).sort().join();\n if (legendIds === barIds) return false;\n return defaultLegend.bind(this)(config, arr);\n };\n this._shape = constant(\"Bar\");\n this.x(\"x\");\n\n }\n\n}\n","import {assign} from \"@d3plus/dom\";\nimport {constant} from \"../utils/index.js\";\n\nimport {default as Plot} from \"./Plot.js\";\n\n/**\n @class BoxWhisker\n @extends Plot\n @desc Creates a simple box and whisker based on an array of data.\n @example <caption>the equivalent of calling:</caption>\nnew d3plus.Plot()\n .discrete(\"x\")\n .shape(\"Box\")\n*/\nexport default class BoxWhisker extends Plot {\n\n /**\n @memberof BoxWhisker\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n\n super();\n this._discrete = \"x\";\n this._shape = constant(\"Box\");\n this.x(\"x\");\n\n this._tooltipConfig = assign(this._tooltipConfig, {\n title: (d, i) => {\n if (!d) return \"\";\n while (d.__d3plus__ && d.data) {\n d = d.data;\n i = d.i;\n }\n if (this._label) return this._label(d, i);\n const l = this._ids(d, i).slice(0, this._drawDepth);\n return l[l.length - 1];\n }\n });\n\n }\n\n}\n","import {constant} from \"../utils/index.js\";\n\nimport {default as Plot} from \"./Plot.js\";\n\n/**\n @class BumpChart\n @extends Plot\n @desc Creates a bump chart based on an array of data.\n @example <caption>the equivalent of calling:</caption>\nnew d3plus.Plot()\n .discrete(\"x\")\n .shape(\"Line\")\n .x(\"x\")\n .y2(d => this._y(d))\n .yConfig({\n tickFormat: val => {\n const data = this._formattedData;\n const xDomain = this._xDomain;\n const startData = data.filter(d => d.x === xDomain[0]);\n const d = startData.find(d => d.y === val);\n return this._drawLabel(d, d.i);\n }\n })\n .y2Config({\n tickFormat: val => {\n const data = this._formattedData;\n const xDomain = this._xDomain;\n const endData = data.filter(d => d.x === xDomain[xDomain.length - 1]);\n const d = endData.find(d => d.y === val);\n return this._drawLabel(d, d.i);\n }\n })\n .ySort((a, b) => b.y - a.y)\n .y2Sort((a, b) => b.y - a.y)\n*/\nexport default class BumpChart extends Plot {\n\n /**\n @memberof BumpChart\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n\n super();\n this._discrete = \"x\";\n this._shape = constant(\"Line\");\n this.x(\"x\");\n this.y2(d => this._y(d));\n\n this.yConfig({\n tickFormat: val => {\n const data = this._formattedData;\n const xMin = data[0].x instanceof Date ? data[0].x.getTime() : data[0].x;\n const startData = data.filter(d => (d.x instanceof Date ? d.x.getTime() : d.x) === xMin);\n const d = startData.find(d => d.y === val);\n return d ? this._drawLabel(d, d.i) : \"\";\n }\n });\n this.y2Config({\n tickFormat: val => {\n const data = this._formattedData;\n const xMax = data[data.length - 1].x instanceof Date ? data[data.length - 1].x.getTime() : data[data.length - 1].x;\n const endData = data.filter(d => (d.x instanceof Date ? d.x.getTime() : d.x) === xMax);\n const d = endData.find(d => d.y === val);\n return d ? this._drawLabel(d, d.i) : \"\";\n }\n });\n this.ySort((a, b) => this._y(b) - this._y(a));\n this.y2Sort((a, b) => this._y(b) - this._y(a));\n }\n\n}\n","import {min} from \"d3-array\";\nimport {arc, pie} from \"d3-shape\";\n\nimport {Path} from \"../shapes/index.js\";\nimport {assign, elem} from \"@d3plus/dom\";\nimport {accessor, configPrep} from \"../utils/index.js\";\nimport Viz from \"./Viz.js\";\n\n/**\n @class Pie\n @extends Viz\n @desc Uses the [d3 pie layout](https://github.com/d3/d3-shape#pies) to creates SVG arcs based on an array of data.\n*/\nexport default class Pie extends Viz {\n\n /**\n @memberof Pie\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n const defaultLegend = this._legend;\n this._legend = (config, arr) => {\n if (arr.length === this._filteredData.length) return false;\n return defaultLegend.bind(this)(config, arr);\n };\n this._legendSort = (a, b) => this._value(b) - this._value(a);\n\n this._shapeConfig = assign(this._shapeConfig, {\n ariaLabel: (d, i) => this._pieData ? `${++this._pieData[i].index}. ${this._drawLabel(d, i)}, ${this._value(d, i)}.` : \"\",\n Path: {\n labelConfig: {\n fontResize: true\n }\n }\n });\n this._innerRadius = 0;\n this._legendSort = (a, b) => this._value(b) - this._value(a);\n this._padPixel = 0;\n this._pie = pie();\n this._sort = (a, b) => this._value(b) - this._value(a);\n this._value = accessor(\"value\");\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n\n super._draw(callback);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n width = this._width - this._margin.left - this._margin.right;\n\n const outerRadius = min([width, height]) / 2;\n\n const pieData = this._pieData = this._pie\n .padAngle(this._padAngle || this._padPixel / outerRadius)\n .sort(this._sort)\n .value(this._value)(this._filteredData);\n\n pieData.forEach((d, i) => {\n d.__d3plus__ = true;\n d.i = i;\n });\n\n const arcData = arc()\n .innerRadius(this._innerRadius)\n .outerRadius(outerRadius);\n\n const transform = `translate(${width / 2 + this._margin.left}, ${height / 2 + this._margin.top})`;\n this._shapes.push(new Path()\n .data(pieData)\n .d(arcData)\n .select(elem(\"g.d3plus-Pie\", {\n parent: this._select,\n enter: {transform},\n update: {transform}\n }).node())\n .config({\n id: d => this._ids(d).join(\"-\"),\n x: 0,\n y: 0\n })\n .label(this._drawLabel)\n .config(configPrep.bind(this)(this._shapeConfig, \"shape\", \"Path\"))\n .render());\n\n return this;\n }\n\n /**\n @memberof Pie\n @desc The pixel value, or function that returns a pixel value, that is used as the inner radius of the Pie (creating a Donut).\n @param {Function|Number} [*value* = 0]\n */\n innerRadius(_) {\n return arguments.length ? (this._innerRadius = _, this) : this._innerRadius;\n }\n\n /**\n @memberof Pie\n @desc The padding between each arc, set as a radian value between \\`0\\` and \\`1\\`.\n\nIf set, this will override any previously set padPixel value.\n @param {Number} [*value*]\n */\n padAngle(_) {\n return arguments.length ? (this._padAngle = _, this) : this._padAngle;\n }\n\n /**\n @memberof Pie\n @desc The padding between each arc, set as a pixel number value.\n\nBy default the value is \\`0\\`, which shows no padding between each arc.\n\nIf \\`padAngle\\` is defined, the \\`padPixel\\` value will not be considered.\n @param {Number} [*value* = 0]\n */\n padPixel(_) {\n return arguments.length ? (this._padPixel = _, this) : this._padPixel;\n }\n\n /**\n @memberof Pie\n @desc A comparator function that sorts the Pie slices.\n @param {Function} [*comparator* = (a, b) => b.value - a.value]\n */\n sort(_) {\n return arguments.length ? (this._sort = _, this) : this._sort;\n }\n\n /**\n @memberof Pie\n @desc The accessor key for each data point used to calculate the size of each Pie section.\n @param {Function|String} *value* = d => d.value\n */\n value(_) {\n return arguments.length ? (this._value = typeof _ === \"function\" ? _ : accessor(_), this) : this._value;\n }\n}\n","import {min} from \"d3-array\";\nimport {default as Pie} from \"./Pie.js\";\n\n/**\n @class Donut\n @extends Pie\n @desc Extends the Pie visualization to create a donut chart.\n*/\nexport default class Donut extends Pie {\n\n /**\n @memberof Donut\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._innerRadius = () => min([\n this._width - this._margin.left - this._margin.right,\n this._height - this._margin.top - this._margin.bottom\n ]) / 4;\n this._padPixel = 2;\n\n }\n\n}\n","export default [\n {\n matches: [\"cartodb\", \"cartocdn\"],\n text: \"© <a href='http://www.openstreetmap.org/copyright' target='_blank'>OpenStreetMap</a> contributors, © <a href='https://carto.com/attribution' target='_blank'>CARTO</a>\"\n },\n {\n matches: [\"opentopomap.org\"],\n text: \"© <a href='http://www.openstreetmap.org/copyright' target='_blank'>OpenStreetMap</a> contributors\"\n },\n {\n matches: [\"arcgisonline.com\"],\n text: \"Powered by <a href='https://developers.arcgis.com/terms/attribution/' target='_blank'>Esri</a>\"\n },\n {\n matches: [\"/watercolor/\"],\n text: \"Map tiles by <a href='http://stamen.com' target='_blank'>Stamen Design</a>, under <a href='http://creativecommons.org/licenses/by/3.0' target='_blank'>CC BY 3.0</a>. Data by <a href='http://openstreetmap.org' target='_blank'>OpenStreetMap</a>, under <a href='http://www.openstreetmap.org/copyright' target='_blank'>ODbL</a>.\"\n },\n {\n matches: [\"stamen-tiles\", \"stamen.com\"],\n text: \"Map tiles by <a href='http://stamen.com' target='_blank'>Stamen Design</a>, under <a href='http://creativecommons.org/licenses/by/3.0' target='_blank'>CC BY 3.0</a>. Data by <a href='http://openstreetmap.org' target='_blank'>OpenStreetMap</a>, under <a href='http://creativecommons.org/licenses/by-sa/3.0' target='_blank'>CC BY SA</a>.\"\n }\n];\n","import {extent, max, quantile} from \"d3-array\";\nimport {color} from \"d3-color\";\nimport {zoomTransform} from \"d3-zoom\";\n\nimport * as d3GeoCore from \"d3-geo\";\nimport * as d3GeoProjection from \"d3-geo-projection\";\nimport * as d3CompositeProjections from \"d3-composite-projections\";\nconst d3Geo = Object.assign({}, d3GeoCore, d3GeoProjection, d3CompositeProjections);\n\nimport * as scales from \"d3-scale\";\nimport {tile} from \"d3-tile\";\nimport {feature} from \"topojson-client\";\n\nimport {load} from \"@d3plus/data\";\nimport {assign, parseSides} from \"@d3plus/dom\";\nimport {pointDistance} from \"@d3plus/math\";\nimport {Circle, Path} from \"../shapes/index.js\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\n\nimport Viz from \"./Viz\";\nimport attributions from \"./helpers/tileAttributions.js\";\n\n\n/**\n * @name findAttribution\n * @param {String} url\n * @private\n */\nfunction findAttribution(url) {\n const a = attributions.find(d => d.matches.some(m => url.includes(m)));\n return a ? a.text : false;\n}\n\n/**\n @name topo2feature\n @desc Converts a specific topojson object key into a feature ready for projection.\n @param {Object} *topo* A valid topojson json object.\n @param {String} [*key*] The topojson object key to be used. If undefined, the first key available will be used.\n @private\n*/\nfunction topo2feature(topo, key) {\n const k = key && topo.objects[key] ? key : Object.keys(topo.objects)[0];\n return feature(topo, k);\n}\n\n/**\n @class Geomap\n @extends Viz\n @desc Creates a geographical map with zooming, panning, image tiles, and the ability to layer choropleth paths and coordinate points. See [this example](https://d3plus.org/examples/d3plus-geomap/getting-started/) for help getting started.\n*/\nexport default class Geomap extends Viz {\n\n /**\n @memberof Geomap\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._fitObject = false;\n this._noDataMessage = false;\n this._ocean = \"#d4dadc\";\n\n this._point = accessor(\"point\");\n this._pointSize = constant(1);\n this._pointSizeMax = 10;\n this._pointSizeMin = 5;\n this._pointSizeScale = \"linear\";\n\n this._projection = d3Geo.geoMercator();\n this._projectionPadding = parseSides(20);\n\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n ariaLabel: (d, i) => `${this._drawLabel(d, i)}, ${this._pointSize(d, i)}`,\n hoverOpacity: 1,\n Path: {\n ariaLabel: (d, i) => {\n const validColorScale = this._colorScale ? `, ${this._colorScale(d, i)}` : \"\";\n return `${this._drawLabel(d, i)}${validColorScale}.`;\n },\n fill: (d, i) => {\n if (this._colorScale && !this._coordData.features.includes(d)) {\n const c = this._colorScale(d);\n if (c !== undefined && c !== null) {\n if (this._colorScaleClass._colorScale) {\n return this._colorScaleClass._colorScale(c);\n }\n else {\n let color = this._colorScaleClass.color();\n if (color instanceof Array) color = color[color.length - 1];\n return color;\n }\n }\n }\n return this._topojsonFill(d, i);\n },\n on: {\n \"mouseenter\": (d, i, x, event) => !this._coordData.features.includes(d) ? this._on.mouseenter.bind(this)(d, i, x, event) : null,\n \"mousemove.shape\": (d, i, x, event) => !this._coordData.features.includes(d) ? this._on[\"mousemove.shape\"].bind(this)(d, i, x, event) : null,\n \"mouseleave\": (d, i, x, event) => !this._coordData.features.includes(d) ? this._on.mouseleave.bind(this)(d, i, x, event) : null\n },\n stroke: (d, i) => {\n const c = typeof this._shapeConfig.Path.fill === \"function\" ? this._shapeConfig.Path.fill(d, i) : this._shapeConfig.Path.fill;\n return color(c).darker();\n },\n strokeWidth: 1\n }\n });\n\n this._tiles = true;\n this._tileGen = tile();\n this.tileUrl(\"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}@2x.png\");\n\n this._topojson = false;\n this._topojsonFill = constant(\"#f5f5f3\");\n this._topojsonFilter = d => ![\"010\"].includes(d.id);\n this._topojsonId = accessor(\"id\");\n\n this._zoom = true;\n this._zoomSet = false;\n\n }\n\n /**\n Renders map tiles based on the current zoom level.\n @private\n */\n _renderTiles(transform = zoomTransform(this._container.node()), duration = 0) {\n\n let tileData = [];\n if (this._tiles) {\n\n tileData = this._tileGen\n .extent(this._zoomBehavior.translateExtent())\n .scale(this._projection.scale() * (2 * Math.PI) * transform.k)\n .translate(transform.apply(this._projection.translate()))\n ();\n\n this._tileGroup.transition().duration(duration).attr(\"transform\", transform);\n\n }\n\n const images = this._tileGroup.selectAll(\"image.d3plus-geomap-tile\")\n .data(tileData, ([x, y, z]) => `${x}-${y}-${z}`);\n\n images.exit().transition().duration(duration)\n .attr(\"opacity\", 0).remove();\n\n const scale = tileData.scale / transform.k;\n\n const tileEnter = images.enter().append(\"image\")\n .attr(\"class\", \"d3plus-geomap-tile\");\n\n tileEnter\n .attr(\"opacity\", 0)\n .transition().duration(duration)\n .attr(\"opacity\", 1);\n\n images.merge(tileEnter)\n .attr(\"width\", scale)\n .attr(\"height\", scale)\n .attr(\"xlink:href\", ([x, y, z]) => this._tileUrl\n .replace(\"{s}\", [\"a\", \"b\", \"c\"][Math.random() * 3 | 0])\n .replace(\"{z}\", z)\n .replace(\"{x}\", x)\n .replace(\"{y}\", y))\n .attr(\"x\", ([x]) => x * scale + tileData.translate[0] * scale - transform.x / transform.k)\n .attr(\"y\", ([, y]) => y * scale + tileData.translate[1] * scale - transform.y / transform.k);\n\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n\n super._draw(callback);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n width = this._width - this._margin.left - this._margin.right;\n\n this._container = this._select.selectAll(\"svg.d3plus-geomap\").data([0]);\n this._container = this._container.enter().append(\"svg\")\n .attr(\"class\", \"d3plus-geomap\")\n .attr(\"opacity\", 0)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"x\", this._margin.left)\n .attr(\"y\", this._margin.top)\n .style(\"background-color\", this._ocean || \"transparent\")\n .merge(this._container);\n this._container.transition(this._transition)\n .attr(\"opacity\", 1)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"x\", this._margin.left)\n .attr(\"y\", this._margin.top);\n\n const ocean = this._container.selectAll(\"rect.d3plus-geomap-ocean\").data([0]);\n ocean.enter().append(\"rect\")\n .attr(\"class\", \"d3plus-geomap-ocean\")\n .merge(ocean)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"fill\", this._ocean || \"transparent\");\n\n this._tileGroup = this._container.selectAll(\"g.d3plus-geomap-tileGroup\").data([0]);\n this._tileGroup = this._tileGroup.enter().append(\"g\")\n .attr(\"class\", \"d3plus-geomap-tileGroup\")\n .merge(this._tileGroup);\n\n this._zoomGroup = this._container.selectAll(\"g.d3plus-geomap-zoomGroup\").data([0]);\n this._zoomGroup = this._zoomGroup.enter().append(\"g\")\n .attr(\"class\", \"d3plus-geomap-zoomGroup\")\n .merge(this._zoomGroup);\n\n let pathGroup = this._zoomGroup.selectAll(\"g.d3plus-geomap-paths\").data([0]);\n pathGroup = pathGroup.enter().append(\"g\")\n .attr(\"class\", \"d3plus-geomap-paths\")\n .merge(pathGroup);\n\n const coordData = this._coordData = this._topojson\n ? topo2feature(this._topojson, this._topojsonKey)\n : {type: \"FeatureCollection\", features: []};\n\n if (this._topojsonFilter) coordData.features = coordData.features.filter(this._topojsonFilter);\n\n const path = this._path = d3Geo.geoPath()\n .projection(this._projection);\n\n const pointData = this._filteredData\n .filter((d, i) => this._point(d, i) instanceof Array);\n\n const pathData = this._filteredData\n .filter((d, i) => !(this._point(d, i) instanceof Array))\n .reduce((obj, d) => {\n obj[this._id(d)] = d;\n return obj;\n }, {});\n\n const topoData = coordData.features.reduce((arr, feature) => {\n const id = this._topojsonId(feature);\n arr.push({\n __d3plus__: true,\n data: pathData[id],\n feature,\n id\n });\n return arr;\n }, []);\n\n const r = scales[`scale${this._pointSizeScale.charAt(0).toUpperCase()}${this._pointSizeScale.slice(1)}`]()\n .domain(extent(pointData, (d, i) => this._pointSize(d, i)))\n .range([this._pointSizeMin, this._pointSizeMax]);\n\n if (!this._zoomSet) {\n\n const fitData = this._fitObject ? topo2feature(this._fitObject, this._fitKey) : coordData;\n\n this._extentBounds = {\n type: \"FeatureCollection\",\n features: this._fitFilter ? fitData.features.filter(this._fitFilter) : fitData.features.slice()\n };\n this._extentBounds.features = this._extentBounds.features.reduce((arr, d) => {\n\n if (d.geometry) {\n\n const reduced = {\n type: d.type,\n id: d.id,\n geometry: {\n coordinates: d.geometry.coordinates,\n type: d.geometry.type\n }\n };\n\n if (d.geometry.type === \"MultiPolygon\" && d.geometry.coordinates.length > 1) {\n\n const areas = [],\n distances = [];\n\n d.geometry.coordinates.forEach(c => {\n reduced.geometry.coordinates = [c];\n areas.push(path.area(reduced));\n });\n\n reduced.geometry.coordinates = [d.geometry.coordinates[areas.indexOf(max(areas))]];\n const center = path.centroid(reduced);\n\n d.geometry.coordinates.forEach(c => {\n reduced.geometry.coordinates = [c];\n distances.push(pointDistance(path.centroid(reduced), center));\n });\n\n const distCutoff = quantile(areas.reduce((arr, dist, i) => {\n if (dist) arr.push(areas[i] / dist);\n return arr;\n }, []), 0.9);\n\n reduced.geometry.coordinates = d.geometry.coordinates.filter((c, i) => {\n const dist = distances[i];\n return dist === 0 || areas[i] / dist >= distCutoff;\n });\n\n }\n\n arr.push(reduced);\n\n }\n return arr;\n\n }, []);\n\n if (!this._extentBounds.features.length && pointData.length) {\n\n const bounds = [[undefined, undefined], [undefined, undefined]];\n pointData.forEach((d, i) => {\n\n const point = this._projection(this._point(d, i));\n if (bounds[0][0] === void 0 || point[0] < bounds[0][0]) bounds[0][0] = point[0];\n if (bounds[1][0] === void 0 || point[0] > bounds[1][0]) bounds[1][0] = point[0];\n if (bounds[0][1] === void 0 || point[1] < bounds[0][1]) bounds[0][1] = point[1];\n if (bounds[1][1] === void 0 || point[1] > bounds[1][1]) bounds[1][1] = point[1];\n\n });\n\n this._extentBounds = {\n type: \"FeatureCollection\",\n features: [{\n type: \"Feature\",\n geometry: {\n type: \"MultiPoint\",\n coordinates: bounds.map(b => this._projection.invert(b))\n }\n }]\n };\n const maxSize = max(pointData, (d, i) => r(this._pointSize(d, i)));\n this._projectionPadding.top += maxSize;\n this._projectionPadding.right += maxSize;\n this._projectionPadding.bottom += maxSize;\n this._projectionPadding.left += maxSize;\n\n }\n\n this._zoomBehavior\n .extent([[0, 0], [width, height]])\n .scaleExtent([1, this._zoomMax])\n .translateExtent([[0, 0], [width, height]]);\n\n this._zoomSet = true;\n\n }\n\n this._projection = this._projection\n .fitExtent(\n this._extentBounds.features.length ? [[this._projectionPadding.left, this._projectionPadding.top], [width - this._projectionPadding.right, height - this._projectionPadding.bottom]] : [[0, 0], [width, height]],\n this._extentBounds.features.length ? this._extentBounds : {type: \"Sphere\"}\n );\n\n this._shapes.push(new Path()\n .data(topoData)\n .d(d => path(d.feature))\n .select(pathGroup.node())\n .x(0).y(0)\n .config(configPrep.bind(this)(this._shapeConfig, \"shape\", \"Path\"))\n .render());\n\n let pointGroup = this._zoomGroup.selectAll(\"g.d3plus-geomap-pins\").data([0]);\n pointGroup = pointGroup.enter().append(\"g\")\n .attr(\"class\", \"d3plus-geomap-pins\")\n .merge(pointGroup);\n\n const circles = new Circle()\n .config(configPrep.bind(this)(this._shapeConfig, \"shape\", \"Circle\"))\n .data(pointData)\n .r((d, i) => r(this._pointSize(d, i)))\n .select(pointGroup.node())\n .sort((a, b) => this._pointSize(b) - this._pointSize(a))\n .x((d, i) => this._projection(this._point(d, i))[0])\n .y((d, i) => this._projection(this._point(d, i))[1]);\n\n const events = Object.keys(this._on);\n const classEvents = events.filter(e => e.includes(\".Circle\")),\n globalEvents = events.filter(e => !e.includes(\".\")),\n shapeEvents = events.filter(e => e.includes(\".shape\"));\n for (let e = 0; e < globalEvents.length; e++) circles.on(globalEvents[e], this._on[globalEvents[e]]);\n for (let e = 0; e < shapeEvents.length; e++) circles.on(shapeEvents[e], this._on[shapeEvents[e]]);\n for (let e = 0; e < classEvents.length; e++) circles.on(classEvents[e], this._on[classEvents[e]]);\n\n this._shapes.push(circles.render());\n\n return this;\n\n }\n\n /**\n @memberof Geomap\n @desc Topojson files sometimes include small geographies that negatively impact how the library determines the default zoom level (for example, a small island or territory far off the coast that is barely visible to the eye). The fitFilter method can be used to remove specific geographies from the logic used to determine the zooming.\n\nThe *value* passed can be a single id to remove, an array of ids, or a filter function. Take a look at the [Choropleth Example](http://d3plus.org/examples/d3plus-geomap/getting-started/) to see it in action.\n @param {Number|String|Array|Function} [*value*]\n @chainable\n */\n fitFilter(_) {\n if (arguments.length) {\n this._zoomSet = false;\n if (typeof _ === \"function\") return this._fitFilter = _, this;\n if (!(_ instanceof Array)) _ = [_];\n return this._fitFilter = d => _.includes(d.id), this;\n }\n return this._fitFilter;\n }\n\n /**\n @memberof Geomap\n @desc If the topojson being used to determine the zoom fit (either the main [topojson](#Geomap.topojson) object or the [fitObject](#Geomap.fitObject)) contains multiple geographical sets (for example, a file containing state and county boundaries), use this method to indentify which set to use for the zoom fit.\n\nIf not specified, the first key in the *Array* returned from using `Object.keys` on the topojson will be used.\n @param {String} *value*\n @chainable\n */\n fitKey(_) {\n if (arguments.length) {\n this._fitKey = _;\n this._zoomSet = false;\n return this;\n }\n return this._fitKey;\n }\n\n /**\n @memberof Geomap\n @desc The topojson to be used for the initial projection [fit extent](https://github.com/d3/d3-geo#projection_fitExtent). The value passed should either be a valid Topojson *Object* or a *String* representing a filepath or URL to be loaded.\n\nAdditionally, a custom formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function needs to return the final Topojson *Object*.\n @param {Object|String} *data* = `undefined`\n @param {Function} [*formatter*]\n @chainable\n */\n fitObject(_, f) {\n if (arguments.length) {\n if (typeof _ === \"string\") {\n const prev = this._queue.find(q => q[3] === \"fitObject\");\n const d = [load.bind(this), _, f, \"fitObject\"];\n if (prev) this._queue[this._queue.indexOf(prev)] = d;\n else this._queue.push(d);\n }\n else {\n this._fitObject = _;\n }\n this._zoomSet = false;\n return this;\n }\n return this._fitObject;\n }\n\n /**\n @memberof Geomap\n @desc The color visible behind any shapes drawn on the map projection. By default, a color value matching the color used in the map tiles is used to help mask the loading time needed to render the tiles. Any value CSS color value may be used, including hexidecimal, rgb, rgba, and color strings like `\"blue\"` and `\"transparent\"`.\n @param {String} [*value* = \"#d4dadc\"]\n @chainable\n */\n ocean(_) {\n return arguments.length ? (this._ocean = _, this) : this._ocean;\n }\n\n /**\n @memberof Geomap\n @desc The accessor to be used when detecting coordinate points in the objects passed to the [data](https://d3plus.org/docs/#Viz.data) method. Values are expected to be in the format `[longitude, latitude]`, which is in-line with d3's expected coordinate mapping.\n @param {Function|Array} [*value*]\n @chainable\n */\n point(_) {\n return arguments.length ? (this._point = typeof _ === \"function\" ? _ : constant(_), this) : this._point;\n }\n\n /**\n @memberof Geomap\n @desc The accessor or static value to be used for sizing coordinate points.\n @param {Function|Number} [*value*]\n @chainable\n */\n pointSize(_) {\n return arguments.length ? (this._pointSize = typeof _ === \"function\" ? _ : constant(_), this) : this._pointSize;\n }\n\n /**\n @memberof Geomap\n @desc The maximum pixel radius used in the scale for sizing coordinate points.\n @param {Number} [*value* = 10]\n @chainable\n */\n pointSizeMax(_) {\n return arguments.length ? (this._pointSizeMax = _, this) : this._pointSizeMax;\n }\n\n /**\n @memberof Geomap\n @desc The minimum pixel radius used in the scale for sizing coordinate points.\n @param {Number} [*value* = 5]\n @chainable\n */\n pointSizeMin(_) {\n return arguments.length ? (this._pointSizeMin = _, this) : this._pointSizeMin;\n }\n\n /**\n @memberof Geomap\n @desc Sets the map projection used when displaying topojson and coordinate points. All of the projections exported from [d3-geo](https://github.com/d3/d3-geo#projections), [d3-geo-projection](https://github.com/d3/d3-geo-projection#api-reference), and [d3-composite-projections](http://geoexamples.com/d3-composite-projections/) are accepted, whether as the string name (ie. \"geoMercator\") or the generator function itself. Map tiles are only usable when the projection is set to Mercator (which is also the default value).\n @param {Function|String} *projection* = \"geoMercator\"\n @chainable\n */\n projection(_) {\n if (arguments.length && _ !== \"geoMercator\") this.tiles(false);\n return arguments.length ? (this._projection = typeof _ === \"string\" ? d3Geo[_] ? d3Geo[_]() : d3Geo.geoMercator() : _, this) : this._projection;\n }\n\n /**\n @memberof Geomap\n @desc The outer padding between the edge of the visualization and the shapes drawn. The value passed can be either a single number to be used on all sides, or a CSS string pattern (ie. `\"20px 0 10px\"`).\n @param {Number|String} [*value* = 20]\n @chainable\n */\n projectionPadding(_) {\n return arguments.length ? (this._projectionPadding = parseSides(_), this) : this._projectionPadding;\n }\n\n /**\n @memberof Geomap\n @desc An array that corresponds to the value passed to the projection's [rotate](https://github.com/d3/d3-geo#projection_rotate) function. Use this method to shift the centerpoint of a map.\n @param {Array} [*value* = [0, 0]]\n @chainable\n */\n projectionRotate(_) {\n if (arguments.length) {\n this._projection.rotate(_);\n this.tiles(false);\n this._zoomSet = false;\n return this;\n }\n else {\n return this._projectionRotate;\n }\n }\n\n /**\n @memberof Geomap\n @desc Toggles the visibility of the map tiles.\n @param {Boolean} [*value* = true]\n @chainable\n */\n tiles(_) {\n if (arguments.length) {\n this._tiles = _;\n const attribution = findAttribution(this._tileUrl);\n if (_ && this._attribution === \"\") this._attribution = attribution;\n else if (!_ && this._attribution === attribution) this._attribution = \"\";\n return this;\n }\n return this._tiles;\n }\n\n /**\n @memberof Geomap\n @desc By default, d3plus uses the `light_all` style provided by [CARTO](https://carto.com/location-data-services/basemaps/) for it's map tiles. The [tileUrl](https://d3plus.org/docs/#Geomap.tileUrl) method changes the base URL used for fetching the tiles, as long as the string passed contains `{x}`, `{y}`, and `{z}` variables enclosed in curly brackets for the zoom logic to load the correct tiles.\n @param {String} [url=\"https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png\"]\n @chainable\n */\n tileUrl(_) {\n if (arguments.length) {\n this._tileUrl = _;\n if (this._tiles) this._attribution = findAttribution(_);\n if (this._tileGroup) this._renderTiles.bind(this)();\n return this;\n }\n return this._tileUrl;\n }\n\n /**\n @memberof Geomap\n @desc The topojson to be used for drawing geographical paths. The value passed should either be a valid Topojson *Object* or a *String* representing a filepath or URL to be loaded.\n\nAdditionally, a custom formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final Topojson *Obejct*.\n @param {Object|String} *data* = []\n @param {Function} [*formatter*]\n @chainable\n */\n topojson(_, f) {\n if (arguments.length) {\n if (typeof _ === \"string\") {\n const prev = this._queue.find(q => q[3] === \"topojson\");\n const d = [load.bind(this), _, f, \"topojson\"];\n if (prev) this._queue[this._queue.indexOf(prev)] = d;\n else this._queue.push(d);\n }\n else {\n this._topojson = _;\n }\n this._zoomSet = false;\n return this;\n }\n return this._topojson;\n }\n\n /**\n @memberof Geomap\n @desc The function is used to set default color of the map.\n @param {String|Function} *value* = string\n @chainable\n */\n topojsonFill(_) {\n return arguments.length ? (this._topojsonFill = typeof _ === \"function\" ? _ : constant(_), this, this) : this._topojsonFill;\n }\n\n /**\n @memberof Geomap\n @desc If the [topojson](#Geomap.topojson) being used contains boundaries that should not be shown, this method can be used to filter them out of the final output. The *value* passed can be a single id to remove, an array of ids, or a filter function.\n @param {Number|String|Array|Function} [*value*]\n @chainable\n */\n topojsonFilter(_) {\n if (arguments.length) {\n this._zoomSet = false;\n if (typeof _ === \"function\") return this._topojsonFilter = _, this;\n if (!(_ instanceof Array)) _ = [_];\n return this._topojsonFilter = d => _.includes(d.id), this;\n }\n return this._topojsonFilter;\n }\n\n /**\n @memberof Geomap\n @desc If the [topojson](#Geomap.topojson) contains multiple geographical sets (for example, a file containing state and county boundaries), use this method to indentify which set to use.\n\nIf not specified, the first key in the *Array* returned from using `Object.keys` on the topojson will be used.\n @param {String} *value*\n @chainable\n */\n topojsonKey(_) {\n if (arguments.length) {\n this._topojsonKey = _;\n this._zoomSet = false;\n return this;\n }\n return this._topojsonKey;\n }\n\n /**\n @memberof Geomap\n @desc The accessor used to map each topojson geometry to it's corresponding [data](https://d3plus.org/docs/#Viz.data) point.\n @param {String|Function} *value* = \"id\"\n @chainable\n */\n topojsonId(_) {\n return arguments.length ? (this._topojsonId = typeof _ === \"function\" ? _ : accessor(_), this, this) : this._topojsonId;\n }\n\n}\n","import {constant} from \"../utils/index.js\";\n\nimport {default as Plot} from \"./Plot.js\";\n\n/**\n @class LinePlot\n @extends Plot\n @desc Creates a line plot based on an array of data.\n @example <caption>the equivalent of calling:</caption>\nnew d3plus.Plot()\n .discrete(\"x\")\n .shape(\"Line\")\n*/\nexport default class LinePlot extends Plot {\n\n /**\n @memberof LinePlot\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n\n super();\n this._discrete = \"x\";\n this._shape = constant(\"Line\");\n this.x(\"x\");\n\n }\n\n}\n","import {unique} from \"@d3plus/data\";\n\nconst cartesian = (a, b) => [].concat(...a.map(d => b.map(e => [].concat(d, e))));\n\n/**\n @module matrixData\n @private\n */\nexport default function() {\n\n const data = this._filteredData;\n const rowValues = (this._rowList || unique(data.map(this._row))).sort(this._rowSort);\n const columnValues = (this._columnList || unique(data.map(this._column))).sort(this._columnSort);\n\n if (!rowValues.length || !columnValues.length) return this;\n\n const shapeData = cartesian(rowValues, columnValues)\n .map(([rowValue, columnValue]) => {\n const dataObj = {\n __d3plusTooltip__: true,\n __d3plus__: true,\n column: columnValue,\n row: rowValue\n };\n const dataIndex = data\n .findIndex((d, i) => this._row(d, i) === rowValue && this._column(d, i) === columnValue);\n if (dataIndex >= 0) {\n dataObj.i = dataIndex;\n dataObj.data = data[dataIndex];\n }\n else {\n dataObj.data = {row: rowValue, column: columnValue};\n }\n return dataObj;\n });\n\n return {rowValues, columnValues, shapeData};\n\n}\n","import {Axis} from \"../components/index.js\";\nimport {assign, elem} from \"@d3plus/dom\";\nimport {Rect} from \"../shapes/index.js\";\nimport {accessor, configPrep, getProp} from \"../utils/index.js\";\n\nimport Viz from \"./Viz.js\";\nimport prepData from \"./helpers/matrixData.js\";\n\nconst defaultAxisConfig = {\n align: \"start\",\n barConfig: {\n stroke: 0\n },\n gridSize: 0,\n padding: 5,\n paddingInner: 0,\n paddingOuter: 0,\n scale: \"band\",\n tickSize: 0\n};\n\n/**\n @class Matrix\n @extends Viz\n @desc Creates a simple rows/columns Matrix view of any dataset. See [this example](https://d3plus.org/examples/d3plus-matrix/getting-started/) for help getting started using the Matrix class.\n*/\nexport default class Matrix extends Viz {\n\n /**\n @memberof Matrix\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._cellPadding = 2;\n\n this._column = accessor(\"column\");\n this._columnAxis = new Axis();\n this._columnConfig = assign({orient: \"top\"}, defaultAxisConfig);\n this._columnSort = (a, b) => `${a}`.localeCompare(`${b}`);\n\n this._label = (d, i) => `${getProp.bind(this)(\"row\", d, i)} / ${getProp.bind(this)(\"column\", d, i)}`;\n\n const defaultMouseMoveShape = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (d, i, x, event) => {\n defaultMouseMoveShape(d, i, x, event);\n const row = getProp.bind(this)(\"row\", d, i);\n const column = getProp.bind(this)(\"column\", d, i);\n this.hover((h, ii) => getProp.bind(this)(\"row\", h, ii) === row || getProp.bind(this)(\"column\", h, ii) === column);\n };\n\n this._row = accessor(\"row\");\n this._rowAxis = new Axis();\n this._rowConfig = assign({orient: \"left\"}, defaultAxisConfig);\n this._rowSort = (a, b) => `${a}`.localeCompare(`${b}`);\n\n }\n\n /**\n @memberof Matrix\n @desc Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n\n const {rowValues, columnValues, shapeData} = prepData.bind(this)(this._filteredData);\n\n if (!rowValues.length || !columnValues.length) return this;\n\n const height = this._height - this._margin.top - this._margin.bottom,\n parent = this._select,\n transition = this._transition,\n width = this._width - this._margin.left - this._margin.right;\n\n const hidden = {opacity: 0};\n const visible = {opacity: 1};\n\n const columnRotation = width / columnValues.length < 120;\n\n const selectElem = (name, opts) => elem(`g.d3plus-Matrix-${name}`, Object.assign({parent, transition}, opts)).node();\n\n this._rowAxis\n .select(selectElem(\"row\", {enter: hidden, update: hidden}))\n .domain(rowValues)\n .height(height - this._margin.top - this._margin.bottom - this._padding.bottom - this._padding.top)\n .maxSize(width / 4)\n .width(width)\n .config(this._rowConfig)\n .render();\n\n const rowPadding = this._rowAxis.outerBounds().width;\n this._padding.left += rowPadding;\n let columnTransform = `translate(0, ${this._margin.top})`;\n const hiddenTransform = Object.assign({transform: columnTransform}, hidden);\n\n this._columnAxis\n .select(selectElem(\"column\", {enter: hiddenTransform, update: hiddenTransform}))\n .domain(columnValues)\n .range([this._margin.left + this._padding.left, width - this._margin.right + this._padding.right])\n .height(height)\n .maxSize(height / 4)\n .width(width)\n .labelRotation(columnRotation)\n .config(this._columnConfig)\n .render();\n\n const columnPadding = this._columnAxis.outerBounds().height;\n this._padding.top += columnPadding;\n\n super._draw(callback);\n\n const rowTransform = `translate(${this._margin.left}, ${this._margin.top})`;\n columnTransform = `translate(0, ${this._margin.top})`;\n const visibleTransform = Object.assign({transform: columnTransform}, visible);\n\n this._rowAxis\n .select(selectElem(\"row\", {update: Object.assign({transform: rowTransform}, visible)}))\n .height(height - this._margin.top - this._margin.bottom - this._padding.bottom)\n .maxSize(rowPadding)\n .range([columnPadding + this._columnAxis.padding(), undefined])\n .render();\n\n this._columnAxis\n .select(selectElem(\"column\", {update: visibleTransform}))\n .range([this._margin.left + this._padding.left + this._rowAxis.padding(), width - this._margin.right + this._padding.right])\n .maxSize(columnPadding)\n .render();\n\n const rowScale = this._rowAxis._getPosition.bind(this._rowAxis);\n const columnScale = this._columnAxis._getPosition.bind(this._columnAxis);\n const cellHeight = rowValues.length > 1\n ? rowScale(rowValues[1]) - rowScale(rowValues[0])\n : this._rowAxis.height();\n const cellWidth = columnValues.length > 1\n ? columnScale(columnValues[1]) - columnScale(columnValues[0])\n : this._columnAxis.width();\n\n const transform = `translate(0, ${this._margin.top})`;\n const rectConfig = configPrep.bind(this)(this._shapeConfig, \"shape\", \"Rect\");\n\n this._shapes.push(new Rect()\n .data(shapeData)\n .select(elem(\"g.d3plus-Matrix-cells\", {\n parent: this._select,\n enter: {transform},\n update: {transform}\n }).node())\n .config({\n height: cellHeight - this._cellPadding,\n width: cellWidth - this._cellPadding,\n x: d => columnScale(d.column) + cellWidth / 2,\n y: d => rowScale(d.row) + cellHeight / 2\n })\n .config(rectConfig)\n .render());\n\n return this;\n\n }\n\n /**\n @memberof Matrix\n @desc The pixel padding in between each cell.\n @param {Number} [*value* = 2]\n */\n cellPadding(_) {\n return arguments.length ? (this._cellPadding = _, this) : this._cellPadding;\n }\n\n /**\n @memberof Matrix\n @desc Determines which key in your data should be used for each column in the matrix. Can be either a String that matches a key used in every data point, or an accessor function that receives a data point and it's index in the data array, and is expected to return it's column value.\n @param {String|Function} [*value*]\n @example\nfunction column(d) {\n return d.name;\n}\n */\n column(_) {\n return arguments.length ? (this._column = typeof _ === \"function\" ? _ : accessor(_), this) : this._column;\n }\n\n /**\n @memberof Matrix\n @desc A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the column labels.\n @param {Object} *value*\n @chainable\n */\n columnConfig(_) {\n return arguments.length ? (this._columnConfig = assign(this._columnConfig, _), this) : this._columnConfig;\n }\n\n /**\n @memberof Matrix\n @desc A manual list of IDs to be used for columns.\n @param {Array} [*value*]\n */\n columnList(_) {\n return arguments.length ? (this._columnList = _, this) : this._columnList;\n }\n\n /**\n @memberof Matrix\n @desc A sort comparator function that is run on the unique set of column values.\n @param {Function} [*value*]\n @example\nfunction column(a, b) {\n return a.localeCompare(b);\n}\n */\n columnSort(_) {\n return arguments.length ? (this._columnSort = _, this) : this._columnSort;\n }\n\n /**\n @memberof Matrix\n @desc Determines which key in your data should be used for each row in the matrix. Can be either a String that matches a key used in every data point, or an accessor function that receives a data point and it's index in the data array, and is expected to return it's row value.\n @param {String|Function} [*value*]\n @example\nfunction row(d) {\n return d.name;\n}\n */\n row(_) {\n return arguments.length ? (this._row = typeof _ === \"function\" ? _ : accessor(_), this) : this._row;\n }\n\n /**\n @memberof Matrix\n @desc A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the row labels.\n @param {Object} *value*\n @chainable\n */\n rowConfig(_) {\n return arguments.length ? (this._rowConfig = assign(this._rowConfig, _), this) : this._rowConfig;\n }\n\n /**\n @memberof Matrix\n @desc A manual list of IDs to be used for rows.\n @param {Array} [*value*]\n */\n rowList(_) {\n return arguments.length ? (this._rowList = _, this) : this._rowList;\n }\n\n /**\n @memberof Matrix\n @desc A sort comparator function that is run on the unique set of row values.\n @param {Function} [*value*]\n @example\nfunction row(a, b) {\n return a.localeCompare(b);\n}\n */\n rowSort(_) {\n return arguments.length ? (this._rowSort = _, this) : this._rowSort;\n }\n\n}\n","\nimport {extent, max, mean, min, merge} from \"d3-array\";\nimport {nest} from \"d3-collection\";\nimport {forceLink, forceManyBody, forceSimulation} from \"d3-force\";\nimport {polygonHull} from \"d3-polygon\";\nimport * as scales from \"d3-scale\";\nimport {zoomTransform} from \"d3-zoom\";\n\nimport {assign, elem} from \"@d3plus/dom\";\nimport {addToQueue} from \"@d3plus/data\";\nimport * as shapes from \"../shapes/index.js\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\nimport Viz from \"./Viz\";\n\n/**\n * Fetches the unique ID for a data point, whether it's defined by data or nodes.\n * @private\n */\nfunction getNodeId(d, i) {\n return `${this._id(d, i) || this._nodeGroupBy[min([this._drawDepth, this._nodeGroupBy.length - 1])](d, i)}`;\n}\n\n/**\n @class Network\n @extends Viz\n @desc Creates a network visualization based on a defined set of nodes and edges. [Click here](http://d3plus.org/examples/d3plus-network/getting-started/) for help getting started using the Network class.\n*/\nexport default class Network extends Viz {\n\n /**\n @memberof Network\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n this._links = [];\n this._linkSize = constant(1);\n this._linkSizeMin = 1;\n this._linkSizeScale = \"sqrt\";\n this._noDataMessage = false;\n this._nodeGroupBy = [accessor(\"id\")];\n this._nodes = [];\n this._on[\"click.shape\"] = (d, i, x, event) => {\n\n this._tooltipClass.data([]).render();\n\n if (this._hover && this._drawDepth >= this._groupBy.length - 1) {\n\n const id = getNodeId.bind(this)(d, i);\n\n if (this._focus && this._focus === id) {\n\n this.active(false);\n this._on.mouseenter.bind(this)(d, i, x, event);\n\n this._focus = undefined;\n this._zoomToBounds(null);\n\n }\n else {\n\n this.hover(false);\n\n const links = this._linkLookup[id],\n node = this._nodeLookup[id];\n\n const filterIds = [id];\n let xDomain = [node.x - node.r, node.x + node.r],\n yDomain = [node.y - node.r, node.y + node.r];\n\n links.forEach(l => {\n filterIds.push(l.id);\n if (l.x - l.r < xDomain[0]) xDomain[0] = l.x - l.r;\n if (l.x + l.r > xDomain[1]) xDomain[1] = l.x + l.r;\n if (l.y - l.r < yDomain[0]) yDomain[0] = l.y - l.r;\n if (l.y + l.r > yDomain[1]) yDomain[1] = l.y + l.r;\n });\n\n this.active((h, x) => {\n if (h.source && h.target) return h.source.id === id || h.target.id === id;\n else return filterIds.includes(getNodeId.bind(this)(h, x));\n });\n\n this._focus = id;\n const t = zoomTransform(this._container.node());\n xDomain = xDomain.map(d => d * t.k + t.x);\n yDomain = yDomain.map(d => d * t.k + t.y);\n this._zoomToBounds([[xDomain[0], yDomain[0]], [xDomain[1], yDomain[1]]]);\n\n }\n\n }\n\n };\n this._on[\"click.legend\"] = (d, i, x, event) => {\n\n const ids = this._id(d);\n let id = this._ids(d);\n id = id[id.length - 1];\n\n if (this._hover && this._drawDepth >= this._groupBy.length - 1) {\n\n if (this._focus && this._focus === ids) {\n\n this.active(false);\n\n this._focus = undefined;\n this._zoomToBounds(null);\n\n }\n else {\n\n this.hover(false);\n\n const nodes = ids.map(id => this._nodeLookup[id]);\n\n const filterIds = [`${id}`];\n let xDomain = [nodes[0].x - nodes[0].r, nodes[0].x + nodes[0].r],\n yDomain = [nodes[0].y - nodes[0].r, nodes[0].y + nodes[0].r];\n\n nodes.forEach(l => {\n filterIds.push(l.id);\n if (l.x - l.r < xDomain[0]) xDomain[0] = l.x - l.r;\n if (l.x + l.r > xDomain[1]) xDomain[1] = l.x + l.r;\n if (l.y - l.r < yDomain[0]) yDomain[0] = l.y - l.r;\n if (l.y + l.r > yDomain[1]) yDomain[1] = l.y + l.r;\n });\n\n this.active((h, x) => {\n if (h.source && h.target) return filterIds.includes(h.source.id) && filterIds.includes(h.target.id);\n else {\n const myIds = this._ids(h, x);\n return filterIds.includes(`${myIds[myIds.length - 1]}`);\n }\n });\n\n this._focus = ids;\n const t = zoomTransform(this._container.node());\n xDomain = xDomain.map(d => d * t.k + t.x);\n yDomain = yDomain.map(d => d * t.k + t.y);\n this._zoomToBounds([[xDomain[0], yDomain[0]], [xDomain[1], yDomain[1]]]);\n\n }\n\n this._on.mouseenter.bind(this)(d, i, x, event);\n this._on[\"mousemove.legend\"].bind(this)(d, i, x, event);\n\n }\n\n };\n this._on.mouseenter = () => {};\n this._on[\"mouseleave.shape\"] = () => {\n this.hover(false);\n };\n const defaultMouseMove = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (d, i, x, event) => {\n defaultMouseMove(d, i, x, event);\n const id = getNodeId.bind(this)(d, i),\n links = this._linkLookup[id] || [],\n node = this._nodeLookup[id];\n\n const filterIds = [id];\n const xDomain = [node.x - node.r, node.x + node.r],\n yDomain = [node.y - node.r, node.y + node.r];\n\n links.forEach(l => {\n filterIds.push(l.id);\n if (l.x - l.r < xDomain[0]) xDomain[0] = l.x - l.r;\n if (l.x + l.r > xDomain[1]) xDomain[1] = l.x + l.r;\n if (l.y - l.r < yDomain[0]) yDomain[0] = l.y - l.r;\n if (l.y + l.r > yDomain[1]) yDomain[1] = l.y + l.r;\n });\n\n this.hover((h, x) => {\n if (h.source && h.target) return h.source.id === id || h.target.id === id;\n else return filterIds.includes(`${this._ids(h, x)[this._drawDepth]}`);\n });\n };\n this._sizeMin = 5;\n this._sizeScale = \"sqrt\";\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n ariaLabel: (d, i) => {\n const validSize = this._size ? `, ${this._size(d, i)}` : \"\";\n return `${this._drawLabel(d, i)}${validSize}.`;\n },\n labelConfig: {\n duration: 0,\n fontMin: 1,\n fontResize: true,\n labelPadding: 0,\n textAnchor: \"middle\",\n verticalAlign: \"middle\"\n },\n Path: {\n fill: \"none\",\n label: false,\n stroke: \"#eee\"\n }\n });\n this._x = accessor(\"x\");\n this._y = accessor(\"y\");\n\n this._zoom = true;\n\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n\n super._draw(callback);\n\n const duration = this._duration,\n height = this._height - this._margin.top - this._margin.bottom,\n transform = `translate(${this._margin.left}, ${this._margin.top})`,\n width = this._width - this._margin.left - this._margin.right;\n\n const data = this._filteredData.reduce((obj, d, i) => {\n obj[this._id(d, i)] = d;\n return obj;\n }, {});\n\n let nodes = this._nodes.reduce((obj, d, i) => {\n obj[getNodeId.bind(this)(d, i)] = d;\n return obj;\n }, {});\n\n nodes = Array.from(new Set(Object.keys(data).concat(Object.keys(nodes)))).map((id, i) => {\n const d = data[id],\n n = nodes[id];\n\n if (n === undefined) return false;\n\n return {\n __d3plus__: true,\n data: d || n,\n i, id,\n fx: d !== undefined && !isNaN(this._x(d)) ? this._x(d) : this._x(n),\n fy: d !== undefined && !isNaN(this._y(d)) ? this._y(d) : this._y(n),\n node: n,\n r: this._size ? d !== undefined && this._size(d) !== undefined ? this._size(d) : this._size(n) : this._sizeMin,\n shape: d !== undefined && this._shape(d) !== undefined ? this._shape(d) : this._shape(n)\n };\n\n }).filter(n => n);\n\n const nodeLookup = this._nodeLookup = nodes.reduce((obj, d) => {\n obj[d.id] = d;\n return obj;\n }, {});\n\n const nodeIndices = nodes.map(n => n.node);\n const links = this._links.map(l => {\n const referenceType = typeof l.source;\n return {\n size: this._linkSize(l),\n source: referenceType === \"number\"\n ? nodes[nodeIndices.indexOf(this._nodes[l.source])]\n : referenceType === \"string\"\n ? nodeLookup[l.source]\n : nodeLookup[l.source.id],\n target: referenceType === \"number\"\n ? nodes[nodeIndices.indexOf(this._nodes[l.target])]\n : referenceType === \"string\"\n ? nodeLookup[l.target]\n : nodeLookup[l.target.id]\n };\n });\n\n this._linkLookup = links.reduce((obj, d) => {\n if (!obj[d.source.id]) obj[d.source.id] = [];\n obj[d.source.id].push(d.target);\n if (!obj[d.target.id]) obj[d.target.id] = [];\n obj[d.target.id].push(d.source);\n return obj;\n }, {});\n\n const missingCoords = nodes.some(n => n.fx === undefined || n.fy === undefined);\n\n if (missingCoords) {\n\n const linkStrength = scales.scaleLinear()\n .domain(extent(links, d => d.size))\n .range([0.1, 0.5]);\n\n const simulation = forceSimulation()\n .force(\"link\", forceLink(links)\n .id(d => d.id)\n .distance(1)\n .strength(d => linkStrength(d.size))\n .iterations(4)\n )\n .force(\"charge\", forceManyBody().strength(-1))\n .stop();\n\n const iterations = 100;\n const alphaMin = 0.001;\n const alphaDecay = 1 - Math.pow(alphaMin, 1 / iterations);\n simulation.velocityDecay(0);\n simulation.alphaMin(alphaMin);\n simulation.alphaDecay(alphaDecay);\n simulation.alphaDecay(0);\n\n simulation.nodes(nodes);\n simulation.tick(iterations).stop();\n\n const nodePositions = nodes.map(n => [n.vx, n.vy]);\n let angle = 0, cx = 0, cy = 0;\n if (nodePositions.length === 2) {\n angle = 100;\n }\n else if (nodePositions.length > 2) {\n const hull = polygonHull(nodePositions);\n const rect = shapes.largestRect(hull, {verbose: true});\n angle = rect.angle;\n cx = rect.cx;\n cy = rect.cy;\n }\n\n nodes.forEach(n => {\n const p = shapes.pointRotate([n.vx, n.vy], -1 * (Math.PI / 180 * angle), [cx, cy]);\n n.fx = p[0];\n n.fy = p[1];\n });\n\n }\n\n const xExtent = extent(nodes.map(n => n.fx)),\n yExtent = extent(nodes.map(n => n.fy));\n\n const x = scales.scaleLinear().domain(xExtent).range([0, width]),\n y = scales.scaleLinear().domain(yExtent).range([0, height]);\n\n const nodeRatio = (xExtent[1] - xExtent[0]) / (yExtent[1] - yExtent[0]) || 1,\n screenRatio = width / height;\n\n if (nodeRatio > screenRatio) {\n const h = height * screenRatio / nodeRatio;\n y.range([(height - h) / 2, height - (height - h) / 2]);\n }\n else {\n const w = width * nodeRatio / screenRatio;\n x.range([(width - w) / 2, width - (width - w) / 2]);\n }\n\n nodes.forEach(n => {\n n.x = x(n.fx);\n n.y = y(n.fy);\n });\n\n const rExtent = extent(nodes.map(n => n.r));\n let rMax = this._sizeMax || max([1, min(\n merge(nodes\n .map(n1 => nodes\n .map(n2 => n1 === n2 ? null : shapes.pointDistance([n1.x, n1.y], [n2.x, n2.y]))\n )\n )\n ) / 2]);\n\n const r = scales[`scale${this._sizeScale.charAt(0).toUpperCase()}${this._sizeScale.slice(1)}`]()\n .domain(rExtent).range([rExtent[0] === rExtent[1] ? rMax : min([rMax / 2, this._sizeMin]), rMax]),\n xDomain = x.domain(),\n yDomain = y.domain();\n\n const xOldSize = xDomain[1] - xDomain[0],\n yOldSize = yDomain[1] - yDomain[0];\n\n nodes.forEach(n => {\n const size = r(n.r);\n if (xDomain[0] > x.invert(n.x - size)) xDomain[0] = x.invert(n.x - size);\n if (xDomain[1] < x.invert(n.x + size)) xDomain[1] = x.invert(n.x + size);\n if (yDomain[0] > y.invert(n.y - size)) yDomain[0] = y.invert(n.y - size);\n if (yDomain[1] < y.invert(n.y + size)) yDomain[1] = y.invert(n.y + size);\n });\n\n const xNewSize = xDomain[1] - xDomain[0],\n yNewSize = yDomain[1] - yDomain[0];\n\n rMax *= min([xOldSize / xNewSize, yOldSize / yNewSize]);\n r.range([rExtent[0] === rExtent[1] ? rMax : min([rMax / 2, this._sizeMin]), rMax]);\n x.domain(xDomain);\n y.domain(yDomain);\n\n const fallbackRadius = (nodeRatio > screenRatio ? width : height) / 2;\n nodes.forEach(n => {\n n.x = x(n.fx);\n n.fx = n.x;\n n.y = y(n.fy);\n n.fy = n.y;\n n.r = r(n.r) || fallbackRadius;\n n.width = n.r * 2;\n n.height = n.r * 2;\n });\n\n this._container = this._select.selectAll(\"svg.d3plus-network\").data([0]);\n\n this._container = this._container.enter().append(\"svg\")\n .attr(\"class\", \"d3plus-network\")\n .attr(\"opacity\", 0)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"x\", this._margin.left)\n .attr(\"y\", this._margin.top)\n .style(\"background-color\", \"transparent\")\n .merge(this._container);\n\n this._container.transition().duration(duration)\n .attr(\"opacity\", 1)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"x\", this._margin.left)\n .attr(\"y\", this._margin.top);\n\n const hitArea = this._container.selectAll(\"rect.d3plus-network-hitArea\").data([0]);\n hitArea.enter().append(\"rect\")\n .attr(\"class\", \"d3plus-network-hitArea\")\n .merge(hitArea)\n .attr(\"width\", width)\n .attr(\"height\", height)\n .attr(\"fill\", \"transparent\")\n .on(\"click\", () => {\n if (this._focus) {\n this.active(false);\n this._focus = undefined;\n this._zoomToBounds(null);\n }\n });\n\n this._zoomGroup = this._container.selectAll(\"g.d3plus-network-zoomGroup\").data([0]);\n const parent = this._zoomGroup = this._zoomGroup.enter().append(\"g\")\n .attr(\"class\", \"d3plus-network-zoomGroup\")\n .merge(this._zoomGroup);\n\n const strokeExtent = extent(links, d => d.size);\n if (strokeExtent[0] !== strokeExtent[1]) {\n const strokeScale = scales[`scale${this._linkSizeScale.charAt(0).toUpperCase()}${this._linkSizeScale.slice(1)}`]()\n .domain(strokeExtent)\n .range([this._linkSizeMin, r.range()[0]]);\n links.forEach(link => {\n link.size = strokeScale(link.size);\n });\n }\n\n const linkConfig = configPrep.bind(this)(this._shapeConfig, \"edge\", \"Path\");\n delete linkConfig.on;\n\n this._shapes.push(new shapes.Path()\n .config(linkConfig)\n .strokeWidth(d => d.size)\n .activeStyle({\n \"stroke-width\": d => d.size\n })\n .d(d => `M${d.source.x},${d.source.y} ${d.target.x},${d.target.y}`)\n .data(links)\n .select(elem(\"g.d3plus-network-links\", {parent, duration, enter: {transform}, update: {transform}}).node())\n .render());\n\n const shapeConfig = {\n label: d => nodes.length <= this._dataCutoff || (this._hover && this._hover(d) || this._active && this._active(d)) ? this._drawLabel(d.data || d.node, d.i) : false,\n select: elem(\"g.d3plus-network-nodes\", {parent, duration, enter: {transform}, update: {transform}}).node()\n };\n\n nest().key(d => d.shape).entries(nodes).forEach(d => {\n this._shapes.push(new shapes[d.key]()\n .config(configPrep.bind(this)(this._shapeConfig, \"shape\", d.key))\n .config(shapeConfig)\n .config(shapeConfig[d.key] || {})\n .data(d.values)\n .render());\n });\n\n return this;\n\n }\n\n /**\n @memberof Network\n @desc If *value* is specified, sets the hover method to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n hover(_) {\n this._hover = _;\n\n if (this._nodes.length < this._dataCutoff) {\n this._shapes.forEach(s => s.hover(_));\n if (this._legend) this._legendClass.hover(_);\n }\n\n return this;\n }\n\n /**\n @memberof Network\n @desc A predefined *Array* of edges that connect each object passed to the [node](#Network.node) method. The `source` and `target` keys in each link need to map to the nodes in one of three ways:\n1. The index of the node in the nodes array (as in [this](http://d3plus.org/examples/d3plus-network/getting-started/) example).\n2. The actual node *Object* itself.\n3. A *String* value matching the `id` of the node.\n\nThe value passed should either be an *Array* of data or a *String* representing a filepath or URL to be loaded. An optional formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final links *Array*.\n @param {Array|String} *links* = []\n @param {Function} [*formatter*]\n @chainable\n */\n links(_, f) {\n if (arguments.length) {\n addToQueue.bind(this)(_, f, \"links\");\n return this;\n }\n return this._links;\n }\n\n /**\n @memberof Network\n @desc Defines the thickness of the links connecting each node. The value provided can be either a pixel Number to be used for all links, or an accessor function that returns a specific data value to be used in an automatically calculated linear scale.\n @param {Function|Name} [*value* = 1]\n @chainable\n */\n linkSize(_) {\n return arguments.length ? (this._linkSize = typeof _ === \"function\" ? _ : constant(_), this) : this._linkSize;\n }\n\n /**\n @memberof Network\n @desc Defines the minimum pixel stroke width used in link sizing.\n @param {Number} [*value* = 2]\n @chainable\n */\n linkSizeMin(_) {\n return arguments.length ? (this._linkSizeMin = _, this) : this._linkSizeMin;\n }\n\n /**\n @memberof Network\n @desc Sets the specific type of [continuous d3-scale](https://github.com/d3/d3-scale#continuous-scales) used when calculating the pixel size of links in the network.\n @param {String} [*value* = \"sqrt\"]\n @chainable\n */\n linkSizeScale(_) {\n return arguments.length ? (this._linkSizeScale = _, this) : this._linkSizeScale;\n }\n\n /**\n @memberof Network\n @desc If *value* is specified, sets the node group accessor(s) to the specified string, function, or array of values and returns the current class instance. This method overrides the default .groupBy() function from being used with the data passed to .nodes(). If *value* is not specified, returns the current node group accessor.\n @param {String|Function|Array} [*value* = \"id\"]\n @chainable\n */\n nodeGroupBy(_) {\n if (!arguments.length) return this._nodeGroupBy;\n if (!(_ instanceof Array)) _ = [_];\n return this._nodeGroupBy = _.map(k => {\n if (typeof k === \"function\") return k;\n else {\n if (!this._aggs[k]) {\n this._aggs[k] = (a, c) => {\n const v = Array.from(new Set(a.map(c)));\n return v.length === 1 ? v[0] : v;\n };\n }\n return accessor(k);\n }\n }), this;\n }\n\n /**\n @memberof Network\n @desc The list of nodes to be used for drawing the network. The value passed should either be an *Array* of data or a *String* representing a filepath or URL to be loaded.\n\nAdditionally, a custom formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final node *Array*.\n @param {Array|String} *nodes* = []\n @param {Function} [*formatter*]\n @chainable\n */\n nodes(_, f) {\n if (arguments.length) {\n addToQueue.bind(this)(_, f, \"nodes\");\n return this;\n }\n return this._nodes;\n }\n\n /**\n @memberof Network\n @desc If *value* is specified, sets the size accessor to the specified function or data key and returns the current class instance. If *value* is not specified, returns the current size accessor.\n @param {Function|String} [*value*]\n @chainable\n */\n size(_) {\n return arguments.length ? (this._size = typeof _ === \"function\" || !_ ? _ : accessor(_), this) : this._size;\n }\n\n /**\n @memberof Network\n @desc Defines the maximum pixel radius used in size scaling. By default, the maximum size is determined by half the distance of the two closest nodes.\n @param {Number} [*value*]\n @chainable\n */\n sizeMax(_) {\n return arguments.length ? (this._sizeMax = _, this) : this._sizeMax;\n }\n\n /**\n @memberof Network\n @desc Defines the minimum pixel radius used in size scaling.\n @param {Number} [*value* = 5]\n @chainable\n */\n sizeMin(_) {\n return arguments.length ? (this._sizeMin = _, this) : this._sizeMin;\n }\n\n /**\n @memberof Network\n @desc Sets the specific type of [continuous d3-scale](https://github.com/d3/d3-scale#continuous-scales) used when calculating the pixel size of nodes in the network.\n @param {String} [*value* = \"sqrt\"]\n @chainable\n */\n sizeScale(_) {\n return arguments.length ? (this._sizeScale = _, this) : this._sizeScale;\n }\n\n /**\n @memberof Network\n @desc If *value* is specified, sets the x accessor to the specified function or string matching a key in the data and returns the current class instance. The data passed to .data() takes priority over the .nodes() data array. If *value* is not specified, returns the current x accessor. By default, the x and y positions are determined dynamically based on default force layout properties.\n @param {Function|String} [*value*]\n @chainable\n */\n x(_) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._x = _;\n else {\n this._x = accessor(_);\n if (!this._aggs[_]) this._aggs[_] = mean;\n }\n return this;\n }\n else return this._x;\n }\n\n /**\n @memberof Network\n @desc If *value* is specified, sets the y accessor to the specified function or string matching a key in the data and returns the current class instance. The data passed to .data() takes priority over the .nodes() data array. If *value* is not specified, returns the current y accessor. By default, the x and y positions are determined dynamically based on default force layout properties.\n @param {Function|String} [*value*]\n @chainable\n */\n y(_) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._y = _;\n else {\n this._y = accessor(_);\n if (!this._aggs[_]) this._aggs[_] = mean;\n }\n return this;\n }\n else return this._y;\n }\n\n}\n","import {nest} from \"d3-collection\";\nimport {hierarchy, pack} from \"d3-hierarchy\";\n\nimport {assign, elem} from \"@d3plus/dom\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\nimport {Circle} from \"../shapes/index.js\";\nimport Viz from \"./Viz.js\";\n\nconst recursionCircles = (d, arr = []) => {\n if (d.values) {\n d.values.forEach(h => {\n arr.push(h);\n recursionCircles(h, arr);\n });\n }\n else {\n arr.push(d);\n }\n return arr;\n};\n\n/**\n @class Pack\n @extends Viz\n @desc Uses the [d3 pack layout](https://github.com/d3/d3-hierarchy#pack) to creates Circle Packing chart based on an array of data.\n*/\nexport default class Pack extends Viz {\n\n /**\n @memberof Pack\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._layoutPadding = 1;\n\n const defaultLegend = this._legend;\n this._legend = (config, arr) => {\n if (arr.length === this._filteredData.length) return false;\n return defaultLegend.bind(this)(config, arr);\n };\n\n this._on.mouseenter = () => {};\n\n const defaultMouseMoveLegend = this._on[\"mousemove.legend\"];\n this._on[\"mousemove.legend\"] = (d, i, x, event) => {\n defaultMouseMoveLegend(d, i, x, event);\n\n const ids = this._ids(d, i);\n const hoverData = recursionCircles(d);\n\n this.hover(h => {\n const hover = Object.keys(h).filter(key => key !== \"value\").every(key => d[key] && d[key].includes(h[key]));\n\n if (hover) hoverData.push(h);\n else if (ids.includes(h.key)) hoverData.push(...recursionCircles(h, [h]));\n\n return hoverData.includes(h);\n });\n\n };\n const defaultMouseMoveShape = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (d, i, x, event) => {\n if (d.__d3plusTooltip__) defaultMouseMoveShape(d, i, x, event);\n this.hover(h => recursionCircles(d, [d]).includes(h));\n };\n this._pack = pack();\n this._packOpacity = constant(0.25);\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n Circle: {\n label: d => d.parent && !d.children ? d.id : false,\n labelConfig: {\n fontResize: true\n },\n opacity: d => d.__d3plusOpacity__\n }\n });\n this._sort = (a, b) => b.value - a.value;\n this._sum = accessor(\"value\");\n\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n super._draw(callback);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n width = this._width - this._margin.left - this._margin.right;\n\n const diameter = Math.min(height, width);\n const transform = `translate(${(width - diameter) / 2}, ${(height - diameter) / 2})`;\n\n let nestedData = nest();\n for (let i = 0; i <= this._drawDepth; i++) nestedData.key(this._groupBy[i]);\n nestedData = nestedData.entries(this._filteredData);\n\n const packData = this._pack\n .padding(this._layoutPadding)\n .size([diameter, diameter])(\n hierarchy({key: nestedData.key, values: nestedData}, d => d.values).sum(this._sum).sort(this._sort)\n )\n .descendants();\n\n packData.forEach((d, i) => {\n d.__d3plus__ = true;\n d.i = i;\n d.id = d.parent ? d.parent.data.key : null;\n d.data.__d3plusOpacity__ = d.height ? this._packOpacity(d.data, i) : 1;\n d.data.__d3plusTooltip__ = !d.height ? true : false;\n });\n\n this._shapes.push(\n new Circle()\n .data(packData)\n .select(\n elem(\"g.d3plus-Pack\", {\n parent: this._select,\n enter: {transform},\n update: {transform}\n }).node()\n )\n .config(configPrep.bind(this)(this._shapeConfig, \"shape\", \"Circle\"))\n .render()\n );\n\n return this;\n }\n\n /**\n @memberof Pack\n @desc If *value* is specified, sets the hover method to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n hover(_) {\n this._hover = _;\n this._shapes.forEach(s => s.hover(_));\n\n if (this._legend) this._legendClass.hover(_);\n return this;\n }\n\n /**\n @memberof Pack\n @desc If *value* is specified, sets the opacity accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current pack opacity accessor.\n @param {Function|Number} [*value*]\n */\n layoutPadding(_) {\n return arguments.length ? (this._layoutPadding = _, this) : this._layoutPadding;\n }\n\n /**\n @memberof Pack\n @desc If *value* is specified, sets the padding accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current pack opacity accessor.\n @param {Function|Number} [*value*]\n */\n packOpacity(_) {\n return arguments.length ? (this._packOpacity = typeof _ === \"function\" ? _ : constant(_), this) : this._packOpacity;\n }\n\n /**\n @memberof Pack\n @desc If *comparator* is specified, sets the sort order for the pack using the specified comparator function. If *comparator* is not specified, returns the current group sort order, which defaults to descending order by the associated input data's numeric value attribute.\n @param {Array} [*comparator*]\n @example\nfunction comparator(a, b) {\n return b.value - a.value;\n}\n */\n sort(_) {\n return arguments.length ? (this._sort = _, this) : this._sort;\n }\n\n\n /**\n @memberof Pack\n @desc If *value* is specified, sets the sum accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current sum accessor.\n @param {Function|Number} [*value*]\n @example\nfunction sum(d) {\n return d.sum;\n}\n */\n sum(_) {\n return arguments.length ? (this._sum = typeof _ === \"function\" ? _ : accessor(_), this) : this._sum;\n }\n}\n","\nimport {min, max, range} from \"d3-array\";\nimport {nest} from \"d3-collection\";\nimport {scaleBand} from \"d3-scale\";\n\nimport {Axis} from \"../components/index.js\";\nimport {assign, date, elem} from \"@d3plus/dom\";\nimport {Rect} from \"../shapes/index.js\";\nimport {accessor, configPrep} from \"../utils/index.js\";\nimport Viz from \"./Viz.js\";\n\n/**\n @class Priestley\n @extends Viz\n @desc Creates a priestley timeline based on an array of data.\n*/\nexport default class Priestley extends Viz {\n\n /**\n @memberof Priestley\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._axis = new Axis().align(\"end\").orient(\"bottom\");\n this._axisConfig = {scale: \"time\"};\n this._axisTest = new Axis().align(\"end\").gridSize(0).orient(\"bottom\");\n this.end(\"end\");\n this._paddingInner = 0.05;\n this._paddingOuter = 0.05;\n this._shapeConfig = assign({}, this._shapeConfig, {\n ariaLabel: (d, i) => `${this._drawLabel(d, i)}, ${this._start(d, i)} - ${this._end(d, i)}.`\n });\n this.start(\"start\");\n\n }\n\n /**\n @memberof Priestley\n @desc Extends the render behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n\n super._draw(callback);\n\n if (!this._filteredData) return this;\n\n const data = this._filteredData.map((data, i) => ({\n __d3plus__: true,\n data,\n end: this._axisConfig.scale === \"time\" ? date(this._end(data, i)) : this._end(data, i),\n i,\n id: this._id(data, i),\n start: this._axisConfig.scale === \"time\" ? date(this._start(data, i)) : this._start(data, i)\n })).filter(d => d.end - d.start > 0).sort((a, b) => a.start - b.start);\n\n let nestedData;\n if (this._groupBy.length > 1 && this._drawDepth > 0) {\n const dataNest = nest();\n for (let i = 0; i < this._drawDepth; i++) dataNest.key(d => this._groupBy[i](d.data, d.i));\n nestedData = dataNest.entries(data);\n }\n else nestedData = [{values: data}];\n\n let maxLane = 0;\n nestedData.forEach(g => {\n let track = [];\n g.values.forEach(d => {\n track = track.map(t => t <= d.start ? false : t);\n const i = track.indexOf(false);\n if (i < 0) {\n d.lane = maxLane + track.length;\n track.push(d.end);\n }\n else {\n track[i] = d.end;\n d.lane = maxLane + i;\n }\n });\n maxLane += track.length;\n });\n\n const axisConfig = {\n domain: [min(data, d => d.start) || 0, max(data, d => d.end) || 0],\n height: this._height - this._margin.top - this._margin.bottom,\n width: this._width - this._margin.left - this._margin.right\n };\n\n const transform = `translate(${this._margin.left}, ${this._margin.top})`;\n\n this._axisTest\n .config(axisConfig)\n .config(this._axisConfig)\n .select(elem(\"g.d3plus-priestley-axis-test\", {parent: this._select, enter: {opacity: 0}}).node())\n .render();\n\n this._axis\n .config(axisConfig)\n .config(this._axisConfig)\n .select(elem(\"g.d3plus-priestley-axis\", {parent: this._select, enter: {transform}, update: {transform}}).node())\n .render();\n\n const axisPad = this._axisTest._padding;\n\n const xScale = this._axis._d3Scale;\n\n const yScale = scaleBand()\n .domain(range(0, maxLane, 1))\n .paddingInner(this._paddingInner)\n .paddingOuter(this._paddingOuter)\n .rangeRound([this._height - this._margin.bottom - this._axisTest.outerBounds().height - axisPad, this._margin.top + axisPad]);\n\n const bandWidth = yScale.bandwidth();\n\n this._shapes.push(new Rect()\n .data(data)\n .duration(this._duration)\n .height(bandWidth)\n .label((d, i) => this._drawLabel(d.data, i))\n .select(elem(\"g.d3plus-priestley-shapes\", {parent: this._select}).node())\n .width(d => {\n const w = Math.abs(xScale(d.end) - xScale(d.start));\n return w > 2 ? w - 2 : w;\n })\n .x(d => xScale(d.start) + (xScale(d.end) - xScale(d.start)) / 2)\n .y(d => yScale(d.lane) + bandWidth / 2)\n .config(configPrep.bind(this)(this._shapeConfig, \"shape\", \"Rect\"))\n .render());\n\n return this;\n\n }\n\n /**\n @memberof Priestley\n @desc If *value* is specified, sets the config method for the axis and returns the current class instance. If *value* is not specified, returns the current axis configuration.\n @param {Object} [*value*]\n @chainable\n */\n axisConfig(_) {\n return arguments.length ? (this._axisConfig = assign(this._axisConfig, _), this) : this._axisConfig;\n }\n\n /**\n @memberof Priestley\n @desc If *value* is specified, sets the end accessor to the specified function or key and returns the current class instance. If *value* is not specified, returns the current end accessor.\n @param {Function|String} [*value*]\n @chainable\n */\n end(_) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._end = _;\n else {\n this._end = accessor(_);\n if (!this._aggs[_]) this._aggs[_] = max;\n }\n return this;\n }\n else return this._end;\n }\n\n /**\n @memberof Priestley\n @desc Sets the [paddingInner](https://github.com/d3/d3-scale#band_paddingInner) value of the underlining [Band Scale](https://github.com/d3/d3-scale#band-scales) used to determine the height of each bar. Values should be a ratio between 0 and 1 representing the space in between each rectangle.\n @param {Number} [*value* = 0.05]\n @chainable\n */\n paddingInner(_) {\n return arguments.length ? (this._paddingInner = _, this) : this._paddingInner;\n }\n\n /**\n @memberof Priestley\n @desc Sets the [paddingOuter](https://github.com/d3/d3-scale#band_paddingOuter) value of the underlining [Band Scale](https://github.com/d3/d3-scale#band-scales) used to determine the height of each bar. Values should be a ratio between 0 and 1 representing the space around the outer rectangles.\n @param {Number} [*value* = 0.05]\n @chainable\n */\n paddingOuter(_) {\n return arguments.length ? (this._paddingOuter = _, this) : this._paddingOuter;\n }\n\n /**\n @memberof Priestley\n @desc If *value* is specified, sets the start accessor to the specified function or key and returns the current class instance. If *value* is not specified, returns the current start accessor.\n @param {Function|String} [*value*]\n @chainable\n */\n start(_) {\n if (arguments.length) {\n if (typeof _ === \"function\") this._start = _;\n else {\n this._start = accessor(_);\n if (!this._aggs[_]) this._aggs[_] = min;\n }\n return this;\n }\n else return this._start;\n }\n\n}\n","\nimport {min, max, sum} from \"d3-array\";\nimport {nest} from \"d3-collection\";\nimport {pointer} from \"d3-selection\";\n\nimport {merge} from \"@d3plus/data\";\nimport {assign, elem} from \"@d3plus/dom\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\nimport {Circle, Path, Rect} from \"../shapes/index.js\";\nimport Viz from \"./Viz.js\";\n\nconst tau = Math.PI * 2;\n\n/**\n @class Radar\n @extends Viz\n @desc Creates a radar visualization based on an array of data.\n*/\nexport default class Radar extends Viz {\n\n /**\n @memberof Radar\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Viz.\n @private\n */\n constructor() {\n super();\n\n this._axisConfig = {\n shapeConfig: {\n fill: constant(\"none\"),\n labelConfig: {\n fontColor: \"#999\",\n padding: 0,\n textAnchor: (d, i, x) => x.textAnchor,\n verticalAlign: \"middle\"\n },\n stroke: \"#eee\",\n strokeWidth: constant(1)\n }\n };\n this._discrete = \"metric\";\n this._levels = 6;\n this._metric = accessor(\"metric\");\n this._outerPadding = 100;\n this._shape = constant(\"Path\");\n this._value = accessor(\"value\");\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n super._draw(callback);\n const height = this._height - this._margin.top - this._margin.bottom,\n width = this._width - this._margin.left - this._margin.right;\n\n const radius = min([height, width]) / 2 - this._outerPadding,\n transform = `translate(${width / 2}, ${height / 2})`;\n\n const nestedAxisData = nest()\n .key(this._metric)\n .entries(this._filteredData),\n nestedGroupData = nest()\n .key(this._id)\n .key(this._metric)\n .entries(this._filteredData);\n\n const maxValue = max(nestedGroupData.map(h => h.values.map(d => sum(d.values, (x, i) => this._value(x, i)))).flat());\n\n const circularAxis = Array.from(Array(this._levels).keys()).map(d => ({\n id: d,\n r: radius * ((d + 1) / this._levels)\n }));\n\n const circleConfig = configPrep.bind(this)(this._axisConfig.shapeConfig, \"shape\", \"Circle\");\n delete circleConfig.label;\n\n new Circle()\n .data(circularAxis)\n .select(\n elem(\"g.d3plus-Radar-radial-circles\", {\n parent: this._select,\n enter: {transform},\n update: {transform}\n }).node()\n )\n .config(circleConfig)\n .render();\n\n const totalAxis = nestedAxisData.length;\n const polarAxis = nestedAxisData\n .map((d, i) => {\n const width = this._outerPadding;\n const fontSize =\n this._shapeConfig.labelConfig.fontSize &&\n this._shapeConfig.labelConfig.fontSize(d, i) ||\n 11;\n\n const lineHeight = fontSize * 1.4;\n const height = lineHeight * 2;\n const padding = 10,\n quadrant = parseInt(360 - 360 / totalAxis * i / 90, 10) % 4 + 1,\n radians = tau / totalAxis * i;\n\n let angle = 360 / totalAxis * i;\n\n let textAnchor = \"start\";\n let x = padding;\n\n if (quadrant === 2 || quadrant === 3) {\n x = -width - padding;\n textAnchor = \"end\";\n angle += 180;\n }\n\n const labelBounds = {\n x,\n y: -height / 2,\n width,\n height\n };\n\n return {\n __d3plus__: true,\n data: merge(d.values, this._aggs),\n i,\n id: d.key,\n angle,\n textAnchor,\n labelBounds,\n rotateAnchor: [-x, height / 2],\n x: radius * Math.cos(radians),\n y: radius * Math.sin(radians)\n };\n })\n .sort((a, b) => a.key - b.key);\n\n new Rect()\n .data(polarAxis)\n .rotate(d => d.angle || 0)\n .width(0)\n .height(0)\n .x(d => d.x)\n .y(d => d.y)\n .label(d => d.id)\n .labelBounds(d => d.labelBounds)\n .labelConfig(this._axisConfig.shapeConfig.labelConfig)\n .select(\n elem(\"g.d3plus-Radar-text\", {\n parent: this._select,\n enter: {transform},\n update: {transform}\n }).node()\n )\n .render();\n\n new Path()\n .data(polarAxis)\n .d(d => `M${0},${0} ${-d.x},${-d.y}`)\n .select(\n elem(\"g.d3plus-Radar-axis\", {\n parent: this._select,\n enter: {transform},\n update: {transform}\n }).node()\n )\n .config(configPrep.bind(this)(this._axisConfig.shapeConfig, \"shape\", \"Path\"))\n .render();\n\n const groupData = nestedGroupData.map(h => {\n\n const q = h.values.map((d, i) => {\n const value = sum(d.values, (x, i) => this._value(x, i));\n const r = value / maxValue * radius,\n radians = tau / totalAxis * i;\n return {\n x: r * Math.cos(radians),\n y: r * Math.sin(radians)\n };\n });\n\n const d = `M ${q[0].x} ${q[0].y} ${q\n .map(l => `L ${l.x} ${l.y}`)\n .join(\" \")} L ${q[0].x} ${q[0].y}`;\n\n return {\n arr: h.values.map(d => merge(d.values, this._aggs)),\n id: h.key,\n points: q,\n d,\n __d3plus__: true,\n data: merge(h.values.map(d => merge(d.values, this._aggs)), this._aggs)\n };\n\n });\n\n const pathConfig = configPrep.bind(this)(this._shapeConfig, \"shape\", \"Path\");\n const events = Object.keys(pathConfig.on);\n pathConfig.on = {};\n for (let e = 0; e < events.length; e++) {\n const event = events[e];\n pathConfig.on[event] = (d, i, s, e) => {\n const x = d.points.map(p => p.x + width / 2);\n const y = d.points.map(p => p.y + height / 2);\n const cursor = pointer(e, this._select.node());\n const xDist = x.map(p => Math.abs(p - cursor[0]));\n const yDist = y.map(p => Math.abs(p - cursor[1]));\n const dists = xDist.map((d, i) => d + yDist[i]);\n this._on[event].bind(this)(d.arr[dists.indexOf(min(dists))], i, s, e);\n };\n }\n\n this._shapes.push(\n new Path()\n .data(groupData)\n .d(d => d.d)\n .select(\n elem(\"g.d3plus-Radar-items\", {\n parent: this._select,\n enter: {transform},\n update: {transform}\n }).node()\n )\n .config(pathConfig)\n .render()\n );\n\n return this;\n }\n\n /**\n @memberof Radar\n @desc Sets the config method used for the radial spokes, circles, and labels.\n @param {Object} *value*\n @chainable\n */\n axisConfig(_) {\n return arguments.length ? (this._axisConfig = assign(this._axisConfig, _), this) : this._axisConfig;\n }\n\n /**\n @memberof Radar\n @desc Defines the value used as axis. If *value* is specified, sets the accessor to the specified metric function. If *value* is not specified, returns the current metric accessor.\n @param {Function|String} *value*\n @chainable\n */\n metric(_) {\n return arguments.length ? (this._metric = typeof _ === \"function\" ? _ : accessor(_), this) : this._metric;\n }\n\n /**\n @memberof Radar\n @desc Determines how much pixel spaces to give the outer labels.\n @param {Number} [*value* = 100]\n @chainable\n */\n outerPadding(_) {\n return arguments.length ? (this._outerPadding = _, this) : this._outerPadding;\n }\n\n /**\n @memberof Radar\n @desc If *value* is specified, sets the value accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current value accessor.\n @param {Function|String} *value*\n @example\nfunction value(d) {\n return d.value;\n}\n */\n value(_) {\n return arguments.length ? (this._value = typeof _ === \"function\" ? _ : accessor(_), this) : this._value;\n }\n\n}\n","import {min} from \"d3-array\";\nimport {arc} from \"d3-shape\";\n\nimport {assign, elem} from \"@d3plus/dom\";\nimport {Path} from \"../shapes/index.js\";\nimport {TextBox} from \"../components/index.js\";\nimport {accessor, configPrep, constant, getProp} from \"../utils/index.js\";\n\nimport Viz from \"./Viz.js\";\nimport prepData from \"./helpers/matrixData.js\";\n\nconst tau = Math.PI * 2;\n\n/**\n @class RadialMatrix\n @extends Viz\n @desc Creates a radial layout of a rows/columns Matrix of any dataset. See [this example](https://d3plus.org/examples/d3plus-matrix/radial-matrix/) for help getting started using the Matrix class.\n*/\nexport default class RadialMatrix extends Viz {\n\n /**\n @memberof RadialMatrix\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._cellPadding = 2;\n\n this._column = accessor(\"column\");\n this._columnConfig = {\n shapeConfig: {\n labelConfig: {\n fontColor: \"#000\",\n padding: 5,\n textAnchor: d => [0, 180].includes(d.angle) ? \"middle\" : [2, 3].includes(d.quadrant) ? \"end\" : \"start\",\n verticalAlign: d => [90, 270].includes(d.angle) ? \"middle\" : [2, 1].includes(d.quadrant) ? \"bottom\" : \"top\"\n }\n }\n };\n this._columnSort = (a, b) => `${a}`.localeCompare(`${b}`);\n this._innerRadius = radius => radius / 5;\n\n this._label = (d, i) => `${getProp.bind(this)(\"row\", d, i)} / ${getProp.bind(this)(\"column\", d, i)}`;\n\n const defaultMouseMoveShape = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (d, i, x, event) => {\n defaultMouseMoveShape(d, i, x, event);\n const row = getProp.bind(this)(\"row\", d, i);\n const column = getProp.bind(this)(\"column\", d, i);\n this.hover((h, ii) => getProp.bind(this)(\"row\", h, ii) === row || getProp.bind(this)(\"column\", h, ii) === column);\n };\n\n this._row = accessor(\"row\");\n this._rowSort = (a, b) => `${a}`.localeCompare(`${b}`);\n\n this._columnLabels = new TextBox();\n\n }\n\n /**\n @memberof RadialMatrix\n @desc Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n\n const {rowValues, columnValues, shapeData} = prepData.bind(this)(this._filteredData);\n\n if (!rowValues.length || !columnValues.length) return this;\n\n super._draw(callback);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n parent = this._select,\n transition = this._transition,\n width = this._width - this._margin.left - this._margin.right;\n\n const labelHeight = 50, labelWidth = 100;\n const radius = min([height - labelHeight * 2, width - labelWidth * 2]) / 2,\n transform = `translate(${width / 2 + this._margin.left}, ${height / 2 + this._margin.top})`;\n\n\n const flippedColumns = columnValues.slice().reverse();\n flippedColumns.unshift(flippedColumns.pop());\n const total = flippedColumns.length;\n\n const labelData = flippedColumns\n .map((key, i) => {\n\n const radians = i / total * tau;\n const angle = Math.round(radians * 180 / Math.PI);\n const quadrant = Math.floor((angle + 90) / 90 % 4 + 1);\n\n const xMod = [0, 180].includes(angle) ? -labelWidth / 2 : [2, 3].includes(quadrant) ? -labelWidth : 0;\n const yMod = [90, 270].includes(angle) ? -labelHeight / 2 : [2, 1].includes(quadrant) ? -labelHeight : 0;\n\n return {\n key, angle, quadrant, radians,\n x: radius * Math.sin(radians + Math.PI) + xMod,\n y: radius * Math.cos(radians + Math.PI) + yMod\n };\n });\n\n /**\n * Extracts the axis config \"labels\" Array, if it exists, it filters\n * the column labels by the values included in the Array.\n */\n const displayLabels = this._columnConfig.labels instanceof Array\n ? labelData.filter(d => this._columnConfig.labels.includes(d.key))\n : labelData;\n\n this._columnLabels\n .data(displayLabels)\n .x(d => d.x)\n .y(d => d.y)\n .text(d => d.key)\n .width(labelWidth)\n .height(labelHeight)\n .config(this._columnConfig.shapeConfig.labelConfig)\n .select(\n elem(\"g.d3plus-RadialMatrix-columns\", {\n parent, transition,\n enter: {transform},\n update: {transform}\n }).node()\n )\n .render();\n\n\n const innerRadius = this._innerRadius(radius);\n const rowHeight = (radius - innerRadius) / rowValues.length;\n const columnWidth = labelData.length > 1 ? labelData[1].radians - labelData[0].radians : tau;\n const flippedRows = rowValues.slice().reverse();\n\n const arcData = arc()\n .padAngle(this._cellPadding / radius)\n .innerRadius(d => innerRadius + flippedRows.indexOf(d.row) * rowHeight + this._cellPadding / 2)\n .outerRadius(d => innerRadius + (flippedRows.indexOf(d.row) + 1) * rowHeight - this._cellPadding / 2)\n .startAngle(d => labelData[columnValues.indexOf(d.column)].radians - columnWidth / 2)\n .endAngle(d => labelData[columnValues.indexOf(d.column)].radians + columnWidth / 2);\n\n this._shapes.push(new Path()\n .data(shapeData)\n .d(arcData)\n .select(elem(\"g.d3plus-RadialMatrix-arcs\", {\n parent, transition,\n enter: {transform},\n update: {transform}\n }).node())\n .config({\n id: d => this._ids(d).join(\"-\"),\n x: 0,\n y: 0\n })\n .config(configPrep.bind(this)(this._shapeConfig, \"shape\", \"Path\"))\n .render());\n\n return this;\n\n }\n\n /**\n @memberof RadialMatrix\n @desc The pixel padding in between each cell.\n @param {Number} [*value* = 2]\n */\n cellPadding(_) {\n return arguments.length ? (this._cellPadding = _, this) : this._cellPadding;\n }\n\n /**\n @memberof RadialMatrix\n @desc Determines which key in your data should be used for each column in the matrix. Can be either a String that matches a key used in every data point, or an accessor function that receives a data point and it's index in the data array, and is expected to return it's column value.\n @param {String|Function} [*value*]\n @example\nfunction column(d) {\n return d.name;\n}\n */\n column(_) {\n return arguments.length ? (this._column = typeof _ === \"function\" ? _ : accessor(_), this) : this._column;\n }\n\n /**\n @memberof RadialMatrix\n @desc A pass-through to the underlying [Axis](http://d3plus.org/docs/#Axis) config used for the column labels.\n @param {Object} *value*\n @chainable\n */\n columnConfig(_) {\n return arguments.length ? (this._columnConfig = assign(this._columnConfig, _), this) : this._columnConfig;\n }\n\n /**\n @memberof RadialMatrix\n @desc A manual list of IDs to be used for columns.\n @param {Array} [*value*]\n */\n columnList(_) {\n return arguments.length ? (this._columnList = _, this) : this._columnList;\n }\n\n /**\n @memberof RadialMatrix\n @desc A sort comparator function that is run on the unique set of column values.\n @param {Function} [*value*]\n @example\nfunction column(a, b) {\n return a.localeCompare(b);\n}\n */\n columnSort(_) {\n return arguments.length ? (this._columnSort = _, this) : this._columnSort;\n }\n\n /**\n @memberof RadialMatrix\n @desc The radius (in pixels) for the inner donut hole of the diagram. Can either be a static Number, or an accessor function that receives the outer radius as it's only argument.\n @param {Function|Number} [*value*]\n @example\nfunction(outerRadius) {\n return outerRadius / 5;\n}\n */\n innerRadius(_) {\n return arguments.length ? (this._innerRadius = typeof _ === \"function\" ? _ : constant(_), this) : this._innerRadius;\n }\n\n /**\n @memberof RadialMatrix\n @desc Determines which key in your data should be used for each row in the matrix. Can be either a String that matches a key used in every data point, or an accessor function that receives a data point and it's index in the data array, and is expected to return it's row value.\n @param {String|Function} [*value*]\n @example\nfunction row(d) {\n return d.name;\n}\n */\n row(_) {\n return arguments.length ? (this._row = typeof _ === \"function\" ? _ : accessor(_), this) : this._row;\n }\n\n /**\n @memberof RadialMatrix\n @desc A manual list of IDs to be used for rows.\n @param {Array} [*value*]\n */\n rowList(_) {\n return arguments.length ? (this._rowList = _, this) : this._rowList;\n }\n\n /**\n @memberof RadialMatrix\n @desc A sort comparator function that is run on the unique set of row values.\n @param {Function} [*value*]\n @example\nfunction row(a, b) {\n return a.localeCompare(b);\n}\n */\n rowSort(_) {\n return arguments.length ? (this._rowSort = _, this) : this._rowSort;\n }\n\n}\n","\nimport {extent, max, min} from \"d3-array\";\nimport {nest} from \"d3-collection\";\nimport * as scales from \"d3-scale\";\n\nimport {assign, elem} from \"@d3plus/dom\";\nimport {colorLegible} from \"@d3plus/color\";\nimport {addToQueue} from \"@d3plus/data\";\nimport * as shapes from \"../shapes/index.js\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\nimport Viz from \"./Viz\";\n\n/**\n @class Rings\n @extends Viz\n @desc Creates a ring visualization based on a defined set of nodes and edges. [Click here](http://d3plus.org/examples/d3plus-network/simple-rings/) for help getting started using the Rings class.\n*/\nexport default class Rings extends Viz {\n\n /**\n @memberof Rings\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n this._links = [];\n this._linkSize = constant(1);\n this._linkSizeMin = 1;\n this._linkSizeScale = \"sqrt\";\n this._noDataMessage = false;\n this._nodes = [];\n this._on.mouseenter = () => {};\n this._on[\"mouseleave.shape\"] = () => {\n this.hover(false);\n };\n const defaultMouseMove = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (d, i, x, event) => {\n defaultMouseMove(d, i, x, event);\n if (this._focus && this._focus === d.id) {\n this.hover(false);\n this._on.mouseenter.bind(this)(d, i, x, event);\n\n this._focus = undefined;\n }\n else {\n const id = this._nodeGroupBy && this._nodeGroupBy[this._drawDepth](d, i) ? this._nodeGroupBy[this._drawDepth](d, i) : this._id(d, i),\n links = this._linkLookup[id],\n node = this._nodeLookup[id];\n\n const filterIds = [node.id];\n const xDomain = [node.x - node.r, node.x + node.r],\n yDomain = [node.y - node.r, node.y + node.r];\n\n links.forEach(l => {\n filterIds.push(l.id);\n if (l.x - l.r < xDomain[0]) xDomain[0] = l.x - l.r;\n if (l.x + l.r > xDomain[1]) xDomain[1] = l.x + l.r;\n if (l.y - l.r < yDomain[0]) yDomain[0] = l.y - l.r;\n if (l.y + l.r > yDomain[1]) yDomain[1] = l.y + l.r;\n });\n\n this.hover((h, x) => {\n if (h.source && h.target) return h.source.id === node.id || h.target.id === node.id;\n else return filterIds.includes(this._ids(h, x)[this._drawDepth]);\n });\n }\n };\n this._on[\"click.shape\"] = d => {\n this._center = d.id;\n // Need to resets margins and padding because we are\n // skipping over the default render method and using\n // _draw directly.\n this._margin = {bottom: 0, left: 0, right: 0, top: 0};\n this._padding = {bottom: 0, left: 0, right: 0, top: 0};\n this._draw();\n };\n this._sizeMin = 5;\n this._sizeScale = \"sqrt\";\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n ariaLabel: (d, i) => {\n const validSize = this._size ? `, ${this._size(d, i)}` : \"\";\n return `${this._drawLabel(d, i)}${validSize}.`;\n },\n labelConfig: {\n duration: 0,\n fontMin: 1,\n fontResize: true,\n labelPadding: 0,\n textAnchor: \"middle\",\n verticalAlign: \"middle\"\n },\n Path: {\n fill: \"none\",\n label: false,\n stroke: \"#eee\",\n strokeWidth: 1\n }\n });\n\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n\n super._draw(callback);\n\n const data = this._filteredData.reduce((obj, d, i) => {\n obj[this._id(d, i)] = d;\n return obj;\n }, {});\n\n let nodes = this._nodes;\n\n if (!this._nodes.length && this._links.length) {\n const nodeIds = Array.from(new Set(this._links.reduce((ids, link) => ids.concat([link.source, link.target]), [])));\n nodes = nodeIds.map(node => typeof node === \"object\" ? node : {id: node});\n }\n\n nodes = nodes.reduce((obj, d, i) => {\n obj[this._nodeGroupBy ? this._nodeGroupBy[this._drawDepth](d, i) : this._id(d, i)] = d;\n return obj;\n }, {});\n\n nodes = Array.from(new Set(Object.keys(data).concat(Object.keys(nodes)))).map((id, i) => {\n\n const d = data[id],\n n = nodes[id];\n\n if (n === undefined) return false;\n\n return {\n __d3plus__: true,\n data: d || n,\n i, id,\n node: n,\n shape: d !== undefined && this._shape(d) !== undefined ? this._shape(d) : this._shape(n)\n };\n\n }).filter(n => n);\n\n const nodeLookup = this._nodeLookup = nodes.reduce((obj, d) => {\n obj[d.id] = d;\n return obj;\n }, {});\n\n const links = this._links.map(link => {\n const check = [\"source\", \"target\"];\n const edge = check.reduce((result, check) => {\n result[check] = typeof link[check] === \"number\" ? nodes[link[check]] : nodeLookup[link[check].id || link[check]];\n return result;\n }, {});\n edge.size = this._linkSize(link);\n return edge;\n });\n\n const linkMap = links.reduce((map, link) => {\n if (!map[link.source.id]) {\n map[link.source.id] = [];\n }\n map[link.source.id].push(link);\n if (!map[link.target.id]) {\n map[link.target.id] = [];\n }\n map[link.target.id].push(link);\n return map;\n }, {});\n\n const duration = this._duration,\n height = this._height - this._margin.top - this._margin.bottom,\n transform = `translate(${this._margin.left}, ${this._margin.top})`,\n width = this._width - this._margin.left - this._margin.right;\n\n const edges = [],\n radius = min([height, width]) / 2,\n ringWidth = radius / 3;\n\n const primaryRing = ringWidth,\n secondaryRing = ringWidth * 2;\n\n const center = nodeLookup[this._center];\n\n center.x = width / 2;\n center.y = height / 2;\n center.r = this._sizeMin ? max([this._sizeMin, primaryRing * .65]) : this._sizeMax ? min([this._sizeMax, primaryRing * .65]) : primaryRing * .65;\n\n const claimed = [center],\n primaries = [];\n\n linkMap[this._center].forEach(edge => {\n const node = edge.source.id === this._center ? edge.target : edge.source;\n node.edges = linkMap[node.id].filter(link => link.source.id !== this._center || link.target.id !== this._center);\n node.edge = edge;\n\n claimed.push(node);\n primaries.push(node);\n });\n\n primaries.sort((a, b) => a.edges.length - b.edges.length);\n\n const secondaries = [];\n let totalEndNodes = 0;\n\n primaries.forEach(p => {\n const primaryId = p.id;\n\n p.edges = p.edges.filter(edge => !claimed.includes(edge.source) && edge.target.id === primaryId ||\n !claimed.includes(edge.target) && edge.source.id === primaryId);\n\n totalEndNodes += p.edges.length || 1;\n\n p.edges.forEach(edge => {\n const {source, target} = edge;\n const claim = target.id === primaryId ? source : target;\n claimed.push(claim);\n });\n });\n\n const tau = Math.PI * 2;\n let offset = 0;\n\n primaries.forEach((p, i) => {\n const children = p.edges.length || 1;\n const space = tau / totalEndNodes * children;\n\n if (i === 0) {\n offset -= space / 2;\n }\n\n const angle = offset + space / 2 - tau / 4;\n\n p.radians = angle;\n p.x = width / 2 + primaryRing * Math.cos(angle);\n p.y = height / 2 + primaryRing * Math.sin(angle);\n\n offset += space;\n\n p.edges.forEach((edge, i) => {\n const node = edge.source.id === p.id ? edge.target : edge.source;\n const s = tau / totalEndNodes;\n const a = angle - s * children / 2 + s / 2 + s * i;\n\n node.radians = a;\n node.x = width / 2 + secondaryRing * Math.cos(a);\n node.y = height / 2 + secondaryRing * Math.sin(a);\n\n secondaries.push(node);\n });\n });\n\n const primaryDistance = ringWidth / 2;\n const secondaryDistance = ringWidth / 4;\n\n let primaryMax = primaryDistance / 2 - 4;\n if (primaryDistance / 2 - 4 < 8) {\n primaryMax = min([primaryDistance / 2, 8]);\n }\n\n let secondaryMax = secondaryDistance / 2 - 4;\n if (secondaryDistance / 2 - 4 < 4) {\n secondaryMax = min([secondaryDistance / 2, 4]);\n }\n\n if (secondaryMax > ringWidth / 10) {\n secondaryMax = ringWidth / 10;\n }\n\n if (secondaryMax > primaryMax && secondaryMax > 10) {\n secondaryMax = primaryMax * .75;\n }\n if (primaryMax > secondaryMax * 1.5) {\n primaryMax = secondaryMax * 1.5;\n }\n\n primaryMax = Math.floor(primaryMax);\n secondaryMax = Math.floor(secondaryMax);\n\n let radiusFn;\n\n if (this._size) {\n const domain = extent(data, d => d.size);\n\n if (domain[0] === domain[1]) {\n domain[0] = 0;\n }\n\n radiusFn = scales.scaleLinear()\n .domain(domain)\n .rangeRound([3, min([primaryMax, secondaryMax])]);\n\n const val = center.size;\n center.r = radiusFn(val);\n }\n else {\n radiusFn = scales.scaleLinear()\n .domain([1, 2])\n .rangeRound([primaryMax, secondaryMax]);\n }\n\n secondaries.forEach(s => {\n s.ring = 2;\n const val = this._size ? s.size : 2;\n s.r = this._sizeMin ? max([this._sizeMin, radiusFn(val)]) : this._sizeMax ? min([this._sizeMax, radiusFn(val)]) : radiusFn(val);\n });\n\n primaries.forEach(p => {\n p.ring = 1;\n const val = this._size ? p.size : 1;\n p.r = this._sizeMin ? max([this._sizeMin, radiusFn(val)]) : this._sizeMax ? min([this._sizeMax, radiusFn(val)]) : radiusFn(val);\n });\n\n nodes = [center].concat(primaries).concat(secondaries);\n\n primaries.forEach(p => {\n const check = [\"source\", \"target\"];\n const {edge} = p;\n\n check.forEach(node => {\n edge[node] = nodes.find(n => n.id === edge[node].id);\n });\n\n edges.push(edge);\n\n linkMap[p.id].forEach(edge => {\n const node = edge.source.id === p.id ? edge.target : edge.source;\n\n if (node.id !== center.id) {\n let target = secondaries.find(s => s.id === node.id);\n\n if (!target) {\n target = primaries.find(s => s.id === node.id);\n }\n\n if (target) {\n edge.spline = true;\n\n const centerX = width / 2;\n const centerY = height / 2;\n const middleRing = primaryRing + (secondaryRing - primaryRing) * 0.5;\n\n const check = [\"source\", \"target\"];\n\n check.forEach((node, i) => {\n edge[`${node}X`] = edge[node].x + Math.cos(edge[node].ring === 2 ? edge[node].radians + Math.PI : edge[node].radians) * edge[node].r;\n edge[`${node}Y`] = edge[node].y + Math.sin(edge[node].ring === 2 ? edge[node].radians + Math.PI : edge[node].radians) * edge[node].r;\n edge[`${node}BisectX`] = centerX + middleRing * Math.cos(edge[node].radians);\n edge[`${node}BisectY`] = centerY + middleRing * Math.sin(edge[node].radians);\n\n edge[node] = nodes.find(n => n.id === edge[node].id);\n\n if (edge[node].edges === undefined) edge[node].edges = {};\n\n const oppId = i === 0 ? edge.target.id : edge.source.id;\n\n if (edge[node].id === p.id) {\n edge[node].edges[oppId] = {\n angle: p.radians + Math.PI,\n radius: ringWidth / 2\n };\n }\n else {\n edge[node].edges[oppId] = {\n angle: target.radians,\n radius: ringWidth / 2\n };\n }\n });\n\n edges.push(edge);\n }\n }\n });\n });\n\n nodes.forEach(node => {\n\n if (node.id !== this._center) {\n const fontSize = this._shapeConfig.labelConfig.fontSize && this._shapeConfig.labelConfig.fontSize(node) || 11;\n const lineHeight = fontSize * 1.4;\n const height = lineHeight * 2;\n const padding = 5;\n const width = ringWidth - node.r;\n\n let angle = node.radians * (180 / Math.PI);\n let x = node.r + padding;\n let textAnchor = \"start\";\n\n if (angle < -90 || angle > 90) {\n x = -node.r - width - padding;\n textAnchor = \"end\";\n angle += 180;\n }\n\n node.labelBounds = {\n x,\n y: -lineHeight / 2,\n width,\n height\n };\n\n node.rotate = angle;\n node.textAnchor = textAnchor;\n }\n else {\n node.labelBounds = {\n x: -primaryRing / 2,\n y: -primaryRing / 2,\n width: primaryRing,\n height: primaryRing\n };\n }\n });\n\n this._linkLookup = links.reduce((obj, d) => {\n if (!obj[d.source.id]) obj[d.source.id] = [];\n obj[d.source.id].push(d.target);\n if (!obj[d.target.id]) obj[d.target.id] = [];\n obj[d.target.id].push(d.source);\n return obj;\n }, {});\n\n const strokeExtent = extent(links, d => d.size);\n if (strokeExtent[0] !== strokeExtent[1]) {\n const radius = min(nodes, d => d.r);\n const strokeScale = scales[`scale${this._linkSizeScale.charAt(0).toUpperCase()}${this._linkSizeScale.slice(1)}`]()\n .domain(strokeExtent)\n .range([this._linkSizeMin, radius]);\n links.forEach(link => {\n link.size = strokeScale(link.size);\n });\n }\n\n const linkConfig = configPrep.bind(this)(this._shapeConfig, \"edge\", \"Path\");\n delete linkConfig.on;\n\n this._shapes.push(new shapes.Path()\n .config(linkConfig)\n .strokeWidth(d => d.size)\n .id(d => `${d.source.id}_${d.target.id}`)\n .d(d => d.spline ? `M${d.sourceX},${d.sourceY}C${d.sourceBisectX},${d.sourceBisectY} ${d.targetBisectX},${d.targetBisectY} ${d.targetX},${d.targetY}` : `M${d.source.x},${d.source.y} ${d.target.x},${d.target.y}`)\n .data(edges)\n .select(elem(\"g.d3plus-rings-links\", {parent: this._select, duration, enter: {transform}, update: {transform}}).node())\n .render());\n\n const that = this;\n\n const shapeConfig = {\n label: d => nodes.length <= this._dataCutoff || (this._hover && this._hover(d) || this._active && this._active(d)) ? this._drawLabel(d.data || d.node, d.i) : false,\n labelBounds: d => d.labelBounds,\n labelConfig: {\n fontColor: d => d.id === this._center ? configPrep.bind(that)(that._shapeConfig, \"shape\", d.key).labelConfig.fontColor(d) : colorLegible(configPrep.bind(that)(that._shapeConfig, \"shape\", d.key).fill(d)),\n fontResize: d => d.id === this._center,\n padding: 0,\n textAnchor: d => nodeLookup[d.id].textAnchor || configPrep.bind(that)(that._shapeConfig, \"shape\", d.key).labelConfig.textAnchor,\n verticalAlign: d => d.id === this._center ? \"middle\" : \"top\"\n },\n rotate: d => nodeLookup[d.id].rotate || 0,\n select: elem(\"g.d3plus-rings-nodes\", {parent: this._select, duration, enter: {transform}, update: {transform}}).node()\n };\n\n nest().key(d => d.shape).entries(nodes).forEach(d => {\n this._shapes.push(new shapes[d.key]()\n .config(configPrep.bind(this)(this._shapeConfig, \"shape\", d.key))\n .config(shapeConfig)\n .data(d.values)\n .render());\n });\n\n return this;\n\n }\n\n /**\n @memberof Rings\n @desc Sets the center node to be the node with the given id.\n @param {String}\n @chainable\n */\n center(_) {\n return arguments.length ? (this._center = _, this) : this._center;\n }\n\n /**\n @memberof Rings\n @desc If *value* is specified, sets the hover method to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n hover(_) {\n this._hover = _;\n\n this._shapes.forEach(s => s.hover(_));\n if (this._legend) this._legendClass.hover(_);\n\n return this;\n }\n\n /**\n @memberof Rings\n @desc A predefined *Array* of edges that connect each object passed to the [node](#Rings.node) method. The `source` and `target` keys in each link need to map to the nodes in one of three ways:\n1. The index of the node in the nodes array (as in [this](http://d3plus.org/examples/d3plus-network/getting-started/) example).\n2. The actual node *Object* itself.\n3. A *String* value matching the `id` of the node.\n\nThe value passed should either be an *Array* of data or a *String* representing a filepath or URL to be loaded. An optional formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final links *Array*.\n @param {Array|String} *links* = []\n @param {Function} [*formatter*]\n @chainable\n */\n links(_, f) {\n if (arguments.length) {\n addToQueue.bind(this)(_, f, \"links\");\n return this;\n }\n return this._links;\n }\n\n /**\n @memberof Network\n @desc Defines the thickness of the links connecting each node. The value provided can be either a pixel Number to be used for all links, or an accessor function that returns a specific data value to be used in an automatically calculated linear scale.\n @param {Function|Name} [*value* = 1]\n @chainable\n */\n linkSize(_) {\n return arguments.length ? (this._linkSize = typeof _ === \"function\" ? _ : constant(_), this) : this._linkSize;\n }\n\n /**\n @memberof Network\n @desc Defines the minimum pixel stroke width used in link sizing.\n @param {Number} [*value* = 2]\n @chainable\n */\n linkSizeMin(_) {\n return arguments.length ? (this._linkSizeMin = _, this) : this._linkSizeMin;\n }\n\n /**\n @memberof Network\n @desc Sets the specific type of [continuous d3-scale](https://github.com/d3/d3-scale#continuous-scales) used when calculating the pixel size of links in the network.\n @param {String} [*value* = \"sqrt\"]\n @chainable\n */\n linkSizeScale(_) {\n return arguments.length ? (this._linkSizeScale = _, this) : this._linkSizeScale;\n }\n\n /**\n @memberof Rings\n @desc If *value* is specified, sets the node group accessor(s) to the specified string, function, or array of values and returns the current class instance. This method overrides the default .groupBy() function from being used with the data passed to .nodes(). If *value* is not specified, returns the current node group accessor.\n @param {String|Function|Array} [*value* = undefined]\n @chainable\n */\n nodeGroupBy(_) {\n if (!arguments.length) return this._nodeGroupBy;\n if (!(_ instanceof Array)) _ = [_];\n return this._nodeGroupBy = _.map(k => {\n if (typeof k === \"function\") return k;\n else {\n if (!this._aggs[k]) {\n this._aggs[k] = (a, c) => {\n const v = Array.from(new Set(a.map(c)));\n return v.length === 1 ? v[0] : v;\n };\n }\n return accessor(k);\n }\n }), this;\n }\n\n /**\n @memberof Rings\n @desc The list of nodes to be used for drawing the rings network. The value passed should either be an *Array* of data or a *String* representing a filepath or URL to be loaded.\n\nAdditionally, a custom formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final node *Array*.\n @param {Array|String} *nodes* = []\n @param {Function} [*formatter*]\n @chainable\n */\n nodes(_, f) {\n if (arguments.length) {\n addToQueue.bind(this)(_, f, \"nodes\");\n return this;\n }\n return this._nodes;\n }\n\n /**\n @memberof Rings\n @desc If *value* is specified, sets the size accessor to the specified function or data key and returns the current class instance. If *value* is not specified, returns the current size accessor.\n @param {Function|String} [*value*]\n @chainable\n */\n size(_) {\n return arguments.length ? (this._size = typeof _ === \"function\" || !_ ? _ : accessor(_), this) : this._size;\n }\n\n /**\n @memberof Rings\n @desc If *value* is specified, sets the size scale maximum to the specified number and returns the current class instance. If *value* is not specified, returns the current size scale maximum. By default, the maximum size is determined by half the distance of the two closest nodes.\n @param {Number} [*value*]\n @chainable\n */\n sizeMax(_) {\n return arguments.length ? (this._sizeMax = _, this) : this._sizeMax;\n }\n\n /**\n @memberof Rings\n @desc If *value* is specified, sets the size scale minimum to the specified number and returns the current class instance. If *value* is not specified, returns the current size scale minimum.\n @param {Number} [*value* = 5]\n @chainable\n */\n sizeMin(_) {\n return arguments.length ? (this._sizeMin = _, this) : this._sizeMin;\n }\n\n /**\n @memberof Rings\n @desc If *value* is specified, sets the size scale to the specified string and returns the current class instance. If *value* is not specified, returns the current size scale.\n @param {String} [*value* = \"sqrt\"]\n @chainable\n */\n sizeScale(_) {\n return arguments.length ? (this._sizeScale = _, this) : this._sizeScale;\n }\n\n}\n","import {nest} from \"d3-collection\";\nimport {\n sankey,\n sankeyCenter,\n sankeyJustify,\n sankeyLeft,\n sankeyLinkHorizontal,\n sankeyRight\n} from \"d3-sankey\";\n\nconst sankeyAligns = {\n center: sankeyCenter,\n justify: sankeyJustify,\n left: sankeyLeft,\n right: sankeyRight\n};\n\nimport {addToQueue} from \"@d3plus/data\";\nimport {assign, elem} from \"@d3plus/dom\";\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\nimport {Path} from \"../shapes/index.js\";\nimport * as shapes from \"../shapes/index.js\";\nimport Viz from \"./Viz\";\n\n/**\n @class Sankey\n @extends Viz\n @desc Creates a sankey visualization based on a defined set of nodes and links. [Click here](http://d3plus.org/examples/d3plus-network/sankey-diagram/) for help getting started using the Sankey class.\n*/\nexport default class Sankey extends Viz {\n\n /**\n @memberof Sankey\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n super();\n this._nodeId = accessor(\"id\");\n this._links = accessor(\"links\");\n this._linksSource = \"source\";\n this._linksTarget = \"target\";\n this._noDataMessage = false;\n this._nodes = accessor(\"nodes\");\n this._nodeAlign = sankeyAligns.justify;\n this._nodePadding = 8;\n this._nodeWidth = 30;\n this._on.mouseenter = () => {};\n this._on[\"mouseleave.shape\"] = () => {\n this.hover(false);\n };\n const defaultMouseMove = this._on[\"mousemove.shape\"];\n this._on[\"mousemove.shape\"] = (d, i, x, event) => {\n defaultMouseMove(d, i, x, event);\n if (this._focus && this._focus === d.id) {\n this.hover(false);\n this._on.mouseenter.bind(this)(d, i, x, event);\n\n this._focus = undefined;\n }\n else {\n const id = this._nodeId(d, i),\n node = this._nodeLookup[id],\n nodeLookup = Object.keys(this._nodeLookup).reduce((all, item) => {\n all[this._nodeLookup[item]] = !isNaN(item) ? parseInt(item, 10) : item;\n return all;\n }, {});\n\n const links = this._linkLookup[node];\n const filterIds = [id];\n\n links.forEach(l => {\n filterIds.push(nodeLookup[l]);\n });\n\n this.hover((h, x) => {\n if (h.source && h.target) {\n return h.source.id === id || h.target.id === id;\n }\n else {\n return filterIds.includes(this._nodeId(h, x));\n }\n });\n }\n };\n this._path = sankeyLinkHorizontal();\n this._sankey = sankey();\n this._shape = constant(\"Rect\");\n this._shapeConfig = assign(this._shapeConfig, {\n Path: {\n fill: \"none\",\n hoverStyle: {\n \"stroke-width\": d => Math.max(1, Math.abs(d.source.y1 - d.source.y0) * (d.value / d.source.value) - 2)\n },\n label: false,\n stroke: \"#DBDBDB\",\n strokeOpacity: 0.5,\n strokeWidth: d => Math.max(1, Math.abs(d.source.y1 - d.source.y0) * (d.value / d.source.value) - 2)\n\n },\n Rect: {}\n });\n this._value = constant(1);\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n super._draw(callback);\n\n const height = this._height - this._margin.top - this._margin.bottom,\n width = this._width - this._margin.left - this._margin.right;\n\n const _nodes = Array.isArray(this._nodes)\n ? this._nodes\n : this._links.reduce((all, d) => {\n if (!all.includes(d[this._linksSource])) all.push(d[this._linksSource]);\n if (!all.includes(d[this._linksTarget])) all.push(d[this._linksTarget]);\n return all;\n }, []).map(id => ({id}));\n\n const nodes = _nodes\n .map((n, i) => ({\n __d3plus__: true,\n data: n,\n i,\n id: this._nodeId(n, i),\n node: n,\n shape: \"Rect\"\n }));\n\n const nodeLookup = this._nodeLookup = nodes.reduce((obj, d, i) => {\n obj[d.id] = i;\n return obj;\n }, {});\n\n const links = this._links.map((link, i) => {\n const check = [this._linksSource, this._linksTarget];\n const linkLookup = check.reduce((result, item) => {\n result[item] = nodeLookup[link[item]];\n return result;\n }, {});\n return {\n source: linkLookup[this._linksSource],\n target: linkLookup[this._linksTarget],\n value: this._value(link, i)\n };\n });\n\n this._linkLookup = links.reduce((obj, d) => {\n if (!obj[d.source]) obj[d.source] = [];\n obj[d.source].push(d.target);\n if (!obj[d.target]) obj[d.target] = [];\n obj[d.target].push(d.source);\n return obj;\n }, {});\n\n const transform = `translate(${this._margin.left}, ${this._margin.top})`;\n\n this._sankey\n .nodeAlign(this._nodeAlign)\n .nodePadding(this._nodePadding)\n .nodeWidth(this._nodeWidth)\n .nodes(nodes)\n .links(links)\n .size([width, height])();\n\n this._shapes.push(\n new Path()\n .config(this._shapeConfig.Path)\n .data(links)\n .d(this._path)\n .select(\n elem(\"g.d3plus-Links\", {\n parent: this._select,\n enter: {transform},\n update: {transform}\n }).node()\n )\n .render()\n );\n nest()\n .key(d => d.shape)\n .entries(nodes)\n .forEach(d => {\n this._shapes.push(\n new shapes[d.key]()\n .data(d.values)\n .height(d => d.y1 - d.y0)\n .width(d => d.x1 - d.x0)\n .x(d => (d.x1 + d.x0) / 2)\n .y(d => (d.y1 + d.y0) / 2)\n .select(\n elem(\"g.d3plus-sankey-nodes\", {\n parent: this._select,\n enter: {transform},\n update: {transform}\n }).node()\n )\n .config(configPrep.bind(this)(this._shapeConfig, \"shape\", d.key))\n .render()\n );\n });\n return this;\n }\n\n /**\n @memberof Sankey\n @desc If *value* is specified, sets the hover method to the specified function and returns the current class instance.\n @param {Function} [*value*]\n @chainable\n */\n hover(_) {\n this._hover = _;\n this._shapes.forEach(s => s.hover(_));\n if (this._legend) this._legendClass.hover(_);\n\n return this;\n }\n\n /**\n @memberof Sankey\n @desc A predefined *Array* of edges that connect each object passed to the [node](#Sankey.node) method. The `source` and `target` keys in each link need to map to the nodes in one of one way:\n1. A *String* value matching the `id` of the node.\n\nThe value passed should be an *Array* of data. An optional formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final links *Array*.\n @param {Array} *links* = []\n @chainable\n */\n links(_, f) {\n if (arguments.length) {\n addToQueue.bind(this)(_, f, \"links\");\n return this;\n }\n return this._links;\n }\n\n /**\n @memberof Sankey\n @desc The key inside of each link Object that references the source node.\n @param {String} [*value* = \"source\"]\n @chainable\n */\n linksSource(_) {\n return arguments.length ? (this._linksSource = _, this) : this._linksSource;\n }\n\n /**\n @memberof Sankey\n @desc The key inside of each link Object that references the target node.\n @param {String} [*value* = \"target\"]\n @chainable\n */\n linksTarget(_) {\n return arguments.length ? (this._linksTarget = _, this) : this._linksTarget;\n }\n\n /**\n @memberof Sankey\n @desc Sets the nodeAlign property of the sankey layout, which can either be \"left\", \"right\", \"center\", or \"justify\".\n @param {Function|String} [*value* = \"justify\"]\n @chainable\n */\n nodeAlign(_) {\n return arguments.length\n ? (this._nodeAlign = typeof _ === \"function\" ? _ : sankeyAligns[_], this)\n : this._nodeAlign;\n }\n\n /**\n @memberof Sankey\n @desc If *value* is specified, sets the node id accessor(s) to the specified array of values and returns the current class instance. If *value* is not specified, returns the current node group accessor.\n @param {String} [*value* = \"id\"]\n @chainable\n */\n nodeId(_) {\n return arguments.length\n ? (this._nodeId = typeof _ === \"function\" ? _ : accessor(_), this)\n : this._nodeId;\n }\n\n /**\n @memberof Sankey\n @desc The list of nodes to be used for drawing the network. The value passed must be an *Array* of data.\n\nAdditionally, a custom formatting function can be passed as a second argument to this method. This custom function will be passed the data that has been loaded, as long as there are no errors. This function should return the final node *Array*.\n @param {Array} *nodes* = []\n @chainable\n */\n nodes(_, f) {\n if (arguments.length) {\n addToQueue.bind(this)(_, f, \"nodes\");\n return this;\n }\n return this._nodes;\n }\n\n /**\n @memberof Sankey\n @desc If *value* is specified, sets the padding of the node and returns the current class instance. If *value* is not specified, returns the current nodePadding. By default, the nodePadding size is 8.\n @param {Number} [*value* = 8]\n @chainable\n */\n nodePadding(_) {\n return arguments.length ? (this._nodePadding = _, this) : this._nodePadding;\n }\n\n\n /**\n @memberof Sankey\n @desc If *value* is specified, sets the width of the node and returns the current class instance. If *value* is not specified, returns the current nodeWidth. By default, the nodeWidth size is 30.\n @param {Number} [*value* = 30]\n @chainable\n */\n nodeWidth(_) {\n return arguments.length ? (this._nodeWidth = _, this) : this._nodeWidth;\n }\n\n /**\n @memberof Sankey\n @desc If *value* is specified, sets the width of the links and returns the current class instance. If *value* is not specified, returns the current value accessor.\n @param {Function|Number} *value*\n @example\nfunction value(d) {\n return d.value;\n}\n */\n value(_) {\n\n return arguments.length\n ? (this._value = typeof _ === \"function\" ? _ : accessor(_), this)\n : this._value;\n }\n}\n","import {default as AreaPlot} from \"./AreaPlot.js\";\n\n/**\n @class StackedArea\n @extends Area\n @desc Creates a stacked area plot based on an array of data.\n @example <caption>the equivalent of calling:</caption>\nnew d3plus.AreaPlot()\n .stacked(true)\n*/\nexport default class StackedArea extends AreaPlot {\n\n /**\n @memberof StackedArea\n @desc Invoked when creating a new class instance, and overrides any default parameters inherited from Plot.\n @private\n */\n constructor() {\n\n super();\n this._stacked = true;\n\n }\n\n}\n","import {extent, min, max} from \"d3-array\";\nimport {hierarchy, tree} from \"d3-hierarchy\";\nimport {scaleLinear} from \"d3-scale\";\n\nimport {assign, elem} from \"@d3plus/dom\";\nimport {merge, nest} from \"@d3plus/data\";\nimport {configPrep, constant} from \"../utils/index.js\";\nimport {Circle, Path} from \"../shapes/index.js\";\n\nimport Viz from \"./Viz.js\";\n\n/**\n @class Tree\n @extends Viz\n @desc Uses d3's [tree layout](https://github.com/d3/d3-hierarchy#tree) to create a tidy tree chart based on an array of data.\n*/\nexport default class Tree extends Viz {\n\n /**\n @memberof Tree\n @desc Invoked when creating a new class instance, and sets any default parameters.\n @private\n */\n constructor() {\n\n super();\n\n this._orient = \"vertical\";\n this._separation = (a, b) => a.parent === b.parent ? 1 : 2;\n\n this._shape = constant(\"Circle\");\n this._shapeConfig = assign(this._shapeConfig, {\n ariaLabel: (d, i) => this._treeData ? `${this._treeData[i].depth}. ${this._drawLabel(d, i)}.` : \"\",\n labelConfig: {\n fontColor: \"#444\"\n },\n Path: {\n fill: \"none\",\n stroke: \"#ccc\",\n strokeWidth: 1\n },\n r: constant(5),\n width: constant(10),\n height: constant(10)\n });\n\n this._tree = tree();\n\n }\n\n /**\n Extends the draw behavior of the abstract Viz class.\n @private\n */\n _draw(callback) {\n\n super._draw(callback);\n\n const height = this._orient === \"vertical\"\n ? this._height - this._margin.top - this._margin.bottom\n : this._width - this._margin.left - this._margin.right,\n left = this._orient === \"vertical\" ? \"left\" : \"top\",\n that = this,\n transform = `translate(${this._margin.left}, ${this._margin.top})`,\n width = this._orient === \"horizontal\"\n ? this._height - this._margin.top - this._margin.bottom\n : this._width - this._margin.left - this._margin.right;\n\n const treeData = this._treeData = this._tree\n .separation(this._separation)\n .size([width, height])(\n hierarchy({\n key: \"root\",\n values: nest(this._filteredData, this._groupBy.slice(0, this._drawDepth + 1))\n }, d => d.key && d.values ? d.values : null).sort(this._sort)\n )\n .descendants()\n .filter(d => d.depth <= this._groupBy.length && d.parent);\n\n /**\n Merges the values of a given nest branch.\n @private\n */\n function flattenBranchData(branch) {\n return merge(branch.values.map(l => l.key && l.values ? flattenBranchData(l) : l), that._aggs);\n }\n\n treeData.forEach((d, i) => {\n if (d.data.key && d.data.values) d.data = flattenBranchData(d.data);\n d.__d3plus__ = true;\n d.i = i;\n });\n\n let r = this._shapeConfig.r;\n if (typeof r !== \"function\") r = constant(r);\n const rBufferRoot = max(treeData, d => d.depth === 1 ? r(d.data, d.i) : 0);\n const rBufferEnd = max(treeData, d => d.children ? 0 : r(d.data, d.i));\n\n const yExtent = extent(treeData, d => d.y);\n this._labelHeight = min([\n this._orient === \"vertical\" ? 50 : 100,\n (yExtent[1] - rBufferRoot - rBufferEnd) / (this._groupBy.length + 1)\n ]);\n\n this._labelWidths = nest(treeData, d => d.depth)\n .map(d => d.values.reduce((num, v, i) => {\n const next = i < d.values.length - 1 ? d.values[i + 1].x : width + this._margin[left],\n prev = i ? d.values[i - 1].x : this._margin[left];\n return min([num, next - v.x, v.x - prev]);\n }, width));\n\n const yScale = scaleLinear()\n .domain(yExtent)\n .range([rBufferRoot + this._labelHeight, height - rBufferEnd - this._labelHeight]);\n\n treeData.forEach(d => {\n const val = yScale(d.y);\n if (this._orient === \"horizontal\") {\n d.y = d.x;\n d.x = val;\n }\n else d.y = val;\n });\n\n const elemObject = {parent: this._select, enter: {transform}, update: {transform}};\n\n this._shapes.push(new Path()\n .data(treeData.filter(d => d.depth > 1))\n .select(elem(\"g.d3plus-Tree-Links\", elemObject).node())\n .config(configPrep.bind(this)(this._shapeConfig, \"shape\", \"Path\"))\n .config({\n d: d => {\n\n let r = this._shapeConfig.r;\n\n if (typeof r === \"function\") r = r(d.data, d.i);\n\n const px = d.parent.x - d.x + (this._orient === \"vertical\" ? 0 : r),\n py = d.parent.y - d.y + (this._orient === \"vertical\" ? r : 0),\n x = this._orient === \"vertical\" ? 0 : -r,\n y = this._orient === \"vertical\" ? -r : 0;\n\n return this._orient === \"vertical\"\n ? `M${x},${y}C${x},${(y + py) / 2} ${px},${(y + py) / 2} ${px},${py}`\n : `M${x},${y}C${(x + px) / 2},${y} ${(x + px) / 2},${py} ${px},${py}`;\n\n },\n id: (d, i) => this._ids(d, i).join(\"-\")\n })\n .render());\n\n this._shapes.push(new Circle()\n .data(treeData)\n .select(elem(\"g.d3plus-Tree-Shapes\", elemObject).node())\n .config(configPrep.bind(this)(this._shapeConfig, \"shape\", \"Circle\"))\n .config({\n id: (d, i) => this._ids(d, i).join(\"-\"),\n label: (d, i) => {\n if (this._label) return this._label(d.data, i);\n const ids = this._ids(d, i).slice(0, d.depth);\n return ids[ids.length - 1];\n },\n labelConfig: {\n textAnchor: d => this._orient === \"vertical\" ? \"middle\"\n : d.data.children && d.data.depth !== this._groupBy.length ? \"end\" : \"start\",\n verticalAlign: d => this._orient === \"vertical\" ? d.data.depth === 1 ? \"bottom\" : \"top\" : \"middle\"\n },\n hitArea: (d, i, s) => {\n\n const h = this._labelHeight,\n w = this._labelWidths[d.depth - 1];\n\n return {\n width: this._orient === \"vertical\" ? w : s.r * 2 + w,\n height: this._orient === \"horizontal\" ? h : s.r * 2 + h,\n x: this._orient === \"vertical\" ? -w / 2 : d.children && d.depth !== this._groupBy.length ? -(s.r + w) : -s.r,\n y: this._orient === \"horizontal\" ? -h / 2 : d.children && d.depth !== this._groupBy.length ? -(s.r + this._labelHeight) : -s.r\n };\n\n },\n labelBounds: (d, i, s) => {\n\n const h = this._labelHeight,\n height = this._orient === \"vertical\" ? \"height\" : \"width\",\n w = this._labelWidths[d.depth - 1],\n width = this._orient === \"vertical\" ? \"width\" : \"height\",\n x = this._orient === \"vertical\" ? \"x\" : \"y\",\n y = this._orient === \"vertical\" ? \"y\" : \"x\";\n\n return {\n [width]: w,\n [height]: h,\n [x]: -w / 2,\n [y]: d.children && d.depth !== this._groupBy.length ? -(s.r + h) : s.r\n };\n\n }\n })\n .render());\n\n return this;\n\n }\n\n /**\n @memberof Tree\n @desc If *value* is specified, sets the orientation to the specified value. If *value* is not specified, returns the current orientation.\n @param {String} [*value* = \"vertical\"] Accepts either \"vertical\" or \"horizontal\".\n */\n orient(_) {\n return arguments.length ? (this._orient = _, this) : this._orient;\n }\n\n /**\n @memberof Tree\n @desc If *value* is specified, sets the separation accessor to the specified function. If *value* is not specified, returns the current separation accessor.\n\nFrom the [d3-hierarchy documentation](https://github.com/d3/d3-hierarchy#tree_separation):\n> The separation accessor is used to separate neighboring nodes. The separation function is passed two nodes a and b, and must return the desired separation. The nodes are typically siblings, though the nodes may be more distantly related if the layout decides to place such nodes adjacent.\n @param {Function} [*value*]\n @example\nfunction separation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n */\n separation(_) {\n return arguments.length ? (this._separation = _, this) : this._separation;\n }\n\n}\n","import {sum} from \"d3-array\";\r\nimport {nest} from \"d3-collection\";\r\nimport {hierarchy, treemap} from \"d3-hierarchy\";\r\nimport {treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify} from \"d3-hierarchy\";\r\nconst tileMethods = {treemapBinary, treemapDice, treemapSlice, treemapSliceDice, treemapSquarify, treemapResquarify};\r\n\r\nimport {merge} from \"@d3plus/data\";\r\nimport {assign, elem} from \"@d3plus/dom\";\r\nimport {formatAbbreviate} from \"@d3plus/format\";\r\nimport {Rect} from \"../shapes/index.js\";\r\nimport {accessor, configPrep, constant} from \"../utils/index.js\";\r\nimport Viz from \"./Viz.js\";\r\n\r\n/**\r\n @class Treemap\r\n @extends Viz\r\n @desc Uses the [d3 treemap layout](https://github.com/mbostock/d3/wiki/Treemap-Layout) to creates SVG rectangles based on an array of data. See [this example](https://d3plus.org/examples/d3plus-hierarchy/getting-started/) for help getting started using the treemap generator.\r\n*/\r\nexport default class Treemap extends Viz {\r\n\r\n /**\r\n @memberof Treemap\r\n @desc Invoked when creating a new class instance, and sets any default parameters.\r\n @private\r\n */\r\n constructor() {\r\n\r\n super();\r\n\r\n this._layoutPadding = 1;\r\n\r\n const defaultLegend = this._legend;\r\n this._legend = (config, arr) => {\r\n if (arr.length === this._filteredData.length) return false;\r\n return defaultLegend.bind(this)(config, arr);\r\n };\r\n this._legendSort = (a, b) => this._sum(b) - this._sum(a);\r\n this._legendTooltip = assign({}, this._legendTooltip, {\r\n tbody: []\r\n });\r\n this._shapeConfig = assign({}, this._shapeConfig, {\r\n ariaLabel: (d, i) => {\r\n const rank = this._rankData ? `${this._rankData.indexOf(d) + 1}. ` : \"\";\r\n return `${rank}${this._drawLabel(d, i)}, ${this._sum(d, i)}.`;\r\n },\r\n labelConfig: {\r\n fontMax: 32,\r\n fontMin: 8,\r\n fontResize: true,\r\n padding: 5\r\n }\r\n });\r\n this._sort = (a, b) => {\r\n const aggA = isAggregated(a);\r\n const aggB = isAggregated(b);\r\n return aggA && !aggB ? 1 : !aggA && aggB ? -1 : b.value - a.value;\r\n };\r\n this._sum = accessor(\"value\");\r\n this._thresholdKey = this._sum;\r\n this._tile = treemapSquarify;\r\n this._tooltipConfig = assign({}, this._tooltipConfig, {\r\n tbody: [\r\n [() => this._translate(\"Share\"), (d, i, x) => `${formatAbbreviate(x.share * 100, this._locale)}%`]\r\n ]\r\n });\r\n this._treemap = treemap().round(true);\r\n\r\n const isAggregated = leaf => leaf.children && leaf.children.length === 1 && leaf.children[0].data._isAggregation;\r\n\r\n }\r\n\r\n /**\r\n @memberof Treemap\r\n @desc Extends the draw behavior of the abstract Viz class.\r\n @private\r\n */\r\n _draw(callback) {\r\n\r\n super._draw(callback);\r\n\r\n let nestedData = nest();\r\n for (let i = 0; i <= this._drawDepth; i++) nestedData.key(this._groupBy[i]);\r\n nestedData = nestedData.entries(this._filteredData);\r\n\r\n const tmapData = this._treemap\r\n .padding(this._layoutPadding)\r\n .size([\r\n this._width - this._margin.left - this._margin.right,\r\n this._height - this._margin.top - this._margin.bottom\r\n ])\r\n .tile(this._tile)(hierarchy({values: nestedData}, d => d.values).sum(this._sum).sort(this._sort));\r\n\r\n const shapeData = [], that = this;\r\n\r\n /**\r\n @memberof Treemap\r\n @desc Flattens and merges treemap data.\r\n @private\r\n */\r\n function extractLayout(children) {\r\n for (let i = 0; i < children.length; i++) {\r\n const node = children[i];\r\n if (node.depth <= that._drawDepth) extractLayout(node.children);\r\n else {\r\n const index = node.data.values.length === 1 ? that._filteredData.indexOf(node.data.values[0]) : undefined;\r\n node.__d3plus__ = true;\r\n node.id = node.data.key;\r\n node.i = index > -1 ? index : undefined;\r\n node.data = merge(node.data.values, that._aggs);\r\n node.x = node.x0 + (node.x1 - node.x0) / 2;\r\n node.y = node.y0 + (node.y1 - node.y0) / 2;\r\n shapeData.push(node);\r\n }\r\n }\r\n }\r\n if (tmapData.children) extractLayout(tmapData.children);\r\n\r\n this._rankData = shapeData.sort(this._sort).map(d => d.data);\r\n const total = tmapData.value;\r\n shapeData.forEach(d => {\r\n d.share = this._sum(d.data, d.i) / total;\r\n });\r\n\r\n const transform = `translate(${this._margin.left}, ${this._margin.top})`;\r\n const rectConfig = configPrep.bind(this)(this._shapeConfig, \"shape\", \"Rect\");\r\n const fontMax = rectConfig.labelConfig.fontMax;\r\n const fontMin = rectConfig.labelConfig.fontMin;\r\n const padding = rectConfig.labelConfig.padding;\r\n\r\n this._shapes.push(new Rect()\r\n .data(shapeData)\r\n .label(d => [\r\n this._drawLabel(d.data, d.i),\r\n `${formatAbbreviate(d.share * 100, this._locale)}%`\r\n ])\r\n .select(elem(\"g.d3plus-Treemap\", {\r\n parent: this._select,\r\n enter: {transform},\r\n update: {transform}\r\n }).node())\r\n .config({\r\n height: d => d.y1 - d.y0,\r\n labelBounds: (d, i, s) => {\r\n const h = s.height;\r\n let sh = Math.min(fontMax, (h - padding * 2) * 0.5);\r\n if (sh < fontMin) sh = 0;\r\n return [\r\n {width: s.width, height: h - sh, x: -s.width / 2, y: -h / 2},\r\n {width: s.width, height: sh + padding * 2, x: -s.width / 2, y: h / 2 - sh - padding * 2}\r\n ];\r\n },\r\n labelConfig: {\r\n textAnchor: (d, i, x) => {\r\n let line, parent = x;\r\n while (typeof line === \"undefined\" && parent) {\r\n if (typeof parent.l !== \"undefined\") line = parent.l;\r\n parent = parent.__d3plusParent__;\r\n }\r\n return line ? \"middle\" : \"start\";\r\n },\r\n verticalAlign: (d, i, x) => {\r\n let line, parent = x;\r\n while (typeof line === \"undefined\" && parent) {\r\n if (typeof parent.l !== \"undefined\") line = parent.l;\r\n parent = parent.__d3plusParent__;\r\n }\r\n return line ? \"bottom\" : \"top\";\r\n }\r\n },\r\n width: d => d.x1 - d.x0\r\n })\r\n .config(rectConfig)\r\n .render());\r\n\r\n return this;\r\n\r\n }\r\n\r\n /**\r\n * Applies the threshold algorithm for Treemaps.\r\n * @param {Array} data The data to process.\r\n * @private\r\n */\r\n _thresholdFunction(data) {\r\n const aggs = this._aggs;\r\n const drawDepth = this._drawDepth;\r\n const groupBy = this._groupBy;\r\n const threshold = this._threshold;\r\n const thresholdKey = this._thresholdKey;\r\n\r\n const totalSum = sum(data, thresholdKey);\r\n\r\n if (threshold && thresholdKey) {\r\n return thresholdByDepth(data, 0);\r\n }\r\n\r\n /**\r\n * @memberof Treemap\r\n * @desc Explores the data tree recursively and merges elements under the indicated threshold.\r\n * @param {object[]} branchData The current subset of the dataset to work on.\r\n * @param {number} depth The depth of the current branch.\r\n * @private\r\n */\r\n function thresholdByDepth(branchData, depth) {\r\n if (depth < drawDepth) {\r\n return nest()\r\n .key(groupBy[depth])\r\n .entries(branchData)\r\n .reduce((bulk, leaf) => {\r\n const subBranchData = thresholdByDepth(leaf.values, depth + 1);\r\n return bulk.concat(subBranchData);\r\n }, []);\r\n }\r\n\r\n if (depth === drawDepth) {\r\n const thresholdPercent = Math.min(1, Math.max(0, threshold(branchData)));\r\n\r\n if (!isFinite(thresholdPercent) || isNaN(thresholdPercent)) return null;\r\n\r\n const removedItems = [];\r\n const branchDataCopy = branchData.slice();\r\n const thresholdValue = thresholdPercent * totalSum;\r\n\r\n let n = branchDataCopy.length;\r\n while (n--) {\r\n const datum = branchDataCopy[n];\r\n if (thresholdKey(datum) < thresholdValue) {\r\n const index = branchDataCopy.indexOf(datum);\r\n branchDataCopy.splice(index, 1);\r\n removedItems.push(datum);\r\n }\r\n }\r\n\r\n if (removedItems.length > 0) {\r\n const mergedItem = merge(removedItems, aggs);\r\n mergedItem._isAggregation = true;\r\n mergedItem._threshold = thresholdPercent;\r\n branchDataCopy.push(mergedItem);\r\n }\r\n\r\n return branchDataCopy;\r\n }\r\n\r\n throw new Error(\"Depth is higher than the amount of grouping levels.\");\r\n }\r\n\r\n return data;\r\n }\r\n\r\n /**\r\n @memberof Treemap\r\n @desc If *value* is specified, sets the inner and outer padding accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current padding accessor.\r\n @param {Function|Number} [*value*]\r\n */\r\n layoutPadding(_) {\r\n return arguments.length ? (this._layoutPadding = typeof _ === \"function\" ? _ : constant(_), this) : this._layoutPadding;\r\n }\r\n\r\n /**\r\n @memberof Treemap\r\n @desc If *comparator* is specified, sets the sort order for the treemap using the specified comparator function. If *comparator* is not specified, returns the current group sort order, which defaults to descending order by the associated input data's numeric value attribute.\r\n @param {Array} [*comparator*]\r\n @example\r\nfunction comparator(a, b) {\r\n return b.value - a.value;\r\n}\r\n */\r\n sort(_) {\r\n return arguments.length ? (this._sort = _, this) : this._sort;\r\n }\r\n\r\n /**\r\n @memberof Treemap\r\n @desc If *value* is specified, sets the sum accessor to the specified function or number and returns the current class instance. If *value* is not specified, returns the current sum accessor.\r\n @param {Function|Number} [*value*]\r\n @example\r\nfunction sum(d) {\r\n return d.sum;\r\n}\r\n */\r\n sum(_) {\r\n if (arguments.length) {\r\n this._sum = typeof _ === \"function\" ? _ : accessor(_);\r\n this._thresholdKey = this._sum;\r\n return this;\r\n }\r\n else return this._sum;\r\n }\r\n\r\n /**\r\n @memberof Treemap\r\n @desc Sets the tiling method used when calcuating the size and position of the rectangles.\r\n\r\nCan either be a string referring to a d3-hierarchy [tiling method](https://github.com/d3/d3-hierarchy#treemap-tiling), or a custom function in the same format.\r\n @param {String|Function} [*value* = \"squarify\"]\r\n */\r\n tile(_) {\r\n return arguments.length\r\n ? (this._tile = typeof _ === \"string\"\r\n ? tileMethods[`treemap${_.charAt(0).toUpperCase()}${_.slice(1)}`] || treemapSquarify\r\n : _, this)\r\n : this._tile;\r\n }\r\n\r\n}\r\n"],"names":["key","def","undefined","d","s","Math","floor","random","toString","substring","nestedReset","obj","defaults","isObject","nestedKey","hasOwnProperty","call","startsWith","defaultValue","RESET","getAllMethods","props","concat","Object","getOwnPropertyNames","getPrototypeOf","prototype","filter","e","indexOf","includes","BaseClass","config","_","_configDefault","__proto__","forEach","k","v","assign","arguments","length","_on","locale","_locale","findLocale","on","f","parent","_parent","translate","_translate","shapeConfig","_shapeConfig","constructor","dictionary","dictionaries","_uuid","uuid","configPrep","type","nest","newConfig","duration","_duration","wrapFunction","func","i","__d3plus__","__d3plusParent__","data","feature","bind","parseEvents","newObj","event","arrayEval","arr","map","Array","keyEval","value","constant","Image","render","callback","_select","select","append","style","window","innerWidth","innerHeight","node","images","selectAll","_data","_id","enter","attr","_x","_width","_y","_height","t","transition","that","update","merge","_url","_pointerEvents","_opacity","each","image","link","fullAddress","location","hostname","img","src","crossOrigin","onload","canvas","document","createElement","width","height","context","getContext","drawImage","toDataURL","exit","remove","setTimeout","id","opacity","pointerEvents","url","x","y","accessor","Shape","_aes","_applyEvents","handler","events","keys","nested","values","calcPoint","_discrete","cursor","pointer","pointDistance","min","_updateStyle","elem","size","tagName","styleLogic","styleObject","attrize","_applyStyle","texture","_getTextureKey","_textureDefs","_fill","_fillOpacity","_rx","_ry","_stroke","_strokeDasharray","_strokeLinecap","_strokeOpacity","_strokeWidth","_vectorEffect","_applyTransform","__d3plusShape__","scale","_scale","rotate","_rotate","_texture","fallback","_textureDefault","background","stroke","paths","orientation","fill","retObj","JSON","stringify","_nestWrapper","method","_renderActive","_group","parentNode","classed","group","_active","_activeGroup","appendChild","className","baseVal","_activeStyle","_name","_hover","_hoverOpacity","_activeOpacity","_renderHover","_hoverGroup","_hoverStyle","_renderImage","imageData","_update","_enter","datum","aes","r","_backgroundImage","push","_backgroundImageClass","_renderLabels","labelData","labels","_label","_labelBounds","bounds","l","b","labelConfig","angle","rotateAnchor","text","_labelClass","fontOpacity","_labelConfig","_transition","_dataFilter","_sort","sort","a","textureSet","unique","Boolean","existingTextureDefs","parse","textureClass","textures","apply","removeChild","order","_tagName","strip","_ariaLabel","_role","enterUpdate","enterUpdateRender","_shapeRendering","delay","_exit","hitAreas","_hitArea","isLine","curve","_curve","_path","charAt","toUpperCase","slice","defined","_defined","hitEnter","hitUpdates","h","parseFloat","active","activeOpacity","activeStyle","ariaLabel","backgroundImage","discrete","fillOpacity","hover","hoverStyle","hoverOpacity","hitArea","label","labelBounds","role","rx","ry","shapeRendering","strokeDasharray","strokeLinecap","strokeOpacity","strokeWidth","textAnchor","_textAnchor","textureDefault","vectorEffect","verticalAlign","_verticalAlign","c","color","darker","TextBox","fontColor","colorContrast","fontSize","padding","formatHex","Area","_y1","points1","z","_x0","_y0","points2","reverse","_x1","points","areas","entries","extent","xR","yR","userCurve","path","area","x0","x1","y0","y1","exitPath","attrTween","interpolatePath","largestRect","cx","cy","Bar","_getWidth","_getHeight","_applyPosition","_getX","_getY","abs","w","Circle","_r","Rect","Line","lines","calculateStrokeDashArray","initialLength","getTotalLength","strokeArray","split","Number","newStrokeArray","strokeLength","num","pop","sum","initialStrokeArray","join","p","line","shapes","Whisker","lineData","orient","_orient","endpointX","_length","endpointY","_line","_lineConfig","whiskerData","dataObj","endpoint","_endpoint","_whiskerEndpoint","shapeData","shapeName","_endpointConfig","endPoint","endpointConfig","lineConfig","Box","outlierData","filteredData","first","quantile","median","third","mode","_whiskerMode","lowerLimit","upperLimit","max","rectLength","_rectWidth","eachValue","index","outlier","_outlier","_box","_rectConfig","_median","_medianConfig","topLength","bottomLength","topY","bottomY","topX","bottomX","_whisker","_whiskerConfig","_outlierConfig","medianConfig","outlierConfig","rectConfig","rectWidth","whiskerConfig","whiskerMode","Path","path2polygon","_d","isNegative","is","floorPow","pow","log10","ceilPow","ceil","fixFloat","str","nineMatch","match","zeroMatch","calculateStep","minorTicks","stepScale","scales","scaleLinear","domain","range","scaleRange","step","dataExtent","distance","reduce","n","dist","Infinity","newStep","round","calculateTicks","ticks","inverted","roundDomain","invertedRound","powers","powMod","replace","d3Range","sign","majorDiff","mod","modFloat","_d3ScaleNegative","some","unshift","dataNumbers","Axis","_barPosition","bar","opposite","_position","offset","_margin","position","_outerBounds","x1mod","_d3Scale","bandwidth","x2mod","sortedDomain","_barConfig","_getPosition","_getDomain","_getRange","_getLabels","diverging","minValue","splice","findIndex","_getTicks","date","_gridPosition","last","_lastScale","xDiff","xPos","_gridConfig","timeLocale","_timeLocale","timeFormatDefaultLocale","format","horizontal","clipId","flip","_padding","rangeOuter","tickValue","_shape","tickGet","margin","top","right","bottom","left","tickFormat","_tickFormat","isNaN","refData","_domain","formatDate","timeFormat","quarter","_tickSuffix","formatLocale","separator","suffixes","suff","_tickUnit","tick","number","formatAbbreviate","minTick","maxTick","prefix","_rounding","_roundingInsideMinPrefix","_roundingInsideMaxPrefix","suffix","_roundingInsideMinSuffix","_roundingInsideMaxSuffix","setScale","newRange","_range","minRange","maxRange","sizeInner","buckets","initialDomain","zeroLength","smallScale","m","every","zeroArray","zeros","factor","newDomain","powDomain","powInverted","_scalePadding","paddingInner","_paddingInner","paddingOuter","_paddingOuter","smallestNumber","copy","leftPercentage","zero","minPositive","minNegative","minPosPow","minNegPow","_ticks","_labels","pixels","_availableTicks","closest","_visibleTicks","_title","fontFamily","lineHeight","_titleConfig","titleWrap","textWrap","_tickSize","hBuff","wBuff","calculateLabelSize","fF","fP","fS","space","wSize","_maxSize","hSize","wrap","res","widths","calculateOffset","prev","textData","createTextData","fontPadding","_labelRotation","maxSpace","prevPosition","prevSpace","nextPosition","nextSpace","reverseTextData","sizeName","find","truncated","offsetEnabled","_labelOffset","spillovers","compPosition","halfSpace","spill","labelHeight","globalOffset","tBuff","_minSize","_gridSize","_align","grid","_grid","_gridLog","labelOnly","rotated","tickData","td","labelOffset","labelWidth","yPos","tickConfig","dupe","ellipsis","_titleClass","align","barConfig","gridConfig","gridLog","gridSize","labelRotation","maxSize","minSize","opps","outerBounds","rounding","roundingInsideMinPrefix","roundingInsideMinSuffix","roundingInsideMaxPrefix","roundingInsideMaxSuffix","scalePadding","shape","tickSize","tickSuffix","title","titleConfig","fontResize","rtl","detectRTL","colorDefaults","dark","AxisBottom","AxisLeft","AxisRight","AxisTop","Legend","_fetchConfig","val","_rowHeight","row","shapeHeight","_rowWidth","shapeWidth","_titleGroup","_shapeGroup","availableHeight","_titleHeight","_titleWidth","lH","_lineData","shapeR","sentence","words","lh","newRes","textWidth","og","spaceNeeded","availableWidth","_direction","newRows","maxLines","_wrapLines","wrappable","_wrapRows","rowWidth","xOffset","yOffset","center","_shapes","baseConfig","direction","_rtl","dd","rtlMod","pad","prevWords","ld","ColorScale","allValues","_value","negative","_midpoint","positive","numBuckets","_buckets","colors","_color","_colorMid","colorLighter","jenks","_centered","half","residual","negatives","negativesDeviation","deviation","positives","positivesDeviation","isNegativeMax","isPositiveMax","negativeJenks","ckmeans","positiveJenks","tickSet","Set","from","_colorMin","_colorMax","spanning","negativeColors","spanningColors","positiveColors","_colorScale","scaleThreshold","negativeColorScale","interpolateRgb","gamma","positiveColorScale","midIndex","negativeStep","positiveStep","negativeBuckets","positiveBuckets","minVal","newNegativeBuckets","bucket","maxVal","newPositiveBuckets","clamp","gradient","_bucketAxis","groupParams","labelGroup","condition","rectGroup","legendGroup","offsets","axisDomain","ten","axisConfig","_axisConfig","_labelMin","labelCSS","fontWeight","labelMinWidth","_labelMax","labelMaxWidth","_axisTest","axisBounds","_size","axisGroupOffset","_axisClass","transform","axisScale","defs","defsEnter","stops","scaleDomain","offsetScale","String","bucketWidth","next","_rectClass","legendData","_bucketFormat","legendConfig","start","middle","end","_legendConfig","_legendClass","bucketAxis","bucketFormat","bucketJoiner","_bucketJoiner","centered","colorMax","colorMid","colorMin","labelMin","labelMax","midpoint","prevValue","nextValue","light","off","Message","_isVisible","hide","mask","container","html","stylize","defaultHtmlLookup","em","strong","boxes","_text","trim","resize","_fontResize","lHRatio","_lineHeight","_fontSize","_fontMax","sizes","wrapResults","fontExists","_fontFamily","_fontWeight","parseSides","wrapper","_maxLines","overflow","_overflow","_split","fMax","fMin","_fontMin","vA","checkSize","truncate","_ellipsis","areaMod","boxArea","maxWidth","textArea","areaRatio","sqrt","widthRatio","sizeRatio","heightMax","tH","yP","aH","_ariaHidden","fC","_fontColor","fStroke","_fontStroke","fSW","_fontStrokeWidth","fO","_fontOpacity","fW","tA","_rotateAnchor","textContent","tag","_html","cleaned","trimRight","tagRegex","RegExp","textStyle","sin","PI","cos","texts","_delay","ariaHidden","fontMax","fontMin","fontStroke","fontStrokeWidth","textSplit","Timeline","_brushBrush","sourceEvent","offsetX","selection","_brushing","_snapping","clearInterval","_playTimer","_playButtonClass","_updateDomain","_brushGroup","_brush","move","_updateBrushLimit","_brushStyle","brush","_selection","_brushEnd","_brushStart","timelineHeight","brushSelection","_selectionConfig","brushHandle","_handleConfig","_hiddenHandles","_buttonBehaviorCurrent","_handleSize","_buttonHeight","_paddingLeft","_ticksWidth","yTransform","pointers","invert","diffs","minDomain","minIndex","maxDomain","maxIndex","ticksApart","minTicksAllowed","_brushMin","single","handleSize","buttonWidth","d3Scale","scaleTime","_userFormat","_buttonBehavior","maxLabel","_buttonPadding","playButtonWidth","_playButton","hiddenHandles","buttonMargin","emptySpace","_buttonAlign","brushX","_brushFilter","defaultData","defaultSelection","playButtonGroup","_playButtonConfig","buttonPadding","brushing","brushFilter","brushMin","buttonAlign","buttonBehavior","buttonHeight","handleConfig","playButton","playButtonConfig","playButtonInterval","_playButtonInterval","selectionConfig","snapping","button","detail","firstTime","nextYear","firstIndex","lastIndex","setInterval","generateReference","Tooltip","portal","tooltips","_className","_tooltipStyle","divElement","cat","div","visible","cellContent","boxStyles","box","_background","_prefix","_borderRadius","_border","tableEnter","table","_tableStyle","tableHead","_theadStyle","theadTr","theadTrEnter","theadTrUpdate","_trStyle","th","_thead","tableBody","_tbodyStyle","tr","_tbody","trEnter","trUpdate","_tdStyle","tooltip","getElementById","arrow","arrowHeight","offsetHeight","arrowDistance","getBoundingClientRect","referenceObject","isArray","_popperClasses","createPopper","placement","modifiers","name","options","element","_offset","boundary","behavior","fallbackPlacements","enabled","phase","fn","state","arrowElement","elements","arrowStyles","styles","flipped","modifiersData","_skip","border","borderRightWidth","removeOnDestroy","instance","reference","destroy","_arrow","arrowStyle","_arrowStyle","body","_body","bodyStyle","_bodyStyle","borderRadius","footer","_footer","footerStyle","_footerStyle","tableStyle","tbody","tbodyStyle","thead","theadStyle","titleStyle","_titleStyle","tooltipStyle","trStyle","tdStyle","fontFamilyStringify","_history","backGroup","_backClass","_backConfig","_colorScalePosition","wide","showColorScale","_colorScalePadding","_colorScaleMaxSize","scaleGroup","_colorScaleConfig","scaleData","_colorScaleClass","scaleBounds","legendAttrs","legendLabel","_drawLabel","_legendDepth","getAttr","rollupData","rollup","leaves","_aggs","_legendSort","_ids","_drawDepth","hidden","_hidden","_solo","legendBounds","_legendPosition","_legendPadding","_legend","_hiddenColor","_hiddenOpacity","_subtitle","_subtitlePadding","_subtitleClass","_subtitleConfig","getBBox","setTimeFilter","_timelineSelection","timeFilter","ms","_time","getTime","timelinePossible","_timeline","_timelinePadding","timelineGroup","timeline","_timelineClass","_timelineDefault","_timelineConfig","_titlePadding","total","_total","_totalPadding","_totalClass","_totalFormat","_totalConfig","_container","_zoomGroup","_zoomHeight","_zoomWidth","_zoomBehavior","scaleExtent","_zoomMax","translateExtent","zoomed","_zoomToBounds","zoomToBounds","control","_zoom","controlEnter","zoomMath","_zoomFactor","_zoomControlStyle","_zoomControlStyleActive","zoomEvents","_zoomControlStyleHover","_zoomBrush","_zoomBrushHandleSize","brushStart","brushBrush","brushEnd","brushGroup","_renderTiles","zoomTransform","_zoomScroll","_zoomPan","translate0","dx","dy","xMod","yMod","_zoomPadding","brushStyle","_zoomBrushSelectionStyle","_zoomBrushHandleStyle","_attribution","attrEnter","_attributionStyle","stopPropagation","_groupBy","filterGroup","filterId","_tooltip","_tooltipClass","oldFilter","_filter","depth","_depth","hiddenIndex","soloIndex","dataLength","_legendFilterInvert","shiftKey","filterIds","tooltipData","tooltipDatum","touches","clientX","clientY","defaultClick","clickLegend","hasUserClick","hasDefaultClick","hasDeeperLevel","invertedBehavior","solo","_tooltipConfig","_legendTooltip","clickShape","defaultPadding","listify","item","accessorFetch","acc","Viz","_preDraw","groupByDrawDepth","g","_isAggregation","_thresholdName","_threshold","ll","_timeFilter","dates","latestTime","_filteredData","_legendData","flatData","nestKeys","tree","_thresholdFunction","uniqueIds","_dataCutoff","_userHover","_userDuration","_noDataMessage","_messageClass","_noDataHTML","_messageStyle","_draw","legendPosition","colorScalePosition","drawLegend","drawColorScale","drawBack","drawTitle","drawSubtitle","drawTotal","drawTimeline","toLowerCase","svg","setSVGSize","display","getSize","_autoWidth","_autoHeight","_detectVisible","inViewport","svgTitle","svgTitleEnter","_svgTitle","svgDesc","svgDescEnter","_svgDesc","_visiblePoll","_resizePoll","clearTimeout","_scrollPoll","_scrollContainer","_resizeContainer","_detectVisibleInterval","q","queue","_queue","cache","_cache","_lrucache","get","defer","_loadingMessage","_tasks","_loadingHTML","_messageMask","awaitAll","columns","svgTable","svgTableEnter","rows","cells","zoomControls","drawAttribution","_detectResize","_detectResizeDelay","touchstartBody","aggs","attribution","attributionStyle","backConfig","colorScale","colorScaleConfig","colorScalePadding","colorScaleMaxSize","addToQueue","_userData","dataCutoff","detectResize","detectResizeDelay","detectVisible","detectVisibleInterval","downloadButton","_downloadButton","downloadConfig","_downloadConfig","downloadPosition","_downloadPosition","axis","tooltipConfig","groupBy","_groupByRaw","hiddenColor","hiddenOpacity","hoverFunction","arrayMerge","activeData","activeIds","ids","legend","legendFilterInvert","legendPadding","legendSort","legendTooltip","loadingHTML","loadingMessage","messageMask","messageStyle","noDataHTML","noDataMessage","resizeContainer","scrollContainer","subtitle","subtitleConfig","subtitlePadding","threshold","isFinite","thresholdKey","_thresholdKey","thresholdName","time","_userTime","timelineConfig","timelineDefault","timelinePadding","titlePadding","totalConfig","totalFormat","totalPadding","zoom","zoomBrushHandleSize","zoomBrushHandleStyle","zoomBrushSelectionStyle","zoomControlStyle","zoomControlStyleActive","zoomControlStyleHover","zoomFactor","zoomMax","zoomPan","zoomPadding","zoomScroll","font","_colorDefaults","scaleOrdinal","maxGrouped","localeCompare","lrucache","mouseenter","mouseleave","mousemoveShape","mousemoveLegend","colorAssign","uniqueValues","curr","Date","x2","y2","buffer","xKey","yKey","oppScale","oppDomain","isDiscreteX","negVals","posVals","_stacked","groupedData","bMax","bMin","floor10","ceil10","toPrecision","logMod","log","needsBuffer","tempAxis","percentScale","scaleLog","outside","tempRange","pixelValue","yScale","xScale","xD","yD","discreteBuffer","numericBuffer","vals","testLineShape","testTextBox","defaultBuffers","BarBuffer","BoxBuffer","CircleBuffer","LineBuffer","RectBuffer","defaultSize","_sizeScaleD3","stackOrderAscending","series","sums","stackSum","d3Shape","stackOrderNone","stackOrderDescending","stackOffsetDiverging","yn","yp","j","labelPosition","_labelPosition","other","nonDiscrete","pos","Plot","firstElemTime","x2Time","_x2Time","_x2","xTime","_xTime","y2Time","_y2Time","_y2","yTime","_yTime","timeAxis","stackGroup","prepData","newD","hci","_confidence","lci","_formattedData","axisData","_axisPersist","rExtent","_sizeScale","_sizeMax","_sizeMin","x2Exists","y2Exists","opp","opp2","getAxisValues","timeData","localData","NaN","numericValue","myData","d3plusMerge","aKey","bKey","xData","x2Data","yData","y2Data","discreteKeys","domains","stackData","stackKeys","stackedData","groupValues","a1","b1","fillerPoint","_stackOrder","stack","_stackOffset","discreteData","_xSort","_x2Sort","_ySort","_y2Sort","domainScaleSetup","domain2","xAutoDomain","x2AutoDomain","x2Scale","yAutoDomain","y2AutoDomain","y2Scale","autoScale","userScale","mean","yConfigScale","_yConfigScale","y2ConfigScale","_y2ConfigScale","xConfigScale","_xConfigScale","x2ConfigScale","_x2ConfigScale","_baseline","_shapeSort","allShapeData","_buffer","res2","xDomain","x2Domain","yDomain","y2Domain","defaultConfig","defaultX2Config","defaultY2Config","showX","_discreteCutoff","_xCutoff","showY","_yCutoff","yC","_yDomain","testGroup","barLabelFunction","barLabels","x2Ticks","xTicks","y2Ticks","yTicks","_yTest","_yConfig","yBounds","yWidth","_y2Test","_y2Config","y2Bounds","y2Width","xC","_xDomain","xRangeMax","_xTest","_xConfig","largestLabel","labelWidths","showLineLabels","_lineLabels","userConfig","lineLabelConfig","fontColorAccessor","fontSizeAccessor","fontWeightAccessor","fontFamilyAccessor","paddingAccessor","labelFunction","xEstimate","yEstimate","labelPadding","coords","myMaxX","labelY","maxX","xValue","closeLabels","labelSpace","_x2Test","_x2Config","xTestRange","x2TestRange","x2Bounds","x2Height","xOffsetLeft","topOffset","xOffsetRight","xBounds","xHeight","horizontalMargin","verticalMargin","yRange","xRange","x2Transform","xGroup","x2Group","xTrans","yGroup","y2Transform","y2Group","_xAxis","_x2Axis","_xFunc","_yAxis","_y2Axis","labelPositions","minFontSize","yBuckets","bumpLimit","bumpPrevious","defaultY","newY","prevY","change","_yFunc","_backgroundConfig","labelConnectors","connectorGroup","_labelConnectorConfig","annotationGroupBack","shapeGroup","annotationGroupFront","_previousAnnotations","layer","annotationData","_annotations","annotationShapes","annotation","exitAnnotations","shapeConfigInner","dataIndex","discreteIndex","scaleIndex","scaleType","allPositions","_groupPadding","barSize","groups","_barPadding","areaConfig","scaleFunction","confidenceConfig","_confidenceConfig","allLabels","firstX","firstY","lastX","lastY","classEvents","globalEvents","shapeEvents","markers","_lineMarkers","_lineMarkerConfig","dataShapes","exitShapes","_previousShapes","annotations","axisPersist","backgroundConfig","barPadding","baseline","confidence","lower","upper","discreteCutoff","groupPadding","labelConnectorConfig","lineLabels","lineMarkerConfig","lineMarkers","shapeSort","sizeMax","sizeMin","sizeScale","stacked","stackOffset","stackOrder","_xKey","_x2Key","xConfig","xCutoff","x2Config","_x2Domain","xSort","x2Sort","_yKey","_y2Key","yConfig","yCutoff","y2Config","_y2Domain","ySort","y2Sort","back","front","ariaLabelStr","anchor","colorLegible","_shapeOrder","AreaPlot","BarChart","defaultLegend","legendIds","barIds","BoxWhisker","BumpChart","xMin","startData","xMax","endData","Pie","outerRadius","pieData","_pieData","_pie","padAngle","_padAngle","_padPixel","arcData","arc","innerRadius","_innerRadius","padPixel","pie","Donut","matches","d3Geo","d3GeoCore","d3GeoProjection","d3CompositeProjections","findAttribution","attributions","topo2feature","topo","objects","Geomap","tileData","_tiles","_tileGen","_projection","_tileGroup","tileEnter","_tileUrl","_ocean","ocean","pathGroup","coordData","_coordData","_topojson","_topojsonKey","features","_topojsonFilter","geoPath","projection","pointData","_point","pathData","topoData","_topojsonId","_pointSizeScale","_pointSize","_pointSizeMin","_pointSizeMax","_zoomSet","fitData","_fitObject","_fitKey","_extentBounds","_fitFilter","geometry","reduced","coordinates","distances","centroid","distCutoff","point","_projectionPadding","fitExtent","pointGroup","circles","fitFilter","fitKey","fitObject","load","pointSize","pointSizeMax","pointSizeMin","tiles","geoMercator","projectionPadding","projectionRotate","_projectionRotate","tileUrl","topojson","topojsonFill","_topojsonFill","topojsonFilter","topojsonKey","topojsonId","validColorScale","tile","LinePlot","cartesian","rowValues","_rowList","_row","_rowSort","columnValues","_columnList","_column","_columnSort","rowValue","columnValue","__d3plusTooltip__","column","defaultAxisConfig","Matrix","columnRotation","selectElem","opts","_rowAxis","_rowConfig","rowPadding","columnTransform","hiddenTransform","_columnAxis","_columnConfig","columnPadding","rowTransform","visibleTransform","rowScale","columnScale","cellHeight","cellWidth","_cellPadding","cellPadding","columnConfig","columnList","columnSort","rowConfig","rowList","rowSort","getProp","defaultMouseMoveShape","ii","getNodeId","_nodeGroupBy","Network","nodes","_nodes","fx","fy","nodeLookup","_nodeLookup","nodeIndices","links","_links","referenceType","source","_linkSize","target","_linkLookup","missingCoords","linkStrength","simulation","forceSimulation","force","forceLink","strength","iterations","forceManyBody","stop","alphaMin","alphaDecay","velocityDecay","nodePositions","vx","vy","hull","polygonHull","rect","verbose","xExtent","yExtent","nodeRatio","screenRatio","rMax","n1","n2","xOldSize","yOldSize","xNewSize","yNewSize","fallbackRadius","_focus","strokeExtent","strokeScale","_linkSizeScale","_linkSizeMin","linkConfig","linkSize","linkSizeMin","linkSizeScale","nodeGroupBy","myIds","defaultMouseMove","validSize","recursionCircles","Pack","diameter","nestedData","packData","_pack","_layoutPadding","hierarchy","_sum","descendants","__d3plusOpacity__","_packOpacity","layoutPadding","packOpacity","defaultMouseMoveLegend","hoverData","pack","children","Priestley","_end","_start","dataNest","maxLane","track","lane","_axis","axisPad","scaleBand","rangeRound","bandWidth","tau","Radar","radius","_outerPadding","nestedAxisData","_metric","nestedGroupData","maxValue","flat","circularAxis","_levels","circleConfig","totalAxis","polarAxis","quadrant","parseInt","radians","groupData","pathConfig","xDist","yDist","dists","metric","outerPadding","RadialMatrix","flippedColumns","displayLabels","_columnLabels","rowHeight","columnWidth","flippedRows","startAngle","endAngle","Rings","nodeIds","check","edge","result","linkMap","edges","ringWidth","primaryRing","secondaryRing","_center","claimed","primaries","secondaries","totalEndNodes","primaryId","claim","primaryDistance","secondaryDistance","primaryMax","secondaryMax","radiusFn","ring","spline","centerX","centerY","middleRing","oppId","sourceX","sourceY","sourceBisectX","sourceBisectY","targetBisectX","targetBisectY","targetX","targetY","sankeyAligns","sankeyCenter","justify","sankeyJustify","sankeyLeft","sankeyRight","Sankey","all","_linksSource","_linksTarget","_nodeId","linkLookup","_sankey","nodeAlign","_nodeAlign","nodePadding","_nodePadding","nodeWidth","_nodeWidth","linksSource","linksTarget","nodeId","sankeyLinkHorizontal","sankey","StackedArea","Tree","treeData","_treeData","_tree","separation","_separation","flattenBranchData","branch","rBufferRoot","rBufferEnd","_labelHeight","_labelWidths","elemObject","px","py","tileMethods","treemapBinary","treemapDice","treemapSlice","treemapSliceDice","treemapSquarify","treemapResquarify","Treemap","tmapData","_treemap","_tile","extractLayout","_rankData","share","sh","drawDepth","totalSum","thresholdByDepth","branchData","bulk","leaf","subBranchData","thresholdPercent","removedItems","branchDataCopy","thresholdValue","mergedItem","Error","rank","aggA","isAggregated","aggB","treemap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAA;;;;;;;;;;;EAWA,GACe,iBAAA,CAASA,GAAG,EAAEC,GAAG,EAAA;EAC9B,IAAA,IAAIA,QAAQC,SAAW,EAAA,OAAOC,CAAAA,CAAKA,GAAAA,CAAC,CAACH,GAAI,CAAA;MACzC,OAAOG,CAAAA,CAAKA,GAAAA,CAAC,CAACH,GAAAA,CAAI,KAAKE,SAAYD,GAAAA,GAAAA,GAAME,CAAC,CAACH,GAAI,CAAA;EACjD;;ECfA;;;EAGA,GACA,YAAe,qBAAsB;;ECJrC;;;;EAIA,GACA,SAASI,CAAAA,GAAAA;EACP,IAAA,OAAOC,IAAKC,CAAAA,KAAK,CAAE,CAAA,CAAID,GAAAA,IAAAA,CAAKE,MAAM,EAAC,IAAK,OAASC,CAAAA,CAAAA,QAAQ,CAAC,EAAA,CAAA,CAAIC,SAAS,CAAC,CAAA,CAAA;EAC1E;EAEA;;;EAGA,GACe,aAAA,GAAA;EACb,IAAA,OAAO,GAAGL,CAAMA,EAAAA,CAAAA,EAAAA,CAAAA,EAAAA,CAAI,CAAC,EAAEA,IAAI,CAAC,EAAEA,CAAI,EAAA,CAAA,CAAC,EAAEA,CAAI,EAAA,CAAA,CAAC,EAAEA,CAAAA,EAAAA,CAAAA,EAAMA,MAAMA,CAAK,EAAA,CAAA,CAAA;EAC/D;;ECTA;;;;;EAKA,GACA,SAASM,WAAAA,CAAYC,GAAG,EAAEC,QAAQ,EAAA;EAChC,IAAA,IAAIC,aAASF,GAAM,CAAA,EAAA;UACjB,IAAK,MAAMG,aAAaH,GAAK,CAAA;EAC3B,YAAA,IAAI,CAAA,EAAC,EAAEI,cAAc,CAACC,IAAI,CAACL,GAAAA,EAAKG,SAAc,CAAA,IAAA,CAACA,SAAUG,CAAAA,UAAU,CAAC,GAAM,CAAA,EAAA;EACxE,gBAAA,MAAMC,eAAeN,QAAYC,IAAAA,YAAAA,CAASD,YAAYA,QAAQ,CAACE,UAAU,GAAGZ,SAAAA;EAC5E,gBAAA,IAAIS,GAAG,CAACG,SAAU,CAAA,KAAKK,KAAO,EAAA;EAC5B,oBAAA,IAAID,YAAcP,EAAAA,GAAG,CAACG,SAAAA,CAAU,GAAGI,YAAAA;2BAC9B,OAAOP,GAAG,CAACG,SAAU,CAAA;EAC5B,iBAAA,MACK,IAAID,YAAAA,CAASF,GAAG,CAACG,UAAU,CAAG,EAAA;sBACjCJ,WAAYC,CAAAA,GAAG,CAACG,SAAAA,CAAU,EAAEI,YAAAA,CAAAA;EAC9B;EACF;EACF;EACF;EACF;EAEA;;;;MAKA,SAASE,cAAcT,GAAG,EAAA;EACxB,IAAA,IAAIU,QAAQ,EAAE;MACd,GAAG;EACDA,QAAAA,KAAAA,GAAQA,KAAMC,CAAAA,MAAM,CAACC,MAAAA,CAAOC,mBAAmB,CAACb,GAAAA,CAAAA,CAAAA;UAChDA,GAAMY,GAAAA,MAAAA,CAAOE,cAAc,CAACd,GAAAA,CAAAA;EAC9B,KAAA,OAASA,GAAOA,IAAAA,GAAAA,KAAQY,MAAOG,CAAAA,SAAS;MACxC,OAAOL,KAAAA,CAAMM,MAAM,CAACC,CAAAA,CAAAA,GAAKA,EAAEC,OAAO,CAAC,GAAS,CAAA,KAAA,CAAA,IAAK,CAAC;EAAC,YAAA,QAAA;EAAU,YAAA,aAAA;EAAe,YAAA,QAAA;EAAU,YAAA;EAAS,SAAA,CAACC,QAAQ,CAACF,CAAAA,CAAAA,CAAAA;EAC3G;EAMe,MAAMG,SAAAA,CAAAA;EAkBnB;;;;;OAMAC,MAAAA,CAAOC,CAAC,EAAE;EAER,QAAA,IAAI,CAAC,IAAI,CAACC,cAAc,EAAE;EACxB,YAAA,MAAMF,SAAS,EAAC;EAChBZ,YAAAA,aAAAA,CAAc,IAAI,CAACe,SAAS,CAAEC,CAAAA,OAAO,CAACC,CAAAA,CAAAA,GAAAA;kBACpC,MAAMC,CAAAA,GAAI,IAAI,CAACD,CAAE,CAAA,EAAA;EACjB,gBAAA,IAAIC,CAAM,KAAA,IAAI,EAAEN,MAAM,CAACK,CAAAA,CAAE,GAAGxB,YAAAA,CAASyB,CAAKC,CAAAA,GAAAA,UAAAA,CAAO,EAAC,EAAGD,CAAKA,CAAAA,GAAAA,CAAAA;EAC5D,aAAA,CAAA;cACA,IAAI,CAACJ,cAAc,GAAGF,MAAAA;EACxB;UAEA,IAAIQ,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAK,MAAMJ,KAAKJ,CAAG,CAAA;EACjB,gBAAA,IAAI,CAAA,EAAC,EAAElB,cAAc,CAACC,IAAI,CAACiB,CAAGI,EAAAA,CAAAA,CAAAA,IAAMA,CAAK,IAAA,IAAI,EAAE;sBAC7C,MAAMC,CAAAA,GAAIL,CAAC,CAACI,CAAE,CAAA;EACd,oBAAA,IAAIC,MAAMnB,KAAO,EAAA;0BACf,IAAIkB,CAAAA,KAAM,IAAM,EAAA,IAAI,CAACK,GAAG,GAAG,IAAI,CAACR,cAAc,CAACG,CAAE,CAAA;EAC5C,6BAAA,IAAI,CAACA,CAAE,CAAA,CAAC,IAAI,CAACH,cAAc,CAACG,CAAE,CAAA,CAAA;uBAEhC,MAAA;EACH3B,wBAAAA,WAAAA,CAAY4B,CAAG,EAAA,IAAI,CAACJ,cAAc,CAACG,CAAE,CAAA,CAAA;0BACrC,IAAI,CAACA,EAAE,CAACC,CAAAA,CAAAA;EACV;EACF;EACF;EACA,YAAA,OAAO,IAAI;WAER,MAAA;EAEH,YAAA,MAAMN,SAAS,EAAC;EAChBZ,YAAAA,aAAAA,CAAc,IAAI,CAACe,SAAS,CAAEC,CAAAA,OAAO,CAACC,CAAAA,CAAAA,GAAAA;EACpCL,gBAAAA,MAAM,CAACK,CAAAA,CAAE,GAAG,IAAI,CAACA,CAAE,CAAA,EAAA;EACrB,aAAA,CAAA;cACA,OAAOL,MAAAA;EAET;EACF;EAEA;;;;;;;;;;;;;;;;OAiBAW,MAAAA,CAAOV,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACG,OAAO,GAAGC,kBAAAA,CAAWZ,IAAI,IAAG,IAAK,IAAI,CAACW,OAAO;EAC/E;EAEA;;;;;;;;;;;;;;EAcA,KACAE,EAAGb,CAAAA,CAAC,EAAEc,CAAC,EAAE;UACP,OAAOP,SAAAA,CAAUC,MAAM,KAAK,CAAA,IAAK,IAAI,CAACC,GAAG,CAACT,CAAAA,CAAE,GAAGc,CAAG,EAAA,IAAI,IAAIP,SAAAA,CAAUC,MAAM,GAAG,OAAOR,CAAM,KAAA,QAAA,GAAW,IAAI,CAACS,GAAG,CAACT,CAAAA,CAAE,IAAI,IAAI,CAACS,GAAG,GAAGnB,MAAOgB,CAAAA,MAAM,CAAC,IAAI,IAAI,CAACG,GAAG,EAAET,CAAAA,CAAAA,EAAI,IAAI,CAAD,GAAK,IAAI,CAACS,GAAG;EACjL;EAEA;;;;;OAMAM,MAAAA,CAAOf,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACQ,OAAO,GAAGhB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgB,OAAO;EACnE;EAEA;;;;;;;;;OAUAC,SAAAA,CAAUjB,CAAC,EAAE;EACX,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACU,UAAU,GAAGlB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACkB,UAAU;EACzE;EAEA;;;;;OAMAC,WAAAA,CAAYnB,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACY,YAAY,GAAGd,UAAAA,CAAO,IAAI,CAACc,YAAY,EAAEpB,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoB,YAAY;EACxG;EApIA;;;;EAIA,KACAC,WAAc,EAAA;UACZ,IAAI,CAACV,OAAO,GAAG,OAAA;UACf,IAAI,CAACF,GAAG,GAAG,EAAC;UACZ,IAAI,CAACO,OAAO,GAAG,EAAC;UAChB,IAAI,CAACE,UAAU,GAAG,CAAChD,GAAGwC,MAAS,GAAA,IAAI,CAACC,OAAO,GAAA;cACzC,MAAMW,UAAAA,GAAaC,uBAAY,CAACb,MAAO,CAAA;cACvC,OAAOY,UAAAA,IAAcA,UAAU,CAACpD,CAAAA,CAAE,GAAGoD,UAAU,CAACpD,EAAE,GAAGA,CAAAA;EACvD,SAAA;UACA,IAAI,CAACsD,KAAK,GAAGC,IAAAA,EAAAA;EACf;EAwHF;;ECvLA;;;;;;EAMA,GACe,SAASC,UAAW3B,CAAAA,MAAAA,GAAS,IAAI,CAACqB,YAAY,EAAEO,IAAO,GAAA,OAAO,EAAEC,IAAAA,GAAO,KAAK,EAAA;EAEzF,IAAA,MAAMC,SAAY,GAAA;UAACC,QAAU,EAAA,IAAI,CAACC,SAAS;EAAElB,QAAAA,EAAAA,EAAI;EAAE,KAAA;EAEnD,IAAA,MAAMmB,eAAeC,CAAAA,IAAAA,GAAQ,CAAC/D,CAAAA,EAAGgE,GAAG/D,CAAGwB,EAAAA,CAAAA,GAAAA;cACrC,IAAI,CAACsC,MAAM,OAAOA,IAAAA;cAClB,IAAIlB,MAAAA;cACJ,MAAO7C,CAAAA,CAAEiE,UAAU,CAAE;kBACnB,IAAIpB,MAAAA,EAAQ7C,CAAEkE,CAAAA,gBAAgB,GAAGrB,MAAAA;kBACjCA,MAAS7C,GAAAA,CAAAA;EACTgE,gBAAAA,CAAAA,GAAIhE,EAAEgE,CAAC;EACPhE,gBAAAA,CAAAA,GAAIA,CAAEmE,CAAAA,IAAI,IAAInE,CAAAA,CAAEoE,OAAO;EACzB;cACA,OAAOL,IAAAA,CAAKM,IAAI,CAAC,IAAI,EAAErE,CAAGgE,EAAAA,CAAAA,EAAG/D,KAAK4C,MAAQpB,EAAAA,CAAAA,CAAAA;EAC5C,SAAA;MAEA,MAAM6C,WAAAA,GAAc,CAACC,MAAQ5B,EAAAA,EAAAA,GAAAA;UAE3B,IAAK,MAAM6B,SAAS7B,EAAI,CAAA;cAEtB,IAAI,CAAA,EAAC,EAAE/B,cAAc,CAACC,IAAI,CAAC8B,EAAAA,EAAI6B,KAAU,CAAA,IAAA,CAACA,MAAM7C,QAAQ,CAAC,QAAQ6C,KAAM7C,CAAAA,QAAQ,CAAC,CAAC,CAAC,EAAE8B,IAAAA,CAAAA,CAAM,CAAG,EAAA;EAC3Fc,gBAAAA,MAAAA,CAAO5B,EAAE,CAAC6B,KAAAA,CAAM,GAAGV,YAAanB,CAAAA,EAAE,CAAC6B,KAAM,CAAA,CAAA;EAC3C;EAEF;EAEF,KAAA;EAEA,IAAA,MAAMC,YAAYC,CAAAA,GAAAA,GAAOA,GAAIC,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAAA;cAC/B,IAAIA,CAAAA,YAAa4E,KAAO,EAAA,OAAOH,SAAUzE,CAAAA,CAAAA,CAAAA;EACpC,iBAAA,IAAI,OAAOA,CAAM,KAAA,QAAA,EAAU,OAAO6E,OAAAA,CAAQ,EAAI7E,EAAAA,CAAAA,CAAAA;EAC9C,iBAAA,IAAI,OAAOA,CAAAA,KAAM,UAAY,EAAA,OAAO8D,YAAa9D,CAAAA,CAAAA,CAAAA;mBACjD,OAAOA,CAAAA;EACd,SAAA,CAAA;MAEA,MAAM6E,OAAAA,GAAU,CAACN,MAAQ/D,EAAAA,GAAAA,GAAAA;UAEvB,IAAK,MAAMX,OAAOW,GAAK,CAAA;cAErB,IAAI,CAAA,EAAC,EAAEI,cAAc,CAACC,IAAI,CAACL,GAAAA,EAAKX,GAAM,CAAA,EAAA;EAEpC,gBAAA,IAAIA,QAAQ,IAAMyE,EAAAA,WAAAA,CAAYC,MAAQ/D,EAAAA,GAAG,CAACX,GAAI,CAAA,CAAA;EACzC,qBAAA,IAAI,OAAOW,GAAG,CAACX,GAAAA,CAAI,KAAK,UAAY,EAAA;EACvC0E,oBAAAA,MAAM,CAAC1E,GAAI,CAAA,GAAGiE,YAAatD,CAAAA,GAAG,CAACX,GAAI,CAAA,CAAA;EACrC,iBAAA,MACK,IAAIW,GAAG,CAACX,GAAAA,CAAI,YAAY+E,KAAO,EAAA;EAClCL,oBAAAA,MAAM,CAAC1E,GAAI,CAAA,GAAG4E,SAAUjE,CAAAA,GAAG,CAACX,GAAI,CAAA,CAAA;EAClC,iBAAA,MACK,IAAI,OAAOW,GAAG,CAACX,GAAAA,CAAI,KAAK,QAAU,EAAA;sBACrC,IAAI,CAAC0E,MAAM,CAAC1E,GAAAA,CAAI,EAAE0E,MAAM,CAAC1E,GAAI,CAAA,GAAG,EAAC;EACjC0E,oBAAAA,MAAM,CAAC1E,GAAAA,CAAI,CAAC8C,EAAE,GAAG,EAAC;EAClBkC,oBAAAA,OAAAA,CAAQN,MAAM,CAAC1E,GAAAA,CAAI,EAAEW,GAAG,CAACX,GAAI,CAAA,CAAA;EAC/B,iBAAA,MACK0E,MAAM,CAAC1E,GAAAA,CAAI,GAAGW,GAAG,CAACX,GAAI,CAAA;EAE7B;EAEF;EAEF,KAAA;EAEAgF,IAAAA,OAAAA,CAAQlB,SAAW9B,EAAAA,MAAAA,CAAAA;MACnB,IAAI,IAAI,CAACU,GAAG,EAAE+B,YAAYX,SAAW,EAAA,IAAI,CAACpB,GAAG,CAAA;EAC7C,IAAA,IAAImB,IAAQ7B,IAAAA,MAAM,CAAC6B,IAAAA,CAAK,EAAE;UACxBmB,OAAQlB,CAAAA,SAAAA,EAAW9B,MAAM,CAAC6B,IAAK,CAAA,CAAA;EAC/B,QAAA,IAAI7B,MAAM,CAAC6B,IAAK,CAAA,CAACf,EAAE,EAAE2B,WAAYX,CAAAA,SAAAA,EAAW9B,MAAM,CAAC6B,IAAK,CAAA,CAACf,EAAE,CAAA;EAC7D;MAEA,OAAOgB,SAAAA;EAET;;EC7EA;;;;;;;;;;EAUA,GACe,kBAASmB,KAAK,EAAA;EAC3B,IAAA,OAAO,SAASC,QAAAA,GAAAA;UACd,OAAOD,KAAAA;EACT,KAAA;EACF;;ECfA;;;;;;EAMA,GACe,gBAASrB,CAAAA,IAAI,EAAEzD,CAAC,EAAEgE,CAAC,EAAA;EAChC,IAAA,OAAOhE,CAAC,CAACyD,IAAK,CAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAAA,CAAAA,CAAM,CAAC,CAACzD,CAAGgE,EAAAA,CAAAA,CAAAA;EACxC;;ECUe,MAAMgB,KAAAA,CAAAA;EAoBnB;;;;;OAMAC,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,IAAI,IAAI,CAACC,OAAO,KAAK,QAAQ,IAAI,CAACC,MAAM,CAACA,mBAAO,MAAQC,CAAAA,CAAAA,MAAM,CAAC,KAAOC,CAAAA,CAAAA,KAAK,CAAC,OAAS,EAAA,CAAA,EAAGC,MAAOC,CAAAA,UAAU,CAAC,EAAE,CAAC,EAAEF,KAAK,CAAC,UAAU,CAAGC,EAAAA,MAAAA,CAAOE,WAAW,CAAC,EAAE,CAAC,CAAA,CAAEH,KAAK,CAAC,SAAA,EAAW,SAASI,IAAI,EAAA,CAAA;EAExL,QAAA,MAAMC,SAAS,IAAI,CAACR,OAAO,CAACS,SAAS,CAAC,eAAA,CAAA,CAAiBzB,IAAI,CAAC,IAAI,CAAC0B,KAAK,EAAE,IAAI,CAACC,GAAG,CAAA;UAEhF,MAAMC,KAAAA,GAAQJ,MAAOI,CAAAA,KAAK,EAAGV,CAAAA,MAAM,CAAC,OAAA,CAAA,CACjCW,IAAI,CAAC,OAAS,EAAA,cAAA,CAAA,CACdA,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA,CAChBA,IAAI,CAAC,OAAS,EAAA,CAAA,CAAA,CACdA,IAAI,CAAC,QAAU,EAAA,CAAA,CAAA,CACfA,IAAI,CAAC,GAAK,EAAA,CAAChG,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACiC,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,IAAI,CAACkC,MAAM,CAAClG,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,CACxDgC,CAAAA,CAAAA,IAAI,CAAC,GAAA,EAAK,CAAChG,CAAAA,EAAGgE,CAAM,GAAA,IAAI,CAACmC,EAAE,CAACnG,CAAAA,EAAGgE,CAAK,CAAA,GAAA,IAAI,CAACoC,OAAO,CAACpG,CAAAA,EAAGgE,CAAK,CAAA,GAAA,CAAA,CAAA;EAE5D,QAAA,MAAMqC,CAAIC,GAAAA,uBAAAA,EAAAA,CAAa1C,QAAQ,CAAC,IAAI,CAACC,SAAS,CACxC0C,EAAAA,IAAAA,GAAO,IAAI,EACXC,MAAST,GAAAA,KAAAA,CAAMU,KAAK,CAACd,MAAAA,CAAAA;EAE3Ba,QAAAA,MAAAA,CACGR,IAAI,CAAC,YAAA,EAAc,IAAI,CAACU,IAAI,CAC5BpB,CAAAA,KAAK,CAAC,gBAAA,EAAkB,IAAI,CAACqB,cAAc,CAC3CL,CAAAA,UAAU,CAACD,CACXL,CAAAA,CAAAA,IAAI,CAAC,SAAA,EAAW,IAAI,CAACY,QAAQ,CAC7BZ,CAAAA,IAAI,CAAC,OAAS,EAAA,CAAChG,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACkC,MAAM,CAAClG,CAAAA,EAAGgE,IACvCgC,IAAI,CAAC,QAAU,EAAA,CAAChG,GAAGgE,CAAM,GAAA,IAAI,CAACoC,OAAO,CAACpG,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CACzCgC,IAAI,CAAC,KAAK,CAAChG,CAAAA,EAAGgE,CAAM,GAAA,IAAI,CAACiC,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAC/BgC,IAAI,CAAC,GAAA,EAAK,CAAChG,CAAAA,EAAGgE,IAAM,IAAI,CAACmC,EAAE,CAACnG,GAAGgE,CAC/B6C,CAAAA,CAAAA,CAAAA,IAAI,CAAC,SAAS7G,CAAC,EAAEgE,CAAC,EAAA;cACjB,MAAM8C,KAAAA,GAAQ1B,mBAAO,IAAI,CAAA,EAAG2B,OAAOR,IAAKG,CAAAA,IAAI,CAAC1G,CAAGgE,EAAAA,CAAAA,CAAAA;cAChD,MAAMgD,WAAAA,GAAcD,KAAKrF,OAAO,CAAC,eAAe,CAAKqF,IAAAA,IAAAA,CAAKrF,OAAO,CAAC,UAAgB,CAAA,KAAA,CAAA;cAClF,IAAI,CAACsF,WAAeD,IAAAA,IAAAA,CAAKrF,OAAO,CAAC6D,OAAO0B,QAAQ,CAACC,QAAQ,CAAA,KAAM,CAAG,EAAA;EAChE,gBAAA,MAAMC,MAAM,IAAInC,KAAAA,EAAAA;EAChBmC,gBAAAA,GAAAA,CAAIC,GAAG,GAAGL,IAAAA;EACVI,gBAAAA,GAAAA,CAAIE,WAAW,GAAG,WAAA;EAClBF,gBAAAA,GAAAA,CAAIG,MAAM,GAAG,WAAA;sBACX,MAAMC,MAAAA,GAASC,QAASC,CAAAA,aAAa,CAAC,QAAA,CAAA;EACtCF,oBAAAA,MAAAA,CAAOG,KAAK,GAAG,IAAI,CAACA,KAAK;EACzBH,oBAAAA,MAAAA,CAAOI,MAAM,GAAG,IAAI,CAACA,MAAM;sBAC3B,MAAMC,OAAAA,GAAUL,MAAOM,CAAAA,UAAU,CAAC,IAAA,CAAA;EAClCD,oBAAAA,OAAAA,CAAQE,SAAS,CAAC,IAAI,EAAE,CAAG,EAAA,CAAA,CAAA;EAC3BhB,oBAAAA,KAAAA,CAAMd,IAAI,CAAC,YAAcuB,EAAAA,MAAAA,CAAOQ,SAAS,CAAC,WAAA,CAAA,CAAA;EAC5C,iBAAA;EACF;EACF,SAAA,CAAA;UAEFpC,MAAOqC,CAAAA,IAAI,EAAG1B,CAAAA,UAAU,CAACD,CAAAA,CAAAA,CACtBL,IAAI,CAAC,OAAS,EAAA,CAAChG,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACkC,MAAM,CAAClG,CAAAA,EAAGgE,CACvCgC,CAAAA,CAAAA,CAAAA,IAAI,CAAC,QAAA,EAAU,CAAChG,CAAAA,EAAGgE,CAAM,GAAA,IAAI,CAACoC,OAAO,CAACpG,CAAAA,EAAGgE,IACzCgC,IAAI,CAAC,GAAK,EAAA,CAAChG,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACiC,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAC/BgC,IAAI,CAAC,GAAK,EAAA,CAAChG,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACmC,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAC/BgC,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA,CAAGiC,MAAM,EAAA;EAE5B,QAAA,IAAI/C,UAAUgD,UAAWhD,CAAAA,QAAAA,EAAU,IAAI,CAACrB,SAAS,GAAG,GAAA,CAAA;EAEpD,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMAM,IAAAA,CAAKrC,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuD,KAAK,GAAG/D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+D,KAAK;EAC/D;EAEA;;;;;OAMAjC,QAAAA,CAAS9B,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuB,SAAS,GAAG/B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+B,SAAS;EACvE;EAEA;;;;;;;;;OAUA8D,MAAAA,CAAO7F,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8D,OAAO,GAAG,OAAOtE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACsE,OAAO;EAC3G;EAEA;;;;;;;;;OAUA+B,EAAAA,CAAGrG,CAAC,EAAE;EACJ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwD,GAAG,GAAGhE,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgE,GAAG;EAC3D;EAEA;;;;;OAMAsC,OAAAA,CAAQtG,CAAC,EAAE;EACT,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACsE,QAAQ,GAAG,OAAO9E,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC8E,QAAQ;EAC7G;EAEA;;;;;OAMAyB,aAAAA,CAAcvG,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqE,cAAc,GAAG,OAAO7E,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6E,cAAc;EACzH;EAEA;;;;;OAMAvB,MAAAA,CAAOtD,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6C,OAAO,GAAGC,kBAAAA,CAAOtD,IAAI,IAAG,IAAK,IAAI,CAACqD,OAAO;EAC3E;EAEA;;;;;;;;;OAUAmD,GAAAA,CAAIxG,CAAC,EAAE;EACL,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACoE,IAAI,GAAG5E,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC4E,IAAI;EAC7D;EAEA;;;;;;;;;OAUAgB,KAAAA,CAAM5F,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4D,MAAM,GAAG,OAAOpE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoE,MAAM;EACzG;EAEA;;;;;;;;;OAUAqC,CAAAA,CAAEzG,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2D,EAAE,GAAG,OAAOnE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmE,EAAE;EACjG;EAEA;;;;;;;;;OAUAuC,CAAAA,CAAE1G,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC6D,EAAE,GAAG,OAAOrE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACqE,EAAE;EACjG;EAtNA;;;;EAIA,KACAhD,WAAc,EAAA;UACZ,IAAI,CAACU,SAAS,GAAG,GAAA;UACjB,IAAI,CAACuC,OAAO,GAAGqC,QAAS,CAAA,QAAA,CAAA;UACxB,IAAI,CAAC3C,GAAG,GAAG2C,QAAS,CAAA,IAAA,CAAA;UACpB,IAAI,CAAC7B,QAAQ,GAAG7B,QAAS,CAAA,CAAA,CAAA;UACzB,IAAI,CAAC4B,cAAc,GAAG5B,QAAS,CAAA,MAAA,CAAA;EAC/B,QAAA,IAAI,CAACI,OAAO;UACZ,IAAI,CAACuB,IAAI,GAAG+B,QAAS,CAAA,KAAA,CAAA;UACrB,IAAI,CAACvC,MAAM,GAAGuC,QAAS,CAAA,OAAA,CAAA;EACvB,QAAA,IAAI,CAACxC,EAAE,GAAGwC,QAAAA,CAAS,GAAK,EAAA,CAAA,CAAA;EACxB,QAAA,IAAI,CAACtC,EAAE,GAAGsC,QAAAA,CAAS,GAAK,EAAA,CAAA,CAAA;EAC1B;EAwMF;;ECtNe,MAAMC,KAAc9G,SAAAA,SAAAA,CAAAA;EA8EjC;;;;;;EAMA,KACA+G,IAAO,GAAA;EACL,QAAA,OAAO,EAAC;EACV;EAEA;;;;;OAMAC,YAAAA,CAAaC,OAAO,EAAE;EAEpB,QAAA,MAAMC,SAAS1H,MAAO2H,CAAAA,IAAI,CAAC,IAAI,CAACxG,GAAG,CAAA;EACnC,QAAA,IAAK,IAAId,CAAI,GAAA,CAAA,EAAGA,IAAIqH,MAAOxG,CAAAA,MAAM,EAAEb,CAAK,EAAA,CAAA;cACtCoH,OAAQlG,CAAAA,EAAE,CAACmG,MAAM,CAACrH,EAAE,EAAE,CAAC+C,OAAOxE,CAAGgE,EAAAA,CAAAA,GAAAA;kBAC/B,IAAI,CAAC,IAAI,CAACzB,GAAG,CAACuG,MAAM,CAACrH,CAAE,CAAA,CAAC,EAAE;EAC1B,gBAAA,IAAIzB,EAAEgE,CAAC,KAAK,MAAQA,EAAAA,CAAAA,GAAIhE,EAAEgE,CAAC;EAC3B,gBAAA,IAAIhE,CAAEgJ,CAAAA,MAAM,IAAIhJ,CAAAA,CAAEiJ,MAAM,EAAE;sBACxB,MAAMC,SAAAA,GAAY,CAAClJ,CAAGgE,EAAAA,CAAAA,GAAAA;EACpB,wBAAA,IAAI,IAAI,CAACmF,SAAS,KAAK,KAAK,OAAO;8BAAC,IAAI,CAAClD,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA;EAAIoF,4BAAAA,MAAM,CAAC,CAAE;EAAC,yBAAA;EACxD,6BAAA,IAAI,IAAI,CAACD,SAAS,KAAK,KAAK,OAAO;EAACC,4BAAAA,MAAM,CAAC,CAAE,CAAA;8BAAE,IAAI,CAACjD,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA;EAAG,yBAAA;+BAC7D,OAAO;8BAAC,IAAI,CAACiC,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA;8BAAI,IAAI,CAACmC,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA;EAAG,yBAAA;EAC5C,qBAAA;sBACA,MAAMoF,MAAAA,GAASC,oBAAQ7E,KAAO,EAAA,IAAI,CAACW,OAAO,CAACO,IAAI,EACzCuD,CAAAA,EAAAA,MAAAA,GAASjJ,EAAEiJ,MAAM,CAACtE,GAAG,CAAC3E,CAAAA,IAAKsJ,kBAAcF,CAAAA,MAAAA,EAAQF,UAAUlJ,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;sBACpEA,CAAIiF,GAAAA,MAAAA,CAAOvH,OAAO,CAAC6H,WAAIN,CAAAA,MAAAA,CAAAA,CAAAA;sBACvBjJ,CAAIA,GAAAA,CAAAA,CAAEiJ,MAAM,CAACjF,CAAE,CAAA;EACjB;EACA,gBAAA,IAAI,CAACzB,GAAG,CAACuG,MAAM,CAACrH,CAAE,CAAA,CAAC,CAAC4C,IAAI,CAAC,IAAI,CAAErE,CAAAA,CAAAA,EAAGgE,GAAGjE,SAAWyE,EAAAA,KAAAA,CAAAA;EAClD,aAAA,CAAA;EACF;EAEF;EAEA;;;;;;EAMA,KACAgF,YAAaC,CAAAA,IAAI,EAAEnE,KAAK,EAAE;EAExB,QAAA,MAAMiB,OAAO,IAAI;EAEjB,QAAA,IAAIkD,IAAKC,CAAAA,IAAI,EAAMD,IAAAA,IAAAA,CAAK/D,IAAI,EAAA,CAAGiE,OAAO,KAAK,GAAKF,EAAAA,IAAAA,GAAOA,IAAK7D,CAAAA,SAAS,CAAC,GAAA,CAAA;EAEtE;;;;;EAKA,OACA,SAASgE,UAAAA,CAAW5J,CAAC,EAAEgE,CAAC,EAAA;EACtB,YAAA,OAAO,OAAO,IAAI,KAAK,UAAA,GAAa,IAAI,GACpChE,CAAAA,CAAEgJ,MAAM,IAAIhJ,EAAEH,GAAG,IAAIG,CAAEiJ,CAAAA,MAAM,GAC3B,IAAI,CAACjJ,CAAEiJ,CAAAA,MAAM,CAAC,CAAA,CAAE,EAAE1C,IAAAA,CAAKV,KAAK,CAACnE,OAAO,CAAC1B,CAAAA,CAAEiJ,MAAM,CAAC,CAAA,CAAE,CAChD,CAAA,GAAA,IAAI,CAACjJ,CAAGgE,EAAAA,CAAAA,CAAAA;EAChB;EAEA,QAAA,MAAM6F,cAAc,EAAC;UACrB,IAAK,MAAMhK,OAAOyF,KAAO,CAAA;cACvB,IAAI,CAAA,EAAC,EAAE1E,cAAc,CAACC,IAAI,CAACyE,KAAAA,EAAOzF,GAAM,CAAA,EAAA;kBACtCgK,WAAW,CAAChK,IAAI,GAAG+J,UAAAA,CAAWvF,IAAI,CAACiB,KAAK,CAACzF,GAAI,CAAA,CAAA;EAC/C;EACF;EAEA4J,QAAAA,IAAAA,CAAKnD,UAAU,EAAG1C,CAAAA,QAAQ,CAAC,CAAG/C,CAAAA,CAAAA,IAAI,CAACiJ,WAASD,EAAAA,WAAAA,CAAAA;EAE9C;EAEA;;;;;OAMAE,WAAAA,CAAYN,IAAI,EAAE;EAEhB,QAAA,MAAMlD,OAAO,IAAI;EAEjB,QAAA,IAAIkD,IAAKC,CAAAA,IAAI,EAAMD,IAAAA,IAAAA,CAAK/D,IAAI,EAAA,CAAGiE,OAAO,KAAK,GAAKF,EAAAA,IAAAA,GAAOA,IAAK7D,CAAAA,SAAS,CAAC,GAAA,CAAA;EAEtE;;;;;EAKA,OACA,SAASgE,UAAAA,CAAW5J,CAAC,EAAEgE,CAAC,EAAA;EACtB,YAAA,OAAO,OAAO,IAAI,KAAK,UAAA,GAAa,IAAI,GACpChE,CAAAA,CAAEgJ,MAAM,IAAIhJ,EAAEH,GAAG,IAAIG,CAAEiJ,CAAAA,MAAM,GAC3B,IAAI,CAACjJ,CAAEiJ,CAAAA,MAAM,CAAC,CAAA,CAAE,EAAE1C,IAAAA,CAAKV,KAAK,CAACnE,OAAO,CAAC1B,CAAAA,CAAEiJ,MAAM,CAAC,CAAA,CAAE,CAChD,CAAA,GAAA,IAAI,CAACjJ,CAAGgE,EAAAA,CAAAA,CAAAA;EAChB;EAEAyF,QAAAA,IAAAA,CACGzD,IAAI,CAAC,MAAQ,EAAA,CAAChG,CAAGgE,EAAAA,CAAAA,GAAAA;cAChB,MAAMgG,OAAAA,GAAU,IAAI,CAACC,cAAc,CAAC5F,IAAI,CAAC,IAAI,CAAA,CAAErE,CAAGgE,EAAAA,CAAAA,CAAAA;EAClD,YAAA,OAAOgG,UAAU,IAAI,CAACE,YAAY,CAACF,QAAQ,CAAC1B,GAAG,EAAKsB,GAAAA,UAAAA,CAAWvF,IAAI,CAAC,IAAI,CAAC8F,KAAK,EAAEnK,CAAGgE,EAAAA,CAAAA,CAAAA;EACrF,SAAA,CAAA,CACCgC,IAAI,CAAC,cAAA,EAAgB4D,WAAWvF,IAAI,CAAC,IAAI,CAAC+F,YAAY,GACtDpE,IAAI,CAAC,MAAM4D,UAAWvF,CAAAA,IAAI,CAAC,IAAI,CAACgG,GAAG,CACnCrE,CAAAA,CAAAA,IAAI,CAAC,IAAA,EAAM4D,WAAWvF,IAAI,CAAC,IAAI,CAACiG,GAAG,GACnCtE,IAAI,CAAC,UAAU4D,UAAWvF,CAAAA,IAAI,CAAC,IAAI,CAACkG,OAAO,CAC3CvE,CAAAA,CAAAA,IAAI,CAAC,kBAAoB4D,EAAAA,UAAAA,CAAWvF,IAAI,CAAC,IAAI,CAACmG,gBAAgB,GAC9DxE,IAAI,CAAC,kBAAkB4D,UAAWvF,CAAAA,IAAI,CAAC,IAAI,CAACoG,cAAc,CAC1DzE,CAAAA,CAAAA,IAAI,CAAC,gBAAkB4D,EAAAA,UAAAA,CAAWvF,IAAI,CAAC,IAAI,CAACqG,cAAc,GAC1D1E,IAAI,CAAC,gBAAgB4D,UAAWvF,CAAAA,IAAI,CAAC,IAAI,CAACsG,YAAY,CACtD3E,CAAAA,CAAAA,IAAI,CAAC,eAAiB4D,EAAAA,UAAAA,CAAWvF,IAAI,CAAC,IAAI,CAACuG,aAAa,CAAA,CAAA;EAC7D;EAEA;;;;;OAMAC,eAAAA,CAAgBpB,IAAI,EAAE;EAEpBA,QAAAA,IAAAA,CACGzD,IAAI,CAAC,WAAA,EAAa,CAAChG,CAAAA,EAAGgE,IAAM;kBACjB,EAAEhE,CAAAA,CAAE8K,eAAe,GAC/B9K,CAAAA,CAAE+C,SAAS,GAAG/C,CAAAA,CAAE+C,SAAS,GACzB,CAAG,EAAA,IAAI,CAACkD,EAAE,CAACjG,EAAEmE,IAAI,EAAEnE,EAAEgE,CAAC,CAAA,CAAE,CAAC,EAAE,IAAI,CAACmC,EAAE,CAACnG,CAAAA,CAAEmE,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAG,CAAA,CAAA,GACjD,CAAG,EAAA,IAAI,CAACiC,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG,CAAC,EAAE,IAAI,CAACmC,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAAI,CAAC;cAC5B,EAAEhE,CAAAA,CAAE8K,eAAe,GAAG9K,CAAAA,CAAE+K,KAAK,IAAI,IAAI,CAACC,MAAM,CAAChL,EAAEmE,IAAI,EAAEnE,EAAEgE,CAAC,CAAA,GAClE,IAAI,CAACgH,MAAM,CAAChL,CAAAA,EAAGgE,CAAG,CAAA,CAAA;AACP,eAAA,EAAEhE,CAAE8K,CAAAA,eAAe,GAAG9K,CAAAA,CAAEiL,MAAM,GAAGjL,CAAAA,CAAEiL,MAAM,GACpD,IAAI,CAACC,OAAO,CAAClL,EAAEmE,IAAI,IAAInE,CAAGA,EAAAA,CAAAA,CAAEgE,CAAC,CAAA,GAC7B,IAAI,CAACkH,OAAO,CAAClL,CAAAA,CAAEmE,IAAI,IAAInE,CAAGA,EAAAA,CAAAA,CAAEgE,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA;EACnC;EAEA;;;;;;EAMA,KACAiG,cAAejK,CAAAA,CAAC,EAAEgE,CAAC,EAAE;EACnB,QAAA,IAAIgG,OAAU,GAAA,IAAI,CAACmB,QAAQ,CAACnL,CAAGgE,EAAAA,CAAAA,CAAAA;UAC/B,IAAI,CAACgG,SAAS,OAAO,KAAA;EAErB;;;SAIA,MAAMJ,aAAa,CAAC9H,CAAAA,GAAAA;EAClB,YAAA,OAAO,OAAOA,CAAAA,KAAM,UAAaA,GAAAA,CAAAA,GAC7B9B,CAAEgJ,CAAAA,MAAM,IAAIhJ,CAAAA,CAAEH,GAAG,IAAIG,CAAEiJ,CAAAA,MAAM,GAC3BnH,CAAE9B,CAAAA,CAAAA,CAAEiJ,MAAM,CAAC,CAAE,CAAA,EAAE,IAAI,CAACpD,KAAK,CAACnE,OAAO,CAAC1B,CAAAA,CAAEiJ,MAAM,CAAC,CAAE,CAAA,CAAA,CAAA,GAC7CnH,EAAE9B,CAAGgE,EAAAA,CAAAA,CAAAA;EACb,SAAA;UAEA,MAAMoH,QAAAA,GAAW,IAAI,CAACC,eAAe;UAErC,IAAI,CAAC3K,YAASsJ,CAAAA,OAAAA,CAAAA,EAAUA,OAAU,GAAA;EAACA,YAAAA;EAAO,SAAA;UAC1C,IAAI,CAACA,OAAQsB,CAAAA,UAAU,EAAEtB,OAAAA,CAAQsB,UAAU,GAAG1B,UAAAA,CAAW,IAAI,CAACO,KAAK,CAAA;EACnE,QAAA,IAAI,CAACH,OAAAA,CAAQuB,MAAM,IAAI,CAACH,QAASG,CAAAA,MAAM,EAAEvB,OAAAA,CAAQuB,MAAM,GAAG3B,UAAW,CAAA,IAAI,CAACW,OAAO,CAAA;EACjF,QAAA,MAAMiB,KAAQ,GAAA;EAAC,YAAA,SAAA;EAAW,YAAA,OAAA;EAAS,YAAA,OAAA;EAAS,YAAA,OAAA;EAAS,YAAA,SAAA;EAAW,YAAA,MAAA;EAAS,YAAA;EAAW,SAAA;UACpF,IAAIA,KAAAA,CAAM7J,QAAQ,CAACqI,OAAQA,CAAAA,OAAO,KAAK,OAAOA,OAAAA,CAAQA,OAAO,KAAK,UAAY,EAAA;cAC5EA,OAAQhK,CAAAA,CAAC,GAAGgK,OAAAA,CAAQA,OAAO;EAC3BA,YAAAA,OAAAA,CAAQA,OAAO,GAAG,OAAA;EACpB,SAAA,MACK,IAAIA,OAAAA,CAAQA,OAAO,KAAK,MAAQ,EAAA;cACnC,IAAI,CAACA,OAAQyB,CAAAA,WAAW,IAAI,CAACL,SAASK,WAAW,EAAEzB,OAAQyB,CAAAA,WAAW,GAAG;EAAC,gBAAA,UAAA;EAAY,gBAAA;EAAa,aAAA;EACnGzB,YAAAA,OAAAA,CAAQA,OAAO,GAAG,OAAA;EACpB;EACA,QAAA,IAAI,CAACA,OAAAA,CAAQ0B,IAAI,IAAI1B,OAAQA,CAAAA,OAAO,KAAK,OAAA,EAASA,OAAQ0B,CAAAA,IAAI,GAAG1B,OAAAA,CAAQuB,MAAM;EAC/E,QAAA,MAAMI,MAASvJ,GAAAA,UAAAA,CAAO,EAAC,EAAGgJ,QAAUpB,EAAAA,OAAAA,CAAAA;EACpC,QAAA,IAAI,OAAO2B,MAAAA,CAAO3L,CAAC,KAAK,UAAY,EAAA;EAClC2L,YAAAA,MAAAA,CAAO3L,CAAC,GAAG2L,MAAAA,CAAO3L,CAAC,CAAC2L,MAAAA,CAAOjC,IAAI,IAAI,EAAA,CAAA;EACrC;UACA,OAAOkC,IAAAA,CAAKC,SAAS,CAACF,MAAAA,CAAAA;EACxB;EAEA;;;;;OAMAG,YAAAA,CAAaC,MAAM,EAAE;EACnB,QAAA,OAAO,CAAC/L,CAAGgE,EAAAA,CAAAA,GAAM+H,MAAO/L,CAAAA,CAAAA,CAAE8K,eAAe,GAAG9K,CAAAA,CAAEmE,IAAI,GAAGnE,GAAGA,CAAE8K,CAAAA,eAAe,GAAG9K,CAAAA,CAAEgE,CAAC,GAAGA,CAAAA,CAAAA;EACpF;EAEA;;;;EAIA,KACAgI,aAAgB,GAAA;EAEd,QAAA,MAAMzF,OAAO,IAAI;UAEjB,IAAI,CAAC0F,MAAM,CAACrG,SAAS,CAAC,+CACnBiB,CAAAA,CAAAA,IAAI,CAAC,SAAS7G,CAAC,EAAEgE,CAAC,EAAA;cAEjB,IAAI,CAAChE,CAAGA,EAAAA,CAAAA,GAAI,EAAC;cACb,IAAI,CAACA,EAAEkM,UAAU,EAAElM,EAAEkM,UAAU,GAAG,IAAI,CAACA,UAAU;cACjD,MAAMrJ,MAAAA,GAAS7C,EAAEkM,UAAU;cAE3B,IAAI9G,kBAAAA,CAAO,IAAI,CAAE+G,CAAAA,OAAO,CAAC,gBAAmBnM,CAAAA,EAAAA,CAAAA,GAAIA,EAAEmE,IAAI;EACtD,YAAA,IAAInE,CAAE8K,CAAAA,eAAe,IAAI9K,CAAAA,CAAEiE,UAAU,EAAE;kBACrC,MAAOjE,CAAAA,KAAMA,CAAE8K,CAAAA,eAAe,IAAI9K,CAAEiE,CAAAA,UAAU,CAAG,CAAA;EAC/CD,oBAAAA,CAAAA,GAAIhE,EAAEgE,CAAC;EACPhE,oBAAAA,CAAAA,GAAIA,EAAEmE,IAAI;EACZ;EACF,aAAA,MACKH,CAAIuC,GAAAA,IAAAA,CAAKV,KAAK,CAACnE,OAAO,CAAC1B,CAAAA,CAAAA;cAE5B,MAAMoM,KAAAA,GAAQ,CAAC7F,IAAK8F,CAAAA,OAAO,IAAI,OAAO9F,IAAAA,CAAK8F,OAAO,KAAK,UAAA,IAAc,CAAC9F,IAAK8F,CAAAA,OAAO,CAACrM,CAAGgE,EAAAA,CAAAA,CAAAA,GAAKnB,SAAS0D,IAAK+F,CAAAA,YAAY,CAAC5G,IAAI,EAAA;EAC1H,YAAA,IAAI0G,KAAU,KAAA,IAAI,CAACF,UAAU,EAAE;kBAC7BE,KAAMG,CAAAA,WAAW,CAAC,IAAI,CAAA;kBACtB,IAAI,IAAI,CAACC,SAAS,CAACC,OAAO,CAAC9K,QAAQ,CAAC,cAAiB,CAAA,EAAA;sBACnD,IAAIkB,MAAAA,KAAWuJ,KAAOhH,EAAAA,kBAAAA,CAAO,IAAI,CAAA,CAAEvE,IAAI,CAAC0F,IAAKwD,CAAAA,WAAW,CAAC1F,IAAI,CAACkC,IAAAA,CAAAA,CAAAA;EACzDnB,yBAAAA,kBAAAA,CAAO,IAAI,CAAA,CAAEvE,IAAI,CAAC0F,KAAKiD,YAAY,CAACnF,IAAI,CAACkC,IAAMnB,EAAAA,kBAAAA,CAAO,IAAI,CAAA,EAAGmB,KAAKmG,YAAY,CAAA,CAAA;EACrF;EACF;EAEF,SAAA,CAAA;;;UAKF,IAAI,CAACT,MAAM,CAACrG,SAAS,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC+G,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAACA,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAACA,KAAK,CAAC,KAAK,CAAC,CAC5G3G,CAAAA,IAAI,CAAC,SAAW,EAAA,IAAI,CAAC4G,MAAM,GAAG,IAAI,CAACC,aAAa,GAAG,IAAI,CAACR,OAAO,GAAG,IAAI,CAACS,cAAc,GAAG,CAAA,CAAA;EAE7F;EAEA;;;;EAIA,KACAC,YAAe,GAAA;EAEb,QAAA,MAAMxG,OAAO,IAAI;EAEjB,QAAA,IAAI,CAAC0F,MAAM,CAACrG,SAAS,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC+G,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAACA,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAACA,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAACA,KAAK,CAAC,MAAM,CAAC,CAC1I/G,CAAAA,SAAS,CAAC,+CACViB,CAAAA,CAAAA,IAAI,CAAC,SAAS7G,CAAC,EAAEgE,CAAC,EAAA;cAEjB,IAAI,CAAChE,CAAGA,EAAAA,CAAAA,GAAI,EAAC;cACb,IAAI,CAACA,EAAEkM,UAAU,EAAElM,EAAEkM,UAAU,GAAG,IAAI,CAACA,UAAU;cACjD,MAAMrJ,MAAAA,GAAS7C,EAAEkM,UAAU;cAE3B,IAAI9G,kBAAAA,CAAO,IAAI,CAAE+G,CAAAA,OAAO,CAAC,gBAAmBnM,CAAAA,EAAAA,CAAAA,GAAIA,EAAEmE,IAAI;EACtD,YAAA,IAAInE,CAAE8K,CAAAA,eAAe,IAAI9K,CAAAA,CAAEiE,UAAU,EAAE;kBACrC,MAAOjE,CAAAA,KAAMA,CAAE8K,CAAAA,eAAe,IAAI9K,CAAEiE,CAAAA,UAAU,CAAG,CAAA;EAC/CD,oBAAAA,CAAAA,GAAIhE,EAAEgE,CAAC;EACPhE,oBAAAA,CAAAA,GAAIA,EAAEmE,IAAI;EACZ;EACF,aAAA,MACKH,CAAIuC,GAAAA,IAAAA,CAAKV,KAAK,CAACnE,OAAO,CAAC1B,CAAAA,CAAAA;cAE5B,MAAMoM,KAAAA,GAAQ,CAAC7F,IAAKqG,CAAAA,MAAM,IAAI,OAAOrG,IAAAA,CAAKqG,MAAM,KAAK,UAAA,IAAc,CAACrG,IAAKqG,CAAAA,MAAM,CAAC5M,CAAGgE,EAAAA,CAAAA,CAAAA,GAAKnB,SAAS0D,IAAKyG,CAAAA,WAAW,CAACtH,IAAI,EAAA;cACtH,IAAI0G,KAAAA,KAAU,IAAI,CAACF,UAAU,EAAEE,KAAMG,CAAAA,WAAW,CAAC,IAAI,CAAA;cACrD,IAAI,IAAI,CAACC,SAAS,CAACC,OAAO,CAAC9K,QAAQ,CAAC,cAAiB,CAAA,EAAA;kBACnD,IAAIkB,MAAAA,KAAWuJ,KAAOhH,EAAAA,kBAAAA,CAAO,IAAI,CAAA,CAAEvE,IAAI,CAAC0F,IAAKwD,CAAAA,WAAW,CAAC1F,IAAI,CAACkC,IAAAA,CAAAA,CAAAA;EACzDnB,qBAAAA,kBAAAA,CAAO,IAAI,CAAA,CAAEvE,IAAI,CAAC0F,KAAKiD,YAAY,CAACnF,IAAI,CAACkC,IAAMnB,EAAAA,kBAAAA,CAAO,IAAI,CAAA,EAAGmB,KAAK0G,WAAW,CAAA,CAAA;EACpF;EAEF,SAAA,CAAA;;;UAKF,IAAI,CAAChB,MAAM,CAACrG,SAAS,CAAC,CAAC,SAAS,EAAE,IAAI,CAAC+G,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAACA,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAACA,KAAK,CAAC,KAAK,CAAC,CAC5G3G,CAAAA,IAAI,CAAC,SAAW,EAAA,IAAI,CAAC4G,MAAM,GAAG,IAAI,CAACC,aAAa,GAAG,IAAI,CAACR,OAAO,GAAG,IAAI,CAACS,cAAc,GAAG,CAAA,CAAA;EAE7F;EAEA;;;;EAIA,KACAI,YAAe,GAAA;EAEb,QAAA,MAAMC,YAAY,EAAE;EAEpB,QAAA,IAAI,CAACC,OAAO,CAAC3G,KAAK,CAAC,IAAI,CAAC4G,MAAM,CAAA,CAAElJ,IAAI,EAAA,CACjClC,OAAO,CAAC,CAACqL,KAAOtJ,EAAAA,CAAAA,GAAAA;EAEf,YAAA,MAAMuJ,GAAM,GAAA,IAAI,CAAC5E,IAAI,CAAC2E,KAAOtJ,EAAAA,CAAAA,CAAAA;cAE7B,IAAIuJ,GAAAA,CAAIC,CAAC,IAAID,GAAAA,CAAI7F,KAAK,IAAI6F,GAAAA,CAAI5F,MAAM,EAAE;EAEpC,gBAAA,IAAI3H,CAAIsN,GAAAA,KAAAA;kBACR,IAAIA,KAAAA,CAAMtE,MAAM,IAAIsE,KAAAA,CAAMzN,GAAG,IAAIyN,KAAAA,CAAMrE,MAAM,EAAE;sBAC7CjJ,CAAIsN,GAAAA,KAAAA,CAAMrE,MAAM,CAAC,CAAE,CAAA;EACnBjF,oBAAAA,CAAAA,GAAI,IAAI,CAAC6B,KAAK,CAACnE,OAAO,CAAC1B,CAAAA,CAAAA;EACzB;kBAEA,MAAM2H,MAAAA,GAAS4F,GAAIC,CAAAA,CAAC,GAAGD,GAAAA,CAAIC,CAAC,GAAG,CAAID,GAAAA,GAAAA,CAAI5F,MAAM,EACvCW,GAAM,GAAA,IAAI,CAACmF,gBAAgB,CAACzN,CAAAA,EAAGgE,CAC/B0D,CAAAA,EAAAA,KAAAA,GAAQ6F,GAAIC,CAAAA,CAAC,GAAGD,GAAAA,CAAIC,CAAC,GAAG,CAAID,GAAAA,GAAAA,CAAI7F,KAAK;EAE3C,gBAAA,IAAIY,GAAK,EAAA;sBAEP,IAAIC,CAAAA,GAAIvI,CAAE8K,CAAAA,eAAe,GAAG9K,CAAAA,CAAE+C,SAAS,GAAG/C,CAAAA,CAAE+C,SAAS,CAAC,CAAE,CAAA,GAChD,IAAI,CAACkD,EAAE,CAACjG,CAAAA,CAAEmE,IAAI,EAAEnE,CAAEgE,CAAAA,CAAC,CAAI,GAAA,IAAI,CAACiC,EAAE,CAACjG,CAAAA,EAAGgE,IACtCwE,CAAIxI,GAAAA,CAAAA,CAAE8K,eAAe,GAAG9K,CAAE+C,CAAAA,SAAS,GAAG/C,CAAE+C,CAAAA,SAAS,CAAC,CAAA,CAAE,GAClD,IAAI,CAACoD,EAAE,CAACnG,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAA,GAAI,IAAI,CAACmC,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA,CAAAA;EAExC,oBAAA,IAAIuJ,GAAIhF,CAAAA,CAAC,EAAEA,CAAAA,IAAKgF,IAAIhF,CAAC;EACrB,oBAAA,IAAIgF,GAAI/E,CAAAA,CAAC,EAAEA,CAAAA,IAAK+E,IAAI/E,CAAC;sBAErB,IAAIxI,CAAAA,CAAE8K,eAAe,EAAE;EACrB9K,wBAAAA,CAAAA,GAAIA,EAAEmE,IAAI;EACVH,wBAAAA,CAAAA,GAAIhE,EAAEgE,CAAC;EACT;EAEAmJ,oBAAAA,SAAAA,CAAUO,IAAI,CAAC;0BACbzJ,UAAY,EAAA,IAAA;0BACZE,IAAMnE,EAAAA,CAAAA;EACN2H,wBAAAA,MAAAA;EACA3D,wBAAAA,CAAAA;EACAmE,wBAAAA,EAAAA,EAAI,IAAI,CAACrC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EAChBsE,wBAAAA,GAAAA;EACAZ,wBAAAA,KAAAA;0BACAa,CAAGA,EAAAA,CAAAA,GAAI,CAACb,KAAQ,GAAA,CAAA;0BAChBc,CAAGA,EAAAA,CAAAA,GAAI,CAACb,MAAS,GAAA;EACnB,qBAAA,CAAA;EAEF;EAEF;EAEF,SAAA,CAAA;EAEF,QAAA,IAAI,CAACgG,qBAAqB,CACvBxJ,IAAI,CAACgJ,WACLvJ,QAAQ,CAAC,IAAI,CAACC,SAAS,CACvBuE,CAAAA,OAAO,CAAC,IAAI,CAAC0D,YAAY,CAAC,IAAI,CAAClF,QAAQ,CACvCyB,CAAAA,CAAAA,aAAa,CAAC,MAAA,CAAA,CACdjD,MAAM,CAACqE,QAAAA,CAAK,CAAC,SAAS,EAAE,IAAI,CAACkD,KAAK,CAAC,MAAM,CAAC,EAAE;cAAC9J,MAAQ,EAAA,IAAI,CAACoJ,MAAM;cAAEzF,MAAQ,EAAA;EAAC4B,gBAAAA,OAAAA,EAAS,IAAI,CAACiE,OAAO,GAAG,IAAI,CAACS,cAAc,GAAG;EAAC;WAAIpH,CAAAA,CAAAA,IAAI,IAClIT,MAAM,EAAA;EAEX;EAEA;;;;EAIA,KACA2I,aAAgB,GAAA;EAEd,QAAA,MAAMC,YAAY,EAAE;EAEpB,QAAA,IAAI,CAACT,OAAO,CAAC3G,KAAK,CAAC,IAAI,CAAC4G,MAAM,CAAA,CAAElJ,IAAI,EAAA,CACjClC,OAAO,CAAC,CAACqL,KAAOtJ,EAAAA,CAAAA,GAAAA;EAEf,YAAA,IAAIhE,CAAIsN,GAAAA,KAAAA;cACR,IAAIA,KAAAA,CAAMtE,MAAM,IAAIsE,KAAAA,CAAMzN,GAAG,IAAIyN,KAAAA,CAAMrE,MAAM,EAAE;kBAC7CjJ,CAAIsN,GAAAA,KAAAA,CAAMrE,MAAM,CAAC,CAAE,CAAA;EACnBjF,gBAAAA,CAAAA,GAAI,IAAI,CAAC6B,KAAK,CAACnE,OAAO,CAAC1B,CAAAA,CAAAA;EACzB;EAEA,YAAA,IAAI8N,MAAS,GAAA,IAAI,CAACC,MAAM,CAAC/N,CAAGgE,EAAAA,CAAAA,CAAAA;cAE5B,IAAI,IAAI,CAACgK,YAAY,IAAIF,WAAW,KAASA,IAAAA,MAAAA,KAAW/N,SAAa+N,IAAAA,MAAAA,KAAW,IAAM,EAAA;EAEpF,gBAAA,MAAMG,MAAS,GAAA,IAAI,CAACD,YAAY,CAAC3J,IAAI,CAAC,IAAI,CAAA,CAAErE,GAAGgE,CAAG,EAAA,IAAI,CAAC2E,IAAI,CAAC2E,KAAOtJ,EAAAA,CAAAA,CAAAA,CAAAA;EAEnE,gBAAA,IAAIiK,MAAQ,EAAA;EAEV,oBAAA,IAAIH,MAAO3K,CAAAA,WAAW,KAAKyB,KAAAA,EAAOkJ,MAAS,GAAA;EAACA,wBAAAA;EAAO,qBAAA;sBAEnD,MAAMvF,CAAAA,GAAIvI,CAAE8K,CAAAA,eAAe,GAAG9K,CAAAA,CAAE+C,SAAS,GAAG/C,CAAAA,CAAE+C,SAAS,CAAC,CAAE,CAAA,GAChD,IAAI,CAACkD,EAAE,CAACjG,CAAAA,CAAEmE,IAAI,EAAEnE,CAAEgE,CAAAA,CAAC,CAAI,GAAA,IAAI,CAACiC,EAAE,CAACjG,CAAAA,EAAGgE,IACtCwE,CAAIxI,GAAAA,CAAAA,CAAE8K,eAAe,GAAG9K,CAAE+C,CAAAA,SAAS,GAAG/C,CAAE+C,CAAAA,SAAS,CAAC,CAAA,CAAE,GAClD,IAAI,CAACoD,EAAE,CAACnG,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAA,GAAI,IAAI,CAACmC,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA,CAAAA;sBAE1C,IAAIhE,CAAAA,CAAE8K,eAAe,EAAE;EACrB9K,wBAAAA,CAAAA,GAAIA,EAAEmE,IAAI;EACVH,wBAAAA,CAAAA,GAAIhE,EAAEgE,CAAC;EACT;EAEA,oBAAA,IAAK,IAAIkK,CAAI,GAAA,CAAA,EAAGA,IAAIJ,MAAOxL,CAAAA,MAAM,EAAE4L,CAAK,EAAA,CAAA;EAEtC,wBAAA,MAAMC,CAAIF,GAAAA,MAAAA,CAAO9K,WAAW,KAAKyB,KAAQqJ,GAAAA,MAAM,CAACC,CAAAA,CAAE,GAAG9M,MAAAA,CAAOgB,MAAM,CAAC,EAAI6L,EAAAA,MAAAA,CAAAA;EACvE,wBAAA,MAAMhD,MAAS,GAAA,IAAI,CAACC,OAAO,CAAClL,CAAGgE,EAAAA,CAAAA,CAAAA;0BAC/B,IAAIwJ,CAAAA,GAAIxN,EAAEoO,WAAW,IAAIpO,EAAEoO,WAAW,CAACnD,MAAM,GAAGjL,CAAAA,CAAEoO,WAAW,CAACnD,MAAM,GAAGgD,MAAOI,CAAAA,KAAK,KAAKtO,SAAYkO,GAAAA,MAAAA,CAAOI,KAAK,GAAG,CAAA;0BACnHb,CAAKvC,IAAAA,MAAAA;0BACL,MAAMqD,YAAAA,GAAerD,WAAW,CAAI,GAAA;8BAACkD,CAAE5F,CAAAA,CAAC,GAAG,EAAM,IAAA,CAAA;8BAAG4F,CAAE3F,CAAAA,CAAC,GAAG,EAAM,IAAA;2BAAE,GAAG;EAAC2F,4BAAAA,CAAAA,CAAEzG,KAAK,GAAG,CAAA;EAAGyG,4BAAAA,CAAAA,CAAExG,MAAM,GAAG;EAAE,yBAAA;EAEhGkG,wBAAAA,SAAAA,CAAUH,IAAI,CAAC;8BACbzJ,UAAY,EAAA,IAAA;8BACZE,IAAMnE,EAAAA,CAAAA;EACN2H,4BAAAA,MAAAA,EAAQwG,EAAExG,MAAM;EAChBuG,4BAAAA,CAAAA;8BACA/F,EAAI,EAAA,CAAA,EAAG,IAAI,CAACrC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG,CAAC,EAAEkK,CAAG,CAAA,CAAA;EAC5BV,4BAAAA,CAAAA;EACAc,4BAAAA,YAAAA;8BACAC,IAAMT,EAAAA,MAAM,CAACI,CAAE,CAAA;EACfxG,4BAAAA,KAAAA,EAAOyG,EAAEzG,KAAK;8BACda,CAAGA,EAAAA,CAAAA,GAAI4F,EAAE5F,CAAC;8BACVC,CAAGA,EAAAA,CAAAA,GAAI2F,EAAE3F;EACX,yBAAA,CAAA;EAEF;EAEF;EAEF;EAEF,SAAA,CAAA;EAEF,QAAA,IAAI,CAACgG,WAAW,CACbrK,IAAI,CAAC0J,SAAAA,CAAAA,CACLjK,QAAQ,CAAC,IAAI,CAACC,SAAS,CAAA,CACvB4K,WAAW,CAAC,IAAI,CAAC3C,YAAY,CAAC,IAAI,CAAClF,QAAQ,GAC3CyB,aAAa,CAAC,MACd4C,CAAAA,CAAAA,MAAM,CAACjL,CAAAA,CAAKA,GAAAA,CAAAA,CAAEiE,UAAU,GAAGjE,CAAAA,CAAEwN,CAAC,GAAGxN,CAAEmE,CAAAA,IAAI,CAACqJ,CAAC,EACzCc,YAAY,CAACtO,CAAAA,CAAAA,GAAKA,CAAEiE,CAAAA,UAAU,GAAGjE,CAAAA,CAAEsO,YAAY,GAAGtO,CAAAA,CAAEmE,IAAI,CAACmK,YAAY,CAAA,CACrElJ,MAAM,CAACqE,SAAK,CAAC,SAAS,EAAE,IAAI,CAACkD,KAAK,CAAC,KAAK,CAAC,EAAE;cAAC9J,MAAQ,EAAA,IAAI,CAACoJ,MAAM;cAAEzF,MAAQ,EAAA;EAAC4B,gBAAAA,OAAAA,EAAS,IAAI,CAACiE,OAAO,GAAG,IAAI,CAACS,cAAc,GAAG;EAAC;EAAC,SAAA,CAAA,CAAGpH,IAAI,EAAA,CAAA,CACjI7D,MAAM,CAAC2B,UAAWa,CAAAA,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAACqK,YAAY,GAC9CzJ,MAAM,EAAA;EAEX;EAEA;;;;;OAMAA,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,IAAI,IAAI,CAACC,OAAO,KAAK,MAAQ,EAAA;EAC3B,YAAA,IAAI,CAACC,MAAM,CAACA,kBAAAA,CAAO,QAAQC,MAAM,CAAC,KAC/BC,CAAAA,CAAAA,KAAK,CAAC,OAAA,EAAS,CAAGC,EAAAA,MAAAA,CAAOC,UAAU,CAAC,EAAE,CAAC,CAAA,CACvCF,KAAK,CAAC,QAAU,EAAA,CAAA,EAAGC,OAAOE,WAAW,CAAC,EAAE,CAAC,CACzCH,CAAAA,KAAK,CAAC,SAAA,EAAW,SAASI,IAAI,EAAA,CAAA;EACnC;EAEA,QAAA,IAAI,CAACiJ,WAAW,GAAGrI,uBAAAA,CAAW,IAAI,CAAChD,KAAK,CAAA,CACrCM,QAAQ,CAAC,IAAI,CAACC,SAAS,CAAA;UAE1B,IAAIM,MAAAA,GAAO,IAAI,CAAC0B,KAAK,EAAEhG,GAAM,GAAA,IAAI,CAACiG,GAAG;UACrC,IAAI,IAAI,CAAC8I,WAAW,EAAE;cACpBzK,MAAO,GAAA,IAAI,CAACyK,WAAW,CAACzK,MAAAA,CAAAA;EACxB,YAAA,IAAIA,MAAKtE,CAAAA,GAAG,EAAEA,GAAAA,GAAMsE,OAAKtE,GAAG;EAC9B;UAEA,IAAI,IAAI,CAACgP,KAAK,EAAE;EACd1K,YAAAA,MAAAA,GAAOA,MAAK2K,CAAAA,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAAA;kBACnB,MAAOY,CAAAA,CAAEjE,eAAe,IAAIiE,CAAAA,CAAE9K,UAAU,CAAE8K,CAAAA,GAAIA,EAAE5K,IAAI;kBACpD,MAAOgK,CAAAA,CAAErD,eAAe,IAAIqD,CAAAA,CAAElK,UAAU,CAAEkK,CAAAA,GAAIA,EAAEhK,IAAI;EACpD,gBAAA,OAAO,IAAI,CAAC0K,KAAK,CAACE,CAAGZ,EAAAA,CAAAA,CAAAA;EACvB,aAAA,CAAA;EACF;EAEA,QAAA,MAAMa,UAAaC,GAAAA,WAAAA,CAAO9K,MACvBQ,CAAAA,GAAG,CAAC,IAAI,CAACsF,cAAc,CAAC5F,IAAI,CAAC,IAAI,CAAA,CAAA,CAAA,CACjC7C,MAAM,CAAC0N,OAAAA,CAAAA;EAEV,QAAA,MAAMC,sBAAsB/N,MAAO2H,CAAAA,IAAI,CAAC,IAAI,CAACmB,YAAY,CAAA;UAEzDiF,mBAAoBlN,CAAAA,OAAO,CAACpC,CAAAA,GAAAA,GAAAA;EAC1B,YAAA,IAAI,CAACmP,UAAAA,CAAWrN,QAAQ,CAAC9B,GAAM,CAAA,EAAA;kBAC7BuF,kBAAO,CAAA,IAAI,CAACD,OAAO,CAACC,MAAM,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC8E,YAAY,CAACrK,GAAAA,CAAI,CAACsI,EAAE,EAAA,CAAA,CAAI,EAAEzC,IAAI,EAAA,CAAGwG,UAAU,CAAA,CAAEjE,MAAM,EAAA;EAC9F,gBAAA,OAAO,IAAI,CAACiC,YAAY,CAACrK,GAAI,CAAA;EAC/B;EACF,SAAA,CAAA;UAEAmP,UAAW/M,CAAAA,OAAO,CAACpC,CAAAA,GAAAA,GAAAA;EACjB,YAAA,IAAI,CAACsP,mBAAAA,CAAoBxN,QAAQ,CAAC9B,GAAM,CAAA,EAAA;kBACtC,MAAMgC,MAAAA,GAAS+J,IAAKwD,CAAAA,KAAK,CAACvP,GAAAA,CAAAA;kBAC1B,MAAMwP,YAAAA,GAAexN,OAAOmI,OAAO;EACnC,gBAAA,OAAOnI,OAAOmI,OAAO;kBACrB,MAAM3D,CAAAA,GAAIiJ,QAAQ,CAACD,YAAa,CAAA,EAAA;kBAChC,IAAK,MAAMnN,KAAKL,MAAQ,CAAA;sBACtB,IAAI,CAAA,EAAC,EAAEjB,cAAc,CAACC,IAAI,CAACwF,CAAAA,EAAGnE,CAAMA,CAAAA,IAAAA,CAAAA,IAAKmE,CAAG,EAAA;0BAC1C,IAAInE,CAAAA,KAAM,KAAKmE,CAAC,CAACnE,EAAE,CAAC,IAAML,MAAM,CAACK,CAAE,CAAA,CAAA;+BAC9BL,MAAM,CAACK,EAAE,YAAY0C,KAAAA,GAAQyB,CAAC,CAACnE,CAAAA,CAAE,CAACqN,KAAK,CAAC,MAAM1N,MAAM,CAACK,EAAE,CAAImE,GAAAA,CAAC,CAACnE,CAAE,CAAA,CAACL,MAAM,CAACK,CAAE,CAAA,CAAA;EAChF;EACF;EACA,gBAAA,IAAI,CAACiD,OAAO,CAACtE,IAAI,CAACwF,CAAAA,CAAAA;EAClB,gBAAA,IAAI,CAAC6D,YAAY,CAACrK,GAAAA,CAAI,GAAGwG,CAAAA;EAC3B;EACF,SAAA,CAAA;EAEAT,QAAAA,qBAAAA,CAAU,CAAC,SAAS,EAAE,IAAI,CAAC+G,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAACA,KAAK,CAAC,WAAW,CAAC,EAAE9F,IAAI,CAAC,SAAS7G,CAAC,EAAA;cAC9F,IAAIA,CAAAA,IAAKA,EAAEkM,UAAU,EAAElM,EAAEkM,UAAU,CAACK,WAAW,CAAC,IAAI,CAAA;EAC/C,iBAAA,IAAI,CAACL,UAAU,CAACsD,WAAW,CAAC,IAAI,CAAA;EACvC,SAAA,CAAA;;EAGA,QAAA,IAAI,CAACvD,MAAM,GAAGxC,QAAAA,CAAK,CAAC,SAAS,EAAE,IAAI,CAACkD,KAAK,CAAC,MAAM,CAAC,EAAE;cAAC9J,MAAQ,EAAA,IAAI,CAACsC;EAAO,SAAA,CAAA;EACxE,QAAA,MAAMqB,MAAS,GAAA,IAAI,CAAC4G,OAAO,GAAG3D,QAAK,CAAA,CAAC,SAAS,EAAE,IAAI,CAACkD,KAAK,CAAC,MAAM,CAAC,EAAE;cAAC9J,MAAQ,EAAA,IAAI,CAACoJ,MAAM;cAAEzF,MAAQ,EAAA;EAAC4B,gBAAAA,OAAAA,EAAS,IAAI,CAACiE,OAAO,GAAG,IAAI,CAACS,cAAc,GAAG;EAAC;EAAC,SAAA,CAAA,CAC/IlH,SAAS,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC+G,KAAK,CAAE,CAAA,CAAA,CACjCxI,IAAI,CAACA,MAAMtE,EAAAA,GAAAA,CAAAA;;EAGd2G,QAAAA,MAAAA,CAAOiJ,KAAK,EAAA;UACZ,IAAI,IAAI,CAAC5L,SAAS,EAAE;EAClB2C,YAAAA,MAAAA,CAAOF,UAAU,CAAC,IAAI,CAACqI,WAAW,CAC/B9N,CAAAA,IAAI,CAAC,IAAI,CAACgK,eAAe,CAACxG,IAAI,CAAC,IAAI,CAAA,CAAA;WAEnC,MAAA;cACHmC,MAAO3F,CAAAA,IAAI,CAAC,IAAI,CAACgK,eAAe,CAACxG,IAAI,CAAC,IAAI,CAAA,CAAA;EAC5C;;EAGA,QAAA,MAAM0B,KAAQ,GAAA,IAAI,CAACsH,MAAM,GAAG7G,MAAOT,CAAAA,KAAK,EAAGV,CAAAA,MAAM,CAAC,IAAI,CAACqK,QAAQ,CAAA,CAC5D1J,IAAI,CAAC,OAAA,EAAS,CAAChG,CAAAA,EAAGgE,IAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC2I,KAAK,CAAC,WAAW,EAAEgD,WAAM,IAAI,CAAC7D,YAAY,CAAC,IAAI,CAAChG,GAAG,CAAE9F,CAAAA,CAAAA,EAAGgE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CACjHnD,IAAI,CAAC,IAAI,CAACgK,eAAe,CAACxG,IAAI,CAAC,IAAI,CAAA,CAAA,CACnC2B,IAAI,CAAC,cAAc,IAAI,CAAC4J,UAAU,CAAA,CAClC5J,IAAI,CAAC,MAAA,EAAQ,IAAI,CAAC6J,KAAK,CACvB7J,CAAAA,IAAI,CAAC,SAAA,EAAW,IAAI,CAAC8F,YAAY,CAAC,IAAI,CAAClF,QAAQ,CAAA,CAAA;UAElD,MAAMkJ,WAAAA,GAAc/J,KAAMU,CAAAA,KAAK,CAACD,MAAAA,CAAAA;UAEhC,IAAIuJ,iBAAAA,GAAoBD,WAAY9J,CAAAA,IAAI,CAAC,iBAAA,EAAmB,IAAI,CAAC8F,YAAY,CAAC,IAAI,CAACkE,eAAe,CAAA,CAAA;UAElG,IAAI,IAAI,CAACnM,SAAS,EAAE;cAClBkM,iBAAoBA,GAAAA,iBAAAA,CACjB/J,IAAI,CAAC,gBAAA,EAAkB,QACvBM,UAAU,CAAC,IAAI,CAACqI,WAAW,EAAErI,UAAU,EAAA,CAAG2J,KAAK,CAAC,GAAA,CAAA,CAChDjK,IAAI,CAAC,gBAAA,EAAkB,IAAI,CAACW,cAAc,CAAA;EAC/C;UAEAoJ,iBACG/J,CAAAA,IAAI,CAAC,SAAW,EAAA,IAAI,CAAC8F,YAAY,CAAC,IAAI,CAAClF,QAAQ,CAAA,CAAA;;EAGlD,QAAA,MAAMoB,OAAO,IAAI,CAACkI,KAAK,GAAG1J,OAAOwB,IAAI,EAAA;EACrC,QAAA,IAAI,IAAI,CAACnE,SAAS,EAAEmE,IAAK1B,CAAAA,UAAU,EAAG2J,CAAAA,KAAK,CAAC,IAAI,CAACpM,SAAS,EAAEoE,MAAM,EAAA;EAC7DD,aAAAA,IAAAA,CAAKC,MAAM,EAAA;EAEhB,QAAA,IAAI,CAACiF,YAAY,EAAA;EACjB,QAAA,IAAI,CAACU,aAAa,EAAA;EAElB,QAAA,IAAI,CAACZ,WAAW,GAAGvD,QAAAA,CAAK,CAAC,SAAS,EAAE,IAAI,CAACkD,KAAK,CAAC,MAAM,CAAC,EAAE;cAAC9J,MAAQ,EAAA,IAAI,CAACoJ;EAAM,SAAA,CAAA;EAC5E,QAAA,IAAI,CAACK,YAAY,GAAG7C,QAAAA,CAAK,CAAC,SAAS,EAAE,IAAI,CAACkD,KAAK,CAAC,OAAO,CAAC,EAAE;cAAC9J,MAAQ,EAAA,IAAI,CAACoJ;EAAM,SAAA,CAAA;UAE9E,MAAMkE,QAAAA,GAAW,IAAI,CAAClE,MAAM,CAACrG,SAAS,CAAC,iBAAA,CAAA,CACpCzB,IAAI,CAAC,IAAI,CAACiM,QAAQ,IAAIhP,MAAAA,CAAO2H,IAAI,CAAC,IAAI,CAACxG,GAAG,CAAA,CAAED,MAAM,GAAG6B,MAAO,GAAA,EAAE,EAAEtE,GAAAA,CAAAA;UAEnEsQ,QAASV,CAAAA,KAAK,EACX5O,CAAAA,IAAI,CAAC,IAAI,CAACgK,eAAe,CAACxG,IAAI,CAAC,IAAI,CAAA,CAAA;EAEtC,QAAA,MAAMgM,MAAS,GAAA,IAAI,CAAC1D,KAAK,KAAK,MAAA;EAE9B,QAAA,IAAI0D,MAAQ,EAAA;cACV,MAAMC,KAAAA,GAAQ,IAAI,CAACC,MAAM,CAAClM,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACxC,MAAM,EAAA,CAAA;EAChDwO,YAAAA,MAAAA,IAAU,IAAI,CAACG,KAAK,CACjBF,KAAK,CAAC9E,gBAAK,CAAC,CAAC,KAAK,EAAE8E,KAAMG,CAAAA,MAAM,CAAC,CAAGC,CAAAA,CAAAA,WAAW,KAAKJ,KAAMK,CAAAA,KAAK,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC,CACrEC,CAAAA,OAAO,CAAC,IAAI,CAACC,QAAQ,CACrBtI,CAAAA,CAAC,CAAC,IAAI,CAACtC,EAAE,CAAA,CACTuC,CAAC,CAAC,IAAI,CAACrC,EAAE,CAAA;EACd;UAEA,MAAM2K,QAAAA,GAAWX,QAASpK,CAAAA,KAAK,EAAGV,CAAAA,MAAM,CAACgL,MAAS,GAAA,MAAA,GAAS,MACxDrK,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS,CAAChG,CAAGgE,EAAAA,CAAAA,GAAM,CAAC,yBAAyB,EAAE2L,UAAAA,CAAM,IAAI,CAAC7D,YAAY,CAAC,IAAI,CAAChG,GAAG,CAAA,CAAE9F,GAAGgE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAC9FgC,IAAI,CAAC,MAAQ,EAAA,OAAA,CAAA,CACbA,IAAI,CAAC,QAAA,EAAU,OACfA,CAAAA,CAAAA,IAAI,CAAC,gBAAA,EAAkB,WACvBA,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA,CAChBnF,IAAI,CAAC,IAAI,CAACgK,eAAe,CAACxG,IAAI,CAAC,IAAI,CAAA,CAAA;EAEtC,QAAA,MAAMkC,OAAO,IAAI;UAEjB,MAAMwK,UAAAA,GAAaZ,SAAS1J,KAAK,CAACqK,UAC/BjK,IAAI,CAAC,SAAS7G,CAAC,EAAA;EACd,YAAA,MAAMgE,CAAIuC,GAAAA,IAAAA,CAAKV,KAAK,CAACnE,OAAO,CAAC1B,CAAAA,CAAAA;cAC7B,MAAMgR,CAAAA,GAAIzK,KAAK6J,QAAQ,CAACpQ,GAAGgE,CAAGuC,EAAAA,IAAAA,CAAKoC,IAAI,CAAC3I,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA;cAC3C,OAAOgN,CAAAA,IAAK,EAAEzK,IAAKoG,CAAAA,KAAK,KAAK,MAAUsE,IAAAA,UAAAA,CAAW1K,IAAKoE,CAAAA,YAAY,CAAC3K,CAAAA,EAAGgE,MAAM,EAAC,CAAA,GAAKoB,kBAAO,CAAA,IAAI,CAAEvE,CAAAA,IAAI,CAACiJ,WAAAA,EAASkH,CAAK5L,CAAAA,GAAAA,kBAAAA,CAAO,IAAI,CAAA,CAAE6C,MAAM,EAAA;EACxI,SAAA,CAAA;UAEFkI,QAASnI,CAAAA,IAAI,GAAGC,MAAM,EAAA;EAEtB,QAAA,IAAI,CAACW,YAAY,CAAC,IAAI,CAACwH,QAAQ,GAAGW,UAAajB,GAAAA,WAAAA,CAAAA;UAE/C5H,UAAW,CAAA,IAAA;EACT,YAAA,IAAI,IAAI,CAACmE,OAAO,EAAE,IAAI,CAACL,aAAa,EAAA;EAC/B,iBAAA,IAAI,IAAI,CAACY,MAAM,EAAE,IAAI,CAACG,YAAY,EAAA;EACvC,YAAA,IAAI7H,QAAUA,EAAAA,QAAAA,EAAAA;WACb,EAAA,IAAI,CAACrB,SAAS,GAAG,GAAA,CAAA;EAEpB,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMAqN,MAAAA,CAAOpP,CAAC,EAAE;UAER,IAAI,CAACO,UAAUC,MAAM,IAAIR,MAAM/B,SAAW,EAAA,OAAO,IAAI,CAACsM,OAAO;UAC7D,IAAI,CAACA,OAAO,GAAGvK,CAAAA;UACf,IAAI,IAAI,CAACmK,MAAM,EAAE;;;EAGf,YAAA,IAAI,CAACD,aAAa,EAAA;EACpB;EACA,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMAmF,aAAAA,CAAcrP,CAAC,EAAE;EACf,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwK,cAAc,GAAGhL,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgL,cAAc;EACjF;EAEA;;;;;OAMAsE,WAAAA,CAAYtP,CAAC,EAAE;UACb,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACoK,YAAY,GAAGtK,UAAO,CAAA,IAAI,IAAI,CAACsK,YAAY,EAAE5K,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAAC4K,YAAY;EAC5G;EAEA;;;;;OAMA2E,SAAAA,CAAUvP,CAAC,EAAE;EACX,QAAA,OAAOA,MAAM/B,SACR,IAAA,IAAI,CAAC6P,UAAU,GAAG,OAAO9N,CAAAA,KAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAClE,IAAI,CAAC8N,UAAU;EACrB;EAEA;;;;;OAMA0B,eAAAA,CAAgBxP,CAAC,EAAE;EACjB,QAAA,OAAOO,UAAUC,MAAM,IAClB,IAAI,CAACmL,gBAAgB,GAAG,OAAO3L,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IACxE,IAAI,CAAC2L,gBAAgB;EAC3B;EAEA;;;;;OAMAtJ,IAAAA,CAAKrC,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAClB,IAAI,CAACuD,KAAK,GAAG/D,CAAAA,EAAG,IAAG,IACpB,IAAI,CAAC+D,KAAK;EAChB;EAEA;;;;;OAMA0L,QAAAA,CAASzP,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6G,SAAS,GAAGrH,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACqH,SAAS;EACvE;EAEA;;;;;OAMAvF,QAAAA,CAAS9B,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAClB,IAAI,CAACuB,SAAS,GAAG/B,CAAAA,EAAG,IAAG,IACxB,IAAI,CAAC+B,SAAS;EACpB;EAEA;;;;;OAMA6H,IAAAA,CAAK5J,CAAC,EAAE;EACN,QAAA,OAAOO,UAAUC,MAAM,IAClB,IAAI,CAAC6H,KAAK,GAAG,OAAOrI,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAC7D,IAAI,CAACqI,KAAK;EAChB;EAEA;;;;;OAMAqH,WAAAA,CAAY1P,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAClB,IAAI,CAAC8H,YAAY,GAAG,OAAOtI,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IACpE,IAAI,CAACsI,YAAY;EACvB;EAEA;;;;;OAMAqH,KAAAA,CAAM3P,CAAC,EAAE;UAEP,IAAI,CAACO,SAAUC,CAAAA,MAAM,IAAIR,CAAAA,KAAM,MAAQ,EAAA,OAAO,IAAI,CAAC8K,MAAM;UACzD,IAAI,CAACA,MAAM,GAAG9K,CAAAA;UACd,IAAI,IAAI,CAACmK,MAAM,EAAE;;;EAGf,YAAA,IAAI,CAACc,YAAY,EAAA;EACnB;EACA,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;QAMA2E,UAAAA,CAAW5P,CAAC,EAAE;UACZ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAAC2K,WAAW,GAAG7K,UAAO,CAAA,IAAI,IAAI,CAAC6K,WAAW,EAAEnL,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACmL,WAAW;EACzG;EAEA;;;;;OAMA0E,YAAAA,CAAa7P,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuK,aAAa,GAAG/K,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+K,aAAa;EAC/E;EAEA;;;;;;;;;;;;;;OAeA+E,OAAAA,CAAQ9P,CAAC,EAAE;EACT,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8N,QAAQ,GAAG,OAAOtO,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACsO,QAAQ;EAC7G;EAEA;;;;;OAMAjI,EAAAA,CAAGrG,CAAC,EAAE;EACJ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwD,GAAG,GAAGhE,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgE,GAAG;EAC3D;EAEA;;;;;OAMA+L,KAAAA,CAAM/P,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACyL,MAAM,GAAG,OAAOjM,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACiM,MAAM;EACzG;EAEA;;;;;;;;;;;;;;OAeA+D,WAAAA,CAAYhQ,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0L,YAAY,GAAG,OAAOlM,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkM,YAAY;EACrH;EAEA;;;;;OAMAI,WAAAA,CAAYtM,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACoM,YAAY,GAAGtM,UAAAA,CAAO,IAAI,CAACsM,YAAY,EAAE5M,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC4M,YAAY;EACxG;EAEA;;;;;OAMAtG,OAAAA,CAAQtG,CAAC,EAAE;EACT,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACsE,QAAQ,GAAG,OAAO9E,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC8E,QAAQ;EAC7G;EAEA;;;;;QAMAyB,aAAAA,CAAcvG,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqE,cAAc,GAAG,OAAO7E,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6E,cAAc;EACzH;EAEA;;;;;OAMAoL,IAAAA,CAAKjQ,CAAC,EAAE;EACN,QAAA,OAAOA,MAAM/B,SACR,IAAA,IAAI,CAAC8P,KAAK,GAAG,OAAO/N,CAAAA,KAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAC7D,IAAI,CAAC+N,KAAK;EAChB;EAEA;;;;;QAMA5E,MAAAA,CAAOnJ,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4I,OAAO,GAAG,OAAOpJ,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoJ,OAAO;EAC3G;EAEA;;;;;OAMA8G,EAAAA,CAAGlQ,CAAC,EAAE;EACJ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC+H,GAAG,GAAG,OAAOvI,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACuI,GAAG;EACnG;EAEA;;;;;OAMA4H,EAAAA,CAAGnQ,CAAC,EAAE;EACJ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACgI,GAAG,GAAG,OAAOxI,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACwI,GAAG;EACnG;EAEA;;;;;OAMAS,KAAAA,CAAMjJ,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0I,MAAM,GAAG,OAAOlJ,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkJ,MAAM;EACzG;EAEA;;;;;OAMA5F,MAAAA,CAAOtD,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6C,OAAO,GAAGC,kBAAAA,CAAOtD,IAAI,IAAG,IAAK,IAAI,CAACqD,OAAO;EAC3E;EAEA;;;;;;;;;OAUA+M,cAAAA,CAAepQ,CAAC,EAAE;EAChB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0N,eAAe,GAAG,OAAOlO,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkO,eAAe;EAC3H;EAEA;;;;;OAMAlB,IAAAA,CAAKhN,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuM,KAAK,GAAG/M,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+M,KAAK;EAC/D;EAEA;;;;;OAMAtD,MAAAA,CAAOzJ,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACiI,OAAO,GAAG,OAAOzI,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACyI,OAAO;EAC3G;EAEA;;;;;OAMA4H,eAAAA,CAAgBrQ,CAAC,EAAE;EACjB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACkI,gBAAgB,GAAG,OAAO1I,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC0I,gBAAgB;EAC7H;EAEA;;;;;OAMA4H,aAAAA,CAActQ,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACmI,cAAc,GAAG,OAAO3I,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC2I,cAAc;EACzH;EAEA;;;;;OAMA4H,aAAAA,CAAcvQ,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACoI,cAAc,GAAG,OAAO5I,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC4I,cAAc;EACzH;EAEA;;;;;OAMA4H,WAAAA,CAAYxQ,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqI,YAAY,GAAG,OAAO7I,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6I,YAAY;EACrH;EAEA;;;;;OAMA4H,UAAAA,CAAWzQ,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACkQ,WAAW,GAAG,OAAO1Q,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC0Q,WAAW;EACnH;EAEA;;;;;OAMAxI,OAAAA,CAAQlI,CAAC,EAAE;EACT,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC6I,QAAQ,GAAG,OAAOrJ,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACqJ,QAAQ;EAC7G;EAEA;;;;;OAMAsH,cAAAA,CAAe3Q,CAAC,EAAE;EAChB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC+I,eAAe,GAAGjJ,UAAAA,CAAO,IAAI,CAACiJ,eAAe,EAAEvJ,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACuJ,eAAe;EACjH;EAEA;;;;;OAMAqH,YAAAA,CAAa5Q,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACsI,aAAa,GAAG,OAAO9I,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC8I,aAAa;EACvH;EAEA;;;;;OAMA+H,aAAAA,CAAc7Q,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACsQ,cAAc,GAAG,OAAO9Q,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC8Q,cAAc;EACzH;EAEA;;;;;;;;;OAUArK,CAAAA,CAAEzG,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2D,EAAE,GAAG,OAAOnE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmE,EAAE;EACjG;EAEA;;;;;;;;;OAUAuC,CAAAA,CAAE1G,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC6D,EAAE,GAAG,OAAOrE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACqE,EAAE;EACjG;EA3mCA;;;;OAKAhD,WAAAA,CAAYwG,OAAU,GAAA,GAAG,CAAE;UAEzB,KAAK,EAAA;UAEL,IAAI,CAACmD,cAAc,GAAG,IAAA;UACtB,IAAI,CAACJ,YAAY,GAAG;EAClB,YAAA,QAAA,EAAU,CAAC1M,CAAGgE,EAAAA,CAAAA,GAAAA;EACZ,gBAAA,IAAI6O,CAAI,GAAA,IAAI,CAAC1I,KAAK,CAACnK,CAAGgE,EAAAA,CAAAA,CAAAA;kBACtB,IAAI;EAAC,oBAAA,aAAA;EAAe,oBAAA;mBAAO,CAACrC,QAAQ,CAACkR,CAAIA,CAAAA,EAAAA,CAAAA,GAAI,IAAI,CAACtI,OAAO,CAACvK,CAAGgE,EAAAA,CAAAA,CAAAA;kBAC7D,OAAO8O,aAAAA,CAAMD,CAAGE,CAAAA,CAAAA,MAAM,CAAC,CAAA,CAAA;EACzB,aAAA;EACA,YAAA,cAAA,EAAgB,CAAC/S,CAAGgE,EAAAA,CAAAA,GAAAA;EAClB,gBAAA,MAAM/D,IAAI,IAAI,CAAC0K,YAAY,CAAC3K,GAAGgE,CAAM,CAAA,IAAA,CAAA;EACrC,gBAAA,OAAO/D,CAAI,GAAA,CAAA;EACb;EACF,SAAA;UACA,IAAI,CAAC2P,UAAU,GAAG7K,QAAS,CAAA,EAAA,CAAA;UAC3B,IAAI,CAAC0I,gBAAgB,GAAG1I,QAAS,CAAA,KAAA,CAAA;UACjC,IAAI,CAAC4I,qBAAqB,GAAG,IAAI3I,KAAAA,EAAAA;UACjC,IAAI,CAACa,KAAK,GAAG,EAAE;UACf,IAAI,CAAChC,SAAS,GAAG,GAAA;UACjB,IAAI,CAACsG,KAAK,GAAGpF,QAAS,CAAA,OAAA,CAAA;UACtB,IAAI,CAACqF,YAAY,GAAGrF,QAAS,CAAA,CAAA,CAAA;UAE7B,IAAI,CAAC8H,aAAa,GAAG,GAAA;UACrB,IAAI,CAACI,WAAW,GAAG;EACjB,YAAA,QAAA,EAAU,CAACjN,CAAGgE,EAAAA,CAAAA,GAAAA;EACZ,gBAAA,IAAI6O,CAAI,GAAA,IAAI,CAAC1I,KAAK,CAACnK,CAAGgE,EAAAA,CAAAA,CAAAA;kBACtB,IAAI;EAAC,oBAAA,aAAA;EAAe,oBAAA;mBAAO,CAACrC,QAAQ,CAACkR,CAAIA,CAAAA,EAAAA,CAAAA,GAAI,IAAI,CAACtI,OAAO,CAACvK,CAAGgE,EAAAA,CAAAA,CAAAA;kBAC7D,OAAO8O,aAAAA,CAAMD,CAAGE,CAAAA,CAAAA,MAAM,CAAC,GAAA,CAAA;EACzB,aAAA;EACA,YAAA,cAAA,EAAgB,CAAC/S,CAAGgE,EAAAA,CAAAA,GAAAA;EAClB,gBAAA,MAAM/D,IAAI,IAAI,CAAC0K,YAAY,CAAC3K,GAAGgE,CAAM,CAAA,IAAA,CAAA;EACrC,gBAAA,OAAO/D,CAAI,GAAA,CAAA;EACb;EACF,SAAA;EACA,QAAA,IAAI,CAAC6F,GAAG,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,GAAMhE,CAAEmI,CAAAA,EAAE,KAAK,MAASnI,GAAAA,CAAAA,CAAEmI,EAAE,GAAGnE,CAAAA;UAC9C,IAAI,CAAC+J,MAAM,GAAGhJ,QAAS,CAAA,KAAA,CAAA;UACvB,IAAI,CAACyJ,WAAW,GAAG,IAAIwE,OAAAA,EAAAA;UACvB,IAAI,CAACtE,YAAY,GAAG;cAClBuE,SAAW,EAAA,CAACjT,GAAGgE,CAAMkP,GAAAA,mBAAAA,CAAc,IAAI,CAAC/I,KAAK,CAACnK,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA;cACjDmP,QAAU,EAAA,EAAA;cACVC,OAAS,EAAA;EACX,SAAA;UACA,IAAI,CAACzG,KAAK,GAAG,OAAA;UACb,IAAI,CAAC/F,QAAQ,GAAG7B,QAAS,CAAA,CAAA,CAAA;UACzB,IAAI,CAAC4B,cAAc,GAAG5B,QAAS,CAAA,gBAAA,CAAA;UAC/B,IAAI,CAAC8K,KAAK,GAAG9K,QAAS,CAAA,cAAA,CAAA;UACtB,IAAI,CAACmG,OAAO,GAAGnG,QAAS,CAAA,CAAA,CAAA;UACxB,IAAI,CAACsF,GAAG,GAAGtF,QAAS,CAAA,CAAA,CAAA;UACpB,IAAI,CAACuF,GAAG,GAAGvF,QAAS,CAAA,CAAA,CAAA;UACpB,IAAI,CAACiG,MAAM,GAAGjG,QAAS,CAAA,CAAA,CAAA;UACvB,IAAI,CAACiL,eAAe,GAAGjL,QAAS,CAAA,oBAAA,CAAA;EAChC,QAAA,IAAI,CAACwF,OAAO,GAAG,CAACvK,CAAAA,EAAGgE,IAAM8O,aAAM,CAAA,IAAI,CAAC3I,KAAK,CAACnK,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAAI+O,MAAM,CAAC,GAAGM,SAAS,EAAA;UACpE,IAAI,CAAC7I,gBAAgB,GAAGzF,QAAS,CAAA,GAAA,CAAA;UACjC,IAAI,CAAC0F,cAAc,GAAG1F,QAAS,CAAA,MAAA,CAAA;UAC/B,IAAI,CAAC2F,cAAc,GAAG3F,QAAS,CAAA,CAAA,CAAA;UAC/B,IAAI,CAAC4F,YAAY,GAAG5F,QAAS,CAAA,CAAA,CAAA;UAC7B,IAAI,CAAC2K,QAAQ,GAAG/F,OAAAA;UAChB,IAAI,CAAC6I,WAAW,GAAGzN,QAAS,CAAA,OAAA,CAAA;UAC5B,IAAI,CAACoG,QAAQ,GAAGpG,QAAS,CAAA,KAAA,CAAA;UACzB,IAAI,CAACsG,eAAe,GAAG,EAAC;UACxB,IAAI,CAACnB,YAAY,GAAG,EAAC;UACrB,IAAI,CAACU,aAAa,GAAG7F,QAAS,CAAA,oBAAA,CAAA;UAC9B,IAAI,CAAC6N,cAAc,GAAG7N,QAAS,CAAA,KAAA,CAAA;EAE/B,QAAA,IAAI,CAACkB,EAAE,GAAGwC,QAAAA,CAAS,GAAK,EAAA,CAAA,CAAA;EACxB,QAAA,IAAI,CAACtC,EAAE,GAAGsC,QAAAA,CAAS,GAAK,EAAA,CAAA,CAAA;EAE1B;EAmiCF;;ECrnCe,MAAM6K,IAAa5K,SAAAA,KAAAA,CAAAA;EAgChC;;;;;;OAOAC,IAAAA,CAAK3I,CAAC,EAAE;EACN,QAAA,MAAMiJ,MAASjJ,GAAAA,CAAAA,CAAEiJ,MAAM,CAAC0H,KAAK,EAAG7B,CAAAA,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAM,IAAI,CAACoF,GAAG,GAAG,IAAI,CAACtN,EAAE,CAAC8I,CAAAA,CAAAA,GAAK,IAAI,CAAC9I,EAAE,CAACkI,CAAAA,CAAAA,GAAK,IAAI,CAAChI,EAAE,CAAC4I,CAAAA,CAAAA,GAAK,IAAI,CAAC5I,EAAE,CAACgI,CAAAA,CAAAA,CAAAA;EACzG,QAAA,MAAMqF,UAAUvK,MAAOtE,CAAAA,GAAG,CAAC,CAACxC,GAAGsR,CAAM,GAAA;kBAAC,IAAI,CAACC,GAAG,CAACvR,CAAGsR,EAAAA,CAAAA,CAAAA;kBAAI,IAAI,CAACE,GAAG,CAACxR,CAAGsR,EAAAA,CAAAA;EAAG,aAAA,CAAA;EACrE,QAAA,MAAMG,OAAU3K,GAAAA,MAAAA,CAAO4K,OAAO,EAAA,CAAGlP,GAAG,CAAC,CAACxC,CAAAA,EAAGsR,CAAM,GAAA,IAAI,CAACF,GAAG,GAAG;kBAAC,IAAI,CAACtN,EAAE,CAAC9D,CAAGsR,EAAAA,CAAAA,CAAAA;kBAAI,IAAI,CAACF,GAAG,CAACpR,CAAGsR,EAAAA,CAAAA;eAAG,GAAG;kBAAC,IAAI,CAACK,GAAG,CAAC3R,CAAGsR,EAAAA,CAAAA,CAAAA;kBAAI,IAAI,CAACtN,EAAE,CAAChE,CAAGsR,EAAAA,CAAAA;EAAG,aAAA,CAAA;UAC3H,IAAIM,MAAAA,GAASP,OAAQrS,CAAAA,MAAM,CAACyS,OAAAA,CAAAA;EAC5B,QAAA,IAAIJ,OAAO,CAAC,CAAE,CAAA,CAAC,EAAE,GAAGI,OAAO,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,EAAEG,MAAAA,GAASA,OAAOF,OAAO,EAAA;EAC1DE,QAAAA,MAAAA,CAAOrG,IAAI,CAACqG,MAAM,CAAC,CAAE,CAAA,CAAA;UACrB,OAAO;EAACA,YAAAA;EAAM,SAAA;EAChB;EAEA;;;;;OAMAnF,WAAAA,CAAYzK,MAAI,EAAE;EAEhB,QAAA,MAAM6P,KAAQtQ,GAAAA,iBAAAA,EAAAA,CAAO7D,GAAG,CAAC,IAAI,CAACiG,GAAG,CAAA,CAAEmO,OAAO,CAAC9P,MAAMQ,CAAAA,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAAA;EAEnDA,YAAAA,CAAAA,CAAEmE,IAAI,GAAGsC,UAAMzG,CAAAA,CAAAA,CAAEiJ,MAAM,CAAA;cACvBjJ,CAAEgE,CAAAA,CAAC,GAAGG,MAAKzC,CAAAA,OAAO,CAAC1B,CAAEiJ,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAA;EAE9B,YAAA,MAAMV,IAAI2L,cAAOlU,CAAAA,CAAAA,CAAEiJ,MAAM,CAACtE,GAAG,CAAC,IAAI,CAACsB,EAAE,EAClC9E,MAAM,CAACnB,CAAEiJ,CAAAA,MAAM,CAACtE,GAAG,CAAC,IAAI,CAAC+O,GAAG,CAC5BvS,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAAC2S,GAAG,GAAG9T,CAAEiJ,CAAAA,MAAM,CAACtE,GAAG,CAAC,IAAI,CAACmP,GAAG,IAAI,EAAE,CAAA,CAAA;EAEhD9T,YAAAA,CAAAA,CAAEmU,EAAE,GAAG5L,CAAAA;cACPvI,CAAE0H,CAAAA,KAAK,GAAGa,CAAC,CAAC,EAAE,GAAGA,CAAC,CAAC,CAAE,CAAA;cACrBvI,CAAEuI,CAAAA,CAAC,GAAGA,CAAC,CAAC,EAAE,GAAGvI,CAAAA,CAAE0H,KAAK,GAAG,CAAA;EAEvB,YAAA,MAAMc,IAAI0L,cAAOlU,CAAAA,CAAAA,CAAEiJ,MAAM,CAACtE,GAAG,CAAC,IAAI,CAACwB,EAAE,EAClChF,MAAM,CAACnB,CAAEiJ,CAAAA,MAAM,CAACtE,GAAG,CAAC,IAAI,CAACgP,GAAG,CAC5BxS,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAACoS,GAAG,GAAGvT,CAAEiJ,CAAAA,MAAM,CAACtE,GAAG,CAAC,IAAI,CAAC4O,GAAG,IAAI,EAAE,CAAA,CAAA;EAEhDvT,YAAAA,CAAAA,CAAEoU,EAAE,GAAG5L,CAAAA;cACPxI,CAAE2H,CAAAA,MAAM,GAAGa,CAAC,CAAC,EAAE,GAAGA,CAAC,CAAC,CAAE,CAAA;cACtBxI,CAAEwI,CAAAA,CAAC,GAAGA,CAAC,CAAC,EAAE,GAAGxI,CAAAA,CAAE2H,MAAM,GAAG,CAAA;EAExB3H,YAAAA,CAAAA,CAAEgJ,MAAM,GAAG,IAAA;EACXhJ,YAAAA,CAAAA,CAAE+C,SAAS,GAAG;EAAC/C,gBAAAA,CAAAA,CAAEuI,CAAC;EAAEvI,gBAAAA,CAAAA,CAAEwI;EAAE,aAAA;EACxBxI,YAAAA,CAAAA,CAAE8K,eAAe,GAAG,IAAA;cAEpB,OAAO9K,CAAAA;EACT,SAAA,CAAA;EAEAgU,QAAAA,KAAAA,CAAMnU,GAAG,GAAGG,CAAAA,CAAAA,GAAKA,EAAEH,GAAG;UACtB,OAAOmU,KAAAA;EAET;EAEA;;;;;OAMA/O,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,KAAK,CAACD,MAAOC,CAAAA,QAAAA,CAAAA;UAEb,MAAMmP,SAAAA,GAAY,IAAI,CAAC9D,MAAM,CAAClM,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACxC,MAAM,EAAA,CAAA;EACpD,QAAA,MAAMyO,QAAQ9E,gBAAK,CAAC,CAAC,KAAK,EAAE6I,SAAU5D,CAAAA,MAAM,CAAC,CAAA,CAAA,CAAGC,WAAW,EAAK2D,CAAAA,EAAAA,SAAAA,CAAU1D,KAAK,CAAC,IAAI,CAAC;UAErF,MAAM2D,IAAAA,GAAO,IAAI,CAAC9D,KAAK,GAAGhF,gBAAM+I,CAAAA,IAAI,EACjC3D,CAAAA,OAAO,CAAC,IAAI,CAACC,QAAQ,CAAA,CACrBP,KAAK,CAACA,KACN/H,CAAAA,CAAAA,CAAC,CAAC,IAAI,CAACtC,EAAE,CAAA,CAAEuO,EAAE,CAAC,IAAI,CAACd,GAAG,CAAEe,CAAAA,EAAE,CAAC,IAAI,CAACX,GAAG,CAAA,CACnCtL,CAAC,CAAC,IAAI,CAACrC,EAAE,CAAEuO,CAAAA,EAAE,CAAC,IAAI,CAACf,GAAG,EAAEgB,EAAE,CAAC,IAAI,CAACpB,GAAG,CAAA;EAEtC,QAAA,MAAMqB,WAAWpJ,gBAAM+I,CAAAA,IAAI,EACxB3D,CAAAA,OAAO,CAAC5Q,CAAAA,CAAAA,GAAKA,CACbsQ,CAAAA,CAAAA,KAAK,CAACA,KACN/H,CAAAA,CAAAA,CAAC,CAAC,IAAI,CAACtC,EAAE,CAAEuC,CAAAA,CAAC,CAAC,IAAI,CAACrC,EAAE,CAAA,CACpBqO,EAAE,CAAC,CAACxU,GAAGgE,CAAM,GAAA,IAAI,CAAC8P,GAAG,GAAG,IAAI,CAACJ,GAAG,CAAC1T,CAAAA,EAAGgE,KAAK,CAAC,IAAI,CAAC8P,GAAG,CAAC9T,CAAAA,EAAGgE,KAAK,IAAI,CAAC0P,GAAG,CAAC1T,CAAAA,EAAGgE,CAAC,CAAA,IAAK,IAAI,IAAI,CAAC0P,GAAG,CAAC1T,CAAAA,EAAGgE,IAC7FyQ,EAAE,CAAC,CAACzU,CAAAA,EAAGgE,IAAM,IAAI,CAAC8P,GAAG,GAAG,IAAI,CAACJ,GAAG,CAAC1T,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,CAAC,IAAI,CAAC8P,GAAG,CAAC9T,GAAGgE,CAAK,CAAA,GAAA,IAAI,CAAC0P,GAAG,CAAC1T,CAAGgE,EAAAA,CAAAA,CAAC,IAAK,CAAA,GAAI,IAAI,CAAC0P,GAAG,CAAC1T,CAAAA,EAAGgE,IAC7F0Q,EAAE,CAAC,CAAC1U,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACuP,GAAG,GAAG,IAAI,CAACI,GAAG,CAAC3T,GAAGgE,CAAK,CAAA,GAAC,CAAA,IAAI,CAACuP,GAAG,CAACvT,GAAGgE,CAAK,CAAA,GAAA,IAAI,CAAC2P,GAAG,CAAC3T,GAAGgE,CAAC,CAAA,IAAK,CAAI,GAAA,IAAI,CAAC2P,GAAG,CAAC3T,GAAGgE,CAC7F2Q,CAAAA,CAAAA,CAAAA,EAAE,CAAC,CAAC3U,CAAAA,EAAGgE,CAAM,GAAA,IAAI,CAACuP,GAAG,GAAG,IAAI,CAACI,GAAG,CAAC3T,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,CAAC,IAAI,CAACuP,GAAG,CAACvT,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,IAAI,CAAC2P,GAAG,CAAC3T,CAAAA,EAAGgE,EAAC,IAAK,CAAA,GAAI,IAAI,CAAC2P,GAAG,CAAC3T,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA;EAEhG,QAAA,IAAI,CAACqJ,MAAM,CAAChI,MAAM,CAAC,MAChBW,CAAAA,CAAAA,IAAI,CAAC,WAAA,EAAahG,CAAAA,CAAAA,GAAK,CAAC,UAAU,EAAE,CAACA,CAAAA,CAAEmU,EAAE,CAAC,CAAE,CAAA,GAAGnU,CAAE0H,CAAAA,KAAK,GAAG,CAAE,CAAA,EAAE,EAAE,CAAC1H,CAAEoU,CAAAA,EAAE,CAAC,CAAA,CAAE,GAAGpU,CAAE2H,CAAAA,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CACzF3B,CAAAA,IAAI,CAAC,GAAKhG,EAAAA,CAAAA,CAAK4U,GAAAA,QAAAA,CAAS5U,CAAEiJ,CAAAA,MAAM,CAChCpI,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,CAAA,CAAA,CAC/BiC,UAAU,CAAC,IAAI,CAACqI,WAAW,CACzBkG,CAAAA,SAAS,CAAC,GAAA,EAAK,SAAS7U,CAAC,EAAA;cACxB,OAAO8U,iCAAAA,CAAgB1P,mBAAO,IAAI,CAAA,CAAEY,IAAI,CAAC,GAAA,CAAA,EAAMsO,IAAKtU,CAAAA,CAAAA,CAAEiJ,MAAM,CAAA,CAAA;EAC9D,SAAA,CAAA;UAEJ,IAAI,CAACmE,OAAO,CAAChI,MAAM,CAAC,MAAQkB,CAAAA,CAAAA,UAAU,CAAC,IAAI,CAACqI,WAAW,EACpD3I,IAAI,CAAC,aAAahG,CAAAA,CAAAA,GAAK,CAAC,UAAU,EAAE,CAACA,CAAAA,CAAEmU,EAAE,CAAC,EAAE,GAAGnU,CAAAA,CAAE0H,KAAK,GAAG,CAAA,CAAE,EAAE,EAAE,CAAC1H,CAAEoU,CAAAA,EAAE,CAAC,CAAA,CAAE,GAAGpU,CAAE2H,CAAAA,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,EACzFkN,SAAS,CAAC,GAAK,EAAA,SAAS7U,CAAC,EAAA;cACxB,OAAO8U,iCAAAA,CAAgB1P,mBAAO,IAAI,CAAA,CAAEY,IAAI,CAAC,GAAA,CAAA,EAAMsO,IAAKtU,CAAAA,CAAAA,CAAEiJ,MAAM,CAAA,CAAA;WAE7DpI,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,CAAA,CAAA;EAElC,QAAA,IAAI,CAAC6L,KAAK,CAAC9K,MAAM,CAAC,QAAQkB,UAAU,CAAC,IAAI,CAACqI,WAAW,CAClDkG,CAAAA,SAAS,CAAC,GAAA,EAAK,SAAS7U,CAAC,EAAA;cACxB,OAAO8U,iCAAAA,CAAgB1P,mBAAO,IAAI,CAAA,CAAEY,IAAI,CAAC,GAAA,CAAA,EAAM4O,QAAS5U,CAAAA,CAAAA,CAAEiJ,MAAM,CAAA,CAAA;EAClE,SAAA,CAAA;EAEF,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMAqH,KAAAA,CAAMxO,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACiO,MAAM,GAAG,OAAOzO,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACyO,MAAM;EACzG;EAEA;;;;;OAMAK,OAAAA,CAAQ9O,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuO,QAAQ,GAAG/O,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+O,QAAQ;EACrE;EAEA;;;;;OAMAtI,CAAAA,CAAEzG,CAAC,EAAE;EACH,QAAA,IAAI,CAACO,SAAUC,CAAAA,MAAM,EAAE,OAAO,IAAI,CAAC2D,EAAE;EACrC,QAAA,IAAI,CAACA,EAAE,GAAG,OAAOnE,CAAM,KAAA,UAAA,GAAaA,IAAIiD,QAASjD,CAAAA,CAAAA,CAAAA;EACjD,QAAA,IAAI,CAAC4R,GAAG,GAAG,IAAI,CAACzN,EAAE;EAClB,QAAA,OAAO,IAAI;EACb;EAEA;;;;;OAMAuO,EAAAA,CAAG1S,CAAC,EAAE;EACJ,QAAA,IAAI,CAACO,SAAUC,CAAAA,MAAM,EAAE,OAAO,IAAI,CAACoR,GAAG;EACtC,QAAA,IAAI,CAACA,GAAG,GAAG,OAAO5R,CAAM,KAAA,UAAA,GAAaA,IAAIiD,QAASjD,CAAAA,CAAAA,CAAAA;EAClD,QAAA,IAAI,CAACmE,EAAE,GAAG,IAAI,CAACyN,GAAG;EAClB,QAAA,OAAO,IAAI;EACb;EAEA;;;;;OAMAe,EAAAA,CAAG3S,CAAC,EAAE;UACJ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACwR,GAAG,GAAG,OAAOhS,CAAAA,KAAM,cAAcA,CAAM,KAAA,IAAA,GAAOA,IAAIiD,QAASjD,CAAAA,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACgS,GAAG;EACjH;EAEA;;;;;OAMAtL,CAAAA,CAAE1G,CAAC,EAAE;EACH,QAAA,IAAI,CAACO,SAAUC,CAAAA,MAAM,EAAE,OAAO,IAAI,CAAC6D,EAAE;EACrC,QAAA,IAAI,CAACA,EAAE,GAAG,OAAOrE,CAAM,KAAA,UAAA,GAAaA,IAAIiD,QAASjD,CAAAA,CAAAA,CAAAA;EACjD,QAAA,IAAI,CAAC6R,GAAG,GAAG,IAAI,CAACxN,EAAE;EAClB,QAAA,OAAO,IAAI;EACb;EAEA;;;;;OAMAuO,EAAAA,CAAG5S,CAAC,EAAE;EACJ,QAAA,IAAI,CAACO,SAAUC,CAAAA,MAAM,EAAE,OAAO,IAAI,CAACqR,GAAG;EACtC,QAAA,IAAI,CAACA,GAAG,GAAG,OAAO7R,CAAM,KAAA,UAAA,GAAaA,IAAIiD,QAASjD,CAAAA,CAAAA,CAAAA;EAClD,QAAA,IAAI,CAACqE,EAAE,GAAG,IAAI,CAACwN,GAAG;EAClB,QAAA,OAAO,IAAI;EACb;EAEA;;;;;OAMAgB,EAAAA,CAAG7S,CAAC,EAAE;UACJ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACiR,GAAG,GAAG,OAAOzR,CAAAA,KAAM,cAAcA,CAAM,KAAA,IAAA,GAAOA,IAAIiD,QAASjD,CAAAA,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACyR,GAAG;EACjH;EAvOA;;;;EAIA,KACApQ,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACoN,MAAM,GAAGxL,QAAS,CAAA,QAAA,CAAA;UACvB,IAAI,CAAC8L,QAAQ,GAAG,IAAM,IAAA;EACtB,QAAA,IAAI,CAAC7C,YAAY,GAAG,CAAChO,GAAGgE,CAAGuJ,EAAAA,GAAAA,GAAAA;cACzB,MAAMC,CAAAA,GAAIuH,gBAAYxH,CAAAA,GAAAA,CAAIwG,MAAM,CAAA;cAChC,IAAI,CAACvG,GAAG,OAAO,IAAA;cACf,OAAO;EAACa,gBAAAA,KAAAA,EAAOb,EAAEa,KAAK;EAAE3G,gBAAAA,KAAAA,EAAO8F,EAAE9F,KAAK;EAAEC,gBAAAA,MAAAA,EAAQ6F,EAAE7F,MAAM;kBAAEY,CAAGiF,EAAAA,CAAAA,CAAEwH,EAAE,GAAGxH,CAAE9F,CAAAA,KAAK,GAAG,CAAA,GAAI,IAAI,CAACzB,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA;kBAAIwE,CAAGgF,EAAAA,CAAAA,CAAEyH,EAAE,GAAGzH,CAAE7F,CAAAA,MAAM,GAAG,CAAA,GAAI,IAAI,CAACxB,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA;EAAE,aAAA;EACzI,SAAA;UACA,IAAI,CAAC0K,YAAY,GAAGtN,MAAAA,CAAOgB,MAAM,CAAC,IAAI,CAACsM,YAAY,EAAE;cACnD6D,UAAY,EAAA,QAAA;cACZI,aAAe,EAAA;EACjB,SAAA,CAAA;UACA,IAAI,CAAChG,KAAK,GAAG,MAAA;UACb,IAAI,CAAC1G,EAAE,GAAGwC,QAAS,CAAA,GAAA,CAAA;UACnB,IAAI,CAACiL,GAAG,GAAGjL,QAAS,CAAA,GAAA,CAAA;UACpB,IAAI,CAACqL,GAAG,GAAG,IAAA;UACX,IAAI,CAAC3N,EAAE,GAAGpB,QAAS,CAAA,CAAA,CAAA;UACnB,IAAI,CAAC4O,GAAG,GAAG5O,QAAS,CAAA,CAAA,CAAA;UACpB,IAAI,CAACwO,GAAG,GAAG9K,QAAS,CAAA,GAAA,CAAA;EAEtB;EA6MF;;ECnPe,MAAMyM,GAAYxM,SAAAA,KAAAA,CAAAA;EA6B/B;;;;;OAMAzD,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,KAAK,CAACD,MAAOC,CAAAA,QAAAA,CAAAA;EAEb,QAAA,IAAIa,QAAQ,IAAI,CAACsH,MAAM,CACpBrH,IAAI,CAAC,OAAS,EAAA,CAAChG,GAAGgE,CAAM,GAAA,IAAI,CAAC8P,GAAG,KAAK,OAAO,IAAI,CAACqB,SAAS,CAACnV,CAAAA,EAAGgE,CAAK,CAAA,GAAA,CAAA,CAAA,CACnEgC,IAAI,CAAC,QAAA,EAAU,CAAChG,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAAC8P,GAAG,KAAK,IAAO,GAAA,IAAI,CAACsB,UAAU,CAACpV,GAAGgE,CAAK,CAAA,GAAA,CAAA,CAAA,CACrEgC,IAAI,CAAC,GAAA,EAAK,CAAChG,CAAAA,EAAGgE,IAAM,IAAI,CAAC8P,GAAG,KAAK,IAAA,GAAO,CAAC,IAAI,CAACqB,SAAS,CAACnV,CAAAA,EAAGgE,KAAK,CAAI,GAAA,CAAA,CAAA,CACpEgC,IAAI,CAAC,GAAA,EAAK,CAAChG,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAAC8P,GAAG,KAAK,IAAO,GAAA,CAAC,IAAI,CAACsB,UAAU,CAACpV,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,IAAI,CACrEnD,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,CAAA,CAAA;UAElC,IAAImC,MAAAA,GAAS,IAAI,CAAC4G,OAAO;UAEzB,IAAI,IAAI,CAACvJ,SAAS,EAAE;EAClBkC,YAAAA,KAAAA,GAAQA,KAAMO,CAAAA,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA;EACzCnI,YAAAA,MAAAA,GAASA,MAAOF,CAAAA,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA;EAC3C,YAAA,IAAI,CAACuB,KAAK,CAAC5J,UAAU,CAAC,IAAI,CAACqI,WAAW,CACnC3I,CAAAA,IAAI,CAAC,OAAS,EAAA,CAAChG,GAAGgE,CAAM,GAAA,IAAI,CAAC8P,GAAG,KAAK,IAAO,GAAA,IAAI,CAACqB,SAAS,CAACnV,GAAGgE,CAAK,CAAA,GAAA,CAAA,CAAA,CACnEgC,IAAI,CAAC,QAAA,EAAU,CAAChG,CAAAA,EAAGgE,IAAM,IAAI,CAAC8P,GAAG,KAAK,IAAA,GAAO,IAAI,CAACsB,UAAU,CAACpV,CAAAA,EAAGgE,KAAK,CACrEgC,CAAAA,CAAAA,IAAI,CAAC,GAAK,EAAA,CAAChG,GAAGgE,CAAM,GAAA,IAAI,CAAC8P,GAAG,KAAK,IAAO,GAAA,CAAC,IAAI,CAACqB,SAAS,CAACnV,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,CAAI,GAAA,CAAA,CAAA,CACpEgC,IAAI,CAAC,GAAA,EAAK,CAAChG,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAAC8P,GAAG,KAAK,IAAA,GAAO,CAAC,IAAI,CAACsB,UAAU,CAACpV,CAAAA,EAAGgE,KAAK,CAAI,GAAA,CAAA,CAAA;EAC1E;UAEA+B,KACGlF,CAAAA,IAAI,CAAC,IAAI,CAACwU,cAAc,CAAChR,IAAI,CAAC,IAAI,CAAA,CAAA;EAErCmC,QAAAA,MAAAA,CACG3F,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,CAC/BxD,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAACwU,cAAc,CAAChR,IAAI,CAAC,IAAI,CAAA,CAAA;EAErC,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;;EAMA,KACAsE,IAAK3I,CAAAA,CAAC,EAAEgE,CAAC,EAAE;UACT,OAAO;EAAC2D,YAAAA,MAAAA,EAAQ,IAAI,CAACyN,UAAU,CAACpV,CAAGgE,EAAAA,CAAAA,CAAAA;EAAI0D,YAAAA,KAAAA,EAAO,IAAI,CAACyN,SAAS,CAACnV,CAAGgE,EAAAA,CAAAA;EAAE,SAAA;EACpE;EAEA;;;;;OAMAqR,cAAAA,CAAe5L,IAAI,EAAE;EACnBA,QAAAA,IAAAA,CACGzD,IAAI,CAAC,OAAS,EAAA,CAAChG,GAAGgE,CAAM,GAAA,IAAI,CAACmR,SAAS,CAACnV,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAC1CgC,IAAI,CAAC,UAAU,CAAChG,CAAAA,EAAGgE,CAAM,GAAA,IAAI,CAACoR,UAAU,CAACpV,CAAAA,EAAGgE,IAC5CgC,IAAI,CAAC,GAAK,EAAA,CAAChG,GAAGgE,CAAM,GAAA,IAAI,CAAC8P,GAAG,KAAK,IAAO,GAAA,IAAI,CAACwB,KAAK,CAACtV,CAAAA,EAAGgE,CAAK,CAAA,GAAA,CAAC,IAAI,CAACmR,SAAS,CAACnV,CAAAA,EAAGgE,KAAK,CACnFgC,CAAAA,CAAAA,IAAI,CAAC,GAAA,EAAK,CAAChG,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAAC8P,GAAG,KAAK,IAAO,GAAA,IAAI,CAACyB,KAAK,CAACvV,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,CAAC,IAAI,CAACoR,UAAU,CAACpV,GAAGgE,CAAK,CAAA,GAAA,CAAA,CAAA;EACzF;EAEA;;;;;;EAMA,KACAoR,UAAWpV,CAAAA,CAAC,EAAEgE,CAAC,EAAE;UACf,IAAI,IAAI,CAAC8P,GAAG,KAAK,IAAA,EAAM,OAAO,IAAI,CAAC1N,OAAO,CAACpG,CAAGgE,EAAAA,CAAAA,CAAAA;EAC9C,QAAA,OAAO9D,IAAKsV,CAAAA,GAAG,CAAC,IAAI,CAACjC,GAAG,CAACvT,CAAAA,EAAGgE,CAAK,CAAA,GAAA,IAAI,CAACmC,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA;EAC9C;EAEA;;;;;;EAMA,KACAmR,SAAUnV,CAAAA,CAAC,EAAEgE,CAAC,EAAE;UACd,IAAI,IAAI,CAAC8P,GAAG,KAAK,IAAA,EAAM,OAAO,IAAI,CAAC5N,MAAM,CAAClG,CAAGgE,EAAAA,CAAAA,CAAAA;EAC7C,QAAA,OAAO9D,IAAKsV,CAAAA,GAAG,CAAC,IAAI,CAAC1B,GAAG,CAAC9T,CAAAA,EAAGgE,CAAK,CAAA,GAAA,IAAI,CAACiC,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA;EAC9C;EAEA;;;;;;EAMA,KACAsR,KAAMtV,CAAAA,CAAC,EAAEgE,CAAC,EAAE;UACV,MAAMyR,CAAAA,GAAI,IAAI,CAAC3B,GAAG,KAAK,IAAO,GAAA,IAAI,CAAC7N,EAAE,CAACjG,CAAAA,EAAGgE,KAAK,IAAI,CAAC8P,GAAG,CAAC9T,CAAAA,EAAGgE,KAAK,IAAI,CAACiC,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA;UAC1E,IAAIyR,CAAAA,GAAI,GAAG,OAAOA,CAAAA;eACb,OAAO,CAAA;EACd;EAEA;;;;;;EAMA,KACAF,KAAMvV,CAAAA,CAAC,EAAEgE,CAAC,EAAE;UACV,MAAMgN,CAAAA,GAAI,IAAI,CAAC8C,GAAG,KAAK,IAAO,GAAA,IAAI,CAAC3N,EAAE,CAACnG,CAAAA,EAAGgE,KAAK,IAAI,CAACuP,GAAG,CAACvT,CAAAA,EAAGgE,KAAK,IAAI,CAACmC,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA,CAAAA;UAC1E,IAAIgN,CAAAA,GAAI,GAAG,OAAOA,CAAAA;eACb,OAAO,CAAA;EACd;EAEA;;;;;;;;;OAUArJ,MAAAA,CAAO7F,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8D,OAAO,GAAG,OAAOtE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACsE,OAAO;EAC3G;EAEA;;;;;;;;;OAUAsB,KAAAA,CAAM5F,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4D,MAAM,GAAG,OAAOpE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoE,MAAM;EACzG;EAEA;;;;;OAMAsO,EAAAA,CAAG1S,CAAC,EAAE;EACJ,QAAA,IAAI,CAACO,SAAUC,CAAAA,MAAM,EAAE,OAAO,IAAI,CAACoR,GAAG;EACtC,QAAA,IAAI,CAACA,GAAG,GAAG,OAAO5R,CAAM,KAAA,UAAA,GAAaA,IAAIiD,QAASjD,CAAAA,CAAAA,CAAAA;EAClD,QAAA,IAAI,CAACmE,EAAE,GAAG,IAAI,CAACyN,GAAG;EAClB,QAAA,OAAO,IAAI;EACb;EAEA;;;;;OAMAe,EAAAA,CAAG3S,CAAC,EAAE;UACJ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACwR,GAAG,GAAG,OAAOhS,CAAAA,KAAM,cAAcA,CAAM,KAAA,IAAA,GAAOA,IAAIiD,QAASjD,CAAAA,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACgS,GAAG;EACjH;EAEA;;;;;OAMAY,EAAAA,CAAG5S,CAAC,EAAE;EACJ,QAAA,IAAI,CAACO,SAAUC,CAAAA,MAAM,EAAE,OAAO,IAAI,CAACqR,GAAG;EACtC,QAAA,IAAI,CAACA,GAAG,GAAG,OAAO7R,CAAM,KAAA,UAAA,GAAaA,IAAIiD,QAASjD,CAAAA,CAAAA,CAAAA;EAClD,QAAA,IAAI,CAACqE,EAAE,GAAG,IAAI,CAACwN,GAAG;EAClB,QAAA,OAAO,IAAI;EACb;EAEA;;;;;OAMAgB,EAAAA,CAAG7S,CAAC,EAAE;UACJ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACiR,GAAG,GAAG,OAAOzR,CAAAA,KAAM,cAAcA,CAAM,KAAA,IAAA,GAAOA,IAAIiD,QAASjD,CAAAA,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACyR,GAAG;EACjH;EAtNA;;;;EAIA,KACApQ,WAAc,EAAA;EAEZ,QAAA,KAAK,CAAC,MAAA,CAAA;UAEN,IAAI,CAACwJ,KAAK,GAAG,KAAA;UACb,IAAI,CAACvG,OAAO,GAAGrB,QAAS,CAAA,EAAA,CAAA;EACxB,QAAA,IAAI,CAACiJ,YAAY,GAAG,CAAChO,CAAGgE,EAAAA,CAAAA,EAAG/D,KAAO;EAChCyH,gBAAAA,KAAAA,EAAOzH,EAAEyH,KAAK;EACdC,gBAAAA,MAAAA,EAAQ1H,EAAE0H,MAAM;EAChBY,gBAAAA,CAAAA,EAAG,IAAI,CAACuL,GAAG,KAAK,OAAO,IAAI,CAACwB,KAAK,CAACtV,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,CAAC/D,CAAAA,CAAEyH,KAAK,GAAG,CAAA;EACrDc,gBAAAA,CAAAA,EAAG,IAAI,CAACsL,GAAG,KAAK,OAAO,IAAI,CAACyB,KAAK,CAACvV,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,CAAC/D,CAAAA,CAAE0H,MAAM,GAAG;eACxD,CAAA;UACA,IAAI,CAACzB,MAAM,GAAGnB,QAAS,CAAA,EAAA,CAAA;UACvB,IAAI,CAACkB,EAAE,GAAGwC,QAAS,CAAA,GAAA,CAAA;UACnB,IAAI,CAACiL,GAAG,GAAGjL,QAAS,CAAA,GAAA,CAAA;UACpB,IAAI,CAACqL,GAAG,GAAG,IAAA;UACX,IAAI,CAAC3N,EAAE,GAAGpB,QAAS,CAAA,CAAA,CAAA;UACnB,IAAI,CAAC4O,GAAG,GAAG5O,QAAS,CAAA,CAAA,CAAA;UACpB,IAAI,CAACwO,GAAG,GAAG9K,QAAS,CAAA,GAAA,CAAA;EAEtB;EA+LF;;ECzNe,MAAMiN,MAAehN,SAAAA,KAAAA,CAAAA;EAmBlC;;;;OAKA2M,cAAAA,CAAe5L,IAAI,EAAE;EACnBA,QAAAA,IAAAA,CACGzD,IAAI,CAAC,GAAA,EAAK,CAAChG,CAAAA,EAAGgE,IAAM,IAAI,CAAC2R,EAAE,CAAC3V,GAAGgE,CAC/BgC,CAAAA,CAAAA,CAAAA,IAAI,CAAC,GAAK,EAAA,CAAChG,GAAGgE,CAAM,GAAA,CAAC,IAAI,CAAC2R,EAAE,CAAC3V,CAAAA,EAAGgE,CAAK,CAAA,GAAA,CAAA,CAAA,CACrCgC,IAAI,CAAC,GAAA,EAAK,CAAChG,CAAAA,EAAGgE,IAAM,CAAC,IAAI,CAAC2R,EAAE,CAAC3V,GAAGgE,CAAK,CAAA,GAAA,CAAA,CAAA;EAC1C;EAEA;;;;;OAMAiB,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,KAAK,CAACD,MAAOC,CAAAA,QAAAA,CAAAA;EAEb,QAAA,MAAMa,KAAQ,GAAA,IAAI,CAACsH,MAAM,CACtBxM,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,CAAA,CAAA;UAElC,IAAImC,MAAAA,GAAS,IAAI,CAAC4G,OAAO;UAEzB,IAAI,IAAI,CAACvJ,SAAS,EAAE;cAClBkC,KACGC,CAAAA,IAAI,CAAC,GAAA,EAAK,CAAGA,CAAAA,CAAAA,IAAI,CAAC,GAAA,EAAK,CAAGA,CAAAA,CAAAA,IAAI,CAAC,GAAA,EAAK,CACpCM,CAAAA,CAAAA,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA,CACzB9N,IAAI,CAAC,IAAI,CAACwU,cAAc,CAAChR,IAAI,CAAC,IAAI,CAAA,CAAA;EACvCmC,YAAAA,MAAAA,GAASA,MAAOF,CAAAA,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA;EAC3C,YAAA,IAAI,CAACuB,KAAK,CAAC5J,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA,CACnC3I,IAAI,CAAC,GAAA,EAAK,GAAGA,IAAI,CAAC,KAAK,CAAGA,CAAAA,CAAAA,IAAI,CAAC,GAAK,EAAA,CAAA,CAAA;WAEpC,MAAA;cACHD,KAAMlF,CAAAA,IAAI,CAAC,IAAI,CAACwU,cAAc,CAAChR,IAAI,CAAC,IAAI,CAAA,CAAA;EAC1C;EAEAmC,QAAAA,MAAAA,CACG3F,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,CAC/BxD,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAACwU,cAAc,CAAChR,IAAI,CAAC,IAAI,CAAA,CAAA;EAErC,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;;EAMA,KACAsE,IAAK3I,CAAAA,CAAC,EAAEgE,CAAC,EAAE;UACT,OAAO;EAACwJ,YAAAA,CAAAA,EAAG,IAAI,CAACmI,EAAE,CAAC3V,CAAGgE,EAAAA,CAAAA;EAAE,SAAA;EAC1B;EAEA;;;;;;;;;OAUAwJ,CAAAA,CAAE1L,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqT,EAAE,GAAG,OAAO7T,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6T,EAAE;EACjG;EAxFA;;;;EAIA,KACAxS,WAAc,EAAA;EACZ,QAAA,KAAK,CAAC,QAAA,CAAA;EACN,QAAA,IAAI,CAAC6K,YAAY,GAAG,CAAChO,CAAGgE,EAAAA,CAAAA,EAAG/D,KACxB;kBAACyH,KAAOzH,EAAAA,CAAAA,CAAEuN,CAAC,GAAG,GAAA;kBAAK7F,MAAQ1H,EAAAA,CAAAA,CAAEuN,CAAC,GAAG,GAAA;kBAAKjF,CAAG,EAAA,CAACtI,CAAEuN,CAAAA,CAAC,GAAG,IAAA;kBAAMhF,CAAG,EAAA,CAACvI,CAAEuN,CAAAA,CAAC,GAAG;eAAI,CAAA;EACvE,QAAA,IAAI,CAACkB,YAAY,GAAGtM,WAAO,IAAI,CAACsM,YAAY,EAAE;cAC5C6D,UAAY,EAAA,QAAA;cACZI,aAAe,EAAA;EACjB,SAAA,CAAA;UACA,IAAI,CAAChG,KAAK,GAAG,QAAA;UACb,IAAI,CAACgJ,EAAE,GAAGlN,QAAS,CAAA,GAAA,CAAA;EACrB;EA2EF;;EC9Fe,MAAMmN,IAAalN,SAAAA,KAAAA,CAAAA;EAgBhC;;;;;OAMAzD,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,KAAK,CAACD,MAAOC,CAAAA,QAAAA,CAAAA;EAEb,QAAA,IAAIa,KAAQ,GAAA,IAAI,CAACsH,MAAM,CACpBrH,IAAI,CAAC,OAAA,EAAS,CAAGA,CAAAA,CAAAA,IAAI,CAAC,QAAA,EAAU,CAChCA,CAAAA,CAAAA,IAAI,CAAC,GAAA,EAAK,CAAGA,CAAAA,CAAAA,IAAI,CAAC,GAAA,EAAK,CACvBnF,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,CAAA,CAAA;UAElC,IAAImC,MAAAA,GAAS,IAAI,CAAC4G,OAAO;UAEzB,IAAI,IAAI,CAACvJ,SAAS,EAAE;EAClBkC,YAAAA,KAAAA,GAAQA,KAAMO,CAAAA,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA;EACzCnI,YAAAA,MAAAA,GAASA,MAAOF,CAAAA,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA;cAC3C,IAAI,CAACuB,KAAK,CAAC5J,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA,CACnC3I,IAAI,CAAC,SAAS,CAAGA,CAAAA,CAAAA,IAAI,CAAC,QAAA,EAAU,CAChCA,CAAAA,CAAAA,IAAI,CAAC,GAAK,EAAA,CAAA,CAAA,CAAGA,IAAI,CAAC,GAAK,EAAA,CAAA,CAAA;EAC5B;UAEAD,KACGlF,CAAAA,IAAI,CAAC,IAAI,CAACwU,cAAc,CAAChR,IAAI,CAAC,IAAI,CAAA,CAAA;EAErCmC,QAAAA,MAAAA,CACG3F,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,CAC/BxD,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAACwU,cAAc,CAAChR,IAAI,CAAC,IAAI,CAAA,CAAA;EAErC,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;;EAMA,KACAsE,IAAK3I,CAAAA,CAAC,EAAEgE,CAAC,EAAE;UACT,OAAO;EAAC0D,YAAAA,KAAAA,EAAO,IAAI,CAACxB,MAAM,CAAClG,CAAGgE,EAAAA,CAAAA,CAAAA;EAAI2D,YAAAA,MAAAA,EAAQ,IAAI,CAACvB,OAAO,CAACpG,CAAGgE,EAAAA,CAAAA;EAAE,SAAA;EAC9D;EAEA;;;;;OAMAqR,cAAAA,CAAe5L,IAAI,EAAE;UACnBA,IACGzD,CAAAA,IAAI,CAAC,OAAS,EAAA,CAAChG,GAAGgE,CAAM,GAAA,IAAI,CAACkC,MAAM,CAAClG,CAAAA,EAAGgE,IACvCgC,IAAI,CAAC,QAAU,EAAA,CAAChG,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACoC,OAAO,CAACpG,CAAAA,EAAGgE,CACzCgC,CAAAA,CAAAA,CAAAA,IAAI,CAAC,GAAK,EAAA,CAAChG,GAAGgE,CAAM,GAAA,CAAC,IAAI,CAACkC,MAAM,CAAClG,CAAAA,EAAGgE,CAAK,CAAA,GAAA,CAAA,CAAA,CACzCgC,IAAI,CAAC,GAAA,EAAK,CAAChG,CAAAA,EAAGgE,CAAM,GAAA,CAAC,IAAI,CAACoC,OAAO,CAACpG,CAAAA,EAAGgE,CAAK,CAAA,GAAA,CAAA,CAAA;EAC/C;EAEA;;;;;;;;;OAUA2D,MAAAA,CAAO7F,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8D,OAAO,GAAG,OAAOtE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACsE,OAAO;EAC3G;EAEA;;;;;;;;;OAUAsB,KAAAA,CAAM5F,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4D,MAAM,GAAG,OAAOpE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoE,MAAM;EACzG;EArGA;;;;EAIA,KACA/C,WAAc,EAAA;EACZ,QAAA,KAAK,CAAC,MAAA,CAAA;UACN,IAAI,CAACiD,OAAO,GAAGqC,QAAS,CAAA,QAAA,CAAA;EACxB,QAAA,IAAI,CAACuF,YAAY,GAAG,CAAChO,CAAGgE,EAAAA,CAAAA,EAAG/D,KACxB;EAACyH,gBAAAA,KAAAA,EAAOzH,EAAEyH,KAAK;EAAEC,gBAAAA,MAAAA,EAAQ1H,EAAE0H,MAAM;kBAAEY,CAAG,EAAA,CAACtI,CAAEyH,CAAAA,KAAK,GAAG,CAAA;kBAAGc,CAAG,EAAA,CAACvI,CAAE0H,CAAAA,MAAM,GAAG;eAAC,CAAA;UACvE,IAAI,CAACgF,KAAK,GAAG,MAAA;UACb,IAAI,CAACzG,MAAM,GAAGuC,QAAS,CAAA,OAAA,CAAA;EACzB;EA2FF;;ECjGe,MAAMoN,IAAanN,SAAAA,KAAAA,CAAAA;EA2BhC;;;;;OAMAkG,WAAAA,CAAYzK,MAAI,EAAE;EAEhB,QAAA,MAAM2R,KAAQpS,GAAAA,iBAAAA,EAAAA,CAAO7D,GAAG,CAAC,IAAI,CAACiG,GAAG,CAAA,CAAEmO,OAAO,CAAC9P,MAAMQ,CAAAA,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAAA;EAEnDA,YAAAA,CAAAA,CAAEmE,IAAI,GAAGsC,UAAMzG,CAAAA,CAAAA,CAAEiJ,MAAM,CAAA;cACvBjJ,CAAEgE,CAAAA,CAAC,GAAGG,MAAKzC,CAAAA,OAAO,CAAC1B,CAAEiJ,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAA;EAE9B,YAAA,MAAMV,IAAI2L,cAAOlU,CAAAA,CAAAA,CAAEiJ,MAAM,EAAE,IAAI,CAAChD,EAAE,CAAA;EAClCjG,YAAAA,CAAAA,CAAEmU,EAAE,GAAG5L,CAAAA;cACPvI,CAAE0H,CAAAA,KAAK,GAAGa,CAAC,CAAC,EAAE,GAAGA,CAAC,CAAC,CAAE,CAAA;cACrBvI,CAAEuI,CAAAA,CAAC,GAAGA,CAAC,CAAC,EAAE,GAAGvI,CAAAA,CAAE0H,KAAK,GAAG,CAAA;EAEvB,YAAA,MAAMc,IAAI0L,cAAOlU,CAAAA,CAAAA,CAAEiJ,MAAM,EAAE,IAAI,CAAC9C,EAAE,CAAA;EAClCnG,YAAAA,CAAAA,CAAEoU,EAAE,GAAG5L,CAAAA;cACPxI,CAAE2H,CAAAA,MAAM,GAAGa,CAAC,CAAC,EAAE,GAAGA,CAAC,CAAC,CAAE,CAAA;cACtBxI,CAAEwI,CAAAA,CAAC,GAAGA,CAAC,CAAC,EAAE,GAAGxI,CAAAA,CAAE2H,MAAM,GAAG,CAAA;EAExB3H,YAAAA,CAAAA,CAAEgJ,MAAM,GAAG,IAAA;EACXhJ,YAAAA,CAAAA,CAAE+C,SAAS,GAAG;EAAC/C,gBAAAA,CAAAA,CAAEuI,CAAC;EAAEvI,gBAAAA,CAAAA,CAAEwI;EAAE,aAAA;EACxBxI,YAAAA,CAAAA,CAAE8K,eAAe,GAAG,IAAA;cAEpB,OAAO9K,CAAAA;EACT,SAAA,CAAA;EAEA8V,QAAAA,KAAAA,CAAMjW,GAAG,GAAGG,CAAAA,CAAAA,GAAKA,EAAEH,GAAG;UACtB,OAAOiW,KAAAA;EAET;EAEA;;;;;OAMA7Q,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,KAAK,CAACD,MAAOC,CAAAA,QAAAA,CAAAA;EAEb,QAAA,MAAMqB,OAAO,IAAI;EAEjB;;;;SAKA,SAASwP,yBAAyB/V,CAAC,EAAA;EAEjCA,YAAAA,CAAAA,CAAEgW,aAAa,GAAG,IAAI,CAACC,cAAc,EAAA;cAErC,IAAIC,WAAAA,GAAc3P,KAAKiE,gBAAgB,CAACxK,EAAEiJ,MAAM,CAAC,CAAE,CAAA,EAAE1C,IAAKV,CAAAA,KAAK,CAACnE,OAAO,CAAC1B,CAAEiJ,CAAAA,MAAM,CAAC,CAAA,CAAE,GAChFkN,KAAK,CAAC,GAAKxR,CAAAA,CAAAA,GAAG,CAACyR,MAAAA,CAAAA;cAElB,IAAIF,WAAAA,CAAY5T,MAAM,KAAK,CAAA,IAAK4T,WAAW,CAAC,CAAA,CAAE,KAAK,CAAA,EAAGA,WAAc,GAAA;EAAClW,gBAAAA,CAAAA,CAAEgW;EAAc,aAAA;mBAChF,IAAIE,WAAAA,CAAY5T,MAAM,KAAK,CAAA,EAAG4T,YAAYxI,IAAI,CAACwI,WAAW,CAAC,CAAE,CAAA,CAAA;EAC7D,iBAAA,IAAIA,YAAY5T,MAAM,GAAG,GAAG4T,WAAcA,GAAAA,WAAAA,CAAY/U,MAAM,CAAC+U,WAAAA,CAAAA;EAElE,YAAA,MAAMG,iBAAiB,EAAE;EACzB,YAAA,IAAIC,YAAe,GAAA,CAAA;cACnB,MAAOA,YAAAA,GAAetW,CAAEgW,CAAAA,aAAa,CAAE;EACrC,gBAAA,IAAK,IAAIhS,CAAI,GAAA,CAAA,EAAGA,IAAIkS,WAAY5T,CAAAA,MAAM,EAAE0B,CAAK,EAAA,CAAA;sBAC3C,MAAMuS,GAAAA,GAAML,WAAW,CAAClS,CAAE,CAAA;sBAC1BsS,YAAgBC,IAAAA,GAAAA;EAChBF,oBAAAA,cAAAA,CAAe3I,IAAI,CAAC6I,GAAAA,CAAAA;sBACpB,IAAID,YAAAA,IAAgBtW,CAAEgW,CAAAA,aAAa,EAAE;EACvC;EACF;cAEA,IAAIK,cAAAA,CAAe/T,MAAM,GAAG,CAAA,IAAK+T,eAAe/T,MAAM,GAAG,CAAG+T,EAAAA,cAAAA,CAAeG,GAAG,EAAA;cAC9EH,cAAc,CAACA,eAAe/T,MAAM,GAAG,EAAE,IAAItC,CAAAA,CAAEgW,aAAa,GAAGS,WAAIJ,CAAAA,cAAAA,CAAAA;EACnE,YAAA,IAAIA,eAAe/T,MAAM,GAAG,MAAM,CAAG+T,EAAAA,cAAAA,CAAe3I,IAAI,CAAC,CAAA,CAAA;EACzD1N,YAAAA,CAAAA,CAAE0W,kBAAkB,GAAGL,cAAeM,CAAAA,IAAI,CAAC,GAAA,CAAA;EAE7C;UAEA,MAAMtC,SAAAA,GAAY,IAAI,CAAC9D,MAAM,CAAClM,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACxC,MAAM,EAAA,CAAA;EACpD,QAAA,MAAMyO,QAAQ9E,gBAAK,CAAC,CAAC,KAAK,EAAE6I,SAAU5D,CAAAA,MAAM,CAAC,CAAA,CAAA,CAAGC,WAAW,EAAK2D,CAAAA,EAAAA,SAAAA,CAAU1D,KAAK,CAAC,IAAI,CAAC;UAErF,IAAI,CAACH,KAAK,CACPF,KAAK,CAACA,KACNM,CAAAA,CAAAA,OAAO,CAAC,IAAI,CAACC,QAAQ,EACrBtI,CAAC,CAAC,IAAI,CAACtC,EAAE,EACTuC,CAAC,CAAC,IAAI,CAACrC,EAAE,CAAA;EAEZ,QAAA,MAAMJ,KAAQ,GAAA,IAAI,CAACsH,MAAM,CAAChI,MAAM,CAAC,MAAA,CAAA,CAC9BW,IAAI,CAAC,WAAahG,EAAAA,CAAAA,CAAK,GAAA,CAAC,UAAU,EAAE,CAACA,CAAAA,CAAEmU,EAAE,CAAC,CAAE,CAAA,GAAGnU,CAAE0H,CAAAA,KAAK,GAAG,CAAA,CAAE,EAAE,EAAE,CAAC1H,CAAAA,CAAEoU,EAAE,CAAC,CAAE,CAAA,GAAGpU,CAAE2H,CAAAA,MAAM,GAAG,CAAA,CAAE,CAAC,CAAC,CACzF3B,CAAAA,IAAI,CAAC,GAAA,EAAKhG,CAAAA,CAAAA,GAAK,IAAI,CAACwQ,KAAK,CAACxQ,CAAEiJ,CAAAA,MAAM,CAClCpI,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,CAAA,CAAA;EAElC,QAAA,IAAImC,MAAS,GAAA,IAAI,CAAC4G,OAAO,CAAChI,MAAM,CAAC,MAAA,CAAA,CAC9BY,IAAI,CAAC,kBAAoBhG,EAAAA,CAAAA,CAAKuG,GAAAA,IAAAA,CAAKiE,gBAAgB,CAACxK,CAAEiJ,CAAAA,MAAM,CAAC,CAAA,CAAE,EAAE1C,IAAAA,CAAKV,KAAK,CAACnE,OAAO,CAAC1B,CAAEiJ,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAA,CAAA,CAAA;UAElG,IAAI,IAAI,CAACpF,SAAS,EAAE;EAClBkC,YAAAA,KAAAA,CACGc,IAAI,CAACkP,wBACL/P,CAAAA,CAAAA,IAAI,CAAC,kBAAoBhG,EAAAA,CAAAA,CAAK,GAAA,CAAA,EAAGA,EAAE0W,kBAAkB,CAAC,CAAC,EAAE1W,EAAEgW,aAAa,CAAA,CAAE,CAC1EhQ,CAAAA,IAAI,CAAC,mBAAA,EAAqBhG,CAAAA,CAAAA,GAAKA,EAAEgW,aAAa,CAAA,CAC9C1P,UAAU,CAAC,IAAI,CAACqI,WAAW,CACzB3I,CAAAA,IAAI,CAAC,mBAAqB,EAAA,CAAA,CAAA;cAC/BQ,MAASA,GAAAA,MAAAA,CAAOF,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA,CACxCkG,SAAS,CAAC,GAAK,EAAA,SAAS7U,CAAC,EAAA;kBACxB,OAAO8U,iCAAAA,CAAgB1P,kBAAO,CAAA,IAAI,CAAEY,CAAAA,IAAI,CAAC,GAAA,CAAA,EAAMO,IAAKiK,CAAAA,KAAK,CAACxQ,CAAAA,CAAEiJ,MAAM,CAAA,CAAA;EACpE,aAAA,CAAA;EACF,YAAA,IAAI,CAACiH,KAAK,CAACtK,SAAS,CAAC,QAClBiB,IAAI,CAACkP,wBACL/P,CAAAA,CAAAA,IAAI,CAAC,kBAAoBhG,EAAAA,CAAAA,CAAK,GAAA,CAAA,EAAGA,EAAE0W,kBAAkB,CAAC,CAAC,EAAE1W,EAAEgW,aAAa,CAAA,CAAE,CAC1E1P,CAAAA,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA,CACzB3I,IAAI,CAAC,mBAAA,EAAqBhG,CAAAA,CAAK,GAAA,CAACA,EAAEgW,aAAa,CAAA;WAGjD,MAAA;cACHxP,MAASA,GAAAA,MAAAA,CACNR,IAAI,CAAC,GAAKhG,EAAAA,CAAAA,IAAKuG,IAAKiK,CAAAA,KAAK,CAACxQ,CAAAA,CAAEiJ,MAAM,CAAA,CAAA;EACvC;EAEAzC,QAAAA,MAAAA,CACGR,IAAI,CAAC,WAAA,EAAahG,CAAAA,CAAK,GAAA,CAAC,UAAU,EAAE,CAACA,CAAEmU,CAAAA,EAAE,CAAC,CAAE,CAAA,GAAGnU,EAAE0H,KAAK,GAAG,EAAE,EAAE,EAAE,CAAC1H,CAAAA,CAAEoU,EAAE,CAAC,CAAA,CAAE,GAAGpU,CAAE2H,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAC,CAAC,CACzF9G,CAAAA,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,CAAA,CAAA;EAElC,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;;EAMA,KACAsE,IAAK3I,CAAAA,CAAC,EAAEgE,CAAC,EAAE;UACT,OAAO;EAAC+P,YAAAA,MAAAA,EAAQ/T,EAAEiJ,MAAM,CAACtE,GAAG,CAACiS,CAAAA,CAAK,GAAA;sBAAC,IAAI,CAAC3Q,EAAE,CAAC2Q,CAAG5S,EAAAA,CAAAA,CAAAA;sBAAI,IAAI,CAACmC,EAAE,CAACyQ,CAAG5S,EAAAA,CAAAA;EAAG,iBAAA;EAAC,SAAA;EACnE;EAEA;;;;;OAMAsM,KAAAA,CAAMxO,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACiO,MAAM,GAAG,OAAOzO,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACyO,MAAM;EACzG;EAEA;;;;;OAMAK,OAAAA,CAAQ9O,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuO,QAAQ,GAAG/O,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+O,QAAQ;EACrE;EAvLA;;;;EAIA,KACA1N,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACoN,MAAM,GAAGxL,QAAS,CAAA,QAAA,CAAA;EACvB,QAAA,IAAI,CAAC8L,QAAQ,GAAG7Q,CAAAA,CAAKA,GAAAA,CAAAA;UACrB,IAAI,CAACmK,KAAK,GAAGpF,QAAS,CAAA,MAAA,CAAA;UACtB,IAAI,CAACqL,QAAQ,GAAGrL,QAAS,CAAA;EACvB,YAAA,GAAA,EAAK/E,CAAAA,CAAK,GAAA,IAAI,CAACwQ,KAAK,CAACxQ,EAAEiJ,MAAM,CAAA;cAC7B,MAAQ,EAAA,MAAA;cACR,cAAgB,EAAA,EAAA;cAChB,WAAa,EAAA;EACf,SAAA,CAAA;UACA,IAAI,CAAC0D,KAAK,GAAG,MAAA;EACb,QAAA,IAAI,CAAC6D,KAAK,GAAGhF,gBAAAA,CAAMqL,IAAI,EAAA;UACvB,IAAI,CAACtM,OAAO,GAAGxF,QAAS,CAAA,OAAA,CAAA;UACxB,IAAI,CAAC4F,YAAY,GAAG5F,QAAS,CAAA,CAAA,CAAA;EAE/B;EAkKF;;ECjMA,MAAM+R,QAAS,GAAA;EAACpB,IAAAA,MAAAA;EAAQE,IAAAA;EAAI,CAAA;EAOb,MAAMmB,OAAgBnV,SAAAA,SAAAA,CAAAA;EAyBnC;;;;;OAMAqD,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,IAAI,IAAI,CAACC,OAAO,KAAK,MAAQ,EAAA;EAC3B,YAAA,IAAI,CAACC,MAAM,CAACA,kBAAAA,CAAO,QAAQC,MAAM,CAAC,KAC/BC,CAAAA,CAAAA,KAAK,CAAC,OAAA,EAAS,CAAGC,EAAAA,MAAAA,CAAOC,UAAU,CAAC,EAAE,CAAC,CAAA,CACvCF,KAAK,CAAC,QAAU,EAAA,CAAA,EAAGC,OAAOE,WAAW,CAAC,EAAE,CAAC,CACzCH,CAAAA,KAAK,CAAC,SAAA,EAAW,SAASI,IAAI,EAAA,CAAA;EACnC;EAEA,QAAA,MAAMsR,WAAW,EAAE;EACnB,QAAA,IAAI,CAACnR,KAAK,CAAC5D,OAAO,CAAC,CAACjC,CAAGgE,EAAAA,CAAAA,GAAAA;EAErB,YAAA,MAAMiT,MAAS,GAAA,IAAI,CAACC,OAAO,CAAClX,CAAGgE,EAAAA,CAAAA,CAAAA;EAC/B,YAAA,MAAMuE,CAAI,GAAA,IAAI,CAACtC,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA;EACrB,YAAA,MAAMwE,CAAI,GAAA,IAAI,CAACrC,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA,CAAAA;EAErB,YAAA,IAAImT,SAAY5O,GAAAA,CAAAA;EAChB,YAAA,IAAI0O,WAAW,MAAQE,EAAAA,SAAAA,IAAa,IAAI,CAACC,OAAO,CAACpX,CAAGgE,EAAAA,CAAAA,CAAAA;EAC/C,iBAAA,IAAIiT,WAAW,OAASE,EAAAA,SAAAA,IAAa,IAAI,CAACC,OAAO,CAACpX,CAAGgE,EAAAA,CAAAA,CAAAA;EAE1D,YAAA,IAAIqT,SAAY7O,GAAAA,CAAAA;EAChB,YAAA,IAAIyO,WAAW,KAAOI,EAAAA,SAAAA,IAAa,IAAI,CAACD,OAAO,CAACpX,CAAGgE,EAAAA,CAAAA,CAAAA;EAC9C,iBAAA,IAAIiT,WAAW,QAAUI,EAAAA,SAAAA,IAAa,IAAI,CAACD,OAAO,CAACpX,CAAGgE,EAAAA,CAAAA,CAAAA;EAE3DgT,YAAAA,QAAAA,CAAStJ,IAAI,CAAC;kBAACzJ,UAAY,EAAA,IAAA;kBAAME,IAAMnE,EAAAA,CAAAA;EAAGgE,gBAAAA,CAAAA;kBAAGmE,EAAInE,EAAAA,CAAAA;EAAGuE,gBAAAA,CAAAA;EAAGC,gBAAAA;EAAC,aAAA,CAAA;EACxDwO,YAAAA,QAAAA,CAAStJ,IAAI,CAAC;kBAACzJ,UAAY,EAAA,IAAA;kBAAME,IAAMnE,EAAAA,CAAAA;EAAGgE,gBAAAA,CAAAA;kBAAGmE,EAAInE,EAAAA,CAAAA;kBAAGuE,CAAG4O,EAAAA,SAAAA;kBAAW3O,CAAG6O,EAAAA;EAAS,aAAA,CAAA;EAChF,SAAA,CAAA;;UAGA,IAAI,CAACC,KAAK,GAAG,IAAIzB,IAAAA,EAAAA,CACd1R,IAAI,CAAC6S,QACL5R,CAAAA,CAAAA,MAAM,CAACqE,QAAAA,CAAK,kBAAoB,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACsC;EAAO,SAAA,CAAA,CAAGO,IAAI,EAAA,CAAA,CAC5D7D,MAAM,CAAC2B,WAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACkT,WAAW,EAAE,OAAA,CAAA,CAAA,CAC/CtS,MAAM,CAACC,QAAAA,CAAAA;UAEV,MAAMsS,WAAAA,GAAc,IAAI,CAAC3R,KAAK,CAAClB,GAAG,CAAC,CAAC3E,CAAGgE,EAAAA,CAAAA,GAAAA;EAErC,YAAA,MAAMyT,UAAU,EAAC;EACjBA,YAAAA,OAAAA,CAAQxT,UAAU,GAAG,IAAA;EACrBwT,YAAAA,OAAAA,CAAQtT,IAAI,GAAGnE,CAAAA;EACfyX,YAAAA,OAAAA,CAAQzT,CAAC,GAAGA,CAAAA;EACZyT,YAAAA,OAAAA,CAAQC,QAAQ,GAAG,IAAI,CAACC,SAAS,CAAC3X,CAAGgE,EAAAA,CAAAA,CAAAA;EACrCyT,YAAAA,OAAAA,CAAQnV,MAAM,GAAG,IAAI,CAAC8U,OAAO,CAACpX,CAAGgE,EAAAA,CAAAA,CAAAA;EACjCyT,YAAAA,OAAAA,CAAQR,MAAM,GAAG,IAAI,CAACC,OAAO,CAAClX,CAAGgE,EAAAA,CAAAA,CAAAA;EAEjC,YAAA,IAAImT,SAAY,GAAA,IAAI,CAAClR,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA;EAC3B,YAAA,IAAIyT,QAAQR,MAAM,KAAK,MAAQE,EAAAA,SAAAA,IAAaM,QAAQnV,MAAM;EACrD,iBAAA,IAAImV,QAAQR,MAAM,KAAK,OAASE,EAAAA,SAAAA,IAAaM,QAAQnV,MAAM;EAEhE,YAAA,IAAI+U,SAAY,GAAA,IAAI,CAAClR,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA,CAAAA;EAC3B,YAAA,IAAIyT,QAAQR,MAAM,KAAK,KAAOI,EAAAA,SAAAA,IAAaI,QAAQnV,MAAM;EACpD,iBAAA,IAAImV,QAAQR,MAAM,KAAK,QAAUI,EAAAA,SAAAA,IAAaI,QAAQnV,MAAM;EAEjEmV,YAAAA,OAAAA,CAAQlP,CAAC,GAAG4O,SAAAA;EACZM,YAAAA,OAAAA,CAAQjP,CAAC,GAAG6O,SAAAA;cAEZ,OAAOI,OAAAA;EAET,SAAA,CAAA;;UAGA,IAAI,CAACG,gBAAgB,GAAG,EAAE;EAC1BlU,QAAAA,iBAAAA,EAAAA,CACG7D,GAAG,CAACG,CAAAA,CAAAA,GAAKA,CAAE0X,CAAAA,QAAQ,CACnBzD,CAAAA,OAAO,CAACuD,WAAAA,CAAAA,CACRvV,OAAO,CAAC4V,CAAAA,SAAAA,GAAAA;cACP,MAAMC,SAAAA,GAAYD,UAAUhY,GAAG;cAC/B,IAAI,CAAC+X,gBAAgB,CAAClK,IAAI,CAAC,IAAIoJ,QAAM,CAACgB,SAAAA,CAAU,EAC7C3T,CAAAA,IAAI,CAAC0T,SAAU5O,CAAAA,MAAM,EACrB7D,MAAM,CAACqE,SAAK,CAAC,0BAA0B,EAAEqO,SAAAA,CAAAA,CAAW,EAAE;kBAACjV,MAAQ,EAAA,IAAI,CAACsC;eAAUO,CAAAA,CAAAA,IAAI,EAClF7D,CAAAA,CAAAA,MAAM,CAAC;kBACN8F,MAAQ3H,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEiX,MAAM,KAAK,SAASjX,CAAEiX,CAAAA,MAAM,KAAK,QAAA,GAAW,CAAI,GAAA,EAAA;kBAC/DvP,KAAO1H,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEiX,MAAM,KAAK,SAASjX,CAAEiX,CAAAA,MAAM,KAAK,QAAA,GAAW,EAAK,GAAA;EACjE,aAAA,CAAA,CACCpV,MAAM,CAAC2B,UAAWa,CAAAA,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAAC0T,eAAe,EAAE,OAAA,EAASD,YAC5D7S,MAAM,EAAA,CAAA;EACX,SAAA,CAAA;EAEF,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMAiM,MAAAA,CAAOpP,CAAC,EAAE;UACR,IAAI,IAAI,CAACwV,KAAK,EAAE,IAAI,CAACA,KAAK,CAACpG,MAAM,CAACpP,CAAAA,CAAAA;EAClC,QAAA,IAAI,IAAI,CAAC8V,gBAAgB,EAAE,IAAI,CAACA,gBAAgB,CAAC3V,OAAO,CAAC+V,CAAAA,QAAYA,GAAAA,QAAAA,CAAS9G,MAAM,CAACpP,CAAAA,CAAAA,CAAAA;EACvF;EAEA;;;;;OAMAqC,IAAAA,CAAKrC,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuD,KAAK,GAAG/D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+D,KAAK;EAC/D;EAEA;;;;;OAMA6R,QAAAA,CAAS5V,CAAC,EAAE;EACV,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqV,SAAS,GAAG,OAAO7V,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6V,SAAS;EAC/G;EAEA;;;;;OAMAM,cAAAA,CAAenW,CAAC,EAAE;EAChB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACyV,eAAe,GAAG3V,UAAAA,CAAO,IAAI,CAAC2V,eAAe,EAAEjW,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACiW,eAAe;EACjH;EAEA;;;;;OAMAtG,KAAAA,CAAM3P,CAAC,EAAE;UACP,IAAI,IAAI,CAACwV,KAAK,EAAE,IAAI,CAACA,KAAK,CAAC7F,KAAK,CAAC3P,CAAAA,CAAAA;EACjC,QAAA,IAAI,IAAI,CAAC8V,gBAAgB,EAAE,IAAI,CAACA,gBAAgB,CAAC3V,OAAO,CAAC+V,CAAAA,QAAYA,GAAAA,QAAAA,CAASvG,KAAK,CAAC3P,CAAAA,CAAAA,CAAAA;EACtF;EAEA;;;;;OAMAQ,MAAAA,CAAOR,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8U,OAAO,GAAG,OAAOtV,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACsV,OAAO;EAC3G;EAEA;;;;;OAMAc,UAAAA,CAAWpW,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACiV,WAAW,GAAGnV,UAAAA,CAAO,IAAI,CAACmV,WAAW,EAAEzV,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACyV,WAAW;EACrG;EAEA;;;;;OAMAN,MAAAA,CAAOnV,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4U,OAAO,GAAG,OAAOpV,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoV,OAAO;EAC3G;EAEA;;;;;OAMA9R,MAAAA,CAAOtD,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6C,OAAO,GAAGC,kBAAAA,CAAOtD,IAAI,IAAG,IAAK,IAAI,CAACqD,OAAO;EAC3E;EAEA;;;;;;;;;OAUAoD,CAAAA,CAAEzG,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2D,EAAE,GAAG,OAAOnE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmE,EAAE;EACjG;EAEA;;;;;;;;;OAUAuC,CAAAA,CAAE1G,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC6D,EAAE,GAAG,OAAOrE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACqE,EAAE;EACjG;EArOA;;;;EAIA,KACAhD,WAAc,EAAA;UAEZ,KAAK,EAAA;EAEL,QAAA,IAAI,CAACwU,SAAS,GAAGlP,QAAAA,CAAS,UAAY,EAAA,MAAA,CAAA;UACtC,IAAI,CAACsP,eAAe,GAAG;cACrBrC,MAAQ,EAAA;EACNlI,gBAAAA,CAAAA,EAAG/E,SAAS,GAAK,EAAA,CAAA;EACnB;EACF,SAAA;EACA,QAAA,IAAI,CAAC2O,OAAO,GAAG3O,QAAAA,CAAS,QAAU,EAAA,EAAA,CAAA;UAClC,IAAI,CAAC8O,WAAW,GAAG,EAAC;EACpB,QAAA,IAAI,CAACL,OAAO,GAAGzO,QAAAA,CAAS,QAAU,EAAA,KAAA,CAAA;EAClC,QAAA,IAAI,CAACxC,EAAE,GAAGwC,QAAAA,CAAS,GAAK,EAAA,CAAA,CAAA;EACxB,QAAA,IAAI,CAACtC,EAAE,GAAGsC,QAAAA,CAAS,GAAK,EAAA,CAAA,CAAA;EAE1B;EAkNF;;EC9OA,MAAMqO,QAAS,GAAA;EAACpB,IAAAA,MAAAA;EAAQE,IAAAA;EAAI,CAAA;EAOb,MAAMuC,GAAYvW,SAAAA,SAAAA,CAAAA;EAsC/B;;;;;EAKA,KACAqD,MAAS,GAAA;EAEP,QAAA,IAAI,IAAI,CAACE,OAAO,KAAK,MAAQ,EAAA;EAC3B,YAAA,IAAI,CAACC,MAAM,CAACA,kBAAAA,CAAO,QAAQC,MAAM,CAAC,KAC/BC,CAAAA,CAAAA,KAAK,CAAC,OAAA,EAAS,CAAGC,EAAAA,MAAAA,CAAOC,UAAU,CAAC,EAAE,CAAC,CAAA,CACvCF,KAAK,CAAC,QAAU,EAAA,CAAA,EAAGC,OAAOE,WAAW,CAAC,EAAE,CAAC,CACzCH,CAAAA,KAAK,CAAC,SAAA,EAAW,SAASI,IAAI,EAAA,CAAA;EACnC;EAEA,QAAA,MAAM0S,cAAc,EAAE;EAEtB,QAAA,MAAMC,YAAe3U,GAAAA,iBAAAA,EAAAA,CAClB7D,GAAG,CAAC,CAACG,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACkT,OAAO,CAAClX,CAAAA,EAAGgE,CAAO,CAAA,KAAA,UAAA,GAAa,IAAI,CAACiC,EAAE,CAACjG,CAAAA,EAAGgE,CAAK,CAAA,GAAA,IAAI,CAACmC,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAC7EiQ,OAAO,CAAC,IAAI,CAACpO,KAAK,CAClBlB,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAAA;EACHA,YAAAA,CAAAA,CAAEmE,IAAI,GAAGsC,UAAMzG,CAAAA,CAAAA,CAAEiJ,MAAM,CAAA;cACvBjJ,CAAEgE,CAAAA,CAAC,GAAG,IAAI,CAAC6B,KAAK,CAACnE,OAAO,CAAC1B,CAAAA,CAAEiJ,MAAM,CAAC,CAAE,CAAA,CAAA;cACpCjJ,CAAEiX,CAAAA,MAAM,GAAG,IAAI,CAACC,OAAO,CAAClX,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAA;EACnC,YAAA,MAAMiF,SAASjJ,CAAEiJ,CAAAA,MAAM,CAACtE,GAAG,CAAC3E,CAAEiX,CAAAA,MAAM,KAAK,UAAA,GAAa,IAAI,CAAC9Q,EAAE,GAAG,IAAI,CAACF,EAAE,CAAA;EACvEgD,YAAAA,MAAAA,CAAO6F,IAAI,CAAC,CAACC,CAAAA,EAAGZ,IAAMY,CAAIZ,GAAAA,CAAAA,CAAAA;cAE1BnO,CAAEsY,CAAAA,KAAK,GAAGC,gBAAAA,CAAStP,MAAQ,EAAA,IAAA,CAAA;cAC3BjJ,CAAEwY,CAAAA,MAAM,GAAGD,gBAAAA,CAAStP,MAAQ,EAAA,IAAA,CAAA;cAC5BjJ,CAAEyY,CAAAA,KAAK,GAAGF,gBAAAA,CAAStP,MAAQ,EAAA,IAAA,CAAA;cAE3B,MAAMyP,IAAAA,GAAO,IAAI,CAACC,YAAY;EAE9B,YAAA,IAAID,IAAI,CAAC,CAAE,CAAA,KAAK,OAAS,EAAA;EACvB1Y,gBAAAA,CAAAA,CAAE4Y,UAAU,GAAG5Y,CAAEsY,CAAAA,KAAK,GAAItY,CAAAA,CAAAA,CAAEyY,KAAK,GAAGzY,CAAEsY,CAAAA,KAAK,IAAI,GAAA;kBAC/C,IAAItY,CAAAA,CAAE4Y,UAAU,GAAGrP,WAAAA,CAAIN,SAASjJ,CAAE4Y,CAAAA,UAAU,GAAGrP,WAAIN,CAAAA,MAAAA,CAAAA;eAEhD,MAAA,IAAIyP,IAAI,CAAC,CAAA,CAAE,KAAK,QAAU1Y,EAAAA,CAAAA,CAAE4Y,UAAU,GAAGrP,WAAIN,CAAAA,MAAAA,CAAAA;EAC7C,iBAAA,IAAI,OAAOyP,IAAI,CAAC,CAAA,CAAE,KAAK,QAAA,EAAU1Y,CAAE4Y,CAAAA,UAAU,GAAGL,gBAAAA,CAAStP,MAAQyP,EAAAA,IAAI,CAAC,CAAE,CAAA,CAAA;EAE7E,YAAA,IAAIA,IAAI,CAAC,CAAE,CAAA,KAAK,OAAS,EAAA;EACvB1Y,gBAAAA,CAAAA,CAAE6Y,UAAU,GAAG7Y,CAAEyY,CAAAA,KAAK,GAAIzY,CAAAA,CAAAA,CAAEyY,KAAK,GAAGzY,CAAEsY,CAAAA,KAAK,IAAI,GAAA;kBAC/C,IAAItY,CAAAA,CAAE6Y,UAAU,GAAGC,WAAAA,CAAI7P,SAASjJ,CAAE6Y,CAAAA,UAAU,GAAGC,WAAI7P,CAAAA,MAAAA,CAAAA;eAEhD,MAAA,IAAIyP,IAAI,CAAC,CAAA,CAAE,KAAK,QAAU1Y,EAAAA,CAAAA,CAAE6Y,UAAU,GAAGC,WAAI7P,CAAAA,MAAAA,CAAAA;EAC7C,iBAAA,IAAI,OAAOyP,IAAI,CAAC,CAAA,CAAE,KAAK,QAAA,EAAU1Y,CAAE6Y,CAAAA,UAAU,GAAGN,gBAAAA,CAAStP,MAAQyP,EAAAA,IAAI,CAAC,CAAE,CAAA,CAAA;EAE7E,YAAA,MAAMK,UAAa/Y,GAAAA,CAAAA,CAAEyY,KAAK,GAAGzY,EAAEsY,KAAK;;cAGpC,IAAItY,CAAAA,CAAEiX,MAAM,KAAK,UAAY,EAAA;EAC3BjX,gBAAAA,CAAAA,CAAE2H,MAAM,GAAGoR,UAAAA;kBACX/Y,CAAE0H,CAAAA,KAAK,GAAG,IAAI,CAACsR,UAAU,CAAChZ,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAA;kBACrChE,CAAEuI,CAAAA,CAAC,GAAG,IAAI,CAACtC,EAAE,CAACjG,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAA;EACzBhE,gBAAAA,CAAAA,CAAEwI,CAAC,GAAGxI,CAAEsY,CAAAA,KAAK,GAAGS,UAAa,GAAA,CAAA;EAC/B,aAAA,MACK,IAAI/Y,CAAAA,CAAEiX,MAAM,KAAK,YAAc,EAAA;;kBAElCjX,CAAE2H,CAAAA,MAAM,GAAG,IAAI,CAACqR,UAAU,CAAChZ,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAA;EACtChE,gBAAAA,CAAAA,CAAE0H,KAAK,GAAGqR,UAAAA;EACV/Y,gBAAAA,CAAAA,CAAEuI,CAAC,GAAGvI,CAAEsY,CAAAA,KAAK,GAAGS,UAAa,GAAA,CAAA;kBAC7B/Y,CAAEwI,CAAAA,CAAC,GAAG,IAAI,CAACrC,EAAE,CAACnG,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAA;EAC3B;;EAGAhE,YAAAA,CAAAA,CAAEiJ,MAAM,CAAChH,OAAO,CAAC,CAACgX,SAAWC,EAAAA,KAAAA,GAAAA;EAC3B,gBAAA,MAAMpU,KAAQ9E,GAAAA,CAAAA,CAAEiX,MAAM,KAAK,aAAa,IAAI,CAAC9Q,EAAE,CAAC8S,WAAWC,KAAS,CAAA,GAAA,IAAI,CAACjT,EAAE,CAACgT,SAAWC,EAAAA,KAAAA,CAAAA;EAEvF,gBAAA,IAAIpU,QAAQ9E,CAAE4Y,CAAAA,UAAU,IAAI9T,KAAQ9E,GAAAA,CAAAA,CAAE6Y,UAAU,EAAE;EAChD,oBAAA,MAAMpB,UAAU,EAAC;EACjBA,oBAAAA,OAAAA,CAAQxT,UAAU,GAAG,IAAA;EACrBwT,oBAAAA,OAAAA,CAAQtT,IAAI,GAAG8U,SAAAA;EACfxB,oBAAAA,OAAAA,CAAQzT,CAAC,GAAGkV,KAAAA;EACZzB,oBAAAA,OAAAA,CAAQ0B,OAAO,GAAG,IAAI,CAACC,QAAQ,CAACH,SAAWC,EAAAA,KAAAA,CAAAA;sBAE3C,IAAIlZ,CAAAA,CAAEiX,MAAM,KAAK,UAAY,EAAA;0BAC3BQ,OAAQlP,CAAAA,CAAC,GAAGvI,CAAAA,CAAEuI,CAAC;EACfkP,wBAAAA,OAAAA,CAAQjP,CAAC,GAAG1D,KAAAA;EACZsT,wBAAAA,WAAAA,CAAY1K,IAAI,CAAC+J,OAAAA,CAAAA;EACnB,qBAAA,MACK,IAAIzX,CAAAA,CAAEiX,MAAM,KAAK,YAAc,EAAA;0BAClCQ,OAAQjP,CAAAA,CAAC,GAAGxI,CAAAA,CAAEwI,CAAC;EACfiP,wBAAAA,OAAAA,CAAQlP,CAAC,GAAGzD,KAAAA;EACZsT,wBAAAA,WAAAA,CAAY1K,IAAI,CAAC+J,OAAAA,CAAAA;EACnB;EACF;EAEF,aAAA,CAAA;EAEAzX,YAAAA,CAAAA,CAAEiE,UAAU,GAAG,IAAA;cAEf,OAAOjE,CAAAA;EACT,SAAA,CAAA;;UAGF,IAAI,CAACqZ,IAAI,GAAG,IAAIzD,IAAAA,EAAAA,CACbzR,IAAI,CAACkU,YAAAA,CAAAA,CACL9P,CAAC,CAACvI,CAAAA,CAAAA,GAAKA,EAAEuI,CAAC,CAAA,CACVC,CAAC,CAACxI,CAAAA,CAAAA,GAAKA,CAAEwI,CAAAA,CAAC,CACVpD,CAAAA,MAAM,CAACqE,QAAAA,CAAK,cAAgB,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACsC;EAAO,SAAA,CAAA,CAAGO,IAAI,EAAA,CAAA,CACxD7D,MAAM,CAAC2B,WAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACiV,WAAW,EAAE,UAC/CrU,MAAM,EAAA;;EAGT,QAAA,IAAI,CAACsU,OAAO,GAAG,IAAI3D,IAChBzR,EAAAA,CAAAA,IAAI,CAACkU,YAAAA,CAAAA,CACL9P,CAAC,CAACvI,CAAAA,CAAAA,GAAKA,CAAEiX,CAAAA,MAAM,KAAK,UAAA,GAAajX,CAAEuI,CAAAA,CAAC,GAAGvI,CAAAA,CAAEwY,MAAM,CAAA,CAC/ChQ,CAAC,CAACxI,CAAAA,CAAAA,GAAKA,CAAEiX,CAAAA,MAAM,KAAK,UAAajX,GAAAA,CAAAA,CAAEwY,MAAM,GAAGxY,CAAEwI,CAAAA,CAAC,CAC/Cb,CAAAA,MAAM,CAAC3H,CAAAA,CAAKA,GAAAA,CAAAA,CAAEiX,MAAM,KAAK,UAAa,GAAA,CAAA,GAAIjX,EAAE2H,MAAM,CAAA,CAClDD,KAAK,CAAC1H,CAAAA,CAAAA,GAAKA,CAAEiX,CAAAA,MAAM,KAAK,UAAA,GAAajX,CAAE0H,CAAAA,KAAK,GAAG,CAAA,CAAA,CAC/CtC,MAAM,CAACqE,SAAK,qBAAuB,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACsC;EAAO,SAAA,CAAA,CAAGO,IAAI,EAAA,CAAA,CAC/D7D,MAAM,CAAC2B,WAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACmV,aAAa,EAAE,UACjDvU,MAAM,EAAA;;;EAIT,QAAA,MAAMuS,cAAc,EAAE;UACtBa,YAAapW,CAAAA,OAAO,CAAC,CAACjC,CAAGgE,EAAAA,CAAAA,GAAAA;cACvB,MAAMuE,CAAAA,GAAIvI,EAAEuI,CAAC;cACb,MAAMC,CAAAA,GAAIxI,EAAEwI,CAAC;EACb,YAAA,MAAMiR,SAAYzZ,GAAAA,CAAAA,CAAEsY,KAAK,GAAGtY,EAAE4Y,UAAU;EACxC,YAAA,MAAMc,YAAe1Z,GAAAA,CAAAA,CAAE6Y,UAAU,GAAG7Y,EAAEyY,KAAK;cAE3C,IAAIzY,CAAAA,CAAEiX,MAAM,KAAK,UAAY,EAAA;EAC3B,gBAAA,MAAM0C,IAAOnR,GAAAA,CAAAA,GAAIxI,CAAE2H,CAAAA,MAAM,GAAG,CAAA;EAC5B,gBAAA,MAAMiS,OAAUpR,GAAAA,CAAAA,GAAIxI,CAAE2H,CAAAA,MAAM,GAAG,CAAA;EAC/B6P,gBAAAA,WAAAA,CAAY9J,IAAI,CACd;sBAACzJ,UAAY,EAAA,IAAA;sBAAME,IAAMnE,EAAAA,CAAAA;EAAGgE,oBAAAA,CAAAA;EAAGuE,oBAAAA,CAAAA;sBAAGC,CAAGmR,EAAAA,IAAAA;sBAAMrX,MAAQmX,EAAAA,SAAAA;sBAAWxC,MAAQ,EAAA;mBACtE,EAAA;sBAAChT,UAAY,EAAA,IAAA;sBAAME,IAAMnE,EAAAA,CAAAA;EAAGgE,oBAAAA,CAAAA;EAAGuE,oBAAAA,CAAAA;sBAAGC,CAAGoR,EAAAA,OAAAA;sBAAStX,MAAQoX,EAAAA,YAAAA;sBAAczC,MAAQ,EAAA;EAAQ,iBAAA,CAAA;EAExF,aAAA,MACK,IAAIjX,CAAAA,CAAEiX,MAAM,KAAK,YAAc,EAAA;EAClC,gBAAA,MAAM4C,IAAOtR,GAAAA,CAAAA,GAAIvI,CAAE0H,CAAAA,KAAK,GAAG,CAAA;EAC3B,gBAAA,MAAMoS,OAAUvR,GAAAA,CAAAA,GAAIvI,CAAE0H,CAAAA,KAAK,GAAG,CAAA;EAC9B8P,gBAAAA,WAAAA,CAAY9J,IAAI,CACd;sBAACzJ,UAAY,EAAA,IAAA;sBAAME,IAAMnE,EAAAA,CAAAA;EAAGgE,oBAAAA,CAAAA;sBAAGuE,CAAGsR,EAAAA,IAAAA;EAAMrR,oBAAAA,CAAAA;sBAAGlG,MAAQoX,EAAAA,YAAAA;sBAAczC,MAAQ,EAAA;mBACzE,EAAA;sBAAChT,UAAY,EAAA,IAAA;sBAAME,IAAMnE,EAAAA,CAAAA;EAAGgE,oBAAAA,CAAAA;sBAAGuE,CAAGuR,EAAAA,OAAAA;EAAStR,oBAAAA,CAAAA;sBAAGlG,MAAQmX,EAAAA,SAAAA;sBAAWxC,MAAQ,EAAA;EAAM,iBAAA,CAAA;EAEnF;EAEF,SAAA,CAAA;;UAGA,IAAI,CAAC8C,QAAQ,GAAG,IAAIhD,OAAAA,EAAAA,CACjB5S,IAAI,CAACqT,WACLpS,CAAAA,CAAAA,MAAM,CAACqE,QAAAA,CAAK,sBAAwB,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACsC;EAAO,SAAA,CAAA,CAAGO,IAAI,EAAA,CAAA,CAChE7D,MAAM,CAAC2B,WAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAAC2V,cAAc,EAAE,UAClD/U,MAAM,EAAA;;UAGT,IAAI,CAAC2S,gBAAgB,GAAG,EAAE;EAC1BlU,QAAAA,iBAAAA,EAAAA,CACG7D,GAAG,CAACG,CAAAA,CAAAA,GAAKA,CAAEmZ,CAAAA,OAAO,CAClBlF,CAAAA,OAAO,CAACmE,WAAAA,CAAAA,CACRnW,OAAO,CAAC4V,CAAAA,SAAAA,GAAAA;cACP,MAAMC,SAAAA,GAAYD,UAAUhY,GAAG;cAC/B,IAAI,CAAC+X,gBAAgB,CAAClK,IAAI,CAAC,IAAIoJ,QAAM,CAACgB,SAAAA,CAAU,EAC7C3T,CAAAA,IAAI,CAAC0T,SAAU5O,CAAAA,MAAM,EACrB7D,MAAM,CAACqE,SAAK,CAAC,qBAAqB,EAAEqO,SAAAA,CAAAA,CAAW,EAAE;kBAACjV,MAAQ,EAAA,IAAI,CAACsC;EAAO,aAAA,CAAA,CAAGO,IAAI,EAAA,CAAA,CAC7E7D,MAAM,CAAC2B,WAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAAC4V,cAAc,EAAE,OAAA,EAASnC,YAC3D7S,MAAM,EAAA,CAAA;EACX,SAAA,CAAA;EAEF,QAAA,OAAO,IAAI;EACb;EAEA;;;;;OAMAiM,MAAAA,CAAOpP,CAAC,EAAE;UACR,IAAI,IAAI,CAACuX,IAAI,EAAE,IAAI,CAACA,IAAI,CAACnI,MAAM,CAACpP,CAAAA,CAAAA;UAChC,IAAI,IAAI,CAACyX,OAAO,EAAE,IAAI,CAACA,OAAO,CAACrI,MAAM,CAACpP,CAAAA,CAAAA;UACtC,IAAI,IAAI,CAACiY,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAAC7I,MAAM,CAACpP,CAAAA,CAAAA;EACxC,QAAA,IAAI,IAAI,CAAC8V,gBAAgB,EAAE,IAAI,CAACA,gBAAgB,CAAC3V,OAAO,CAAC+V,CAAAA,QAAYA,GAAAA,QAAAA,CAAS9G,MAAM,CAACpP,CAAAA,CAAAA,CAAAA;EACvF;EAEA;;;;;OAMAqC,IAAAA,CAAKrC,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuD,KAAK,GAAG/D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+D,KAAK;EAC/D;EAEA;;;;;OAMA4L,KAAAA,CAAM3P,CAAC,EAAE;UACP,IAAI,IAAI,CAACuX,IAAI,EAAE,IAAI,CAACA,IAAI,CAAC5H,KAAK,CAAC3P,CAAAA,CAAAA;UAC/B,IAAI,IAAI,CAACyX,OAAO,EAAE,IAAI,CAACA,OAAO,CAAC9H,KAAK,CAAC3P,CAAAA,CAAAA;UACrC,IAAI,IAAI,CAACiY,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAACtI,KAAK,CAAC3P,CAAAA,CAAAA;EACvC,QAAA,IAAI,IAAI,CAAC8V,gBAAgB,EAAE,IAAI,CAACA,gBAAgB,CAAC3V,OAAO,CAAC+V,CAAAA,QAAYA,GAAAA,QAAAA,CAASvG,KAAK,CAAC3P,CAAAA,CAAAA,CAAAA;EACtF;EAEA;;;;;OAMAoY,YAAAA,CAAapY,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACkX,aAAa,GAAGpX,UAAAA,CAAO,IAAI,CAACoX,aAAa,EAAE1X,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC0X,aAAa;EAC3G;EAEA;;;;;OAMAvC,MAAAA,CAAOnV,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4U,OAAO,GAAG,OAAOpV,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoV,OAAO;EAC3G;EAEA;;;;;OAMAiC,OAAAA,CAAQrX,CAAC,EAAE;EACT,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8W,QAAQ,GAAG,OAAOtX,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACsX,QAAQ;EAC7G;EAEA;;;;;OAMAe,aAAAA,CAAcrY,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2X,cAAc,GAAG7X,UAAAA,CAAO,IAAI,CAAC6X,cAAc,EAAEnY,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmY,cAAc;EAC9G;EAEA;;;;;OAMAG,UAAAA,CAAWtY,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACgX,WAAW,GAAGlX,UAAAA,CAAO,IAAI,CAACkX,WAAW,EAAExX,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACwX,WAAW;EACrG;EAEA;;;;;;;;;OAUAe,SAAAA,CAAUvY,CAAC,EAAE;EACX,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0W,UAAU,GAAG,OAAOlX,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkX,UAAU;EACjH;EAEA;;;;;OAMA5T,MAAAA,CAAOtD,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6C,OAAO,GAAGC,kBAAAA,CAAOtD,IAAI,IAAG,IAAK,IAAI,CAACqD,OAAO;EAC3E;EAEA;;;;;OAMAmV,aAAAA,CAAcxY,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0X,cAAc,GAAG5X,UAAAA,CAAO,IAAI,CAAC4X,cAAc,EAAElY,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkY,cAAc;EAC9G;EAEA;;;;;OAMAO,WAAAA,CAAYzY,CAAC,EAAE;UACb,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACqW,YAAY,GAAG7W,CAAa8C,YAAAA,KAAAA,GAAQ9C,CAAI,GAAA;EAACA,YAAAA,CAAAA;EAAGA,YAAAA;EAAE,SAAA,EAAE,IAAG,IAAK,IAAI,CAAC6W,YAAY;EAC3G;EAEA;;;;;;;;;OAUApQ,CAAAA,CAAEzG,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2D,EAAE,GAAG,OAAOnE,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmE,EAAE;EACjG;EAEA;;;;;;;;;OAUAuC,CAAAA,CAAE1G,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC6D,EAAE,GAAG,OAAOrE,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACqE,EAAE;EACjG;EAtWA;;;;EAIA,KACAhD,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACqW,aAAa,GAAG;EACnB9N,YAAAA,IAAAA,EAAM3G,QAAS,CAAA,OAAA;EACjB,SAAA;EACA,QAAA,IAAI,CAACmS,OAAO,GAAGzO,QAAAA,CAAS,QAAU,EAAA,UAAA,CAAA;EAClC,QAAA,IAAI,CAAC2Q,QAAQ,GAAG3Q,QAAAA,CAAS,SAAW,EAAA,QAAA,CAAA;UACpC,IAAI,CAACwR,cAAc,GAAG;cACpBvE,MAAQ,EAAA;EACNlI,gBAAAA,CAAAA,EAAG/E,SAAS,GAAK,EAAA,CAAA;EACnB,aAAA;cACAmN,IAAM,EAAA;kBACJjO,MAAQ,EAAA,CAAC3H,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACkT,OAAO,CAAClX,CAAAA,EAAGgE,CAAO,CAAA,KAAA,UAAA,GAAa,CAAI,GAAA,EAAA;kBAC1D0D,KAAO,EAAA,CAAC1H,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACkT,OAAO,CAAClX,CAAAA,EAAGgE,CAAO,CAAA,KAAA,UAAA,GAAa,EAAK,GAAA;EAC5D;EACF,SAAA;UACA,IAAI,CAACsV,WAAW,GAAG;EACjB5N,YAAAA,IAAAA,EAAM3G,QAAS,CAAA,OAAA,CAAA;EACfwG,YAAAA,MAAAA,EAAQxG,QAAS,CAAA,OAAA,CAAA;EACjBuN,YAAAA,WAAAA,EAAavN,QAAS,CAAA,CAAA;EACxB,SAAA;UACA,IAAI,CAACiU,UAAU,GAAGjU,QAAS,CAAA,EAAA,CAAA;UAC3B,IAAI,CAACiV,cAAc,GAAG,EAAC;UACvB,IAAI,CAACrB,YAAY,GAAG;EAAC,YAAA,OAAA;EAAS,YAAA;EAAQ,SAAA;EACtC,QAAA,IAAI,CAAC1S,EAAE,GAAGwC,QAAAA,CAAS,GAAK,EAAA,GAAA,CAAA;EACxB,QAAA,IAAI,CAACtC,EAAE,GAAGsC,QAAAA,CAAS,GAAK,EAAA,GAAA,CAAA;EAE1B;EAsUF;;ECnXe,MAAM+R,IAAa9R,SAAAA,KAAAA,CAAAA;EAqBhC;;;;;;EAMA,KACAC,IAAK3I,CAAAA,CAAC,EAAEgE,CAAC,EAAE;UACT,OAAO;EAAC+P,YAAAA,MAAAA,EAAQ0G,iBAAa,CAAA,IAAI,CAACC,EAAE,CAAC1a,CAAGgE,EAAAA,CAAAA,CAAAA;EAAG,SAAA;EAC7C;EAEA;;;;;OAMAiB,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,KAAK,CAACD,MAAOC,CAAAA,QAAAA,CAAAA;UAEb,MAAMa,KAAAA,GAAQ,IAAI,CAACsH,MAAM,CACtBrH,IAAI,CAAC,KAAK,IAAI,CAAC0U,EAAE,CACjB7Z,CAAAA,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,CAAA,CAAA;UAElC,IAAImC,MAAAA,GAAS,IAAI,CAAC4G,OAAO;UAEzB,IAAI,IAAI,CAACvJ,SAAS,EAAE;EAClBkC,YAAAA,KAAAA,CACGC,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA,CAChBM,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA,CACzB3I,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA;EACrBQ,YAAAA,MAAAA,GAASA,MAAOF,CAAAA,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA;cAC3C,IAAI,CAACuB,KAAK,CAAC5J,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA,CACnC3I,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA;EACrB;EAEAQ,QAAAA,MAAAA,CACG3F,IAAI,CAAC,IAAI,CAACkJ,WAAW,CAAC1F,IAAI,CAAC,IAAI,GAC/B2B,IAAI,CAAC,GAAK,EAAA,IAAI,CAAC0U,EAAE,CAAA;EAEpB,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;;;;;OAUA1a,CAAAA,CAAE8B,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACoY,EAAE,GAAG,OAAO5Y,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC4Y,EAAE;EACjG;EA5EA;;;;EAIA,KACAvX,WAAc,EAAA;EACZ,QAAA,KAAK,CAAC,MAAA,CAAA;UACN,IAAI,CAACuX,EAAE,GAAGjS,QAAS,CAAA,MAAA,CAAA;EACnB,QAAA,IAAI,CAACuF,YAAY,GAAG,CAAChO,GAAGgE,CAAGuJ,EAAAA,GAAAA,GAAAA;EACzB,YAAA,MAAMC,CAAIuH,GAAAA,gBAAAA,CAAYxH,GAAIwG,CAAAA,MAAM,EAAE;EAAC1F,gBAAAA,KAAAA,EAAO,IAAI,CAACK,YAAY,CAACzD,MAAM,GAAG,IAAI,CAACyD,YAAY,CAACzD,MAAM,CAACjL,GAAGgE,CAAK,CAAA,GAAA;EAAC,aAAA,CAAA;EACvG,YAAA,OAAOwJ,CAAI,GAAA;EAACa,gBAAAA,KAAAA,EAAOb,EAAEa,KAAK;EAAE3G,gBAAAA,KAAAA,EAAO8F,EAAE9F,KAAK;EAAEC,gBAAAA,MAAAA,EAAQ6F,EAAE7F,MAAM;EAAEY,gBAAAA,CAAAA,EAAGiF,CAAEwH,CAAAA,EAAE,GAAGxH,CAAAA,CAAE9F,KAAK,GAAG,CAAA;EAAGc,gBAAAA,CAAAA,EAAGgF,CAAEyH,CAAAA,EAAE,GAAGzH,CAAAA,CAAE7F,MAAM,GAAG;eAAK,GAAA,KAAA;EACjH,SAAA;UACA,IAAI,CAACgF,KAAK,GAAG,MAAA;UACb,IAAI,CAAC+B,YAAY,GAAGtN,MAAAA,CAAOgB,MAAM,CAAC,IAAI,CAACsM,YAAY,EAAE;cACnD6D,UAAY,EAAA,QAAA;cACZI,aAAe,EAAA;EACjB,SAAA,CAAA;EACF;EA6DF;;;;;;;;;;;;;;;;ECvEA,8BACA,MAAMgI,UAAAA,GAAa3a,CAAAA,CAAAA,GAAKA,CAAI,GAAA,CAAA,IAAKoB,MAAOwZ,CAAAA,EAAE,CAAC5a,CAAAA,EAAG,EAAC,CAAA;EAE/C,MAAM6a,QAAAA,GAAW7a,CAAAA,CAAKE,GAAAA,IAAAA,CAAK4a,GAAG,CAAC,EAAA,EAAI5a,IAAKC,CAAAA,KAAK,CAACD,IAAAA,CAAK6a,KAAK,CAAC7a,IAAAA,CAAKsV,GAAG,CAACxV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAQE,KAAK4a,GAAG,CAAC,EAAC,EAAGH,UAAW3a,CAAAA,CAAAA,CAAAA,CAAAA;EAClG,MAAMgb,OAAAA,GAAUhb,CAAAA,CAAKE,GAAAA,IAAAA,CAAK4a,GAAG,CAAC,EAAA,EAAI5a,IAAK+a,CAAAA,IAAI,CAAC/a,IAAAA,CAAK6a,KAAK,CAAC7a,IAAAA,CAAKsV,GAAG,CAACxV,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAQE,KAAK4a,GAAG,CAAC,EAAC,EAAGH,UAAW3a,CAAAA,CAAAA,CAAAA,CAAAA;EAChG,MAAMkb,WAAWlb,CAAAA,CAAAA,GAAAA;MACf,MAAMmb,GAAAA,GAAM,GAAGnb,CAAG,CAAA,CAAA;EAClB,IAAA,IAAImb,IAAIxZ,QAAQ,CAAC,IAASwZ,CAAAA,IAAAA,GAAAA,KAAQ,KAAK,OAAO,CAAA;MAC9C,MAAMC,SAAAA,GAAYD,GAAIE,CAAAA,KAAK,CAAC,sCAAA,CAAA;EAC5B,IAAA,IAAID,SAAW,EAAA,OAAO,CAAC,CAAA,EAAGA,SAAS,CAAC,CAAE,CAAA,CAAA,EAAG,CAACA,SAAS,CAAC,CAAA,CAAE,GAAG,CAAG,CAAA,CAAA;MAC5D,MAAME,SAAAA,GAAYH,GAAIE,CAAAA,KAAK,CAAC,8CAAA,CAAA;EAC5B,IAAA,IAAIC,SAAW,EAAA,OAAO,CAAC,CAAA,EAAGA,SAAS,CAAC,CAAE,CAAA,CAAA,EAAG,CAACA,SAAS,CAAC,CAAA,CAAE,CAAE,CAAA;MACxD,OAAOtb,CAAAA;EACT,CAAA;EAEA;;;;EAIC,IACD,SAASub,aAAAA,CAAcxQ,KAAK,EAAEyQ,aAAa,KAAK,EAAA;EAE9C,IAAA,MAAMC,SAAYC,GAAAA,iBAAAA,CAAOC,WAAW,EAAA,CAAGC,MAAM,CAAC;EAAC,QAAA,GAAA;EAAK,QAAA;EAAK,KAAA,CAAA,CAAEC,KAAK,CAAC;EAAC,QAAA,CAAA;EAAG,QAAA;EAAG,KAAA,CAAA;MACxE,MAAMC,UAAAA,GAAa/Q,MAAM8Q,KAAK,EAAA;MAC9B,MAAMnS,IAAAA,GAAOxJ,IAAKsV,CAAAA,GAAG,CAACsG,UAAU,CAAC,CAAE,CAAA,GAAGA,UAAU,CAAC,CAAE,CAAA,CAAA;EACnD,IAAA,IAAIC,IAAO7b,GAAAA,IAAAA,CAAKC,KAAK,CAACsb,SAAU/R,CAAAA,IAAAA,CAAAA,CAAAA;EAEhC,IAAA,IAAI,IAAI,CAACsB,MAAM,KAAK,MAAQ,EAAA;UAC1B,IAAI,IAAI,CAACnF,KAAK,IAAI,IAAI,CAACA,KAAK,CAACvD,MAAM,EAAE;EACnC,YAAA,MAAM0Z,UAAa9H,GAAAA,cAAAA,CAAO,IAAI,CAACrO,KAAK,CAAA;cACpC,MAAMoW,QAAAA,GAAW,IAAI,CAACpW,KAAK,CAACqW,MAAM,CAAC,CAACC,CAAGnc,EAAAA,CAAAA,EAAGgE,CAAGU,EAAAA,GAAAA,GAAAA;EAC3C,gBAAA,IAAIV,CAAG,EAAA;sBACL,MAAMoY,IAAAA,GAAOlc,KAAKsV,GAAG,CAACxV,IAAI0E,GAAG,CAACV,IAAI,CAAE,CAAA,CAAA;sBACpC,IAAIoY,IAAAA,GAAOD,GAAGA,CAAIC,GAAAA,IAAAA;EACpB;kBACA,OAAOD,CAAAA;eACNE,EAAAA,QAAAA,CAAAA;EACH,YAAA,MAAMC,OAAUpc,GAAAA,IAAAA,CAAKqc,KAAK,CAAC,CAACP,UAAU,CAAC,CAAA,CAAE,GAAGA,UAAU,CAAC,CAAA,CAAE,IAAIC,QAAAA,CAAAA;EAC7DF,YAAAA,IAAAA,GAAOxS,WAAI,CAAA;kBAACwS,IAAQP,IAAAA,UAAa,GAAA,CAAA,GAAI,GAAE,CAAA;EAAIc,gBAAAA;EAAQ,aAAA,CAAA;WAEhD,MAAA;cACHP,IAAOP,GAAAA,UAAAA,GAAaO,IAAO,GAAA,CAAA,GAAIA,IAAO,GAAA,CAAA;EACxC;EACF;MAEA,OAAO7b,IAAAA,CAAKC,KAAK,CAAC4b,IAAAA,CAAAA;EAEpB;EAEA;;;;EAIC,IACD,SAASS,cAAAA,CAAezR,KAAK,EAAEyQ,aAAa,KAAK,EAAA;EAE/C,IAAA,IAAIiB,QAAQ,EAAE;EACd,IAAA,MAAMV,OAAOR,aAAclX,CAAAA,IAAI,CAAC,IAAI,EAAE0G,KAAOyQ,EAAAA,UAAAA,CAAAA;MAC7C,MAAMI,MAAAA,GAAS7Q,MAAM6Q,MAAM,EAAA;EAC3B,IAAA,MAAMc,WAAWd,MAAM,CAAC,EAAE,GAAGA,MAAM,CAAC,CAAE,CAAA;EAEtC,IAAA,IAAI,CAACJ,UAAc,IAAA,IAAI,CAACxQ,MAAM,KAAK,KAAO,EAAA;EACxC,QAAA,MAAM2R,cAAcf,MAAOjX,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKE,KAAK6a,KAAK,CAAC/a,CAAK,CAAA,GAAA,CAAA,KAAM,IAAIA,CAAI,GAAC0c,CAAAA,QAAW1B,GAAAA,OAAAA,GAAUH,QAAO,EAAG7a,CAAAA,CAAAA,CAAAA;EAClG,QAAA,MAAM4c,gBAAgBD,WAAW,CAAC,EAAE,GAAGA,WAAW,CAAC,CAAE,CAAA;EACrD,QAAA,MAAME,MAASF,GAAAA,WAAAA,CACZhY,GAAG,CAAC3E,CAAAA,CAAK,GAAC2a,CAAAA,UAAAA,CAAW3a,CAAK,CAAA,GAAA,EAAK,GAAA,CAAA,KAAM;kBAAC,EAAC;EAAG,gBAAA;EAAE,aAAA,CAAC2B,QAAQ,CAAC3B,CAAME,CAAAA,IAAAA,IAAAA,CAAKsV,GAAG,CAACxV,CAAAA,CAAAA,GAAK,CAAI,GAAA,CAAA,GAAIE,KAAK6a,KAAK,CAAC7a,IAAKsV,CAAAA,GAAG,CAACxV,CAAE,CAAA,CAAA,CAAA,CAAA;UAC3G,MAAM8c,MAAAA,GAAS5c,KAAK+a,IAAI,CAAC,CAAC/a,IAAAA,CAAKsV,GAAG,CAACqH,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,IAAI,CAAA,KAAMd,IAAAA,GAAO,IAAG,CAAA,CAAA;UAE5EU,KAAQ,GAACK,MAAU,IAAA,CAAA,IAAKD,MAAM,CAAC,EAAE,KAAKA,MAAM,CAAC,CAAA,CAAE,IAAKD,aAAAA,KAAkBF,WAClE3R,KAAM0R,CAAAA,KAAK,CAACV,IAAAA,CAAAA,CAAMva,MAAM,CAACxB,CAAAA,CAAK,GAAA,CAAC,CAAGA,EAAAA,CAAAA,CAAAA,CAAG,CAAC+c,OAAO,CAAC,IAAM,EAAA,EAAA,CAAA,GAAM,CAAM,KAAA,CAAA,CAAA,GAChEC,aAAQH,CAAAA,MAAM,CAAC,CAAE,CAAA,EAAEA,MAAM,CAAC,CAAE,CAAA,EAAEA,MAAM,CAAC,CAAA,CAAE,GAAGA,MAAM,CAAC,CAAA,CAAE,GAAG,EAAC,GAAI,CAC1D1b,CAAAA,CAAAA,MAAM,CAAC;EAAC0b,YAAAA,MAAM,CAAC,CAAE;WAAC,CAClBrb,CAAAA,MAAM,CAACxB,CAAAA,CAAAA,GAAKE,KAAKsV,GAAG,CAACxV,KAAK8c,MAAW,KAAA,CAAA,CAAA,CACrCnY,GAAG,CAAC3E,CAAAA,IACH,CAAC,CAAA,EAAG,CAAC2a,UAAAA,CAAW3a,CAAK,CAAA,GAAA,EAAK,GAAA,CAAA,KAAMA,CAAAA,GAAIE,KAAK4a,GAAG,CAAC,IAAI5a,IAAKsV,CAAAA,GAAG,CAACxV,CAAAA,CAAAA,CAAAA,GAAME,IAAK+c,CAAAA,IAAI,CAAC,CAAIjd,GAAAA,CAAAA,CAAAA,GAAK,IAAI,CAAI,GAAA,EAAC,CAAI,CAAA,CAAA,CAC7F+c,OAAO,CAAC,KAAO,EAAA,GAAA,CAAA,CAAA;OAGrB,MAAA;UAEHN,KAAQ1R,GAAAA,KAAAA,CAAM0R,KAAK,CAACV,IAAAA,CAAAA;UACpB,IAAI,CAACP,cAAc,CAAC;EAAC,YAAA,KAAA;EAAO,YAAA;WAAO,CAAC7Z,QAAQ,CAAC,IAAI,CAACqJ,MAAM,CAAKyR,IAAAA,KAAAA,CAAMna,MAAM,GAAG,CAAG,EAAA;EAC7E,YAAA,IAAI4a,SAAYhd,GAAAA,IAAAA,CAAKsV,GAAG,CAAC0F,QAASuB,CAAAA,KAAK,CAAC,CAAA,CAAE,GAAGA,KAAK,CAAC,CAAA,CAAE,CAAI,GAAA,CAAA,CAAA;cACzDA,KAAQA,GAAAA,KAAAA,CAAMjb,MAAM,CAACxB,CAAAA,CAAAA,GAAAA;EACnB,gBAAA,MAAMmd,GAAMjd,GAAAA,IAAAA,CAAKsV,GAAG,CAACxV,CAAKkd,CAAAA,GAAAA,SAAAA;EAC1B,gBAAA,MAAME,WAAWlC,QAASiC,CAAAA,GAAAA,CAAAA;EAC1B,gBAAA,IAAIC,aAAaD,GAAK,EAAA;sBACpB,OAAO,CAACC,YAAYA,QAAaF,KAAAA,SAAAA;EACnC;EACA,gBAAA,OAAOC,GAAQ,KAAA,CAAA;EACjB,aAAA,CAAA;EACF;EAEF;;EAGA,IAAA,IAAI,CAAC,IAAI,CAACE,gBAAgB,IAAI1C,UAAAA,CAAWiB,MAAM,CAACc,QAAAA,GAAW,CAAI,GAAA,CAAA,CAAE,MAAMD,KAAMa,CAAAA,IAAI,CAACtd,CAAAA,CAAAA,GAAK2a,WAAW3a,CAAK,CAAA,CAAA,EAAA;UACrG,IAAI,CAACyc,KAAM9X,CAAAA,GAAG,CAACyR,MAAAA,CAAAA,CAAQzU,QAAQ,CAAC,CAACia,MAAM,CAAC,CAAA,CAAE,CAAG,EAAA;EAC3Ca,YAAAA,KAAAA,CAAMc,OAAO,CAAC3B,MAAM,CAAC,CAAE,CAAA,CAAA;EACzB;EACF;EACA,IAAA,IAAI,CAAC,IAAI,CAACyB,gBAAgB,IAAI1C,UAAAA,CAAWiB,MAAM,CAACc,QAAAA,GAAW,CAAI,GAAA,CAAA,CAAE,MAAMD,KAAMa,CAAAA,IAAI,CAACtd,CAAAA,CAAAA,GAAK2a,WAAW3a,CAAK,CAAA,CAAA,EAAA;UACrG,IAAI,CAACyc,KAAM9X,CAAAA,GAAG,CAACyR,MAAAA,CAAAA,CAAQzU,QAAQ,CAAC,CAACia,MAAM,CAAC,CAAA,CAAE,CAAG,EAAA;EAC3Ca,YAAAA,KAAAA,CAAM/O,IAAI,CAACkO,MAAM,CAAC,CAAE,CAAA,CAAA;EACtB;EACF;;MAIA,IAAI,IAAI,CAAC5Q,MAAM,KAAK,MAAA,IAAU,IAAI,CAACnF,KAAK,CAACvD,MAAM,EAAE;EAC/C,QAAA,MAAMkb,cAAc,IAAI,CAAC3X,KAAK,CAAClB,GAAG,CAACyR,MAAAA,CAAAA;UACnCqG,KAAQA,GAAAA,KAAAA,CAAMjb,MAAM,CAAC6E,CAAAA,IAAKmX,WAAY7b,CAAAA,QAAQ,CAAC,CAAC0E,CAAAA,CAAAA,CAAAA;EAClD;MAEA,OAAOoW,KAAAA;EACT;EAOe,MAAMgB,IAAa7b,SAAAA,SAAAA,CAAAA;EA6EhC;;;;;OAMA8b,YAAAA,CAAaC,GAAG,EAAE;UAEhB,MAAM,EAAChW,MAAM,EAAEY,CAAC,EAAEC,CAAC,EAAEoV,QAAQ,EAAC,GAAG,IAAI,CAACC,SAAS,EACzCC,MAAS,GAAA,IAAI,CAACC,OAAO,CAACH,QAAS,CAAA,EAC/BI,QAAW,GAAA;EAAC,YAAA,KAAA;EAAO,YAAA;WAAO,CAACrc,QAAQ,CAAC,IAAI,CAACuV,OAAO,IAAI,IAAI,CAAC+G,YAAY,CAACzV,CAAE,CAAA,GAAG,IAAI,CAACyV,YAAY,CAACtW,MAAAA,CAAO,GAAGmW,MAAAA,GAAS,IAAI,CAACG,YAAY,CAACzV,CAAAA,CAAE,GAAGsV,MAAAA;EAE7I,QAAA,MAAMI,KAAQ,GAAA,IAAI,CAAClT,MAAM,KAAK,MAAS,GAAA,IAAI,CAACmT,QAAQ,CAACpC,IAAI,EAAA,GAAK,IAAI,CAACoC,QAAQ,CAACC,SAAS,EACjF,GAAA,IAAI,CAACpT,MAAM,KAAK,OAAA,GAAU,IAAI,CAACmT,QAAQ,CAACpC,IAAI,KAAK,IAAI,CAACoC,QAAQ,CAAC/K,OAAO,EACtE,GAAA,CAAA;EAEJ,QAAA,MAAMiL,KAAQ,GAAA,IAAI,CAACrT,MAAM,KAAK,MAAA,GAAS,IAAI,CAACmT,QAAQ,CAACpC,IAAI,EAAA,GACrD,IAAI,CAAC/Q,MAAM,KAAK,OAAU,GAAA,IAAI,CAACmT,QAAQ,CAACpC,IAAI,EAAK,GAAA,IAAI,CAACoC,QAAQ,CAAC/K,OAAO,EACtE,GAAA,CAAA;EAEJ,QAAA,MAAMkL,YAAe,GAAC,CAAA,IAAI,CAACjB,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACzB,MAAM,EAAK,GAAA,EAAE,EAAEza,MAAM,CAAC,IAAI,CAACgd,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAACvC,MAAM,EAAK,GAAA,EAAE,EAAE9M,IAAI,CAAC,CAACC,CAAAA,EAAGZ,IAAMY,CAAIZ,GAAAA,CAAAA,CAAAA;UAE1JwP,GACG9c,CAAAA,IAAI,CAACiJ,WAAAA,EAAS,IAAI,CAACyU,UAAU,CAAA,CAC7BvY,IAAI,CAAC,CAAGuC,EAAAA,CAAAA,CAAE,CAAC,CAAC,EAAE,IAAI,CAACiW,YAAY,CAACF,YAAY,CAAC,CAAE,CAAA,CAAA,GAAIJ,KACnDlY,CAAAA,CAAAA,IAAI,CAAC,CAAA,EAAGuC,CAAE,CAAA,CAAC,CAAC,EAAE,IAAI,CAACiW,YAAY,CAACF,YAAY,CAACA,YAAAA,CAAahc,MAAM,GAAG,CAAE,CAAA,CAAA,GAAI+b,KACzErY,CAAAA,CAAAA,IAAI,CAAC,CAAGwC,EAAAA,CAAAA,CAAE,CAAC,CAAC,EAAEwV,QAAAA,CAAAA,CACdhY,IAAI,CAAC,CAAGwC,EAAAA,CAAAA,CAAE,CAAC,CAAC,EAAEwV,QAAAA,CAAAA;EAEnB;EAEA;;;;EAIA,KACAS,UAAa,GAAA;EAEX,QAAA,IAAIhC,QAAQ,EAAE;UACd,IAAI,IAAI,CAACY,gBAAgB,EAAEZ,QAAQ,IAAI,CAACY,gBAAgB,CAACzB,MAAM,EAAA;EAC/D,QAAA,IAAI,IAAI,CAACuC,QAAQ,EAAE1B,KAAQA,GAAAA,KAAAA,CAAMtb,MAAM,CAAC,IAAI,CAACgd,QAAQ,CAACvC,MAAM,EAAA,CAAA;EAE5D,QAAA,MAAMA,MAAS,GAAA;EAAC,YAAA,MAAA;EAAQ,YAAA,SAAA;EAAW,YAAA;EAAQ,SAAA,CAACja,QAAQ,CAAC,IAAI,CAACqJ,MAAM,CAAA,GAAIyR,QAAQvI,cAAOuI,CAAAA,KAAAA,CAAAA;UACnF,OAAOA,KAAK,CAAC,CAAA,CAAE,GAAGA,KAAK,CAAC,CAAE,CAAA,GAAGb,MAAO/H,CAAAA,OAAO,EAAK+H,GAAAA,MAAAA;EAElD;EAEA;;;;;OAMA4C,YAAAA,CAAaxe,CAAC,EAAE;EACd,QAAA,IAAI,IAAI,CAACgL,MAAM,KAAK,KAAO,EAAA;cACzB,IAAIhL,CAAAA,KAAM,GAAG,OAAQ,CAAA,IAAI,CAACme,QAAQ,IAAI,IAAI,CAACd,gBAAgB,EAAExB,KAAK,EAAE,CAAC,IAAI,CAACsC,QAAQ,GAAG,CAAA,GAAI,CAAE,CAAA;EAC3F,YAAA,OAAO,CAACxD,UAAAA,CAAW3a,CAAK,CAAA,GAAA,IAAI,CAACqd,gBAAgB,KAAK,IAAM,CAAA,CAAK,GAAA,IAAI,CAACc,QAAQ,EAAEne,CAAAA,CAAAA;EAC9E;UACA,OAAO,IAAI,CAACme,QAAQ,CAACne,CAAAA,CAAAA;EACvB;EAEA;;;;EAIA,KACA0e,SAAY,GAAA;EAEV,QAAA,IAAIjC,QAAQ,EAAE;UACd,IAAI,IAAI,CAACY,gBAAgB,EAAEZ,QAAQ,IAAI,CAACY,gBAAgB,CAACxB,KAAK,EAAA;EAC9D,QAAA,IAAI,IAAI,CAACsC,QAAQ,EAAE1B,KAAQA,GAAAA,KAAAA,CAAMtb,MAAM,CAAC,IAAI,CAACgd,QAAQ,CAACtC,KAAK,EAAA,CAAA;EAC3D,QAAA,OAAOY,KAAK,CAAC,CAAE,CAAA,GAAGA,KAAK,CAAC,CAAE,CAAA,GAAGvI,cAAOuI,CAAAA,KAAAA,CAAAA,CAAO5I,OAAO,EAAA,GAAKK,cAAOuI,CAAAA,KAAAA,CAAAA;EAEhE;EAEA;;;;EAIA,KACAkC,UAAa,GAAA;EACX,QAAA,IAAI7Q,SAAS,EAAE;EACf,QAAA,IAAI,IAAI,CAACuP,gBAAgB,EAAEvP,MAAAA,GAASA,OAAO3M,MAAM,CAACqb,cAAenY,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACgZ,gBAAgB,EAAE,KAAA,CAAA,CAAA;EACnG,QAAA,IAAI,IAAI,CAACc,QAAQ,EAAErQ,MAAAA,GAASA,OAAO3M,MAAM,CAACqb,cAAenY,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAAC8Z,QAAQ,EAAE,KAAA,CAAA,CAAA;EACnF,QAAA,IAAI,IAAI,CAACnT,MAAM,KAAK,KAAO,EAAA;EACzB,YAAA,MAAM4T,SAAY9Q,GAAAA,MAAAA,CAAOwP,IAAI,CAACtd,CAAAA,CAAAA,GAAK2a,UAAW3a,CAAAA,CAAAA,CAAAA,CAAAA,IAAO8N,MAAOwP,CAAAA,IAAI,CAACtd,CAAAA,IAAKA,CAAI,GAAA,CAAA,CAAA;EAC1E,YAAA,IAAI4e,SAAW,EAAA;EACb,gBAAA,MAAMC,WAAWtV,WAAI,CAAA;yBAAI,IAAI,CAAC8T,gBAAgB,CAACzB,MAAM,GAAGjX,GAAG,CAACzE,KAAKsV,GAAG,CAAA;yBAAM,IAAI,CAAC2I,QAAQ,CAACvC,MAAM;EAAG,iBAAA,CAAA;;EAEjG,gBAAA,IAAI,CAAC9N,MAAAA,CAAOnM,QAAQ,CAACkd,QAAW,CAAA,EAAA;sBAC9B/Q,MAAOgR,CAAAA,MAAM,CAAChR,MAAOiR,CAAAA,SAAS,CAAC/e,CAAAA,CAAAA,GAAKA,CAAI6e,GAAAA,QAAAA,CAAAA,EAAW,CAAGA,EAAAA,QAAAA,CAAAA;EACxD;;kBAEA,IAAI/Q,MAAAA,CAAOnM,QAAQ,CAAC,CAACkd,aAAa/Q,MAAOnM,CAAAA,QAAQ,CAACkd,QAAW,CAAA,EAAA;EAC3D/Q,oBAAAA,MAAAA,CAAOgR,MAAM,CAAChR,MAAAA,CAAOpM,OAAO,CAAC,CAACmd,QAAW,CAAA,EAAA,CAAA,CAAA;EAC3C;EACF;EACF;UACA,OAAO/Q,MAAAA;EACT;EAEA;;;;EAIA,KACAkR,SAAY,GAAA;UACV,IAAI;EAAC,YAAA,MAAA;EAAQ,YAAA,SAAA;EAAW,YAAA,OAAA;EAAS,YAAA;WAAO,CAACrd,QAAQ,CAAC,IAAI,CAACqJ,MAAM,CAAK,IAAA,IAAI,CAACnF,KAAK,CAACvD,MAAM,IAAI,IAAI,CAACuD,KAAK,CAACvD,MAAM,GAAG,IAAI,CAAC4D,MAAM,GAAG,CAAG,EAAA;EAC1H,YAAA,OAAO,IAAI,CAAC8E,MAAM,KAAK,SAAS,IAAI,CAACnF,KAAK,CAAClB,GAAG,CAACsa,QAAQ,CAAA,GAAA,IAAI,CAACpZ,KAAK;EACnE;EACA,QAAA,IAAI4W,QAAQ,EAAE;EACd,QAAA,IAAI,IAAI,CAACY,gBAAgB,EAAEZ,KAAAA,GAAQA,MAAMtb,MAAM,CAACqb,cAAenY,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACgZ,gBAAgB,EAAE,IAAA,CAAA,CAAA;EACjG,QAAA,IAAI,IAAI,CAACc,QAAQ,EAAE1B,KAAAA,GAAQA,MAAMtb,MAAM,CAACqb,cAAenY,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAAC8Z,QAAQ,EAAE,IAAA,CAAA,CAAA;UACjF,IAAI,IAAI,CAACnT,MAAM,KAAK,SAASyR,KAAM9a,CAAAA,QAAQ,CAAC,EAAC,CAAA,IAAM8a,MAAM9a,QAAQ,CAAC,IAAI8a,KAAMqC,CAAAA,MAAM,CAACrC,KAAM/a,CAAAA,OAAO,CAAC,EAAK,CAAA,EAAA,CAAA,CAAA;UACtG,OAAO+a,KAAAA;EACT;EAEA;;;;;EAKA,KACAyC,aAAcpJ,CAAAA,KAAK,EAAEqJ,IAAAA,GAAO,KAAK,EAAE;UACjC,MAAM,EAACxX,MAAM,EAAEY,CAAC,EAAEC,CAAC,EAAEoV,QAAQ,EAAC,GAAG,IAAI,CAACC,SAAS,EACzCC,MAAS,GAAA,IAAI,CAACC,OAAO,CAACH,QAAS,CAAA,EAC/BI,QAAW,GAAA;EAAC,YAAA,KAAA;EAAO,YAAA;WAAO,CAACrc,QAAQ,CAAC,IAAI,CAACuV,OAAO,CAAI,GAAA,IAAI,CAAC+G,YAAY,CAACzV,CAAAA,CAAE,GAAG,IAAI,CAACyV,YAAY,CAACtW,MAAAA,CAAO,GAAGmW,MAAS,GAAA,IAAI,CAACG,YAAY,CAACzV,CAAAA,CAAE,GAAGsV,MACvI/S,EAAAA,KAAAA,GAAQoU,OAAO,IAAI,CAACC,UAAU,IAAI,IAAI,CAACZ,YAAY,CAACna,IAAI,CAAC,IAAI,CAAA,GAAI,IAAI,CAACma,YAAY,CAACna,IAAI,CAAC,IAAI,CAAA,EAC5FqF,IAAO,GAAA;EAAC,YAAA,KAAA;EAAO,YAAA;EAAO,SAAA,CAAC/H,QAAQ,CAAC,IAAI,CAACuV,OAAO,CAAA,GAAI4G,MAAS,GAAA,CAACA,MAC1DuB,EAAAA,KAAAA,GAAQ,IAAI,CAACrU,MAAM,KAAK,MAAS,GAAA,IAAI,CAACmT,QAAQ,CAACC,SAAS,EAAK,GAAA,CAAA,GAAI,CACjEkB,EAAAA,IAAAA,GAAOtf,CAAAA,CAAAA,GAAK+K,KAAM/K,CAAAA,CAAAA,CAAEmI,EAAE,CAAIkX,GAAAA,KAAAA;EAChCvJ,QAAAA,KAAAA,CACGjV,IAAI,CAACiJ,WAAAA,EAAS,IAAI,CAACyV,WAAW,EAC9BvZ,IAAI,CAAC,CAAGuC,EAAAA,CAAAA,CAAE,CAAC,CAAC,EAAE+W,MACdtZ,IAAI,CAAC,GAAGuC,CAAE,CAAA,CAAC,CAAC,EAAE+W,MACdtZ,IAAI,CAAC,GAAGwC,CAAE,CAAA,CAAC,CAAC,EAAEwV,QAAAA,CAAAA,CACdhY,IAAI,CAAC,GAAGwC,CAAE,CAAA,CAAC,CAAC,EAAE2W,IAAAA,GAAOnB,WAAWA,QAAWtU,GAAAA,IAAAA,CAAAA;EAChD;EAEA;;;;;OAMAzE,MAAAA,CAAOC,QAAQ,EAAE;EAEf;;;EAGC,QACD,IAAI,IAAI,CAACC,OAAO,KAAK,MAAQ,EAAA;EAC3B,YAAA,IAAI,CAACC,MAAM,CAACA,kBAAAA,CAAO,MAAQC,CAAAA,CAAAA,MAAM,CAAC,KAAA,CAAA,CAC/BW,IAAI,CAAC,OAAS,EAAA,CAAA,EAAG,IAAI,CAACE,MAAM,CAAC,EAAE,CAAC,CAAA,CAChCF,IAAI,CAAC,QAAU,EAAA,CAAA,EAAG,IAAI,CAACI,OAAO,CAAC,EAAE,CAAC,EAClCV,IAAI,EAAA,CAAA;EACT;EAEA,QAAA,MAAM8Z,UAAa,GAAA,IAAI,CAACC,WAAW,IAAIjd,cAAM,CAAC,IAAI,CAACC,OAAO,CAAC,IAAID,cAAM,CAAC,OAAQ,CAAA;EAC9Ekd,QAAAA,oCAAAA,CAAwBF,YAAYG,MAAM,EAAA;EAE1C;;EAEC,QACD,MAAM,EAACjY,KAAK,EAAEC,MAAM,EAAEY,CAAC,EAAEC,CAAC,EAAEoX,UAAU,EAAEhC,QAAQ,EAAC,GAAG,IAAI,CAACC,SAAS,EAC5DgC,MAAAA,GAAS,CAAC,iBAAiB,EAAE,IAAI,CAACvc,KAAK,CAAE,CAAA,EACzCwc,IAAO,GAAA;EAAC,YAAA,KAAA;EAAO,YAAA;EAAO,SAAA,CAACne,QAAQ,CAAC,IAAI,CAACuV,OAAO,GAC5CN,CAAI,GAAA,IAAI,CAACmJ,QAAQ,EACjBld,MAAS,GAAA,IAAI,CAACsC,OAAO,EACrB6a,UAAa,GAAA;EAACpJ,YAAAA,CAAAA;EAAG,YAAA,IAAI,CAAC,CAAC,CAAC,EAAElP,KAAAA,CAAAA,CAAO,CAAC,GAAGkP;EAAE,SAAA,EACvCvQ,IAAIC,uBAAa1C,EAAAA,CAAAA,QAAQ,CAAC,IAAI,CAACC,SAAS,CAAA;UAE9C,MAAMoc,SAAAA,GAAY,IAAI,CAACC,MAAM,KAAK,QAAW,GAAA,IAAI,CAAChd,YAAY,CAACsK,CAAC,GAC5D,IAAI,CAAC0S,MAAM,KAAK,MAAA,GAAS,IAAI,CAAChd,YAAY,CAACwE,KAAM,CAAA,GACjD,IAAI,CAACxE,YAAY,CAACoP,WAAW;EACjC,QAAA,MAAM6N,OAAU,GAAA,OAAOF,SAAc,KAAA,UAAA,GAAa,IAAMA,SAAYA,GAAAA,SAAAA;EAEpE;;EAEC,QACD,MAAMG,MAAAA,GAAS,IAAI,CAACrC,OAAO,GAAG;cAACsC,GAAK,EAAA,CAAA;cAAGC,KAAO,EAAA,CAAA;cAAGC,MAAQ,EAAA,CAAA;cAAGC,IAAM,EAAA;EAAC,SAAA;EAEnE,QAAA,IAAI1S,QAAQ+N,KAAOY,EAAAA,KAAAA;EAEnB;;UAGA,MAAMgE,UAAa,GAAA,IAAI,CAACC,WAAW,GAAG,IAAI,CAACA,WAAW,GAAG1gB,CAAAA,CAAAA,GAAAA;EACvD,YAAA,IAAI2gB,MAAM3gB,CAAM,CAAA,IAAA;EAAC,gBAAA,MAAA;EAAQ,gBAAA,SAAA;EAAW,gBAAA;EAAQ,aAAA,CAAC2B,QAAQ,CAAC,IAAI,CAACqJ,MAAM,CAAG,EAAA;kBAClE,OAAOhL,CAAAA;EACT,aAAA,MACK,IAAI,IAAI,CAACgL,MAAM,KAAK,MAAQ,EAAA;EAC/B,gBAAA,MAAM4V,OAAU,GAAC,CAAA,IAAI,CAAC/a,KAAK,CAACvD,MAAM,GAAG,IAAI,CAACuD,KAAK,GAAG,IAAI,CAACgb,OAAO,EAC3Dlc,GAAG,CAACsa,QACJnQ,CAAAA,CAAAA,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAM,CAACY,CAAAA,GAAI,CAACZ,CAAAA,CAAAA;kBACxB,OAAO2S,iBAAAA,CAAW9gB,GAAG4gB,OAASG,EAAAA,uBAAAA,CAAAA,CAAYhE,OAAO,CAAC,KAAA,EAAOyC,WAAWwB,OAAO,CAAA;eAExE,MAAA,IAAI,IAAI,CAAChW,MAAM,KAAK,YAAY,IAAI,CAACiW,WAAW,KAAK,UAAY,EAAA;EACpE,gBAAA,MAAMze,SAAS,OAAO,IAAI,CAACC,OAAO,KAAK,QAAW,GAAA,IAAI,CAACA,OAAO,GAAGye,oBAAY,CAAC,IAAI,CAACze,OAAO,CAAC;EAC3F,gBAAA,MAAM,EAAC0e,SAAS,EAAEC,QAAQ,EAAC,GAAG5e,MAAAA;kBAC9B,MAAM6e,IAAAA,GAAOrhB,CAAK,IAAA,IAAA,GAAOohB,QAAQ,CAAC,IAAI,CAACE,SAAS,GAAG,CAAA,CAAE,GAAG,EAAA;kBACxD,MAAMC,IAAAA,GAAOvhB,IAAIE,IAAK4a,CAAAA,GAAG,CAAC,EAAI,EAAA,CAAA,GAAI,IAAI,CAACwG,SAAS,CAAA;EAChD,gBAAA,MAAME,MAASC,GAAAA,uBAAAA,CAAiBF,IAAM/e,EAAAA,MAAAA,EAAQ,CAAC,EAAE,EAAE+e,IAAAA,CAAKlhB,QAAQ,EAAA,CAAGiC,MAAM,CAAC,CAAC,CAAC,CAAA;kBAC5E,OAAO,CAAA,EAAGkf,MAASL,CAAAA,EAAAA,SAAAA,CAAAA,EAAYE,IAAM,CAAA,CAAA;eAElC,MAAA;EACH,gBAAA,MAAM3E,WAAWD,KAAK,CAAC,EAAE,GAAGA,KAAK,CAAC,CAAE,CAAA;EACpC,gBAAA,MAAMiF,OAAUhF,GAAAA,QAAAA,GAAWD,KAAMna,CAAAA,MAAM,GAAG,CAAI,GAAA,CAAA;EAC9C,gBAAA,MAAMqf,OAAUjF,GAAAA,QAAAA,GAAW,CAAID,GAAAA,KAAAA,CAAMna,MAAM,GAAG,CAAA;kBAC9C,MAAMsf,MAAAA,GAAS,IAAI,CAACC,SAAS,KAAK,WAC9BpF,KAAM/a,CAAAA,OAAO,CAAC1B,CAAAA,CAAAA,KAAO0hB,OAAU,GAAA,IAAI,CAACI,wBAAwB,GAC5DrF,KAAM/a,CAAAA,OAAO,CAAC1B,CAAAA,CAAAA,KAAO2hB,UAAU,IAAI,CAACI,wBAAwB,GAC5D,EAAK,GAAA,EAAA;kBACT,MAAMC,MAAAA,GAAS,IAAI,CAACH,SAAS,KAAK,WAC9BpF,KAAM/a,CAAAA,OAAO,CAAC1B,CAAAA,CAAAA,KAAO0hB,OAAU,GAAA,IAAI,CAACO,wBAAwB,GAC5DxF,KAAM/a,CAAAA,OAAO,CAAC1B,CAAAA,CAAAA,KAAO2hB,UAAU,IAAI,CAACO,wBAAwB,GAC5D,EAAK,GAAA,EAAA;kBACT,OAAO,CAAA,EAAGN,SAASH,uBAAiBzhB,CAAAA,CAAAA,EAAG,IAAI,CAACyC,OAAO,IAAIuf,MAAQ,CAAA,CAAA;EACjE;EACF,SAAA;EAEA;;;EAGC,QACD,SAASG,QAAAA,CAASC,QAAW,GAAA,IAAI,CAACC,MAAM,EAAA;EAEtC;;;EAGC,UACDxG,KAAQuG,GAAAA,QAAAA,GAAWA,QAASzR,CAAAA,KAAK,EAAK,GAAA;EAAC5Q,gBAAAA,SAAAA;EAAWA,gBAAAA;EAAU,aAAA;cAC5D,IAAI,CAACuiB,QAAUC,EAAAA,QAAAA,CAAS,GAAGvC,UAAAA;cAC3B,IAAI,IAAI,CAACqC,MAAM,EAAE;EACf,gBAAA,IAAI,IAAI,CAACA,MAAM,CAAC,CAAE,CAAA,KAAKtiB,SAAWuiB,EAAAA,QAAAA,GAAW,IAAI,CAACD,MAAM,CAAC,CAAE,CAAA;kBAC3D,IAAI,IAAI,CAACA,MAAM,CAAC,IAAI,CAACA,MAAM,CAAC/f,MAAM,GAAG,CAAE,CAAA,KAAKvC,WAAWwiB,QAAW,GAAA,IAAI,CAACF,MAAM,CAAC,IAAI,CAACA,MAAM,CAAC/f,MAAM,GAAG,CAAE,CAAA;EACvG;EACA,YAAA,IAAIuZ,KAAK,CAAC,CAAE,CAAA,KAAK9b,SAAa8b,IAAAA,KAAK,CAAC,CAAA,CAAE,GAAGyG,QAAAA,EAAUzG,KAAK,CAAC,EAAE,GAAGyG,QAAAA;EAC9D,YAAA,IAAIzG,KAAK,CAAC,CAAE,CAAA,KAAK9b,SAAa8b,IAAAA,KAAK,CAAC,CAAA,CAAE,GAAG0G,QAAAA,EAAU1G,KAAK,CAAC,EAAE,GAAG0G,QAAAA;EAE9D,YAAA,MAAMC,YAAYD,QAAWD,GAAAA,QAAAA;EAC7B,YAAA,IAAI,IAAI,CAACtX,MAAM,KAAK,SAAa,IAAA,IAAI,CAAC6V,OAAO,CAACve,MAAM,GAAGuZ,KAAAA,CAAMvZ,MAAM,EAAE;EACnE,gBAAA,IAAI8f,QAAa,KAAA,IAAI,CAACC,MAAM,EAAE;EAC5B,oBAAA,MAAMI,UAAU,IAAI,CAAC5B,OAAO,CAACve,MAAM,GAAG,CAAA;sBACtCuZ,KAAQmB,GAAAA,aAAAA,CAAQyF,SACb9d,GAAG,CAAC3E,CAAAA,CAAK6b,GAAAA,KAAK,CAAC,CAAE,CAAA,GAAG2G,aAAaxiB,CAAAA,IAAKyiB,OAAU,GAAA,CAAA,CAAC,CACjD9R,CAAAA,CAAAA,KAAK,CAAC,CAAG8R,EAAAA,OAAAA,CAAAA;sBACZ5G,KAAQA,GAAAA,KAAAA,CAAMlX,GAAG,CAAC3E,CAAAA,IAAKA,CAAI6b,GAAAA,KAAK,CAAC,CAAA,CAAE,GAAG,CAAA,CAAA;mBAEnC,MAAA;EACH,oBAAA,MAAM4G,OAAU,GAAA,IAAI,CAAC5B,OAAO,CAACve,MAAM;EACnC,oBAAA,MAAMoH,OAAOmS,KAAK,CAAC,EAAE,GAAGA,KAAK,CAAC,CAAE,CAAA;EAChCA,oBAAAA,KAAAA,GAAQmB,cAAQyF,OACb9d,CAAAA,CAAAA,GAAG,CAAC3E,CAAAA,IAAK6b,KAAK,CAAC,CAAE,CAAA,GAAGnS,QAAQ1J,CAAAA,IAAKyiB,OAAAA,GAAU,CAAA,CAAC,CAAA,CAAA;EACjD;EACF;;;;;;;;;;;;;;EAkBA;;;YAIA,MAAM1X,QAAQ,CAAC,KAAK,EAAE,IAAI,CAACC,MAAM,CAACyF,MAAM,CAAC,CAAGC,CAAAA,CAAAA,WAAW,KAAK,IAAI,CAAC1F,MAAM,CAAC2F,KAAK,CAAC,CAAI,CAAA,CAAA,CAAA;EAElF,YAAA,MAAM+R,aAAgB,GAAA,IAAI,CAAC7B,OAAO,CAAClQ,KAAK,EAAA;cAExC,IAAI,CAACwN,QAAQ,GAAGzC,iBAAM,CAAC3Q,KAAM,CAAA,EAAA,CAC1B6Q,MAAM,CAAC,IAAI,CAAC5Q,MAAM,KAAK,SAAS0X,aAAc/d,CAAAA,GAAG,CAACsa,QAAQyD,CAAAA,GAAAA,aAAAA,CAAAA,CAC1D7G,KAAK,CAACA,KAAAA,CAAAA;EAGT,YAAA,IAAI,IAAI,CAACgG,SAAS,KAAK,MAAQ,EAAA;EAE7B,gBAAA,MAAMlF,WAAc,GAAA,IAAA;EAClB,oBAAA,MAAMgG,aAAa3iB,CAAAA,CAAAA,GAAAA;EACjB,wBAAA,IAAI4iB,UAAY,EAAA;8BACd,IAAI,CAAC5iB,GAAG,OAAO,CAAA;EACf,4BAAA,MAAM6iB,CAAI,GAAA,CAAA,EAAG7iB,CAAG,CAAA,CAAA,CAACqb,KAAK,CAAC,SAAA,CAAA;8BACvB,IAAIwH,CAAAA,EAAG,OAAO,CAAC,CAAC,EAAE,EAAEje,KAAAA,CAAMie,CAAC,CAAC,CAAA,CAAE,CAACvgB,MAAM,GAAG,GAAGoJ,IAAI,CAAC,GAAGiL,IAAI,CAAC,EAAI,CAAA,CAAA,CAAC,CAAC;EAChE;0BACA,OAAO,CAAA,EAAGzW,KAAKqc,KAAK,CAACrc,KAAKsV,GAAG,CAACxV,CAAK,CAAA,CAAA,CAAA,CAAA,CAACsC,MAAM;EAC5C,qBAAA;sBACA,MAAMsgB,UAAAA,GAAaF,cAAcI,KAAK,CAAC9iB,CAAAA,CAAKE,GAAAA,IAAAA,CAAKsV,GAAG,CAACxV,CAAK,CAAA,GAAA,CAAA,CAAA;EAC1D,oBAAA,MAAM+iB,SAAY,GAAA;0BAACJ,UAAWD,CAAAA,aAAa,CAAC,CAAE,CAAA,CAAA;0BAAGC,UAAWD,CAAAA,aAAa,CAAC,CAAE,CAAA;uBAAE,CAAClhB,MAAM,CAAC0N,OAAAA,CAAAA,CAASJ,IAAI,EAAA;EACnG,oBAAA,MAAM8P,SAAY8D,GAAAA,aAAAA,CAAcpF,IAAI,CAACtd,CAAAA,CAAAA,GAAK2a,UAAW3a,CAAAA,CAAAA,CAAAA,CAAAA,IAAO0iB,aAAcpF,CAAAA,IAAI,CAACtd,CAAAA,IAAKA,CAAI,GAAA,CAAA,CAAA;sBACxF,MAAMgjB,KAAAA,GAAQD,UAAUzgB,MAAM,KAAK,IAAIygB,SAAS,CAAC,CAAE,CAAA,GAC/CA,SAAS,CAAC,EAAE,GAAG,CAAA,IAAKA,SAAS,CAAC,CAAE,CAAA,KAAKA,SAAS,CAAC,CAAA,CAAE,GAAGA,SAAS,CAAC,CAAA,CAAE,GAAG,CACnE,GAAA,IAAI,CAAClB,SAAS,KAAK,aAAa,CAACjD,SAAAA,GAC/BmE,SAAS,CAAC,CAAE,CAAA,GAAI,CAACA,SAAS,CAAC,CAAA,CAAE,GAAGA,SAAS,CAAC,CAAE,CAAD,IAAK,CAAA,GAClDjK,WAAIiK,CAAAA,SAAAA,CAAAA;sBACR,IAAIE,MAAAA,GAASD,QAAQ,CAAI9H,GAAAA,QAAAA,CAAS8H,SAAS,CAAC,CAAC,CAAC,EAAEpe,KAAAA,CAAM1E,KAAKC,KAAK,CAAC+a,SAAS8H,KAAU,CAAA,CAAA,GAAA,CAAA,CAAA,CAAGtX,IAAI,CAAC,CAAA,CAAA,CAAGiL,IAAI,CAAC,EAAK,CAAA,CAAA,CAAA;EACzG,oBAAA,IAAIsM,MAAU/iB,IAAAA,IAAAA,CAAKsV,GAAG,CAACkN,aAAa,CAAC,CAAE,CAAA,GAAGA,aAAa,CAAC,CAAE,CAAA,CAAA,EAAGO,MAAU,IAAA,CAAA;EACvE,oBAAA,MAAMvG,WAAWgG,aAAa,CAAC,EAAE,GAAGA,aAAa,CAAC,CAAE,CAAA;EACpD,oBAAA,MAAMQ,SAAY,GAAA;EAChBhjB,wBAAAA,IAAI,CAAC,IAAI,CAAC2hB,SAAS,KAAK,YAAYnF,QAAW,GAAA,MAAA,GAAS,OAAUA,GAAAA,QAAAA,GAAW,UAAU,MAAO,CAAA,CAC5FgG,aAAa,CAAC,CAAA,CAAE,GAAGO,MACjBA,CAAAA,GAAAA,MAAAA;EACJ/iB,wBAAAA,IAAI,CAAC,IAAI,CAAC2hB,SAAS,KAAK,YAAYnF,QAAW,GAAA,OAAA,GAAU,MAASA,GAAAA,QAAAA,GAAW,SAAS,OAAQ,CAAA,CAC5FgG,aAAa,CAAC,CAAA,CAAE,GAAGO,MACjBA,CAAAA,GAAAA;EACL,qBAAA;EACD,oBAAA,IAAI,IAAI,CAACjY,MAAM,KAAK,KAAO,EAAA;0BACzB,IAAIkY,SAAS,CAAC,CAAA,CAAE,KAAK,CAAA,EAAGA,SAAS,CAAC,CAAE,CAAA,GAAGR,aAAa,CAAC,CAAE,CAAA;0BACvD,IAAIQ,SAAS,CAAC,CAAA,CAAE,KAAK,CAAA,EAAGA,SAAS,CAAC,CAAE,CAAA,GAAGR,aAAa,CAAC,CAAE,CAAA;EACzD;EACA,oBAAA,IAAI,CAACvE,QAAQ,CAACvC,MAAM,CAACsH,SAAAA,CAAUve,GAAG,CAACuW,QAAAA,CAAAA,CAAAA;EACrC,iBAAA;EAEA,gBAAA,IAAI,IAAI,CAAClQ,MAAM,KAAK,QAAU,EAAA;sBAC5B2R,WAAYtY,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;EACvB,iBAAA,MACK,IAAI,IAAI,CAAC2G,MAAM,KAAK,KAAO,EAAA;EAC9B,oBAAA,MAAMmY,YAAY,EAAE;EACpB,oBAAA,MAAMzG,WAAWgG,aAAa,CAAC,EAAE,GAAGA,aAAa,CAAC,CAAE,CAAA;EACpDS,oBAAAA,SAAS,CAAC,CAAA,CAAE,GAAI,CAAA,IAAI,CAACtB,SAAS,KAAK,YAC/BlH,UAAW+H,CAAAA,aAAa,CAAC,CAAA,CAAE,IAAIhG,QAAW7B,GAAAA,QAAAA,GAAWG,OAAU0B,GAAAA,QAAAA,GAAW1B,UAAUH,QACpFF,GAAAA,UAAAA,CAAW+H,aAAa,CAAC,EAAE,CAAIhG,GAAAA,QAAAA,GAAW1B,OAAUH,GAAAA,QAAAA,GAAW6B,WAAW7B,QAAWG,GAAAA,OAAM,EAC3F0H,aAAa,CAAC,CAAE,CAAA,CAAA;EACpBS,oBAAAA,SAAS,CAAC,CAAA,CAAE,GAAI,CAAA,IAAI,CAACtB,SAAS,KAAK,WAC/BlH,UAAW+H,CAAAA,aAAa,CAAC,CAAA,CAAE,IAAIhG,QAAW7B,GAAAA,QAAAA,GAAWG,OAAU0B,GAAAA,QAAAA,GAAW1B,UAAUH,QACpFF,GAAAA,UAAAA,CAAW+H,aAAa,CAAC,EAAE,CAAIhG,GAAAA,QAAAA,GAAW1B,OAAUH,GAAAA,QAAAA,GAAW6B,WAAW7B,QAAWG,GAAAA,OAAM,EAC3F0H,aAAa,CAAC,CAAE,CAAA,CAAA;EACpB,oBAAA,MAAMU,cAAcD,SAAS,CAAC,EAAE,GAAGA,SAAS,CAAC,CAAE,CAAA;EAC/C,oBAAA,IAAIA,SAAS,CAAC,CAAA,CAAE,KAAKA,SAAS,CAAC,EAAE,IAAIA,SAAAA,CAAU7F,IAAI,CAACtd,CAAAA,IAAKE,IAAKsV,CAAAA,GAAG,CAACxV,CAAK,CAAA,GAAA,EAAA,CAAA,IAAOojB,gBAAgB1G,QAAU,EAAA;EACtG,wBAAA,IAAI,CAACyB,QAAQ,CAACvC,MAAM,CAACuH,SAAAA,CAAAA;uBAElB,MAAA;0BACHxG,WAAYtY,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;EACvB;EACF;EAEF;EAEA,YAAA,IAAI,IAAI,CAAC8Z,QAAQ,CAAC/K,OAAO,EAAE,IAAI,CAAC+K,QAAQ,CAAC/K,OAAO,CAAC,IAAI,CAACiQ,aAAa,CAAA;EACnE,YAAA,IAAI,IAAI,CAAClF,QAAQ,CAACmF,YAAY,EAAE,IAAI,CAACnF,QAAQ,CAACmF,YAAY,CAAC,IAAI,CAACC,aAAa,CAAA;EAC7E,YAAA,IAAI,IAAI,CAACpF,QAAQ,CAACqF,YAAY,EAAE,IAAI,CAACrF,QAAQ,CAACqF,YAAY,CAAC,IAAI,CAACC,aAAa,CAAA;EAE7E;;;YAIA,IAAI,CAACpG,gBAAgB,GAAG,IAAA;EACxB,YAAA,IAAI,IAAI,CAACrS,MAAM,KAAK,KAAO,EAAA;EACzB,gBAAA,MAAM4Q,MAAS,GAAA,IAAI,CAACuC,QAAQ,CAACvC,MAAM,EAAA;EACnC,gBAAA,IAAIA,MAAM,CAAC,CAAE,CAAA,KAAK,CAAG,EAAA;EACnB,oBAAA,MAAM8H,iBAAiBna,WAAI,CAAA;0BAACA,WAAI,CAAA,IAAI,CAAC1D,KAAK,CAAA;EAAG3F,wBAAAA,IAAAA,CAAKsV,GAAG,CAACoG,MAAM,CAAC,CAAE,CAAA;EAAE,qBAAA,CAAA;sBACjEA,MAAM,CAAC,CAAE,CAAA,GAAG8H,cAAmB,KAAA,CAAA,IAAKA,cAAmB,KAAA,CAAA,GAAI,IAAOA,GAAAA,cAAAA,IAAkB,CAAI7I,GAAAA,QAAAA,CAAS6I,cAAkB,CAAA,GAAA,CAAA;sBACnH,IAAI/I,UAAAA,CAAWiB,MAAM,CAAC,CAAA,CAAE,GAAGA,MAAM,CAAC,CAAE,CAAA,IAAI,EAAC;mBAEtC,MAAA,IAAIA,MAAM,CAACA,MAAAA,CAAOtZ,MAAM,GAAG,CAAA,CAAE,KAAK,CAAG,EAAA;EACxC,oBAAA,MAAMohB,iBAAiBna,WAAI,CAAA;0BAACA,WAAI,CAAA,IAAI,CAAC1D,KAAK,CAAA;EAAG3F,wBAAAA,IAAAA,CAAKsV,GAAG,CAACoG,MAAM,CAAC,CAAE,CAAA;EAAE,qBAAA,CAAA;EACjEA,oBAAAA,MAAM,CAACA,MAAAA,CAAOtZ,MAAM,GAAG,EAAE,GAAGohB,cAAAA,KAAmB,CAAKA,IAAAA,cAAAA,KAAmB,CAAI,GAAA,IAAA,GAAOA,cAAkB,IAAA,CAAA,GAAI7I,SAAS6I,cAAkB,CAAA,GAAA,CAAA;EACnI,oBAAA,IAAI/I,UAAWiB,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAGA,EAAAA,MAAM,CAACA,MAAAA,CAAOtZ,MAAM,GAAG,CAAE,CAAA,IAAI,EAAC;EAC3D;EACA,gBAAA,MAAMuZ,KAAQ,GAAA,IAAI,CAACsC,QAAQ,CAACtC,KAAK,EAAA;;EAGjC,gBAAA,IAAIlB,UAAWiB,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAKjB,IAAAA,UAAAA,CAAWiB,MAAM,CAACA,MAAOtZ,CAAAA,MAAM,GAAG,CAAA,CAAE,CAAG,EAAA;EAClE,oBAAA,IAAI,CAAC+a,gBAAgB,GAAG,IAAI,CAACc,QAAQ,CAACwF,IAAI,EACvC/H,CAAAA,MAAM,CAACA,MAAAA,CAAAA,CACPC,KAAK,CAACA,KAAAA,CAAAA;sBACT,IAAI,CAACsC,QAAQ,GAAG,IAAA;EAClB,iBAAA,MAEK,IAAIvC,MAAM,CAAC,CAAA,CAAE,GAAG,CAAA,IAAKA,MAAM,CAACA,MAAOtZ,CAAAA,MAAM,GAAG,CAAA,CAAE,GAAG,CAAG,EAAA;EACvD,oBAAA,IAAI,CAAC6b,QAAQ,CACVvC,MAAM,CAACA,MAAAA,CAAAA,CACPC,KAAK,CAACA,KAAAA,CAAAA;mBAGN,MAAA;EAEH,oBAAA,MAAMgB,SAASjB,MAAOjX,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKE,KAAK6a,KAAK,CAAC7a,IAAKsV,CAAAA,GAAG,CAACxV,CAAK2E,CAAAA,CAAAA,CAAAA,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,KAAK,KAAC,CAAA;EACvE,oBAAA,MAAM4jB,cAAiB/G,GAAAA,MAAM,CAAC,CAAA,CAAE,GAAGpG,WAAIoG,CAAAA,MAAAA,CAAAA;sBACvC,MAAMgH,IAAAA,GAAOD,cAAkB/H,IAAAA,KAAK,CAAC,EAAE,GAAGA,KAAK,CAAC,CAAA,CAAE,CAAD;EAEjD,oBAAA,IAAIiI,cAAcva,WAAI,CAAA;0BAACA,WAAI,CAAA,IAAI,CAAC1D,KAAK,CAACrE,MAAM,CAACxB,CAAAA,IAAKA,CAAK,IAAA,CAAA,CAAA,CAAA;EAAKE,wBAAAA,IAAAA,CAAKsV,GAAG,CAACoG,MAAM,CAAC,CAAE,CAAA;EAAE,qBAAA,CAAA;sBAChF,IAAIkI,WAAAA,KAAgB,GAAGA,WAAc,GAAA,IAAA;EACrC,oBAAA,IAAIC,cAAcxa,WAAI,CAAA;EAACA,wBAAAA,WAAAA,CAAI,IAAI,CAAC1D,KAAK,CAACrE,MAAM,CAACmZ,UAAAA,CAAAA,CAAAA;EAAcza,wBAAAA,IAAAA,CAAKsV,GAAG,CAACoG,MAAM,CAAC,CAAE,CAAA;EAAE,qBAAA,CAAA;sBAC/E,IAAImI,WAAAA,KAAgB,GAAGA,WAAc,GAAA,IAAA;EACrC,oBAAA,MAAMC,YAAYF,WAAgB,KAAA,CAAA,GAAI,OAAOA,WAAe,IAAA,CAAA,GAAIjJ,SAASiJ,WAAe,CAAA,GAAA,CAAA;sBACxF,MAAMG,SAAAA,GAAYF,gBAAgB,CAAI,GAAA,QAAQA,WAAe,IAAA,CAAA,GAAIlJ,SAASkJ,WAAe,CAAA,GAAA,CAAA;EACzF,oBAAA,MAAMlF,WAAWtV,WAAI,CAAA;EAACrJ,wBAAAA,IAAAA,CAAKsV,GAAG,CAACwO,SAAAA,CAAAA;EAAY9jB,wBAAAA,IAAAA,CAAKsV,GAAG,CAACyO,SAAAA;EAAW,qBAAA,CAAA;EAC/D,oBAAA,IAAI,CAAC5G,gBAAgB,GAAG,IAAI,CAACc,QAAQ,CAACwF,IAAI,EAAA;EACzChJ,oBAAAA,CAAAA,UAAWiB,CAAAA,MAAM,CAAC,CAAA,CAAE,IAAI,IAAI,CAACuC,QAAQ,GAAG,IAAI,CAACd,gBAAgB,EAC3DzB,MAAM,CAAC;EAACjB,wBAAAA,UAAAA,CAAWiB,MAAM,CAAC,CAAE,CAAA,CAAA,GAAIiD,WAAW,CAACA,QAAAA;EAAUjD,wBAAAA,MAAM,CAAC,CAAE;EAAC,qBAAA,CAAA,CAChEC,KAAK,CAAC;0BAACA,KAAK,CAAC,EAAE,GAAGgI,IAAAA;EAAMhI,wBAAAA,KAAK,CAAC,CAAE;EAAC,qBAAA,CAAA;EACnClB,oBAAAA,CAAAA,UAAWiB,CAAAA,MAAM,CAAC,CAAA,CAAE,IAAI,IAAI,CAACyB,gBAAgB,GAAG,IAAI,CAACc,QAAQ,EAC3DvC,MAAM,CAAC;EAACA,wBAAAA,MAAM,CAAC,CAAE,CAAA;EAAEjB,wBAAAA,UAAAA,CAAWiB,MAAM,CAAC,CAAE,CAAA,CAAA,GAAI,CAACiD,QAAWA,GAAAA;EAAS,qBAAA,CAAA,CAChEhD,KAAK,CAAC;EAACA,wBAAAA,KAAK,CAAC,CAAE,CAAA;0BAAEA,KAAK,CAAC,EAAE,GAAGgI;EAAK,qBAAA,CAAA;EACtC;EAEF;EAEA;;;YAIApH,KAAAA,GAAQ,CAAC,IAAI,CAACyH,MAAM,GAChB,IAAI,CAAClZ,MAAM,KAAK,SAAS,IAAI,CAACkZ,MAAM,CAACvf,GAAG,CAACsa,YAAQ,IAAI,CAACiF,MAAM,GAC5D,CAAC,IAAI,CAAC/F,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAAC1B,KAAK,GAAG,IAAI,CAACY,gBAAgB,CAACZ,KAAK,IAChE,IAAI,CAACuC,SAAS,EAAA,GAAK,IAAI,CAAC6B,OAAO,EAAElQ,KAAK,EAAA;cAC5C7C,MAAS,GAAC,CAAA,IAAI,CAACqW,OAAO,GAClB,IAAI,CAACnZ,MAAM,KAAK,SAAS,IAAI,CAACmZ,OAAO,CAACxf,GAAG,CAACsa,QAAQ,CAAA,GAAA,IAAI,CAACkF,OAAO,GAC7D,CAAA,IAAI,CAAChG,QAAQ,GAAG,IAAI,CAACA,QAAQ,CAAC1B,KAAK,GAAG,IAAI,CAACY,gBAAgB,CAACZ,KAAK,IAChE,IAAI,CAACkC,UAAU,EAAA,GAAKlC,KAAI,EAAG9L,KAAK,EAAA;EAEtC,YAAA,IAAI,IAAI,CAAC3F,MAAM,KAAK,MAAQ,EAAA;kBAC1ByR,KAAQA,GAAAA,KAAAA,CAAM9X,GAAG,CAACyR,MAAAA,CAAAA;kBAClBtI,MAASA,GAAAA,MAAAA,CAAOnJ,GAAG,CAACyR,MAAAA,CAAAA;EACtB;EACAqG,YAAAA,KAAAA,GAAQA,KAAM3N,CAAAA,IAAI,CAAC,CAACC,GAAGZ,CAAM,GAAA,IAAI,CAACqQ,YAAY,CAACzP,CAAAA,CAAAA,GAAK,IAAI,CAACyP,YAAY,CAACrQ,CAAAA,CAAAA,CAAAA;EACtEL,YAAAA,MAAAA,GAASA,MAAOgB,CAAAA,IAAI,CAAC,CAACC,GAAGZ,CAAM,GAAA,IAAI,CAACqQ,YAAY,CAACzP,CAAAA,CAAAA,GAAK,IAAI,CAACyP,YAAY,CAACrQ,CAAAA,CAAAA,CAAAA;EAExE;;YAGA,IAAI,IAAI,CAACnD,MAAM,KAAK,YAAY,IAAI,CAACiW,WAAW,KAAK,UAAY,EAAA;EAC/D,gBAAA,MAAMG,WAAWtT,MAAOtM,CAAAA,MAAM,CAACxB,CAAAA,IAAKA,CAAK,IAAA,IAAA,CAAA;kBACzC,IAAIohB,QAAAA,CAAS9e,MAAM,GAAG,CAAG,EAAA;sBACvB,MAAMiH,GAAAA,GAAMrJ,IAAKqJ,CAAAA,GAAG,CAAI6X,GAAAA,QAAAA,CAAAA;EACxB,oBAAA,IAAIpd,CAAI,GAAA,CAAA;sBACR,MAAOA,CAAAA,IAAKA,IAAI,CAAG,CAAA;EACjB,wBAAA,MAAMmY,CAAIjc,GAAAA,IAAAA,CAAK4a,GAAG,CAAC,IAAI,CAAI9W,GAAAA,CAAAA,CAAAA;0BAC3B,IAAIuF,GAAAA,GAAM4S,KAAK,CAAG,EAAA;8BAChB,IAAI,CAACmF,SAAS,GAAGtd,CAAAA;8BACjBA,CAAK,IAAA,CAAA;2BAEF,MAAA;EACH,4BAAA;EACF;EACF;EACF;EACF;EAEA;;YAGA,MAAMogB,SAAS,EAAE;cACjB,IAAI,CAACC,eAAe,GAAG5H,KAAAA;cACvBA,KAAMxa,CAAAA,OAAO,CAAC,CAACjC,CAAGgE,EAAAA,CAAAA,GAAAA;EAChB,gBAAA,IAAI/D,IAAIkgB,OAAQ,CAAA;sBAAChY,EAAInI,EAAAA,CAAAA;sBAAGuhB,IAAM,EAAA;mBAAOvd,EAAAA,CAAAA,CAAAA;EACrC,gBAAA,IAAI,IAAI,CAACkc,MAAM,KAAK,UAAUjgB,CAAK,IAAA,CAAA;EACnC,gBAAA,MAAMoG,CAAI,GAAA,IAAI,CAACmY,YAAY,CAACxe,CAAAA,CAAAA;EAC5B,gBAAA,IAAI,CAACokB,MAAAA,CAAO9hB,MAAM,IAAIpC,KAAKsV,GAAG,CAAC8O,YAAQje,CAAAA,CAAAA,EAAG+d,UAAU/d,CAAKpG,CAAAA,GAAAA,CAAAA,GAAI,CAAGmkB,EAAAA,MAAAA,CAAO1W,IAAI,CAACrH,CAAAA,CAAAA;EACvE+d,qBAAAA,MAAAA,CAAO1W,IAAI,CAAC,KAAA,CAAA;EACnB,aAAA,CAAA;cACA+O,KAAQA,GAAAA,KAAAA,CAAMjb,MAAM,CAAC,CAACxB,GAAGgE,CAAMogB,GAAAA,MAAM,CAACpgB,CAAAA,CAAE,KAAK,KAAA,CAAA;cAC7C,IAAI,CAACugB,aAAa,GAAG9H,KAAAA;EAEvB;UACA0F,QAAS9d,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;EAElB;;;EAGC,QACD,IAAI,IAAI,CAACmgB,MAAM,EAAE;cACf,MAAM,EAACC,UAAU,EAAEtR,QAAQ,EAAEuR,UAAU,EAAC,GAAG,IAAI,CAACC,YAAY;cAC5D,MAAMC,SAAAA,GAAYC,aACfJ,EAAAA,CAAAA,UAAU,CAAC,OAAOA,eAAe,UAAaA,GAAAA,UAAAA,EAAAA,GAAeA,UAC7DtR,CAAAA,CAAAA,QAAQ,CAAC,OAAOA,aAAa,UAAaA,GAAAA,QAAAA,EAAAA,GAAaA,QACvDuR,CAAAA,CAAAA,UAAU,CAAC,OAAOA,eAAe,UAAaA,GAAAA,UAAAA,EAAAA,GAAeA,UAC7Dhd,CAAAA,CAAAA,KAAK,CAACmU,KAAK,CAACA,KAAMvZ,CAAAA,MAAM,GAAG,CAAA,CAAE,GAAGuZ,KAAK,CAAC,CAAE,CAAA,GAAGjF,CAAI,GAAA,CAAA,CAAA,CAC/CjP,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAEA,MAAQ,CAAA,CAAA,CAAC,GAAG,IAAI,CAACmd,SAAS,GAAGlO,CAAI,GAAA,CAAA,CAAA;cACpD,MAAMd,KAAAA,GAAQ8O,UAAU,IAAI,CAACJ,MAAM,CAAE1O,CAAAA,KAAK,CAACxT,MAAM;cACjD8d,MAAM,CAAC,IAAI,CAAClJ,OAAO,CAAC,GAAGpB,KAAAA,GAAQ8O,SAAUF,CAAAA,UAAU,EAAK9N,GAAAA,CAAAA;EAC1D;EAEA,QAAA,IAAImO,QAAQ,IAAI,CAAC7E,MAAM,KAAK,QAAA,GACpB,OAAO,IAAI,CAAChd,YAAY,CAACsK,CAAC,KAAK,UAAa,GAAA,IAAI,CAACtK,YAAY,CAACsK,CAAC,CAAC;cAAC+T,IAAM,EAAA;WAAS,CAAA,GAAA,IAAI,CAACre,YAAY,CAACsK,CAAC,GACnG,IAAI,CAAC0S,MAAM,KAAK,MACd,GAAA,OAAO,IAAI,CAAChd,YAAY,CAACyE,MAAAA,CAAO,KAAK,UAAA,GAAa,IAAI,CAACzE,YAAY,CAACyE,MAAAA,CAAO,CAAC;cAAC4Z,IAAM,EAAA;WAAS,CAAA,GAAA,IAAI,CAACre,YAAY,CAACyE,MAAAA,CAAO,GACrH,IAAI,CAACmd,SAAS,EACpBE,KAAAA,GAAQ7E,OAAQ,CAAA;cAACoB,IAAM,EAAA;EAAI,SAAA,CAAA;EAE/B,QAAA,IAAI,OAAOwD,KAAU,KAAA,UAAA,EAAYA,QAAQjM,WAAI2D,CAAAA,KAAAA,CAAM9X,GAAG,CAACogB,KAAAA,CAAAA,CAAAA;EACvD,QAAA,IAAI,IAAI,CAAC7E,MAAM,KAAK,QAAQ6E,KAAS,IAAA,CAAA;EACrC,QAAA,IAAI,OAAOC,KAAU,KAAA,UAAA,EAAYA,QAAQlM,WAAI2D,CAAAA,KAAAA,CAAM9X,GAAG,CAACqgB,KAAAA,CAAAA,CAAAA;EACvD,QAAA,IAAI,IAAI,CAAC9E,MAAM,KAAK,UAAU8E,KAAS,IAAA,CAAA;EAEvC;;;UAIA,SAASC,mBAAmB3X,KAAK,EAAA;EAC/B,YAAA,MAAM,EAACtN,CAAC,EAAEgE,CAAC,EAAEkhB,EAAE,EAAEC,EAAE,EAAEC,EAAE,EAAEna,MAAM,EAAEoa,KAAK,EAAC,GAAG/X,KAAAA;EAE1C,YAAA,MAAM0D,IAAI/F,MAAS,GAAA,OAAA,GAAU,QACvBwK,EAAAA,CAAAA,GAAIxK,SAAS,QAAW,GAAA,OAAA;EAE9B,YAAA,MAAMqa,QAAQ/b,WAAI,CAAA;EAAC,gBAAA,IAAI,CAACgc,QAAQ;EAAE,gBAAA,IAAI,CAACrf;EAAO,aAAA,CAAA;EAC9C,YAAA,MAAMsf,QAAQjc,WAAI,CAAA;EAAC,gBAAA,IAAI,CAACgc,QAAQ;EAAE,gBAAA,IAAI,CAACnf;EAAQ,aAAA,CAAA;cAE/C,MAAMqf,IAAAA,GAAOZ,gBACVJ,UAAU,CAACS,IACX/R,QAAQ,CAACiS,EACTV,CAAAA,CAAAA,UAAU,CAAC,IAAI,CAACxhB,YAAY,CAACwhB,UAAU,GAAG,IAAI,CAACxhB,YAAY,CAACwhB,UAAU,CAAC1kB,CAAAA,EAAGgE,CAAKjE,CAAAA,GAAAA,SAAAA,CAAAA;EAElF0lB,YAAAA,IAAI,CAAChQ,CAAE,CAAA,CAACmK,aAAayF,KAAQC,GAAAA,KAAAA,GAAQP,QAAQnO,CAAI,GAAA,IAAI,CAACmH,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK,CAAA;EACvFmF,YAAAA,IAAI,CAACzU,CAAE,CAAA,CAAC4O,aAAa4F,KAAQT,GAAAA,KAAAA,GAAQnO,IAAI,IAAI,CAACmH,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,GAAG8E,KAAAA,CAAAA;cAElF,MAAMK,GAAAA,GAAMD,KAAKhF,UAAWzgB,CAAAA,CAAAA,CAAAA,CAAAA;cAC5B0lB,GAAI5P,CAAAA,KAAK,GAAG4P,GAAI5P,CAAAA,KAAK,CAACtU,MAAM,CAACxB,CAAAA,CAAAA,GAAKA,CAAM,KAAA,EAAA,CAAA;EAExC0lB,YAAAA,GAAAA,CAAIhe,KAAK,GAAGge,GAAI5P,CAAAA,KAAK,CAACxT,MAAM,GAAGpC,IAAAA,CAAK+a,IAAI,CAACnC,WAAI4M,CAAAA,GAAAA,CAAIC,MAAM,CAAK,CAAA,GAAA,CAAA;EAE5DD,YAAAA,GAAAA,CAAI/d,MAAM,GAAG+d,GAAAA,CAAI5P,KAAK,CAACxT,MAAM,GAAGpC,IAAK+a,CAAAA,IAAI,CAACyK,GAAAA,CAAI5P,KAAK,CAACxT,MAAM,GAAGmjB,IAAKf,CAAAA,UAAU,MAAMS,EAAK,GAAA,CAAA;cAEvF,OAAOO,GAAAA;EAET;EAEA,wCACA,SAASE,eAAgBlhB,CAAAA,GAAAA,GAAM,EAAE,EAAA;EAC/B,YAAA,IAAIoZ,MAAS,GAAA,CAAA;cAEbpZ,GAAIzC,CAAAA,OAAO,CAACqL,CAAAA,KAAAA,GAAAA;EACV,gBAAA,MAAMuY,OAAOnhB,GAAG,CAAC4I,KAAMtJ,CAAAA,CAAC,GAAG,CAAE,CAAA;kBAE7B,MAAMgN,CAAAA,GAAI1D,KAAMrC,CAAAA,MAAM,IAAI2U,UAAAA,IAAc,CAACtS,KAAMrC,CAAAA,MAAM,IAAI,CAAC2U,UAAa,GAAA,OAAA,GAAU,UAC3EnK,CAAInI,GAAAA,KAAAA,CAAMrC,MAAM,IAAI2U,UAAc,IAAA,CAACtS,MAAMrC,MAAM,IAAI,CAAC2U,UAAAA,GAAa,QAAW,GAAA,OAAA;EAElF,gBAAA,IAAI,CAACiG,IAAM,EAAA;sBACT/H,MAAS,GAAA,CAAA;EACX,iBAAA,MACK,IAAI+H,IAAK7H,CAAAA,QAAQ,GAAG6H,IAAI,CAACpQ,CAAE,CAAA,GAAG,CAAInI,GAAAA,KAAAA,CAAM0Q,QAAQ,GAAG1Q,KAAK,CAACmI,CAAAA,CAAE,GAAG,CAAG,EAAA;EACpE,oBAAA,IAAIqI,MAAQ,EAAA;EACVxQ,wBAAAA,KAAAA,CAAMwQ,MAAM,GAAG+H,IAAI,CAAC7U,CAAE,CAAA;0BACtB8M,MAAS,GAAA,CAAA;EACX,qBAAA,MACKA,MAAS,GAAA,CAAA;EAChB;EACF,aAAA,CAAA;EACF;EAEA,QAAA,IAAIgI,WAAW,EAAE;UACjB,SAASC,cAAAA,CAAejI,SAAS,CAAC,EAAA;cAEhC,MAAM,EAAC2G,UAAU,EAAEtR,QAAQ,EAAC,GAAG,IAAI,CAACjQ,YAAY,CAACkL,WAAW;EAC5D,YAAA,MAAM4X,cAAc,IAAI,CAAC9iB,YAAY,CAACkL,WAAW,CAACgF,OAAO;EAEzD;;;EAGC,UACD0S,QAAWhY,GAAAA,MAAAA,CACRnJ,GAAG,CAAC,CAAC3E,CAAGgE,EAAAA,CAAAA,GAAAA;EAEP,gBAAA,MAAMkhB,EAAK,GAAA,OAAOT,UAAe,KAAA,UAAA,GAAaA,UAAWzkB,CAAAA,CAAAA,EAAGgE,CAAKygB,CAAAA,GAAAA,UAAAA,EAC3DU,EAAK,GAAA,OAAOa,WAAgB,KAAA,UAAA,GAAaA,WAAYhmB,CAAAA,CAAAA,EAAGgE,CAAKgiB,CAAAA,GAAAA,WAAAA,EAC7DZ,EAAK,GAAA,OAAOjS,QAAa,KAAA,UAAA,GAAaA,QAASnT,CAAAA,CAAAA,EAAGgE,CAAKmP,CAAAA,GAAAA,QAAAA,EACvD6K,QAAW,GAAA,IAAI,CAACQ,YAAY,CAACxe,CAAAA,CAAAA;EAEnC,gBAAA,MAAM0kB,UAAa,GAAA,IAAI,CAACxhB,YAAY,CAACwhB,UAAU,GAAG,IAAI,CAACxhB,YAAY,CAACwhB,UAAU,CAAC1kB,CAAAA,EAAGgE,KAAKohB,EAAK,GAAA,GAAA;EAC5F,gBAAA,MAAM9X,KAAQ,GAAA;EAACtN,oBAAAA,CAAAA;EAAGgE,oBAAAA,CAAAA;EAAGkhB,oBAAAA,EAAAA;EAAIC,oBAAAA,EAAAA;EAAIC,oBAAAA,EAAAA;EAAIV,oBAAAA,UAAAA;EAAY1G,oBAAAA,QAAAA;sBAAU/S,MAAQ,EAAA,IAAI,CAACgb;EAAc,iBAAA;kBAClF,OAAO3Y,KAAAA;EAET,aAAA,CAAA;EAEF,YAAA,MAAM4Y,WAAW,IAAI,CAAClb,MAAM,KAAK,SAC7B,IAAI,CAACmT,QAAQ,CAACC,SAAS,EACvB0H,GAAAA,QAAAA,CAAS5J,MAAM,CAAC,CAACjc,GAAGD,CAAGgE,EAAAA,CAAAA,GAAAA;kBACvB,MAAM,EAACga,QAAQ,EAAC,GAAGhe,CAAAA;EACnB,gBAAA,MAAMmmB,YAAe,GAAA,CAACniB,CAClB8hB,GAAAA,QAAAA,CAASxjB,MAAM,KAAK,CAClB0d,GAAAA,UAAU,CAAC,CAAA,CAAE,GACbhC,QAAAA,IAAY8H,QAAQ,CAAC9hB,CAAI,GAAA,CAAA,CAAE,CAACga,QAAQ,GAAGA,QAAO,IAChDA,QAAYA,IAAAA,QAAW8H,GAAAA,QAAQ,CAAC9hB,CAAAA,GAAI,CAAE,CAAA,CAACga,QAAQ,CAAD;EAClD,gBAAA,MAAMoI,SAAYlmB,GAAAA,IAAAA,CAAKsV,GAAG,CAACwI,QAAWmI,GAAAA,YAAAA,CAAAA;EAEtC,gBAAA,MAAME,YAAeriB,GAAAA,CAAAA,IAAK8hB,QAASxjB,CAAAA,MAAM,GAAG,CACxCwjB,GAAAA,QAAAA,CAASxjB,MAAM,KAAK,IAClB0d,UAAU,CAAC,CAAE,CAAA,GACbhC,YAAYA,QAAAA,GAAW8H,QAAQ,CAAC9hB,CAAI,GAAA,CAAA,CAAE,CAACga,QAAQ,CACjDA,GAAAA,QAAAA,IAAYA,QAAAA,GAAW8H,QAAQ,CAAC9hB,CAAAA,GAAI,CAAE,CAAA,CAACga,QAAQ,CAAD;EAClD,gBAAA,MAAMsI,SAAYpmB,GAAAA,IAAAA,CAAKsV,GAAG,CAACwI,QAAWqI,GAAAA,YAAAA,CAAAA;EACtC,gBAAA,MAAMlJ,MAAM,IAAI,CAACnS,MAAM,KAAK,UAAU,CAAI,GAAA,CAAA;EAC1C,gBAAA,OAAO8N,WAAI,CAAA;sBAACA,WAAI,CAAA;EAACsN,wBAAAA,SAAAA;EAAWE,wBAAAA;uBAAU,CAAInJ,GAAAA,GAAAA;EAAKld,oBAAAA;EAAE,iBAAA,CAAA;eAChD,EAAA,CAAA,CAAA;cAEL6lB,QAAWA,GAAAA,QAAAA,CAASnhB,GAAG,CAAC2I,CAAAA,KAAAA,GAAAA;EACtBA,gBAAAA,KAAAA,CAAM+X,KAAK,GAAGa,QAAW5Y,GAAAA,KAAAA,CAAM6X,EAAE,GAAG,CAAA;EACpC,gBAAA,MAAMO,GAAMT,GAAAA,kBAAAA,CAAmB5gB,IAAI,CAAC,IAAI,CAAEiJ,CAAAA,KAAAA,CAAAA;kBAC1C,OAAOlM,MAAAA,CAAOgB,MAAM,CAACsjB,GAAKpY,EAAAA,KAAAA,CAAAA;EAC5B,aAAA,CAAA;EAEA,YAAA,MAAMiZ,eAAkBT,GAAAA,QAAAA,CAASnV,KAAK,EAAA,CAAGkD,OAAO,EAAA;cAChDiS,QAAS7jB,CAAAA,OAAO,CAACqL,CAAAA,KAAAA,GAAAA;EACf,gBAAA,MAAM,EAAC6X,EAAE,EAAEnhB,CAAC,EAAEga,QAAQ,EAAC,GAAG1Q,KAAAA;kBAC1B,MAAMkZ,QAAAA,GAAW5G,aAAa,OAAU,GAAA,QAAA;EACxC,gBAAA,IAAIiG,IAAO7hB,GAAAA,CAAAA,GAAIuiB,eAAgBE,CAAAA,IAAI,CAAC,CAACpgB,CAAAA,GAAMA,CAAErC,CAAAA,CAAC,GAAGA,CAAAA,IAAK,CAACqC,CAAAA,CAAEqgB,SAAS,CAAI,GAAA,KAAA;EACtE,gBAAA,IAAI1iB,CAAM8hB,KAAAA,QAAAA,CAASxjB,MAAM,GAAG,CAAG,EAAA;EAC7B,oBAAA,MAAOujB,IAAQ7H,IAAAA,QAAAA,GAAW1Q,KAAK,CAACkZ,SAAS,GAAG,CAAA,GAAIrB,EAAKU,GAAAA,IAAAA,CAAK7H,QAAQ,GAAG6H,IAAI,CAACW,QAAAA,CAAS,GAAG,CAAG,CAAA;EACvFX,wBAAAA,IAAAA,CAAKa,SAAS,GAAG,IAAA;0BACjBb,IAAOU,GAAAA,eAAAA,CAAgBE,IAAI,CAAC,CAACpgB,CAAAA,GAAMA,CAAErC,CAAAA,CAAC,GAAGA,CAAAA,IAAK,CAACqC,CAAAA,CAAEqgB,SAAS,CAAA;EAC5D;EACF;EACApZ,gBAAAA,KAAAA,CAAMoZ,SAAS,GAAGb,IAAAA,GAAO7H,QAAW1Q,GAAAA,KAAK,CAACkZ,QAAS,CAAA,GAAG,CAAIrB,GAAAA,EAAAA,GAAKU,KAAK7H,QAAQ,GAAG6H,IAAI,CAACW,QAAAA,CAAS,GAAG,CAAI,GAAA,KAAA;EACtG,aAAA,CAAA;EAEA,YAAA,IAAI1I,SAAS,CAAG8H,EAAAA,eAAAA,CAAgBvhB,IAAI,CAAC,IAAI,CAAEyhB,CAAAA,QAAAA,CAAAA;EAE7C;UAEAC,cAAe1hB,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;UACxB,MAAMsiB,aAAAA,GAAgB,IAAI,CAACC,YAAY,IAAId,QAASxI,CAAAA,IAAI,CAACtd,CAAAA,CAAKA,GAAAA,CAAAA,CAAE0mB,SAAS,CAAA;EACzE,QAAA,IAAIC,aAAeZ,EAAAA,cAAAA,CAAe1hB,IAAI,CAAC,IAAI,CAAE,CAAA,CAAA,CAAA;EAE7C;;;EAGC,QACD,MAAMwiB,UAAa,GAAA;EAAC,YAAA,CAAA;EAAG,YAAA;WAAE,CACtBliB,GAAG,CAACuU,CAAAA,KAAAA,GAAAA;cACH,MAAM5L,KAAAA,GAAQwY,QAAQ,CAAC5M,KAAAA,GAAQ4M,SAASxjB,MAAM,GAAG,IAAI,CAAE,CAAA;cACvD,IAAI,CAACgL,OAAO,OAAO,CAAA;cACnB,MAAM,EAAC3F,MAAM,EAAEqW,QAAQ,EAAE/S,MAAM,EAAEvD,KAAK,EAAC,GAAG4F,KAAAA;cAC1C,MAAMwZ,YAAAA,GAAe5N,QAAQ8G,UAAU,CAAC,EAAE,GAAGA,UAAU,CAAC,CAAE,CAAA;cAC1D,MAAM+G,SAAAA,GAAY,CAAC9b,MAAAA,IAAU,CAAC2U,UAAajY,GAAAA,MAAAA,GAASD,KAAI,IAAK,CAAA;EAC7D,YAAA,IAAIxH,KAAKsV,GAAG,CAACwI,QAAW8I,GAAAA,YAAAA,CAAAA,IAAiBC,WAAW,OAAO,CAAA;EAC3D,YAAA,MAAMC,KAAQD,GAAAA,SAAAA,IAAa/I,QAAAA,GAAW8I,YAAW,CAAA;cACjD,OAAO5mB,IAAAA,CAAKsV,GAAG,CAACwR,KAAAA,CAAAA;EAClB,SAAA,CAAA;UAEF,MAAM,CAAC1O,KAAO6G,EAAAA,IAAAA,CAAK,GAAGtD,KAAAA;EACtB,QAAA,MAAMuG,QAAW,GAAA;cAAC9J,KAAQuO,GAAAA,UAAU,CAAC,CAAE,CAAA;cAAE1H,IAAO0H,GAAAA,UAAU,CAAC,CAAE;EAAC,SAAA;UAC9D,IAAI,IAAI,CAACxE,MAAM,EAAE;EACf,YAAA,IAAI,IAAI,CAACA,MAAM,CAAC,EAAE,KAAKtiB,SAAAA,EAAWqiB,QAAQ,CAAC,EAAE,GAAG,IAAI,CAACC,MAAM,CAAC,CAAE,CAAA;cAC9D,IAAI,IAAI,CAACA,MAAM,CAAC,IAAI,CAACA,MAAM,CAAC/f,MAAM,GAAG,CAAA,CAAE,KAAKvC,SAAAA,EAAWqiB,QAAQ,CAAC,CAAE,CAAA,GAAG,IAAI,CAACC,MAAM,CAAC,IAAI,CAACA,MAAM,CAAC/f,MAAM,GAAG,CAAE,CAAA;EAC1G;UAEA,IAAI8f,QAAQ,CAAC,CAAE,CAAA,KAAK9J,SAAS8J,QAAQ,CAAC,CAAE,CAAA,KAAKjD,IAAM,EAAA;cACjDgD,QAAS9d,CAAAA,IAAI,CAAC,IAAI,CAAE+d,CAAAA,QAAAA,CAAAA;EACpB2D,YAAAA,cAAAA,CAAe1hB,IAAI,CAAC,IAAI,CAAA,CAAEsiB,gBAAgB,CAAI,GAAA,CAAA,CAAA;EAChD;EAEA,QAAA,MAAMM,cAAcnO,WAAIgN,CAAAA,QAAAA,EAAUzf,CAAAA,CAAKA,GAAAA,CAAAA,CAAEsB,MAAM,CAAK,IAAA,CAAA;EACpD,QAAA,IAAI,CAACse,cAAc,GAAGrG,UAAAA,IAAc,IAAI,CAACqG,cAAc,KAAKlmB,SACxD+lB,GAAAA,QAAAA,CAASxI,IAAI,CAAChQ,CAAAA,KAAAA,GAAAA;cACd,MAAM,EAACtJ,CAAC,EAAE2D,MAAM,EAAEqW,QAAQ,EAAE0I,SAAS,EAAC,GAAGpZ,KAAAA;EACzC,YAAA,MAAMuY,IAAOC,GAAAA,QAAQ,CAAC9hB,CAAAA,GAAI,CAAE,CAAA;cAC5B,OAAO0iB,SAAAA,IAAa1iB,CAAK6hB,IAAAA,IAAAA,CAAK7H,QAAQ,GAAG6H,KAAKle,MAAM,GAAG,CAAIqW,GAAAA,QAAAA,GAAWrW,MAAS,GAAA,CAAA;WAC5E,CAAA,GAAA,IAAI,CAACse,cAAc;EAE1B,QAAA,MAAMiB,YAAe,GAAA,IAAI,CAACN,YAAY,GAAG9N,WAAAA,CAAIgN,QAAU9lB,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAE8d,MAAM,IAAI,CAAK,CAAA,GAAA,CAAA;UAC7EgI,QAAS7jB,CAAAA,OAAO,CAACqL,CAAAA,KAASA,GAAAA,KAAAA,CAAMwQ,MAAM,GAAGxQ,KAAAA,CAAMwQ,MAAM,GAAGoJ,YAAe,GAAA,CAAA,CAAA;EAEvE,QAAA,MAAMC,QAAQ,IAAI,CAACjH,MAAM,KAAK,SAAS,CAAI6E,GAAAA,KAAAA;EAC3C,QAAA,MAAM9W,MAAS,GAAA,IAAI,CAACgQ,YAAY,GAAG;EACjC,YAAA,CAACtW,MAAO,GAAE,CAACmR,WAAIgN,CAAAA,QAAAA,EAAUzf,CAAAA,CAAAA,GAAKnG,IAAK+a,CAAAA,IAAI,CAAC5U,CAAC,CAACA,CAAE4E,CAAAA,MAAM,IAAI,CAAC2U,UAAa,GAAA,OAAA,GAAU,QAAS,CAAA,GAAGvZ,EAAEyX,MAAM,CAAA,CAAA,IAAM,CAAA,KAAMgI,QAAAA,CAASxjB,MAAM,GAAGsU,IAAI,CAAA,CAAA;cACpI,CAAClP,KAAAA,GAAQsY,UAAU,CAACA,UAAAA,CAAW1d,MAAM,GAAG,CAAE,CAAA,GAAG0d,UAAU,CAAC,CAAE,CAAA;EAC1D,YAAA,CAACzX,CAAE,GAAEyX,UAAU,CAAC,CAAE;EACpB,SAAA;UAEA/R,MAAM,CAACtG,MAAO,CAAA,GAAGmR,WAAI,CAAA;EAAC,YAAA,IAAI,CAACsO,QAAQ;EAAEnZ,YAAAA,MAAM,CAACtG,MAAO;EAAC,SAAA,CAAA;EAEpDyY,QAAAA,MAAM,CAAC,IAAI,CAAClJ,OAAO,CAAC,IAAI6N,KAAAA;UACxB3E,MAAM,CAACxC,SAAS,GAAG,IAAI,CAACyJ,SAAS,KAAKtnB,YAAY+Y,WAAI,CAAA;EAAC,YAAA,IAAI,CAACuO,SAAS;EAAEF,YAAAA;EAAM,SAAA,CAAA,GAAI,IAAI,CAAC,CAAC,CAAC,EAAExf,MAAAA,CAAAA,CAAQ,CAAC,GAAGyY,MAAM,CAAC,IAAI,CAAClJ,OAAO,CAAC,GAAGjJ,MAAM,CAACtG,OAAO,GAAGiP,CAAAA;EAC9I3I,QAAAA,MAAM,CAACtG,MAAAA,CAAO,IAAIyY,MAAM,CAACxC,QAAAA,CAAS,GAAGwC,MAAM,CAAC,IAAI,CAAClJ,OAAO,CAAC;UACzDjJ,MAAM,CAACzF,EAAE,GAAG,IAAI,CAAC8e,MAAM,KAAK,UAAU,IAAI,CAACvH,QAAQ,GAC/C,IAAI,CAACuH,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE3f,QAAQ,CAAC,GAAGsG,MAAM,CAACtG,MAAAA,CAAO,GAAG,IAAI,CAACoY,QAAQ,GAC3E,IAAI,CAAC,CAAC,CAAC,EAAEpY,MAAQ,CAAA,CAAA,CAAC,GAAG,CAAIsG,GAAAA,MAAM,CAACtG,MAAAA,CAAO,GAAG,CAAA;UAE9C,MAAMyE,KAAAA,GAAQ3C,SAAK,CAAC,cAAc,EAAE,IAAI,CAACnG,KAAK,CAAA,CAAE,EAAE;EAACT,YAAAA;EAAM,SAAA,CAAA;UACzD,IAAI,CAACoJ,MAAM,GAAGG,KAAAA;UAEd,MAAMmb,IAAAA,GAAO9d,SAAK,QAAU,EAAA;cAAC5G,MAAQuJ,EAAAA;EAAK,SAAA,CAAA,CAAGxG,SAAS,CAAC,MACpDzB,CAAAA,CAAAA,IAAI,CAAC,CAAC,IAAI,CAACkjB,SAAS,KAAK,CAAA,GAAI,IAAI,CAACG,KAAK,IAAI,IAAI,CAACxc,MAAM,KAAK,KAAS,IAAA,CAAC,IAAI,CAACyc,QAAQ,GAAG3Z,MAAAA,GAAS2O,KAAQ,GAAA,EAAE,EAAE9X,GAAG,CAAC3E,CAAAA,KAAM;kBAACmI,EAAInI,EAAAA;EAAC,aAAA,CAAKA,CAAAA,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEmI,EAAE,CAAA;EAE3Iof,QAAAA,IAAAA,CAAKvf,IAAI,EAAG1B,CAAAA,UAAU,CAACD,CACpBL,CAAAA,CAAAA,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA,CAChBnF,IAAI,CAAC,IAAI,CAACqe,aAAa,CAAC7a,IAAI,CAAC,IAAI,GACjC4D,MAAM,EAAA;UAETsf,IAAKxhB,CAAAA,KAAK,GAAGV,MAAM,CAAC,QACfW,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA,CAChBA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE6Z,MAAO,CAAA,CAAC,CAAC,CACnChf,CAAAA,IAAI,CAAC,IAAI,CAACqe,aAAa,CAAC7a,IAAI,CAAC,IAAI,CAAG,EAAA,IAAA,CAAA,CACtCoC,KAAK,CAAC8gB,IAAAA,CAAAA,CAAMjhB,UAAU,CAACD,CACrBL,CAAAA,CAAAA,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA,CAChBnF,IAAI,CAAC,IAAI,CAACqe,aAAa,CAAC7a,IAAI,CAAC,IAAI,CAAA,CAAA;EAEtC,QAAA,MAAMqjB,YAAY5Z,MAAOtM,CAAAA,MAAM,CAAC,CAACxB,CAAAA,EAAGgE,IAAM8hB,QAAQ,CAAC9hB,CAAE,CAAA,CAAC8R,KAAK,CAACxT,MAAM,IAAI,CAACma,KAAAA,CAAM9a,QAAQ,CAAC3B,CAAAA,CAAAA,CAAAA;EAEtF,QAAA,MAAM2nB,UAAU7B,QAASxI,CAAAA,IAAI,CAACtd,CAAAA,CAAAA,GAAKA,EAAEiL,MAAM,CAAA;EAE3C,QAAA,IAAI2c,WAAWnL,KAAMtb,CAAAA,MAAM,CAACumB,SACzB/iB,CAAAA,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAAA;cAEH,MAAMmE,IAAAA,GAAO2hB,SAASW,IAAI,CAACoB,CAAAA,EAAMA,GAAAA,EAAAA,CAAG7nB,CAAC,KAAKA,CAAAA,CAAAA;EAE1C,YAAA,MAAMsf,IAAO,GAAA,IAAI,CAACd,YAAY,CAACxe,CAAAA,CAAAA;EAC/B,YAAA,MAAMqlB,KAAQlhB,GAAAA,IAAAA,GAAOA,IAAKkhB,CAAAA,KAAK,GAAG,CAAA;EAClC,YAAA,MAAMvP,QAAQ3R,IAAOA,GAAAA,IAAAA,CAAK2R,KAAK,CAACxT,MAAM,GAAG,CAAA;EACzC,YAAA,MAAMoiB,UAAavgB,GAAAA,IAAAA,GAAOA,IAAKugB,CAAAA,UAAU,GAAG,CAAA;EAC5C,YAAA,MAAMS,EAAKhhB,GAAAA,IAAAA,GAAOA,IAAKghB,CAAAA,EAAE,GAAG,CAAA;cAE5B,MAAM2C,WAAAA,GAAc3jB,QAAQ,IAAI,CAACyiB,YAAY,GAAGziB,IAAAA,CAAK2Z,MAAM,GAAG,CAAA;cAE9D,MAAMiK,UAAAA,GAAanI,aAAayF,KAAQpX,GAAAA,MAAAA,CAAOvG,KAAK,GAAG0Y,MAAM,CAAC,IAAI,CAACvC,SAAS,CAACD,QAAQ,CAAC,GAAGmH,KAAQ3E,GAAAA,MAAM,CAAC,IAAI,CAAClJ,OAAO,CAAC,GAAGN,CAAAA;EAExH,YAAA,MAAMkH,MAASsC,GAAAA,MAAM,CAACxC,QAAAA,CAAS,EACzBlU,IAAAA,GAAO,CAACqb,KAAQ+C,GAAAA,WAAU,KAAMhI,OAAO,EAAC,GAAI,CAAA,CAAA,EAC5CkI,IAAOlI,GAAAA,IAAAA,GAAO7R,MAAM,CAACzF,EAAE,GAAGyF,MAAM,CAACtG,MAAAA,CAAO,GAAGmW,MAAAA,GAAS7P,MAAM,CAACzF,EAAE,GAAGsV,MAAAA;EAEtE,YAAA,MAAMmK,UAAa,GAAA;kBACjB9f,EAAInI,EAAAA,CAAAA;EACJ8R,gBAAAA,WAAAA,EAAa6V,WAAWxjB,IACpB,GAAA;EACAoE,oBAAAA,CAAAA,EAAG,CAACpE,IAAKuD,CAAAA,KAAK,GAAG,CAAIvD,GAAAA,IAAAA,CAAKihB,EAAE,GAAG,CAAA;sBAC/B5c,CAAG,EAAA,IAAI,CAAC0O,OAAO,KAAK,QAAA,GAAWxN,IAAO,GAACvF,CAAAA,IAAAA,CAAKuD,KAAK,GAAGgd,UAAa5O,GAAAA,KAAI,IAAK,CAAIqP,GAAAA,EAAAA,GAAKzb,IAAO,GAAA,CAAA,GAAI,CAACvF,IAAKuD,CAAAA,KAAK,GAAGgd,UAAAA,GAAa5O,KAAI,IAAK,CAAIqP,GAAAA,EAAAA;EACtIzd,oBAAAA,KAAAA,EAAOvD,KAAKuD,KAAK;EACjBC,oBAAAA,MAAAA,EAAQxD,KAAKwD;mBACX,GAAA;EACFY,oBAAAA,CAAAA,EAAGqX,UAAa,GAAA,CAACyF,KAAQ,GAAA,CAAA,GAAI,IAAI,CAACnO,OAAO,KAAK,MAAS,GAAA,CAAC6Q,UAAanR,GAAAA,CAAAA,GAAIlN,OAAOA,IAAOkN,GAAAA,CAAAA;EACvFpO,oBAAAA,CAAAA,EAAGoX,UAAa,GAAA,IAAI,CAAC1I,OAAO,KAAK,QAAA,GAAWxN,IAAOyb,GAAAA,EAAAA,GAAKzb,IAAOud,GAAAA,WAAAA,GAAc9B,EAAK,GAAA,CAACE,KAAQ,GAAA,CAAA;EAC3F3d,oBAAAA,KAAAA,EAAOkY,aAAayF,KAAQ0C,GAAAA,UAAAA;EAC5BpgB,oBAAAA,MAAAA,EAAQiY,aAAaqH,WAAc5B,GAAAA;EACrC,iBAAA;kBACFpa,MAAQ9G,EAAAA,IAAAA,GAAOA,IAAK8G,CAAAA,MAAM,GAAG,KAAA;EAC7BvB,gBAAAA,IAAAA,EAAMoE,OAAOnM,QAAQ,CAAC3B,MAAO,IAAI,CAACgL,MAAM,KAAK,KAAA,IAAS9K,KAAK6a,KAAK,CAAC7a,KAAKsV,GAAG,CAACxV,MAAM,CAAM,KAAA,CAAA,GAAK0J,OAAO+S,KAAM9a,CAAAA,QAAQ,CAAC3B,CAAKE,CAAAA,GAAAA,IAAAA,CAAK+a,IAAI,CAACvR,IAAAA,GAAO,KAAK,IAAI,CAAC7D,KAAK,CAAC4gB,IAAI,CAACpgB,CAAAA,CAAAA,GAAK,CAACA,CAAMrG,KAAAA,CAAAA,CAAAA,GAAKE,KAAK+a,IAAI,CAACvR,OAAO,CAAK,CAAA,GAAA,CAAA;EACnM6E,gBAAAA,IAAAA,EAAM,CAAEpK,CAAAA,IAAAA,IAAQ,EAAC,EAAGuiB,SAAS,IAAI5Y,MAAOnM,CAAAA,QAAQ,CAAC3B,CAAAA,CAAAA,GAAKygB,WAAWzgB,CAAK,CAAA,GAAA,KAAA;kBACtEuhB,IAAM9E,EAAAA,KAAAA,CAAM9a,QAAQ,CAAC3B,CAAAA,CAAAA;EACrB,gBAAA,CAACuI,IAAI+W,IAAAA,IAAQ,IAAI,CAACtU,MAAM,KAAK,MAAS,GAAA,IAAI,CAACmT,QAAQ,CAACC,SAAS,EAAA,GAAK,IAAI,CAAA,CAAA;EACtE,gBAAA,CAAC5V,IAAIwf;EACP,aAAA;cAEA,OAAOC,UAAAA;EAET,SAAA,CAAA;EAEF,QAAA,IAAI,IAAI,CAAC/H,MAAM,KAAK,MAAQ,EAAA;EAC1B0H,YAAAA,QAAAA,GAAWA,SAASzmB,MAAM,CAACymB,QAASjjB,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAAA;EACtC,gBAAA,MAAMkoB,IAAO9mB,GAAAA,MAAAA,CAAOgB,MAAM,CAAC,EAAIpC,EAAAA,CAAAA,CAAAA;EAC/BkoB,gBAAAA,IAAI,CAAC1f,CAAAA,CAAE,IAAIxI,CAAAA,CAAE0J,IAAI;kBACjB,OAAOwe,IAAAA;EACT,aAAA,CAAA,CAAA;EACF;EAEA,QAAA,IAAIpR,MAAM,CAAC,IAAI,CAACoJ,MAAM,CAAC,EACpB/b,CAAAA,IAAI,CAACyjB,QAAAA,CAAAA,CACLhkB,QAAQ,CAAC,IAAI,CAACC,SAAS,CAAA,CACvBuK,WAAW,CAAC;cACX+Z,QAAUnoB,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,IAAKA,CAAEsC,CAAAA,MAAM,GAAG,CAAGtC,EAAAA,CAAAA,CAAE,GAAG,CAAC,GAAG,EAAA;EAC3CiL,YAAAA,MAAAA,EAAQjL,CAAAA,CAAKA,GAAAA,CAAAA,CAAEiL,MAAM,GAAG,GAAM,GAAA;WAE/B7F,CAAAA,CAAAA,MAAM,CAACqE,QAAAA,CAAK,SAAW,EAAA;cAAC5G,MAAQuJ,EAAAA;EAAK,SAAA,CAAA,CAAG1G,IAAI,EAAA,CAAA,CAC5C7D,MAAM,CAAC2B,WAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACnB,YAAY,CAAA,CAAA,CAC9CkL,WAAW,CAAC;cAACgF,OAAS,EAAA;EAAC,SAAA,CAAA,CACvBnO,MAAM,EAAA;EAET,QAAA,MAAM0Y,MAAMvR,KAAMxG,CAAAA,SAAS,CAAC,UAAA,CAAA,CAAYzB,IAAI,CAAC;EAAC,YAAA;EAAK,SAAA,CAAA;EAEnDwZ,QAAAA,GAAAA,CAAI5X,KAAK,EAAGV,CAAAA,MAAM,CAAC,MACdW,CAAAA,CAAAA,IAAI,CAAC,OAAS,EAAA,KAAA,CAAA,CACdA,IAAI,CAAC,WAAW,CAChBnF,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAAC6c,YAAY,CAACrZ,IAAI,CAAC,IAAI,GAClCoC,KAAK,CAACkX,KAAKrX,UAAU,CAACD,GACpBL,IAAI,CAAC,WAAW,CAChBnF,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAAC6c,YAAY,CAACrZ,IAAI,CAAC,IAAI,CAAA,CAAA;UAErC,IAAI,CAAC+jB,WAAW,CACbjkB,IAAI,CAAC,IAAI,CAACqgB,MAAM,GAAG;EAAC,YAAA;kBAACjW,IAAM,EAAA,IAAI,CAACiW;EAAM;EAAE,SAAA,GAAG,EAAE,CAC7C5gB,CAAAA,QAAQ,CAAC,IAAI,CAACC,SAAS,CAAA,CACvB8D,MAAM,CAACyY,MAAM,CAAC,IAAI,CAAClJ,OAAO,CAAC,CAC3BjM,CAAAA,MAAM,CAAC,IAAI,CAACiM,OAAO,KAAK,MAAS,GAAA,MAAM,IAAI,CAACA,OAAO,KAAK,UAAU,EAAK,GAAA,CAAA,CAAA,CACvE9R,MAAM,CAACqE,SAAK,qBAAuB,EAAA;cAAC5G,MAAQuJ,EAAAA;EAAK,SAAA,CAAA,CAAG1G,IAAI,EAAA,CAAA,CACxD6I,IAAI,CAACvO,CAAAA,CAAKA,GAAAA,CAAAA,CAAEuO,IAAI,CAAA,CAChBoE,aAAa,CAAC,QACdjL,CAAAA,CAAAA,KAAK,CAACmU,KAAK,CAACA,KAAMvZ,CAAAA,MAAM,GAAG,CAAA,CAAE,GAAGuZ,KAAK,CAAC,CAAE,CAAA,CAAA,CACxCtT,CAAC,CAACqX,UAAa/D,GAAAA,KAAK,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC3E,OAAO,KAAK,MAASjJ,GAAAA,MAAAA,CAAO1F,CAAC,GAAG6X,OAAOI,IAAI,GAAG,CAAI,GAAC3E,CAAAA,KAAK,CAACA,KAAAA,CAAMvZ,MAAM,GAAG,CAAA,CAAE,GAAGuZ,KAAK,CAAC,CAAA,CAAE,IAAI,IAAI5N,MAAO1F,CAAAA,CAAC,GAAG0F,MAAAA,CAAOvG,KAAK,GAAG0Y,MAAAA,CAAOE,KAAK,GAAG,IAAI,CAACzE,KAAK,CAACA,KAAMvZ,CAAAA,MAAM,GAAG,CAAA,CAAE,GAAGuZ,KAAK,CAAC,CAAE,CAAD,IAAK,CAAA,CAAA,CAChNrT,CAAC,CAACoX,aAAa,IAAI,CAAC1I,OAAO,KAAK,QAAWjJ,GAAAA,MAAAA,CAAOzF,CAAC,GAAGyF,OAAOtG,MAAM,GAAGyY,MAAOG,CAAAA,MAAM,GAAGtS,MAAAA,CAAOzF,CAAC,GAAGqT,KAAK,CAAC,CAAA,CAAE,GAAIA,CAAAA,KAAK,CAACA,KAAAA,CAAMvZ,MAAM,GAAG,CAAA,CAAE,GAAGuZ,KAAK,CAAC,CAAA,CAAE,IAAI,IAAIuE,MAAM,CAAC,IAAI,CAAClJ,OAAO,CAAC,GAAG,CAAA,CAAA,CAC9KrV,MAAM,CAAC2B,UAAAA,CAAWa,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAACsgB,YAAY,GAC9C1f,MAAM,EAAA;UAET,IAAI,CAACma,UAAU,GAAG,IAAI,CAACZ,YAAY,CAACna,IAAI,CAAC,IAAI,CAAA;EAE7C,QAAA,IAAIa,UAAUgD,UAAWhD,CAAAA,QAAAA,EAAU,IAAI,CAACrB,SAAS,GAAG,GAAA,CAAA;EAEpD,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMAwkB,KAAAA,CAAMvmB,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACglB,MAAM,GAAGxlB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACwlB,MAAM;EACjE;EAEA;;;;;OAMAgB,SAAAA,CAAUxmB,CAAC,EAAE;UACX,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACic,UAAU,GAAGnd,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAACmc,UAAU,EAAEzc,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACyc,UAAU;EACzG;EAEA;;;;;OAMApa,IAAAA,CAAKrC,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuD,KAAK,GAAG/D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+D,KAAK;EAC/D;EAEA;;;;;OAMA+V,MAAAA,CAAO9Z,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACue,OAAO,GAAG/e,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+e,OAAO;EACnE;EAEA;;;;;OAMAjd,QAAAA,CAAS9B,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuB,SAAS,GAAG/B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+B,SAAS;EACvE;EAEA;;;;;OAMA0jB,IAAAA,CAAKzlB,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACklB,KAAK,GAAG1lB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC0lB,KAAK;EAC/D;EAEA;;;;;OAMAe,UAAAA,CAAWzmB,CAAC,EAAE;UACZ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACid,WAAW,GAAGne,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAACmd,WAAW,EAAEzd,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACyd,WAAW;EAC5G;EAEA;;;;;OAMAiJ,OAAAA,CAAQ1mB,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACmlB,QAAQ,GAAG3lB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC2lB,QAAQ;EACrE;EAEA;;;;;OAMAgB,QAAAA,CAAS3mB,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+kB,SAAS,GAAGvlB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACulB,SAAS;EACvE;EAEA;;;;;OAMA1f,MAAAA,CAAO7F,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC8D,OAAO,GAAGtE,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACsE,OAAO;EACnE;EAEA;;;;;OAMA0H,MAAAA,CAAOhM,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6hB,OAAO,GAAGriB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACqiB,OAAO;EACnE;EAEA;;;;;QAMA2D,WAAAA,CAAYhmB,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACskB,YAAY,GAAG9kB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC8kB,YAAY;EAC7E;EAEA;;;;;QAMA8B,aAAAA,CAAc5mB,CAAC,EAAE;EACf,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2jB,cAAc,GAAGnkB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmkB,cAAc;EACjF;EAEA;;;;;QAMA0C,OAAAA,CAAQ7mB,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACijB,QAAQ,GAAGzjB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACyjB,QAAQ;EACrE;EAEA;;;;;QAMAqD,OAAAA,CAAQ9mB,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC8kB,QAAQ,GAAGtlB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACslB,QAAQ;EACrE;EAEA;;;;;OAMAnQ,MAAAA,CAAOnV,CAAC,EAAE;UACR,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EAEpB,YAAA,MAAMsd,UAAa,GAAA;EAAC,gBAAA,KAAA;EAAO,gBAAA;eAAS,CAACje,QAAQ,CAACG,CAAAA,CAAAA,EACxC+mB,IAAO,GAAA;kBAACxI,GAAK,EAAA,QAAA;kBAAUC,KAAO,EAAA,MAAA;kBAAQC,MAAQ,EAAA,KAAA;kBAAOC,IAAM,EAAA;EAAO,aAAA;cAExE,IAAI,CAAC3C,SAAS,GAAG;EACf+B,gBAAAA,UAAAA;EACAlY,gBAAAA,KAAAA,EAAOkY,aAAa,OAAU,GAAA,QAAA;EAC9BjY,gBAAAA,MAAAA,EAAQiY,aAAa,QAAW,GAAA,OAAA;EAChCrX,gBAAAA,CAAAA,EAAGqX,aAAa,GAAM,GAAA,GAAA;EACtBpX,gBAAAA,CAAAA,EAAGoX,aAAa,GAAM,GAAA,GAAA;kBACtBhC,QAAUiL,EAAAA,IAAI,CAAC/mB,CAAE;EACnB,aAAA;EAEA,YAAA,OAAO,IAAI,CAACoV,OAAO,GAAGpV,GAAG,IAAI;EAE/B;UACA,OAAO,IAAI,CAACoV,OAAO;EACrB;EAEA;;;;;EAKA,KACA4R,WAAc,GAAA;UACZ,OAAO,IAAI,CAAC7K,YAAY;EAC1B;EAEA;;;;;OAMA7K,OAAAA,CAAQtR,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACyd,QAAQ,GAAGje,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACie,QAAQ;EACrE;EAEA;;;;;OAMAuD,YAAAA,CAAaxhB,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACihB,aAAa,GAAGzhB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACyhB,aAAa;EAC/E;EAEA;;;;;OAMAC,YAAAA,CAAa1hB,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACmhB,aAAa,GAAG3hB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC2hB,aAAa;EAC/E;EAEA;;;;;OAMA5H,KAAAA,CAAM/Z,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+f,MAAM,GAAGvgB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACugB,MAAM;EACjE;EAEA;;;;;OAMA0G,QAAAA,CAASjnB,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuf,SAAS,GAAG/f,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+f,SAAS;EACvE;EAEA;;;;;OAMAmH,uBAAAA,CAAwBlnB,CAAC,EAAE;EACzB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwf,wBAAwB,GAAGhgB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACggB,wBAAwB;EACrG;EAEA;;;;;OAMAmH,uBAAAA,CAAwBnnB,CAAC,EAAE;EACzB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2f,wBAAwB,GAAGngB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmgB,wBAAwB;EACrG;EAEA;;;;;OAMAiH,uBAAAA,CAAwBpnB,CAAC,EAAE;EACzB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACyf,wBAAwB,GAAGjgB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACigB,wBAAwB;EACrG;EAEA;;;;;OAMAoH,uBAAAA,CAAwBrnB,CAAC,EAAE;EACzB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4f,wBAAwB,GAAGpgB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACogB,wBAAwB;EACrG;EAEA;;;;;OAMAnX,KAAAA,CAAMjJ,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC0I,MAAM,GAAGlJ,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACkJ,MAAM;EACjE;EAEA;;;;;OAMAoe,YAAAA,CAAatnB,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+gB,aAAa,GAAGvhB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACuhB,aAAa;EAC/E;EAEA;;;;;OAMAje,MAAAA,CAAOtD,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6C,OAAO,GAAGC,kBAAAA,CAAOtD,IAAI,IAAG,IAAK,IAAI,CAACqD,OAAO;EAC3E;EAEA;;;;;OAMAkkB,KAAAA,CAAMvnB,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4d,MAAM,GAAGpe,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACoe,MAAM;EACjE;EAEA;;;;;OAMAjd,WAAAA,CAAYnB,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACY,YAAY,GAAGd,UAAAA,CAAO,IAAI,CAACc,YAAY,EAAEpB,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoB,YAAY;EACxG;EAEA;;;;;OAMAud,UAAAA,CAAW3e,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACoe,WAAW,GAAG5e,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC4e,WAAW;EAC3E;EAEA;;;;;OAMAjE,KAAAA,CAAM3a,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4hB,MAAM,GAAGpiB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACoiB,MAAM;EACjE;EAEA;;;;;OAMAoF,QAAAA,CAASxnB,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwiB,SAAS,GAAGhjB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgjB,SAAS;EACvE;EAEA;;;;;OAMAyE,UAAAA,CAAWznB,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2e,WAAW,GAAGnf,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmf,WAAW;EAC3E;EAEA;;;;;OAMAzB,UAAAA,CAAW1d,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACmd,WAAW,GAAG3d,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC2d,WAAW;EAC3E;EAEA;;;;;OAMA+J,KAAAA,CAAM1nB,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACkiB,MAAM,GAAG1iB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC0iB,MAAM;EACjE;EAEA;;;;;OAMAiF,WAAAA,CAAY3nB,CAAC,EAAE;UACb,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACqiB,YAAY,GAAGvjB,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAACuiB,YAAY,EAAE7iB,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAAC6iB,YAAY;EAC/G;EAEA;;;;;OAMAjd,KAAAA,CAAM5F,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4D,MAAM,GAAGpE,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACoE,MAAM;EACjE;EA/vCA;;;;EAIA,KACA/C,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACmkB,MAAM,GAAG,QAAA;UACd,IAAI,CAAC/I,UAAU,GAAG;cAChB,QAAU,EAAA,MAAA;cACV,cAAgB,EAAA;EAClB,SAAA;UACA,IAAI,CAAC1Y,KAAK,GAAG,EAAE;UACf,IAAI,CAACgb,OAAO,GAAG;EAAC,YAAA,CAAA;EAAG,YAAA;EAAG,SAAA;UACtB,IAAI,CAAChd,SAAS,GAAG,GAAA;UACjB,IAAI,CAAC0b,WAAW,GAAG;cACjB,QAAU,EAAA,MAAA;cACV,cAAgB,EAAA;EAClB,SAAA;UACA,IAAI,CAACkI,QAAQ,GAAG,KAAA;UAChB,IAAI,CAACrhB,OAAO,GAAG,GAAA;UACf,IAAI,CAACwgB,YAAY,GAAG,KAAA;UACpB,IAAI,CAACX,cAAc,GAAG,KAAA;UACtB,IAAI,CAAChP,MAAM,CAAC,QAAA,CAAA;UACZ,IAAI,CAACgH,YAAY,GAAG;cAACvW,KAAO,EAAA,CAAA;cAAGC,MAAQ,EAAA,CAAA;cAAGY,CAAG,EAAA,CAAA;cAAGC,CAAG,EAAA;EAAC,SAAA;UACpD,IAAI,CAACuX,QAAQ,GAAG,CAAA;UAChB,IAAI,CAACwD,aAAa,GAAG,GAAA;UACrB,IAAI,CAACE,aAAa,GAAG,GAAA;UACrB,IAAI,CAAC5B,SAAS,GAAG,MAAA;UACjB,IAAI,CAACC,wBAAwB,GAAG,IAAA;UAChC,IAAI,CAACG,wBAAwB,GAAG,EAAA;UAChC,IAAI,CAACF,wBAAwB,GAAG,EAAA;UAChC,IAAI,CAACG,wBAAwB,GAAG,GAAA;UAChC,IAAI,CAAClX,MAAM,GAAG,QAAA;UACd,IAAI,CAACqY,aAAa,GAAG,GAAA;UACrB,IAAI,CAACnD,MAAM,GAAG,MAAA;UACd,IAAI,CAAChd,YAAY,GAAG;cAClBwI,IAAM,EAAA,MAAA;EACN/D,YAAAA,MAAAA,EAAQ3H,CAAAA,CAAAA,GAAKA,CAAEuhB,CAAAA,IAAI,GAAG,CAAI,GAAA,CAAA;cAC1B1P,KAAO7R,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEuO,IAAI;cAClBuD,WAAa9R,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAE8R,WAAW;cAC/B1D,WAAa,EAAA;kBACX6E,SAAW,EAAA,MAAA;kBACXyW,UAAY,EAAA,KAAA;EACZvW,gBAAAA,QAAAA,EAAUpO,QAAS,CAAA,EAAA,CAAA;kBACnBqO,OAAS,EAAA,CAAA;kBACTb,UAAY,EAAA,IAAA;EACV,oBAAA,MAAMoX,MAAMC,OAAU,CAAA,IAAI,CAACzkB,OAAO,CAACO,IAAI,EAAA,CAAA;sBACvC,OAAO,IAAI,CAACwR,OAAO,KAAK,MAAA,GAASyS,GAAM,GAAA,OAAA,GAAU,KAC7C,GAAA,IAAI,CAACzS,OAAO,KAAK,OAAA,GAAUyS,MAAM,KAAQ,GAAA,OAAA,GACzC,IAAI,CAAC1D,cAAc,GAAG,IAAI,CAAC/O,OAAO,KAAK,QAAW,GAAA,KAAA,GAAQ,OAAU,GAAA,QAAA;EAC1E,iBAAA;EACAvE,gBAAAA,aAAAA,EAAe,IAAM,IAAI,CAACuE,OAAO,KAAK,QAAA,GAAW,KAAQ,GAAA,IAAI,CAACA,OAAO,KAAK,KAAA,GAAQ,QAAW,GAAA;EAC/F,aAAA;EACA1J,YAAAA,CAAAA,EAAGxN,CAAAA,CAAAA,GAAKA,CAAEuhB,CAAAA,IAAI,GAAG,CAAI,GAAA,CAAA;cACrBhW,MAAQ,EAAA,MAAA;cACR+G,WAAa,EAAA,CAAA;EACb5K,YAAAA,KAAAA,EAAO1H,CAAAA,CAAAA,GAAKA,CAAEuhB,CAAAA,IAAI,GAAG,CAAI,GAAA;EAC3B,SAAA;UACA,IAAI,CAACuD,SAAS,GAAG,CAAA;UACjB,IAAI,CAAC7D,WAAW,GAAG,QAAA;UACnB,IAAI,CAACK,SAAS,GAAG,CAAA;UACjB,IAAI,CAAC7B,WAAW,GAAG1f,SAAAA;UACnB,IAAI,CAACqoB,WAAW,GAAG,IAAIpV,OAAAA,EAAAA;UACvB,IAAI,CAAC2R,YAAY,GAAG;EAClB1R,YAAAA,SAAAA,EAAW4W,oBAAcC,IAAI;cAC7B3W,QAAU,EAAA,EAAA;cACVZ,UAAY,EAAA;EACd,SAAA;UACA,IAAI,CAACrM,MAAM,GAAG,GAAA;EAEhB;EAwrCF;;ECz4Ce,MAAM6jB,UAAmBtM,SAAAA,IAAAA,CAAAA;EAEtC;;;;EAIA,KACAta,WAAc,EAAA;UACZ,KAAK,EAAA;UACL,IAAI,CAAC8T,MAAM,CAAC,QAAA,CAAA;EACd;EAEF;;ECZe,MAAM+S,QAAiBvM,SAAAA,IAAAA,CAAAA;EAEpC;;;;EAIA,KACAta,WAAc,EAAA;UACZ,KAAK,EAAA;UACL,IAAI,CAAC8T,MAAM,CAAC,MAAA,CAAA;EACd;EAEF;;ECZe,MAAMgT,SAAkBxM,SAAAA,IAAAA,CAAAA;EAErC;;;;EAIA,KACAta,WAAc,EAAA;UACZ,KAAK,EAAA;UACL,IAAI,CAAC8T,MAAM,CAAC,OAAA,CAAA;EACd;EAEF;;ECZe,MAAMiT,OAAgBzM,SAAAA,IAAAA,CAAAA;EAEnC;;;;EAIA,KACAta,WAAc,EAAA;UACZ,KAAK,EAAA;UACL,IAAI,CAAC8T,MAAM,CAAC,KAAA,CAAA;EACd;EAEF;;ECPA,MAAM7D,OAAU,GAAA,CAAA;EAOD,MAAM+W,MAAevoB,SAAAA,SAAAA,CAAAA;EA+ElCwoB,IAAAA,YAAAA,CAAavqB,GAAG,EAAEG,CAAC,EAAEgE,CAAC,EAAE;UACtB,MAAMqmB,GAAAA,GAAM,IAAI,CAACnnB,YAAY,CAACrD,GAAI,CAAA,KAAKE,YAAY,IAAI,CAACmD,YAAY,CAACrD,GAAAA,CAAI,GAAG,IAAI,CAACqD,YAAY,CAACkL,WAAW,CAACvO,GAAI,CAAA;UAC9G,IAAI,CAACwqB,GAAOxqB,IAAAA,GAAAA,KAAQ,YAAc,EAAA,OAAO,IAAI,CAACuqB,YAAY,CAAC,UAAYpqB,EAAAA,CAAAA,EAAGgE,CAAK,CAAA,GAAA,GAAA;EAC/E,QAAA,OAAO,OAAOqmB,GAAAA,KAAQ,UAAaA,GAAAA,GAAAA,CAAIrqB,GAAGgE,CAAKqmB,CAAAA,GAAAA,GAAAA;EACjD;EAEAC,IAAAA,UAAAA,CAAWC,GAAG,EAAE;UACd,OAAOzR,WAAAA,CAAIyR,IAAI5lB,GAAG,CAAC3E,CAAAA,CAAKA,GAAAA,CAAAA,CAAE2H,MAAM,CAAExG,CAAAA,MAAM,CAACopB,GAAI5lB,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAEwqB,WAAW,CAAA,CAAA,CAAA,GAAM,IAAI,CAACzK,QAAQ;EACxF;EAEA0K,IAAAA,SAAAA,CAAUF,GAAG,EAAE;EACb,QAAA,OAAO9T,WAAI8T,CAAAA,GAAAA,CAAI5lB,GAAG,CAAC,CAAC3E,CAAGgE,EAAAA,CAAAA,GAAAA;EACrB,YAAA,MAAM4S,IAAI,IAAI,CAACmJ,QAAQ,IAAI/b,CAAMumB,KAAAA,GAAAA,CAAIjoB,MAAM,GAAG,IAAI,CAAItC,GAAAA,CAAAA,CAAE0H,KAAK,GAAG,IAAI,CAAA,CAAA;EACpE,YAAA,OAAO1H,CAAE0qB,CAAAA,UAAU,GAAG1qB,CAAAA,CAAE0H,KAAK,GAAGkP,CAAAA;EAClC,SAAA,CAAA,CAAA;EACF;EAEA;;;;;OAMA3R,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,IAAI,IAAI,CAACC,OAAO,KAAK,QAAQ,IAAI,CAACC,MAAM,CAACA,mBAAO,MAAQC,CAAAA,CAAAA,MAAM,CAAC,KAAA,CAAA,CAAOW,IAAI,CAAC,OAAA,EAAS,CAAG,EAAA,IAAI,CAACE,MAAM,CAAC,EAAE,CAAC,EAAEF,IAAI,CAAC,QAAU,EAAA,CAAA,EAAG,IAAI,CAACI,OAAO,CAAC,EAAE,CAAC,EAAEV,IAAI,EAAA,CAAA;;EAGhJ,QAAA,IAAI,CAACuG,MAAM,GAAGxC,QAAAA,CAAK,iBAAmB,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACsC;EAAO,SAAA,CAAA;EAC3D,QAAA,IAAI,CAACwlB,WAAW,GAAGlhB,QAAAA,CAAK,uBAAyB,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACoJ;EAAM,SAAA,CAAA;EACrE,QAAA,IAAI,CAAC2e,WAAW,GAAGnhB,QAAAA,CAAK,uBAAyB,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACoJ;EAAM,SAAA,CAAA;UAErE,IAAI4e,eAAAA,GAAkB,IAAI,CAACzkB,OAAO;UAClC,IAAI,CAAC0kB,YAAY,GAAG,CAAA;UACpB,IAAI,CAACC,WAAW,GAAG,CAAA;UACnB,IAAI,IAAI,CAACvG,MAAM,EAAE;cAEf,MAAM5hB,CAAAA,GAAI,IAAI,CAAC+hB,YAAY,CAACF,UAAU,IAAI,IAAI,CAAC2D,WAAW,CAAC3D,UAAU,MAC/DxkB,CAAI,GAAA,IAAI,CAAC0kB,YAAY,CAACxR,QAAQ,IAAI,IAAI,CAACiV,WAAW,CAACjV,QAAQ,EAAA,EAAA;cACjE,IAAI6X,EAAAA,GAAK,IAAI,CAACrG,YAAY,CAACD,UAAU,IAAI,IAAI,CAAC0D,WAAW,CAAC1D,UAAU,EAAA;cACpEsG,EAAKA,GAAAA,EAAAA,GAAKA,OAAO/qB,CAAI,GAAA,GAAA;cAErB,MAAMylB,GAAAA,GAAMb,aACTJ,EAAAA,CAAAA,UAAU,CAAC7hB,CAAAA,CAAAA,CACXuQ,QAAQ,CAAClT,CAAAA,CAAAA,CACTykB,UAAU,CAACsG,EACXtjB,CAAAA,CAAAA,KAAK,CAAC,IAAI,CAACxB,MAAM,CAAA,CACjByB,MAAM,CAAC,IAAI,CAACvB,OAAO,CAAA,CAAE,IAAI,CAACoe,MAAM,CAAA;cACnC,IAAI,CAACsG,YAAY,GAAGE,EAAKtF,GAAAA,GAAAA,CAAI5P,KAAK,CAACxT,MAAM,GAAG,IAAI,CAACyd,QAAQ;EACzD,YAAA,IAAI,CAACgL,WAAW,GAAGjS,WAAAA,CAAI4M,IAAIC,MAAM,CAAA;cACjCkF,eAAmB,IAAA,IAAI,CAACC,YAAY;EACtC;;UAGA,IAAI,CAACG,SAAS,GAAG,IAAI,CAACplB,KAAK,CAAClB,GAAG,CAAC,CAAC3E,CAAGgE,EAAAA,CAAAA,GAAAA;EAElC,YAAA,MAAM6N,KAAQ,GAAA,IAAI,CAAC9D,MAAM,CAAC/N,CAAGgE,EAAAA,CAAAA,CAAAA;EAC7B,YAAA,MAAMqlB,KAAQ,GAAA,IAAI,CAACnJ,MAAM,CAAClgB,CAAGgE,EAAAA,CAAAA,CAAAA;EAC7B,YAAA,MAAMwJ,IAAI,IAAI,CAAC4c,YAAY,CAAC,KAAKpqB,CAAGgE,EAAAA,CAAAA,CAAAA;EAEpC,YAAA,IAAI0hB,GAAM,GAAA;kBACRvhB,IAAMnE,EAAAA,CAAAA;EACNgE,gBAAAA,CAAAA;EACAmE,gBAAAA,EAAAA,EAAI,IAAI,CAACrC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EAChBqlB,gBAAAA,KAAAA;kBACA6B,MAAQ1d,EAAAA,CAAAA;kBACRkd,UAAYrB,EAAAA,KAAAA,KAAU,WAAW7b,CAAI,GAAA,CAAA,GAAI,IAAI,CAAC4c,YAAY,CAAC,OAAA,EAASpqB,CAAGgE,EAAAA,CAAAA,CAAAA;kBACvEwmB,WAAanB,EAAAA,KAAAA,KAAU,WAAW7b,CAAI,GAAA,CAAA,GAAI,IAAI,CAAC4c,YAAY,CAAC,QAAA,EAAUpqB,CAAGgE,EAAAA,CAAAA,CAAAA;kBACzEwE,CAAG,EAAA;EACL,aAAA;EAEA,YAAA,IAAI,CAACqJ,KAAO,EAAA;EACV6T,gBAAAA,GAAAA,CAAIyF,QAAQ,GAAG,KAAA;kBACfzF,GAAI0F,CAAAA,KAAK,GAAG,EAAE;EACd1F,gBAAAA,GAAAA,CAAI/d,MAAM,GAAG,CAAA;EACb+d,gBAAAA,GAAAA,CAAIhe,KAAK,GAAG,CAAA;kBACZ,OAAOge,GAAAA;EACT;cAEA,MAAM9iB,CAAAA,GAAI,IAAI,CAACwnB,YAAY,CAAC,YAAcpqB,EAAAA,CAAAA,EAAGgE,CACvCqnB,CAAAA,EAAAA,EAAAA,GAAK,IAAI,CAACjB,YAAY,CAAC,YAAA,EAAcpqB,GAAGgE,CACxC/D,CAAAA,EAAAA,CAAAA,GAAI,IAAI,CAACmqB,YAAY,CAAC,UAAA,EAAYpqB,CAAGgE,EAAAA,CAAAA,CAAAA;EAE3C,YAAA,MAAMgN,IAAI6Z,eAAkB,GAAC,CAAA,IAAI,CAAChlB,KAAK,CAACvD,MAAM,GAAG,CAAA,IAAK,IAAI,CAACyd,QAAQ,EAC7DtK,CAAI,GAAA,IAAI,CAACvP,MAAM;EAErB,YAAA,MAAMolB,SAASzG,aACZJ,EAAAA,CAAAA,UAAU,CAAC7hB,CAAAA,CAAAA,CACXuQ,QAAQ,CAAClT,CAAAA,CAAAA,CACTykB,UAAU,CAAC2G,IACX3jB,KAAK,CAAC+N,CACN9N,CAAAA,CAAAA,MAAM,CAACqJ,CAAGa,CAAAA,CAAAA,KAAAA,CAAAA;cAEb6T,GAAMtkB,GAAAA,MAAAA,CAAOgB,MAAM,CAACsjB,GAAK4F,EAAAA,MAAAA,CAAAA;EAEzB5F,YAAAA,GAAAA,CAAIhe,KAAK,GAAGxH,IAAK+a,CAAAA,IAAI,CAACnC,WAAI4M,CAAAA,GAAAA,CAAI5P,KAAK,CAACnR,GAAG,CAAC0B,CAAAA,CAAAA,GAAKklB,cAAUllB,CAAG,EAAA;sBAAC,aAAezD,EAAAA,CAAAA;sBAAG,WAAa3C,EAAAA;EAAC,iBAAA,CAAA,CAAA,CAAA,CAAA,GAAQmT,OAAU,GAAA,CAAA;EAC7GsS,YAAAA,GAAAA,CAAI/d,MAAM,GAAGzH,IAAK+a,CAAAA,IAAI,CAACyK,GAAAA,CAAI5P,KAAK,CAACxT,MAAM,IAAI+oB,EAAAA,GAAK,CAAA,CAAA,CAAA;EAChD3F,YAAAA,GAAAA,CAAI8F,EAAE,GAAG;EAAC7jB,gBAAAA,MAAAA,EAAQ+d,IAAI/d,MAAM;EAAED,gBAAAA,KAAAA,EAAOge,IAAIhe;EAAK,aAAA;EAC9Cge,YAAAA,GAAAA,CAAI9iB,CAAC,GAAGA,CAAAA;EACR8iB,YAAAA,GAAAA,CAAIzlB,CAAC,GAAGA,CAAAA;EACRylB,YAAAA,GAAAA,CAAI2F,EAAE,GAAGA,EAAAA;cAET,OAAO3F,GAAAA;EAET,SAAA,CAAA;UAEA,IAAI+F,WAAAA;UACJ,MAAMC,cAAAA,GAAiB,IAAI,CAACxlB,MAAM,GAAG,IAAI,CAAC6Z,QAAQ,GAAG,CAAA;EACrD0L,QAAAA,WAAAA,GAAc,IAAI,CAAChB,SAAS,CAAC,IAAI,CAACQ,SAAS,CAAA;EAE3C,QAAA,IAAI,IAAI,CAACU,UAAU,KAAK,QAAA,IAAYF,cAAcC,cAAgB,EAAA;cAChE,IAAI5V,KAAAA,GAAQ,CAAG8V,EAAAA,OAAAA,GAAU,EAAE;EAE3B,YAAA,MAAMC,QAAW/S,GAAAA,WAAAA,CAAI,IAAI,CAACmS,SAAS,CAACtmB,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,CAAEorB,CAAAA,KAAK,CAAC9oB,MAAM,CAAA,CAAA;cAC3D,IAAI,CAACwpB,UAAU,GAAG,WAAA;EAEhBhW,gBAAAA,KAAAA,EAAAA;EAEA,gBAAA,IAAIA,QAAQ+V,QAAU,EAAA;kBAEtB,MAAME,SAAAA,GAAYjW,KAAU,KAAA,CAAA,GAAI,IAAI,CAACmV,SAAS,CAACta,KAAK,EAChD,GAAA,IAAI,CAACsa,SAAS,CAACzpB,MAAM,CAACxB,CAAAA,CAAAA,GAAKA,CAAE0H,CAAAA,KAAK,GAAG1H,CAAAA,CAAE0qB,UAAU,GAAG,IAAI,CAAC3K,QAAQ,IAAI/f,CAAE0H,CAAAA,KAAK,GAAG,CAAA,GAAI,CAAA,CAAA,GAAKgkB,kBAAkB1rB,CAAEorB,CAAAA,KAAK,CAAC9oB,MAAM,IAAIwT,KAAAA,CAAAA,CACzHhH,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAMA,CAAEgd,CAAAA,QAAQ,CAAC7oB,MAAM,GAAGyM,CAAAA,CAAEoc,QAAQ,CAAC7oB,MAAM,CAAA;kBAE3D,IAAIypB,SAAAA,CAAUzpB,MAAM,IAAIuoB,eAAkBkB,GAAAA,SAAS,CAAC,CAAE,CAAA,CAACpkB,MAAM,GAAGmO,KAAO,EAAA;EAErE,oBAAA,IAAI4Q,SAAY,GAAA,KAAA;EAChB,oBAAA,IAAK,IAAIne,CAAI,GAAA,CAAA,EAAGA,IAAIwjB,SAAUzpB,CAAAA,MAAM,EAAEiG,CAAK,EAAA,CAAA;0BACzC,MAAMsJ,KAAAA,GAAQka,SAAS,CAACxjB,CAAE,CAAA;EAC1B,wBAAA,MAAMyI,IAAIa,KAAM2Z,CAAAA,EAAE,CAAC7jB,MAAM,GAAGmO,OAAOL,CAAI5D,GAAAA,KAAAA,CAAM2Z,EAAE,CAAC9jB,KAAK,IAAI,OAAO,CAAA,GAAIoO,KAAI,CAAC,CAAA;0BACzE,MAAM4P,GAAAA,GAAMb,aAAWJ,EAAAA,CAAAA,UAAU,CAAC5S,KAAAA,CAAMjP,CAAC,CAAEuQ,CAAAA,QAAQ,CAACtB,KAAAA,CAAM5R,CAAC,CAAA,CAAEykB,UAAU,CAAC7S,KAAAA,CAAMwZ,EAAE,CAAA,CAAE3jB,KAAK,CAAC+N,GAAG9N,MAAM,CAACqJ,CAAGa,CAAAA,CAAAA,KAAAA,CAAMsZ,QAAQ,CAAA;0BACnH,IAAI,CAACzF,GAAIgB,CAAAA,SAAS,EAAE;EAClB7U,4BAAAA,KAAAA,CAAMnK,KAAK,GAAGxH,IAAK+a,CAAAA,IAAI,CAACnC,WAAI4M,CAAAA,GAAAA,CAAI5P,KAAK,CAACnR,GAAG,CAAC0B,CAAAA,CAAAA,GAAKklB,cAAUllB,CAAG,EAAA;EAAC,oCAAA,aAAA,EAAewL,MAAMjP,CAAC;EAAE,oCAAA,WAAA,EAAaiP,MAAM5R;EAAC,iCAAA,CAAA,CAAA,CAAA,CAAA,GAAQ4R,MAAM5R,CAAC;8BACxH4R,KAAMlK,CAAAA,MAAM,GAAG+d,GAAAA,CAAI5P,KAAK,CAACxT,MAAM,IAAIuP,KAAAA,CAAMwZ,EAAE,GAAG,CAAA,CAAA;2BAE3C,MAAA;8BACH3E,SAAY,GAAA,IAAA;EACZ,4BAAA;EACF;EACF;EACA,oBAAA,IAAI,CAACA,SAAAA,EAAW,IAAI,CAACsF,SAAS,EAAA;mBAE3B,MAAA;EACHJ,oBAAAA,OAAAA,GAAU,EAAE;EACZ,oBAAA;EACF;EAEF,aAAA;cAEA,IAAI,CAACI,SAAS,GAAG,WAAA;EACfJ,gBAAAA,OAAAA,GAAU,EAAE;kBACZ,IAAIrB,GAAAA,GAAM,GAAG0B,QAAW,GAAA,CAAA;kBACxB,IAAK,IAAIjoB,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACinB,SAAS,CAAC3oB,MAAM,EAAE0B,CAAK,EAAA,CAAA;sBAC9C,MAAMhE,CAAAA,GAAI,IAAI,CAACirB,SAAS,CAACjnB,CAAE,CAAA,EACrByR,CAAIzV,GAAAA,CAAAA,CAAE0H,KAAK,GAAG,IAAI,CAACqY,QAAQ,IAAI/f,CAAE0H,CAAAA,KAAK,GAAG,CAAI,GAAA,CAAA,CAAK1H,GAAAA,CAAAA,CAAE0qB,UAAU;sBACpE,IAAIjU,WAAAA,CAAImV,OAAQjnB,CAAAA,GAAG,CAAC4lB,CAAAA,MAAOzR,WAAIyR,CAAAA,GAAAA,EAAKvqB,CAAAA,CAAAA,GAAK8Y,WAAI,CAAA;EAAC9Y,gCAAAA,CAAAA,CAAE2H,MAAM;EAAE3H,gCAAAA,CAAAA,CAAEwqB;EAAY,6BAAA,CAAA,CAAA,CAAA,CAAA,GAAOK,eAAiB,EAAA;EAC5Fe,wBAAAA,OAAAA,GAAU,EAAE;EACZ,wBAAA;EACF;EACA,oBAAA,IAAInW,IAAIiW,cAAgB,EAAA;EACtBE,wBAAAA,OAAAA,GAAU,EAAE;EACZ,wBAAA,IAAI,CAACE,UAAU,EAAA;EACf,wBAAA;uBAEG,MAAA,IAAIG,QAAWxW,GAAAA,CAAAA,GAAIiW,cAAgB,EAAA;0BACtCO,QAAYxW,IAAAA,CAAAA;EACd,qBAAA,MACK,IAAI,IAAI,CAACkW,UAAU,KAAK,QAAU,EAAA;0BACrCM,QAAWxW,GAAAA,CAAAA;EACX8U,wBAAAA,GAAAA,EAAAA;EACF;sBACA,IAAI,CAACqB,OAAO,CAACrB,GAAM,GAAA,CAAA,CAAE,EAAEqB,OAAO,CAACrB,GAAAA,GAAM,CAAE,CAAA,GAAG,EAAE;EAC5CqB,oBAAAA,OAAO,CAACrB,GAAAA,GAAM,CAAE,CAAA,CAAC7c,IAAI,CAAC1N,CAAAA,CAAAA;EACtB,oBAAA,IAAI,IAAI,CAAC2rB,UAAU,KAAK,QAAU,EAAA;0BAChCM,QAAW,GAAA,CAAA;EACX1B,wBAAAA,GAAAA,EAAAA;EACF;EACF;EACF,aAAA;EAEA,YAAA,IAAI,CAACyB,SAAS,EAAA;EAEd,YAAA,IAAI,CAACJ,OAAQtpB,CAAAA,MAAM,IAAImU,WAAImV,CAAAA,OAAAA,EAAS,IAAI,CAACtB,UAAU,CAACjmB,IAAI,CAAC,IAAI,CAAA,CAAA,GAAK,IAAI,CAAC0b,QAAQ,GAAG8K,eAAiB,EAAA;EACjGY,gBAAAA,WAAAA,GAAchV,YAAI,IAAI,CAACwU,SAAS,CAACtmB,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,CAAE0qB,CAAAA,UAAU,GAAG,IAAI,CAAC3K,QAAQ,CAAK,CAAA,GAAA,IAAI,CAACA,QAAQ;kBACxF,IAAK,IAAI/b,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACinB,SAAS,CAAC3oB,MAAM,EAAE0B,CAAK,EAAA,CAAA;EAC9C,oBAAA,IAAI,CAACinB,SAAS,CAACjnB,CAAE,CAAA,CAAC0D,KAAK,GAAG,CAAA;EAC1B,oBAAA,IAAI,CAACujB,SAAS,CAACjnB,CAAE,CAAA,CAAC2D,MAAM,GAAG,CAAA;EAC7B;EACA,gBAAA,IAAI,CAACqkB,SAAS,EAAA;EAChB;EAEA,YAAA,IAAIJ,QAAQtpB,MAAM,IAAImU,WAAImV,CAAAA,OAAAA,EAAS,IAAI,CAACtB,UAAU,CAACjmB,IAAI,CAAC,IAAI,CAAA,CAAA,GAAK,IAAI,CAAC0b,QAAQ,GAAG8K,eAAiB,EAAA;kBAChGe,OAAQ3pB,CAAAA,OAAO,CAAC,CAACsoB,GAAKvmB,EAAAA,CAAAA,GAAAA;sBACpBumB,GAAItoB,CAAAA,OAAO,CAACjC,CAAAA,CAAAA,GAAAA;EACV,wBAAA,IAAIgE,CAAG,EAAA;EACLhE,4BAAAA,CAAAA,CAAEwI,CAAC,GAAGiO,WAAImV,CAAAA,OAAAA,CAAQjb,KAAK,CAAC,CAAA,EAAG3M,CAAI,CAAA,EAAA,IAAI,CAACsmB,UAAU,CAACjmB,IAAI,CAAC,IAAI,CAAA,CAAA;EAC1D;EACF,qBAAA,CAAA;EACF,iBAAA,CAAA;kBACAonB,WAAc3S,GAAAA,WAAAA,CAAI8S,SAAS,IAAI,CAACnB,SAAS,CAACpmB,IAAI,CAAC,IAAI,CAAA,CAAA;EACrD;EACF;UAEA,MAAMoB,WAAAA,GAAcqT,YAAI,IAAI,CAACmS,SAAS,EAAE,CAACjrB,CAAGgE,EAAAA,CAAAA,GAAM8U,WAAI,CAAA;EAAC9Y,gBAAAA,CAAAA,CAAE2H,MAAM;EAAE,gBAAA,IAAI,CAACyiB,YAAY,CAAC,QAAUpqB,EAAAA,CAAAA,CAAEmE,IAAI,EAAEH,CAAAA;eAAG,CAAIhE,GAAAA,CAAAA,CAAEwI,CAAC,CAAI,GAAA,IAAI,CAACsiB,YAAY,EAC9HtlB,aAAasT,WAAI,CAAA;EAAC2S,YAAAA,WAAAA;EAAa,YAAA,IAAI,CAACV;EAAY,SAAA,CAAA;EAEtD,QAAA,IAAI,CAAC9M,YAAY,CAACvW,KAAK,GAAGlC,UAAAA;EAC1B,QAAA,IAAI,CAACyY,YAAY,CAACtW,MAAM,GAAGlC,WAAAA;UAE3B,IAAIymB,OAAAA,GAAU,IAAI,CAACnM,QAAQ,EACvBoM,OAAU,GAAA,IAAI,CAACpM,QAAQ;EAC3B,QAAA,IAAI,IAAI,CAACuH,MAAM,KAAK,QAAU4E,EAAAA,OAAAA,GAAU,CAAC,IAAI,CAAChmB,MAAM,GAAGV,UAAS,IAAK,CAAA;EAChE,aAAA,IAAI,IAAI,CAAC8hB,MAAM,KAAK,OAAS4E,EAAAA,OAAAA,GAAU,IAAI,CAAChmB,MAAM,GAAG,IAAI,CAAC6Z,QAAQ,GAAGva,UAAAA;EAC1E,QAAA,IAAI,IAAI,CAACoN,cAAc,KAAK,QAAUuZ,EAAAA,OAAAA,GAAU,CAAC,IAAI,CAAC/lB,OAAO,GAAGX,WAAU,IAAK,CAAA;EAC1E,aAAA,IAAI,IAAI,CAACmN,cAAc,KAAK,QAAUuZ,EAAAA,OAAAA,GAAU,IAAI,CAAC/lB,OAAO,GAAG,IAAI,CAAC2Z,QAAQ,GAAGta,WAAAA;EACpF,QAAA,IAAI,CAACwY,YAAY,CAAC1V,CAAC,GAAG2jB,OAAAA;EACtB,QAAA,IAAI,CAACjO,YAAY,CAACzV,CAAC,GAAG2jB,OAAAA;UAEtB,IAAI,CAAC/D,WAAW,CACbjkB,IAAI,CAAC,IAAI,CAACqgB,MAAM,GAAG;EAAC,YAAA;kBAACjW,IAAM,EAAA,IAAI,CAACiW;EAAM;EAAE,SAAA,GAAG,EAAE,CAC7C5gB,CAAAA,QAAQ,CAAC,IAAI,CAACC,SAAS,CAAA,CACvBuB,MAAM,CAAC,IAAI,CAACulB,WAAW,CAACjlB,IAAI,EAAA,CAAA,CAC5B6M,UAAU,CAAC;cAACiO,IAAM,EAAA,OAAA;cAAS4L,MAAQ,EAAA,QAAA;cAAU9L,KAAO,EAAA;EAAK,SAAC,CAAC,IAAI,CAACgH,MAAM,CAAC,EACvE5f,KAAK,CAAC,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6Z,QAAQ,GAAG,CACpCxX,CAAAA,CAAAA,CAAC,CAAC,IAAI,CAACwX,QAAQ,CAAA,CACfvX,CAAC,CAAC,IAAI,CAACyV,YAAY,CAACzV,CAAC,EACrB3G,MAAM,CAAC,IAAI,CAAC8iB,YAAY,EACxB1f,MAAM,EAAA;UAET,IAAI,CAAConB,OAAO,GAAG,EAAE;UACjB,MAAMC,UAAAA,GAAa9oB,UAAWa,CAAAA,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAACnB,YAAY,EAAE,QAAA,CAAA,EACtDrB,MAAS,GAAA;cACPsG,EAAInI,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEmI,EAAE;cACb0J,KAAO7R,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAE6R,KAAK;cACnB6S,UAAY1kB,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEgrB;EACrB,SAAA;UAEN,MAAM7mB,IAAAA,GAAO,IAAI,CAAC0B,KAAK,CAAClB,GAAG,CAAC,CAAC3E,CAAGgE,EAAAA,CAAAA,GAAAA;EAE9B,YAAA,MAAMxD,GAAM,GAAA;kBACVyD,UAAY,EAAA,IAAA;kBACZE,IAAMnE,EAAAA,CAAAA;EAAGgE,gBAAAA,CAAAA;EACTmE,gBAAAA,EAAAA,EAAI,IAAI,CAACrC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EAChB6N,gBAAAA,KAAAA,EAAO,IAAI,CAACoZ,SAAS,CAACjnB,CAAE,CAAA,CAAC0D,KAAK,GAAG,IAAI,CAACqG,MAAM,CAAC/N,GAAGgE,CAAK,CAAA,GAAA,KAAA;EACrDgnB,gBAAAA,EAAAA,EAAI,IAAI,CAACZ,YAAY,CAAC,cAAcpqB,CAAGgE,EAAAA,CAAAA,CAAAA;EACvCqlB,gBAAAA,KAAAA,EAAO,IAAI,CAACnJ,MAAM,CAAClgB,CAAGgE,EAAAA,CAAAA;EACxB,aAAA;cAEA,OAAOxD,GAAAA;EAET,SAAA,CAAA;;UAGA,IAAI,CAAC6rB,OAAO,GAAG,EAAE;EACjB,QAAA;EAAC,YAAA,QAAA;EAAU,YAAA;WAAO,CAACpqB,OAAO,CAACyG,CAAAA,KAAAA,GAAAA;EAEzB,YAAA,IAAI,CAAC2jB,OAAO,CAAC3e,IAAI,CACf,IAAIoJ,MAAM,CAACpO,KAAAA,CAAM,EACd7F,CAAAA,MAAM,CAAC,IAAI,EACXsB,IAAI,CAACA,IAAK3C,CAAAA,MAAM,CAACxB,CAAAA,CAAKA,GAAAA,CAAAA,CAAEqpB,KAAK,KAAK3gB,KAAAA,CAAAA,CAAAA,CAClC9E,QAAQ,CAAC,IAAI,CAACC,SAAS,CAAA,CACvBuK,WAAW,CAAC;kBAACgF,OAAS,EAAA;EAAC,aAAA,CAAA,CACvBhO,MAAM,CAAC,IAAI,CAACwlB,WAAW,CAACllB,IAAI,EAC5BiN,CAAAA,CAAAA,aAAa,CAAC,KAAA,CAAA,CACd9Q,MAAM,CAACO,UAAAA,CAAO,EAAIkqB,EAAAA,UAAAA,EAAYzqB,SAC9BoD,MAAM,EAAA,CAAA;EAGb,SAAA,CAAA;EAEA,QAAA,IAAIC,UAAUgD,UAAWhD,CAAAA,QAAAA,EAAU,IAAI,CAACrB,SAAS,GAAG,GAAA,CAAA;EAEpD,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMAqN,MAAAA,CAAOpP,CAAC,EAAE;UACR,IAAI,CAACuqB,OAAO,CAACpqB,OAAO,CAAChC,CAAAA,CAAAA,GAAKA,CAAEiR,CAAAA,MAAM,CAACpP,CAAAA,CAAAA,CAAAA;EACnC,QAAA,OAAO,IAAI;EACb;EAEA;;;;;OAMAumB,KAAAA,CAAMvmB,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACglB,MAAM,GAAGxlB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACwlB,MAAM;EACjE;EAEA;;;;;OAMAnjB,IAAAA,CAAKrC,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuD,KAAK,GAAG/D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+D,KAAK;EAC/D;EAEA;;;;;OAMA0mB,SAAAA,CAAUzqB,CAAC,EAAE;EACX,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACqpB,UAAU,GAAG7pB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC6pB,UAAU;EACzE;EAEA;;;;;OAMA/nB,QAAAA,CAAS9B,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuB,SAAS,GAAG/B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+B,SAAS;EACvE;EAEA;;;;;OAMA8D,MAAAA,CAAO7F,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC8D,OAAO,GAAGtE,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACsE,OAAO;EACnE;EAEA;;;;;OAMAqL,KAAAA,CAAM3P,CAAC,EAAE;UACP,IAAI,CAACuqB,OAAO,CAACpqB,OAAO,CAAChC,CAAAA,CAAAA,GAAKA,CAAEwR,CAAAA,KAAK,CAAC3P,CAAAA,CAAAA,CAAAA;EAClC,QAAA,OAAO,IAAI;EACb;EAEA;;;;;;;;;OAUAqG,EAAAA,CAAGrG,CAAC,EAAE;EACJ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwD,GAAG,GAAGhE,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgE,GAAG;EAC3D;EAEA;;;;;OAMA+L,KAAAA,CAAM/P,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACyL,MAAM,GAAG,OAAOjM,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACiM,MAAM;EACzG;EAEA;;;;;EAKA,KACA+a,WAAc,GAAA;UACZ,OAAO,IAAI,CAAC7K,YAAY;EAC1B;EAEA;;;;;OAMA7K,OAAAA,CAAQtR,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACyd,QAAQ,GAAGje,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACie,QAAQ;EACrE;EAEA;;;;;OAMA3a,MAAAA,CAAOtD,CAAC,EAAE;UACR,IAAIO,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,CAAC6C,OAAO,GAAGC,kBAAOtD,CAAAA,CAAAA,CAAAA;cACtB,IAAI,CAAC0qB,IAAI,GAAG5C,OAAAA,CAAU,IAAI,CAACzkB,OAAO,CAACO,IAAI,EAAA,CAAA;EACvC,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACP,OAAO;EACrB;EAEA;;;;;OAMAkkB,KAAAA,CAAMvnB,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4d,MAAM,GAAG,OAAOpe,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoe,MAAM;EACzG;EAEA;;;;;OAMAjd,WAAAA,CAAYnB,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACY,YAAY,GAAGd,UAAAA,CAAO,IAAI,CAACc,YAAY,EAAEpB,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoB,YAAY;EACxG;EAEA;;;;;OAMAsmB,KAAAA,CAAM1nB,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACkiB,MAAM,GAAG1iB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC0iB,MAAM;EACjE;EAEA;;;;;OAMAiF,WAAAA,CAAY3nB,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqiB,YAAY,GAAGviB,UAAAA,CAAO,IAAI,CAACuiB,YAAY,EAAE7iB,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6iB,YAAY;EACxG;EAEA;;;;;OAMAhS,aAAAA,CAAc7Q,CAAC,EAAE;EACf,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACsQ,cAAc,GAAG9Q,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC8Q,cAAc;EACjF;EAEA;;;;;OAMAlL,KAAAA,CAAM5F,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4D,MAAM,GAAGpE,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACoE,MAAM;EACjE;EA9hBA;;;;EAIA,KACA/C,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACilB,WAAW,GAAG,IAAIpV,OAAAA,EAAAA;UAEvB,IAAI,CAACsU,MAAM,GAAG,QAAA;UACd,IAAI,CAACzhB,KAAK,GAAG,EAAE;UACf,IAAI,CAAC8lB,UAAU,GAAG,KAAA;UAClB,IAAI,CAAC9nB,SAAS,GAAG,GAAA;UACjB,IAAI,CAACuC,OAAO,GAAG,GAAA;UACf,IAAI,CAACN,GAAG,GAAG2C,QAAS,CAAA,IAAA,CAAA;UACpB,IAAI,CAACsF,MAAM,GAAGtF,QAAS,CAAA,IAAA,CAAA;UACvB,IAAI,CAACwiB,SAAS,GAAG,EAAE;UACnB,IAAI,CAAChN,YAAY,GAAG;cAACvW,KAAO,EAAA,CAAA;cAAGC,MAAQ,EAAA,CAAA;cAAGY,CAAG,EAAA,CAAA;cAAGC,CAAG,EAAA;EAAC,SAAA;UACpD,IAAI,CAACuX,QAAQ,GAAG,CAAA;UAChB,IAAI,CAACG,MAAM,GAAGnb,QAAS,CAAA,MAAA,CAAA;UACvB,IAAI,CAACsnB,OAAO,GAAG,EAAE;UACjB,IAAI,CAACnpB,YAAY,GAAG;EAClBwI,YAAAA,IAAAA,EAAMjD,QAAS,CAAA,OAAA,CAAA;EACfd,YAAAA,MAAAA,EAAQ5C,QAAS,CAAA,EAAA,CAAA;EACjB6M,YAAAA,OAAAA,EAAS,CAAC6a,EAAIzoB,EAAAA,CAAAA,GAAAA;kBACZ,MAAMhE,CAAAA,GAAI,IAAI,CAACirB,SAAS,CAACjnB,CAAE,CAAA,EACrBgN,IAAI8H,WAAI,CAAA;EAAC9Y,oBAAAA,CAAAA,CAAE2H,MAAM;EAAE3H,oBAAAA,CAAAA,CAAEwqB;EAAY,iBAAA,CAAA;kBACvC,OAAO;EAAC9iB,oBAAAA,KAAAA,EAAO1H,CAAE0H,CAAAA,KAAK,GAAG1H,CAAAA,CAAE0qB,UAAU;sBAAE/iB,MAAQqJ,EAAAA,CAAAA;sBAAGzI,CAAG,EAAA,CAACvI,CAAE0qB,CAAAA,UAAU,GAAG,CAAA;EAAGliB,oBAAAA,CAAAA,EAAG,CAACwI,CAAI,GAAA;EAAC,iBAAA;EACnF,aAAA;EACAc,YAAAA,WAAAA,EAAa,CAAC2a,EAAIzoB,EAAAA,CAAAA,GAAAA;EAChB,gBAAA,MAAMhE,CAAI,GAAA,IAAI,CAACirB,SAAS,CAACjnB,CAAE,CAAA;kBAC3B,IAAIuE,CAAAA,GAAIvI,CAAE0qB,CAAAA,UAAU,GAAG,CAAA;EACvB,gBAAA,IAAI1qB,EAAEqpB,KAAK,KAAK,UAAU9gB,CAAKvI,IAAAA,CAAAA,CAAEkrB,MAAM,GAAG,CAAA;EAC1C,gBAAA,MAAMvjB,SAASmR,WAAI,CAAA;EAAC9Y,oBAAAA,CAAAA,CAAEwqB,WAAW;EAAExqB,oBAAAA,CAAAA,CAAE2H;EAAO,iBAAA,CAAA;EAC5C,gBAAA,MAAM+kB,MAAS,GAAA,IAAI,CAACF,IAAI,GAAGxsB,CAAE0qB,CAAAA,UAAU,GAAG1qB,CAAAA,CAAE0H,KAAK,GAAG,IAAI,CAACqY,QAAQ,GAAG,CAAI,GAAA,CAAA;kBACxE,OAAO;EAACrY,oBAAAA,KAAAA,EAAO1H,EAAE0H,KAAK;EAAEC,oBAAAA,MAAAA;EAAQY,oBAAAA,CAAAA,EAAGA,IAAI6K,OAAUsZ,GAAAA,MAAAA;EAAQlkB,oBAAAA,CAAAA,EAAG,CAACb,MAAS,GAAA;EAAC,iBAAA;EACzE,aAAA;cACAyG,WAAa,EAAA;kBACX6E,SAAWlO,EAAAA,QAAAA,CAAS8kB,oBAAcC,IAAI,CAAA;EACtCrF,gBAAAA,UAAAA,EAAY,IAAI,CAAC2D,WAAW,CAAC3D,UAAU,EAAA;kBACvCiF,UAAY,EAAA,KAAA;EACZvW,gBAAAA,QAAAA,EAAUpO,QAAS,CAAA,EAAA,CAAA;kBACnB4N,aAAe,EAAA;EACjB,aAAA;cACAvK,OAAS,EAAA,CAAA;EACToF,YAAAA,CAAAA,EAAGzI,QAAS,CAAA,CAAA,CAAA;EACZ2C,YAAAA,KAAAA,EAAO3C,QAAS,CAAA,EAAA,CAAA;EAChBwD,YAAAA,CAAAA,EAAG,CAACvI,CAAGgE,EAAAA,CAAAA,GAAAA;EACL,gBAAA,MAAMsJ,KAAQ,GAAA,IAAI,CAAC2d,SAAS,CAACjnB,CAAE,CAAA;kBAC/B,MAAMwE,CAAAA,GAAI8E,MAAM9E,CAAC;EACjB,gBAAA,MAAMmkB,GAAM,GAAA,IAAI,CAACrF,MAAM,KAAK,MAAU,IAAA,IAAI,CAACA,MAAM,KAAK,OAAA,IAAW,IAAI,CAACqE,UAAU,KAAK,QAAA,GAAW,CAAI,GAAA,IAAI,CAACrE,MAAM,KAAK,QAAA,GAChH,CAAC,IAAI,CAACrJ,YAAY,CAACvW,KAAK,GAAG,IAAI,CAAC+iB,SAAS,CAAC,IAAI,CAACQ,SAAS,CAACzpB,MAAM,CAAC0M,CAAAA,CAAK1F,GAAAA,CAAAA,KAAM0F,CAAE1F,CAAAA,CAAC,CAAC,CAAA,IAAK,CACpF,GAAA,IAAI,CAACyV,YAAY,CAACvW,KAAK,GAAG,IAAI,CAAC+iB,SAAS,CAAC,IAAI,CAACQ,SAAS,CAACzpB,MAAM,CAAC0M,CAAAA,CAAK1F,GAAAA,CAAAA,KAAM0F,EAAE1F,CAAC,CAAA,CAAA;EACjF,gBAAA,MAAMokB,SAAY,GAAA,IAAI,CAAC3B,SAAS,CAACta,KAAK,CAAC,CAAG3M,EAAAA,CAAAA,CAAAA,CAAGxC,MAAM,CAAC0M,CAAAA,CAAK1F,GAAAA,CAAAA,KAAM0F,EAAE1F,CAAC,CAAA;kBAClE,MAAMkkB,MAAAA,GAAS,IAAI,CAACF,IAAI,GAAGlf,KAAM5F,CAAAA,KAAK,GAAG,IAAI,CAACqY,QAAQ,GAAG,CAAA;EACzD,gBAAA,OAAO,IAAI,CAAC0K,SAAS,CAACmC,SAAa,CAAA,GAAA,IAAI,CAAC7M,QAAQ,IAAI6M,SAAUtqB,CAAAA,MAAM,GAAGgL,KAAM6d,CAAAA,QAAQ,GAAG,CAAA,GAAI,CAAI,GAAA,CAAA,CACzF,GAAA,IAAI,CAAClN,YAAY,CAAC1V,CAAC,GAAG+E,KAAAA,CAAMod,UAAU,GAAG,IAAIiC,GAAMD,GAAAA,MAAAA;EAC5D,aAAA;EACAlkB,YAAAA,CAAAA,EAAG,CAACxI,CAAGgE,EAAAA,CAAAA,GAAAA;EACL,gBAAA,MAAM6oB,EAAK,GAAA,IAAI,CAAC5B,SAAS,CAACjnB,CAAE,CAAA;kBAC5B,OAAO6oB,EAAAA,CAAGrkB,CAAC,GAAG,IAAI,CAACsiB,YAAY,GAAG,IAAI,CAAC7M,YAAY,CAACzV,CAAC,GAC9CsQ,WACE,CAAA,IAAI,CAACmS,SAAS,CAACzpB,MAAM,CAAC0M,CAAAA,CAAAA,GAAK2e,EAAGrkB,CAAAA,CAAC,KAAK0F,CAAAA,CAAE1F,CAAC,CAAE7D,CAAAA,GAAG,CAACuJ,CAAAA,CAAKA,GAAAA,CAAAA,CAAEvG,MAAM,CACzDxG,CAAAA,MAAM,CAAC,IAAI,CAAC0E,KAAK,CAAClB,GAAG,CAAC,CAACuJ,CAAAA,EAAG3F,CAAM,GAAA,IAAI,CAAC6hB,YAAY,CAAC,QAAUlc,EAAAA,CAAAA,EAAG3F,CAC9D,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA;EACb;EACF,SAAA;UACA,IAAI,CAACoc,YAAY,GAAG;cAClBxR,QAAU,EAAA;EACZ,SAAA;UACA,IAAI,CAACP,cAAc,GAAG,QAAA;UACtB,IAAI,CAAC1M,MAAM,GAAG,GAAA;EAEhB;EAqdF;;EC7hBe,MAAM4mB,UAAmBlrB,SAAAA,SAAAA,CAAAA;EAsFtC;;;;;OAMAqD,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,IAAI,IAAI,CAACC,OAAO,KAAK,QAAQ,IAAI,CAACC,MAAM,CAACA,mBAAO,MAAQC,CAAAA,CAAAA,MAAM,CAAC,KAAA,CAAA,CAAOW,IAAI,CAAC,OAAA,EAAS,CAAG,EAAA,IAAI,CAACE,MAAM,CAAC,EAAE,CAAC,EAAEF,IAAI,CAAC,QAAU,EAAA,CAAA,EAAG,IAAI,CAACI,OAAO,CAAC,EAAE,CAAC,EAAEV,IAAI,EAAA,CAAA;EAEhJ,QAAA,MAAMka,UAAa,GAAA;EAAC,YAAA,QAAA;EAAU,YAAA;EAAM,SAAA,CAACje,QAAQ,CAAC,IAAI,CAACuV,OAAO,CAAA;EAE1D,QAAA,MAAMvP,MAASiY,GAAAA,UAAAA,GAAa,QAAW,GAAA,OAAA,EACjClY,QAAQkY,UAAa,GAAA,OAAA,GAAU,QAC/BrX,EAAAA,CAAAA,GAAIqX,UAAa,GAAA,GAAA,GAAM,GACvBpX,EAAAA,CAAAA,GAAIoX,aAAa,GAAM,GAAA,GAAA;;EAG7B,QAAA,IAAI,CAAC3T,MAAM,GAAGxC,QAAAA,CAAK,qBAAuB,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACsC;EAAO,SAAA,CAAA;UAE/D,MAAM4nB,SAAAA,GAAY,IAAI,CAAClnB,KAAK,CACzBlB,GAAG,CAAC,IAAI,CAACqoB,MAAM,CACfxrB,CAAAA,MAAM,CAACxB,CAAAA,CAAAA,GAAKA,CAAM,KAAA,IAAA,IAAQ,OAAOA,CAAAA,KAAM,QACvC8O,CAAAA,CAAAA,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAMY,CAAIZ,GAAAA,CAAAA,CAAAA;EAEtB,QAAA,MAAMyN,MAAS,GAAA,IAAI,CAACiF,OAAO,IAAI3M,cAAO6Y,CAAAA,SAAAA,CAAAA;EACtC,QAAA,MAAME,WAAWrR,MAAM,CAAC,EAAE,GAAG,IAAI,CAACsR,SAAS;EAC3C,QAAA,MAAMC,WAAWvR,MAAM,CAAC,EAAE,GAAG,IAAI,CAACsR,SAAS;EAC3C,QAAA,MAAMtO,YAAYqO,QAAYE,IAAAA,QAAAA;EAE9B,QAAA,MAAMC,aAAa7jB,WAAI,CAAA;EACrB,YAAA,IAAI,CAAC8jB,QAAQ,YAAYzoB,KAAAA,GAAQ,IAAI,CAACyoB,QAAQ,CAAC/qB,MAAM,GAAG,IAAI,CAAC+qB,QAAQ;EACrEzO,YAAAA,SAAAA,IAAa,IAAI,CAAC5T,MAAM,KAAK,OAAA,GAAU,IAAI9K,IAAKC,CAAAA,KAAK,CAAC8O,WAAAA,CAAO8d,WAAWzqB,MAAM,GAAG,KAAK,CAAI2M,GAAAA,WAAAA,CAAO8d,WAAWzqB;EAC7G,SAAA,CAAA;EAED,QAAA,IAAIgrB,MAAS1O,GAAAA,SAAAA,KACH,CAAC,IAAI,CAAC2O,MAAM,IAAK,IAAI,CAACA,MAAM,YAAY3oB,SAAS,CAAC,IAAI,CAAC2oB,MAAM,CAAC5rB,QAAQ,CAAC,IAAI,CAAC6rB,SAAS,CAAC,CAAA,GACtFztB,SACF,GAAA,IAAI,CAACwtB,MAAM,EACfzf,MACA2O,EAAAA,KAAAA;EAEJ,QAAA,IAAI6Q,MAAU,IAAA,EAAEA,MAAAA,YAAkB1oB,KAAI,CAAI,EAAA;EACxC0oB,YAAAA,MAAAA,GAASzR,cAAM,CAAGuR,EAAAA,UAAAA,EAAY,CAC3BzoB,CAAAA,CAAAA,GAAG,CAACX,CAAAA,CAAAA,GAAKypB,kBAAaH,CAAAA,MAAAA,EAAQ,CAACtpB,CAAAA,GAAI,CAAA,IAAKopB,aACxCvZ,OAAO,EAAA;EACZ;EAEA,QAAA,IAAI,IAAI,CAAC7I,MAAM,KAAK,OAAS,EAAA;EAE3B,YAAA,MAAMyX,UAAUlZ,WAAI,CAAA;kBAAC+jB,MAASA,GAAAA,MAAAA,CAAOhrB,MAAM,GAAG8qB,UAAAA;EAAYA,gBAAAA,UAAAA;EAAYL,gBAAAA,SAAAA,CAAUzqB;EAAO,aAAA,CAAA;EAEvF,YAAA,IAAIorB,QAAQ,EAAE;EAEd,YAAA,IAAI,IAAI,CAACL,QAAQ,YAAYzoB,KAAO,EAAA;kBAClC6X,KAAQ,GAAA,IAAI,CAAC4Q,QAAQ;eAElB,MAAA;EAEH,gBAAA,IAAIzO,SAAa,IAAA,IAAI,CAAC+O,SAAS,EAAE;EAE/B,oBAAA,MAAMC,IAAO1tB,GAAAA,IAAAA,CAAKC,KAAK,CAACsiB,OAAU,GAAA,CAAA,CAAA;EAClC,oBAAA,MAAMoL,WAAWpL,OAAU,GAAA,CAAA;sBAE3B,MAAMqL,SAAAA,GAAYf,UAAUvrB,MAAM,CAACxB,CAAAA,CAAKA,GAAAA,CAAAA,GAAI,IAAI,CAACktB,SAAS,CAAA;EAC1D,oBAAA,MAAMa,qBAAqBC,iBAAUF,CAAAA,SAAAA,CAAAA;EAErC,oBAAA,MAAMG,SAAYlB,GAAAA,SAAAA,CAAU5rB,MAAM,CAAC,IAAI,CAAC+rB,SAAS,CAAE1rB,CAAAA,MAAM,CAACxB,CAAAA,CAAAA,GAAKA,CAAK,IAAA,IAAI,CAACktB,SAAS,CAAA;EAClF,oBAAA,MAAMgB,qBAAqBF,iBAAUC,CAAAA,SAAAA,CAAAA;sBAErC,MAAME,aAAAA,GAAgBJ,kBAAqBG,GAAAA,kBAAAA,GAAqB,CAAI,GAAA,CAAA;sBACpE,MAAME,aAAAA,GAAgBF,kBAAqBH,GAAAA,kBAAAA,GAAqB,CAAI,GAAA,CAAA;sBAEpE,MAAMM,aAAAA,GAAgBC,YAAQR,CAAAA,SAAAA,EAAWvkB,WAAI,CAAA;EAACqkB,wBAAAA,IAAAA,GAAOC,QAAWM,GAAAA,aAAAA;EAAeL,wBAAAA,SAAAA,CAAUxrB;EAAO,qBAAA,CAAA,CAAA;sBAChG,MAAMisB,aAAAA,GAAgBD,YAAQL,CAAAA,SAAAA,EAAW1kB,WAAI,CAAA;EAACqkB,wBAAAA,IAAAA,GAAOC,QAAWO,GAAAA,aAAAA;EAAeH,wBAAAA,SAAAA,CAAU3rB;EAAO,qBAAA,CAAA,CAAA;sBAEhGorB,KAAQW,GAAAA,aAAAA,CAAcltB,MAAM,CAACotB,aAAAA,CAAAA;mBAE1B,MAAA;EACHb,oBAAAA,KAAAA,GAAQY,aAAQvB,SAAWtK,EAAAA,OAAAA,CAAAA;EAC7B;EAEAhG,gBAAAA,KAAAA,GAAQiR,MAAM/oB,GAAG,CAACkO,CAAAA,CAAKA,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;EAE7B;cAEA,MAAM2b,OAAAA,GAAU,IAAIC,GAAIhS,CAAAA,KAAAA,CAAAA;cAExB,IAAIA,KAAAA,CAAMna,MAAM,KAAKksB,OAAAA,CAAQ9kB,IAAI,EAAEoE,MAAAA,GAASlJ,KAAM8pB,CAAAA,IAAI,CAACF,OAAAA,CAAAA;EAEvD,YAAA,IAAI,CAAClB,MAAQ,EAAA;EACX,gBAAA,IAAI1O,SAAW,EAAA;sBACb0O,MAAS,GAAA;EAAC,wBAAA,IAAI,CAACqB,SAAS;EAAE,wBAAA,IAAI,CAACnB,SAAS;EAAE,wBAAA,IAAI,CAACoB;EAAU,qBAAA;sBACzD,MAAMd,SAAAA,GAAYrR,MACf9L,KAAK,CAAC,GAAG8R,OACTjhB,CAAAA,CAAAA,MAAM,CAAC,CAACxB,CAAGgE,EAAAA,CAAAA,GAAMhE,IAAI,IAAI,CAACktB,SAAS,IAAIzQ,KAAK,CAACzY,IAAI,CAAE,CAAA,IAAI,IAAI,CAACkpB,SAAS,CAAA;sBACxE,MAAM2B,QAAAA,GAAWpS,MACd9L,KAAK,CAAC,GAAG8R,OACTjhB,CAAAA,CAAAA,MAAM,CAAC,CAACxB,CAAGgE,EAAAA,CAAAA,GAAMhE,KAAK,IAAI,CAACktB,SAAS,IAAIzQ,KAAK,CAACzY,IAAI,CAAE,CAAA,GAAG,IAAI,CAACkpB,SAAS,CAAA;EACxE,oBAAA,MAAMe,SAAYxR,GAAAA,KAAAA,CACf9L,KAAK,CAAC,CAAG8R,EAAAA,OAAAA,CAAAA,CACTjhB,MAAM,CAACxB,CAAAA,CAAAA,GAAKA,CAAI,GAAA,IAAI,CAACktB,SAAS,CAAA;sBACjC,MAAM4B,cAAAA,GAAiBhB,UAAUnpB,GAAG,CAAC,CAAC3E,CAAGgE,EAAAA,CAAAA,GAAM,CAACA,CAAIspB,GAAAA,MAAM,CAAC,CAAE,CAAA,GAAGG,mBAAaH,MAAM,CAAC,EAAE,EAAEtpB,CAAAA,GAAI8pB,UAAUxrB,MAAM,CAAA,CAAA;EAC5G,oBAAA,MAAMysB,iBAAiBF,QAASlqB,CAAAA,GAAG,CAAC,IAAM2oB,MAAM,CAAC,CAAE,CAAA,CAAA;EACnD,oBAAA,MAAM0B,cAAiBf,GAAAA,SAAAA,CAAUtpB,GAAG,CAAC,CAAC3E,CAAAA,EAAGgE,CAAMA,GAAAA,CAAAA,KAAMiqB,SAAU3rB,CAAAA,MAAM,GAAG,CAAA,GAAIgrB,MAAM,CAAC,CAAE,CAAA,GAAGG,kBAAaH,CAAAA,MAAM,CAAC,CAAA,CAAE,EAAE,CAAA,GAAI,CAACtpB,CAAI,GAAA,CAAA,IAAKiqB,SAAAA,CAAU3rB,MAAM,CAAA,CAAA;EAC9IgrB,oBAAAA,MAAAA,GAASwB,cAAe3tB,CAAAA,MAAM,CAAC4tB,cAAAA,CAAAA,CAAgB5tB,MAAM,CAAC6tB,cAAAA,CAAAA;mBAEnD,MAAA;EACH1B,oBAAAA,MAAAA,GAASzR,aAAM,CAAA,CAAA,EAAGuR,UAAY,EAAA,CAAA,CAAA,CAC3BzoB,GAAG,CAACX,CAAAA,CAAKypB,GAAAA,kBAAAA,CAAa,IAAI,CAACmB,SAAS,EAAE5qB,CAAAA,GAAIopB,aAC1CvZ,OAAO,EAAA;EACZ;EACF;cAEA,IAAI4I,KAAAA,CAAMna,MAAM,IAAImgB,OAAS6K,EAAAA,MAAAA,GAASA,OAAO3c,KAAK,CAAC,CAAC8L,KAAAA,CAAMna,MAAM,CAAA;cAEhEgrB,MAAS,GAAA;EAACA,gBAAAA,MAAM,CAAC,CAAE;EAAC,aAAA,CAACnsB,MAAM,CAACmsB,MAAAA,CAAAA;cAE5B,IAAI,CAAC2B,WAAW,GAAGC,qBAAAA,EAAAA,CAChBtT,MAAM,CAACa,KAAAA,CAAAA,CACPZ,KAAK,CAACyR,MAAAA,CAAAA;WAGN,MAAA;cAEH,IAAI7K,OAAAA,GAAU,IAAI,CAAC4K,QAAQ,YAAYzoB,KAAQ,GAAA,IAAI,CAACyoB,QAAQ,GAAGttB,SAAAA;cAC/D,IAAI6e,SAAAA,IAAa,CAAC0O,MAAQ,EAAA;EACxB,gBAAA,MAAMM,IAAO1tB,GAAAA,IAAAA,CAAKC,KAAK,CAACitB,UAAa,GAAA,CAAA,CAAA;kBACrC,MAAM+B,kBAAAA,GAAqBC,4BAAeC,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAK,IAAI,CAACV,SAAS,EAAE,IAAI,CAACnB,SAAS,CAAA;kBACnF,MAAMsB,cAAAA,GAAiBjT,aAAM,CAAA,CAAA,EAAG+R,IAAM,EAAA,CAAA,CAAA,CAAGjpB,GAAG,CAACX,CAAAA,CAAKmrB,GAAAA,kBAAAA,CAAmBnrB,CAAI4pB,GAAAA,IAAAA,CAAAA,CAAAA;EACzE,gBAAA,MAAMmB,cAAiB,GAAC3B,CAAAA,UAAAA,GAAa,CAAI,GAAA;EAAC,oBAAA;mBAAE,GAAG,EAAE,EAAEzoB,GAAG,CAAC,IAAM,IAAI,CAAC6oB,SAAS,CAAA;kBAC3E,MAAM8B,kBAAAA,GAAqBF,4BAAeC,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAK,IAAI,CAACT,SAAS,EAAE,IAAI,CAACpB,SAAS,CAAA;EACnF,gBAAA,MAAMwB,cAAiBnT,GAAAA,aAAAA,CAAM,CAAG+R,EAAAA,IAAAA,EAAM,CAAGjpB,CAAAA,CAAAA,GAAG,CAACX,CAAAA,CAAKsrB,GAAAA,kBAAAA,CAAmBtrB,CAAI4pB,GAAAA,IAAAA,CAAAA,CAAAA,CAAO/Z,OAAO,EAAA;EACvFyZ,gBAAAA,MAAAA,GAASwB,cAAe3tB,CAAAA,MAAM,CAAC4tB,cAAAA,CAAAA,CAAgB5tB,MAAM,CAAC6tB,cAAAA,CAAAA;EACtD,gBAAA,IAAI,CAACvM,OAAS,EAAA;EACZ,oBAAA,MAAM1G,OAAO,CAACuR,OAAOhrB,MAAM,GAAG,CAAA,IAAK,CAAA;sBACnCmgB,OAAU,GAAA;EAAC7G,wBAAAA,MAAM,CAAC,CAAE,CAAA;EAAE,wBAAA,IAAI,CAACsR,SAAS;EAAEtR,wBAAAA,MAAM,CAAC,CAAE;EAAC,qBAAA;sBAChD6G,OAAU5G,GAAAA,aAAAA,CAAMD,MAAM,CAAC,CAAA,CAAE,EAAE,IAAI,CAACsR,SAAS,EAAE,EAAEtR,MAAM,CAAC,EAAE,GAAG,IAAI,CAACsR,SAAQ,IAAKnR,IACxE5a,CAAAA,CAAAA,MAAM,CAAC0a,aAAM,CAAA,IAAI,CAACqR,SAAS,EAAEtR,MAAM,CAAC,CAAA,CAAE,EAAE,CAACA,MAAM,CAAC,CAAA,CAAE,GAAG,IAAI,CAACsR,SAAS,IAAInR,IACvE5a,CAAAA,CAAAA,CAAAA,MAAM,CAAC;EAACya,wBAAAA,MAAM,CAAC,CAAE;EAAC,qBAAA,CAAA;EACvB;eAEG,MAAA;EACH,gBAAA,IAAI,CAAC0R,MAAQ,EAAA;sBACX,IAAI,IAAI,CAACtiB,MAAM,KAAK,aAAa,IAAI,CAACA,MAAM,KAAK,UAAY,EAAA;EAC3DsiB,wBAAAA,MAAAA,GAASzR,cAAM,CAAGuR,EAAAA,UAAAA,EAAY,GAC3BzoB,GAAG,CAACX,CAAAA,CAAKypB,GAAAA,kBAAAA,CAAaR,QAAW,GAAA,IAAI,CAAC0B,SAAS,GAAG,IAAI,CAACC,SAAS,EAAE5qB,CAAIopB,GAAAA,UAAAA,CAAAA,CAAAA;0BACzE,IAAID,QAAAA,EAAUG,MAASA,GAAAA,MAAAA,CAAOzZ,OAAO,EAAA;uBAElC,MAAA;EACHyZ,wBAAAA,MAAAA,GAASL,QAAW,GAAA;EAAC,4BAAA,IAAI,CAAC0B,SAAS;8BAAElB,kBAAa,CAAA,IAAI,CAACkB,SAAS,EAAE,GAAA;2BAAK,GACnE;8BAAClB,kBAAa,CAAA,IAAI,CAACmB,SAAS,EAAE,GAAA,CAAA;EAAM,4BAAA,IAAI,CAACA;EAAU,yBAAA;EACzD;EACF;EACA,gBAAA,IAAI,CAACnM,OAAS,EAAA;EACZ,oBAAA,IAAI,IAAI,CAACzX,MAAM,KAAK,UAAY,EAAA;EAC9B,wBAAA,MAAM+Q,OAAO,CAAKuR,IAAAA,MAAOhrB,CAAAA,MAAM,GAAG,CAAA,CAAA;0BAClCmgB,OAAU5G,GAAAA,aAAAA,CAAM,CAAG,EAAA,CAAA,GAAIE,IAAO,GAAA,CAAA,EAAGA,IAC9BpX,CAAAA,CAAAA,GAAG,CAAC3E,CAAAA,CAAKuY,GAAAA,gBAAAA,CAASwU,SAAW/sB,EAAAA,CAAAA,CAAAA,CAAAA;uBAE7B,MAAA,IAAI4e,aAAa,IAAI,CAAC2O,MAAM,IAAI,IAAI,CAACI,SAAS,EAAE;EACnD,wBAAA,MAAM4B,WAAWjC,MAAO5rB,CAAAA,OAAO,CAAC,IAAI,CAAC8rB,SAAS,CAAA;0BAC9C,MAAMgC,YAAAA,GAAe,CAAC,IAAI,CAACtC,SAAS,GAAGtR,MAAM,CAAC,CAAE,CAAD,IAAK2T,QAAAA;EACpD,wBAAA,MAAME,eAAe,CAAC7T,MAAM,CAAC,EAAE,GAAG,IAAI,CAACsR,SAAS,KAAKI,MAAOhrB,CAAAA,MAAM,GAAGitB,QAAO,CAAA;0BAC5E,MAAMG,eAAAA,GAAkB7T,cAAMD,MAAM,CAAC,EAAE,EAAE,IAAI,CAACsR,SAAS,EAAEsC,YAAAA,CAAAA;0BACzD,MAAMG,eAAAA,GAAkB9T,aAAM,CAAA,IAAI,CAACqR,SAAS,EAAEtR,MAAM,CAAC,CAAA,CAAE,GAAG6T,YAAAA,GAAe,CAAGA,EAAAA,YAAAA,CAAAA;0BAE5EhN,OAAUiN,GAAAA,eAAAA,CAAgBvuB,MAAM,CAACwuB,eAAAA,CAAAA;uBAE9B,MAAA;EACH,wBAAA,MAAM5T,OAAO,CAACH,MAAM,CAAC,EAAE,GAAGA,MAAM,CAAC,CAAA,CAAE,KAAK0R,MAAOhrB,CAAAA,MAAM,GAAG,CAAA,CAAA;0BACxDmgB,OAAU5G,GAAAA,aAAAA,CAAMD,MAAM,CAAC,CAAE,CAAA,EAAEA,MAAM,CAAC,CAAA,CAAE,GAAGG,IAAAA,GAAO,CAAGA,EAAAA,IAAAA,CAAAA;EACnD;EACF;EACF;cAEA,IAAI,IAAI,CAAC/Q,MAAM,KAAK,aAAa,IAAI,CAACA,MAAM,KAAK,UAAY,EAAA;kBAC3DyR,KAAQgG,GAAAA,OAAAA;kBACR6K,MAAS,GAAA;EAACA,oBAAAA,MAAM,CAAC,CAAE;EAAC,iBAAA,CAACnsB,MAAM,CAACmsB,MAAAA,CAAAA;EAC9B,aAAA,MACK,IAAI,IAAI,CAACtiB,MAAM,KAAK,KAAO,EAAA;EAC9B,gBAAA,MAAM0kB,kBAAkBjN,OAAQjhB,CAAAA,MAAM,CAACxB,CAAAA,IAAKA,CAAI,GAAA,CAAA,CAAA;kBAChD,IAAI0vB,eAAAA,CAAgBptB,MAAM,EAAE;sBAC1B,MAAMstB,MAAAA,GAASF,eAAe,CAAC,CAAE,CAAA;EACjC,oBAAA,MAAMG,kBAAqBH,GAAAA,eAAAA,CAAgB/qB,GAAG,CAAC3E,CAAAA,CAAK,GAAA,CAACE,IAAK4a,CAAAA,GAAG,CAAC5a,IAAAA,CAAKsV,GAAG,CAACoa,SAAS5vB,CAAI4vB,GAAAA,MAAAA,CAAAA,CAAAA;sBACpFF,eAAgBztB,CAAAA,OAAO,CAAC,CAAC6tB,MAAQ9rB,EAAAA,CAAAA,GAAAA;0BAC/Bye,OAAO,CAACA,QAAQ/gB,OAAO,CAACouB,QAAQ,GAAGD,kBAAkB,CAAC7rB,CAAE,CAAA;EAC1D,qBAAA,CAAA;EACF;EACA,gBAAA,MAAM2rB,kBAAkBlN,OAAQjhB,CAAAA,MAAM,CAACxB,CAAAA,IAAKA,CAAI,GAAA,CAAA,CAAA;kBAChD,IAAI2vB,eAAAA,CAAgBrtB,MAAM,EAAE;EAC1B,oBAAA,MAAMytB,SAASJ,eAAe,CAACA,eAAgBrtB,CAAAA,MAAM,GAAG,CAAE,CAAA;sBAC1D,MAAM0tB,kBAAAA,GAAqBL,eAAgBhrB,CAAAA,GAAG,CAAC3E,CAAAA,IAAKE,IAAK4a,CAAAA,GAAG,CAACiV,MAAAA,EAAQ/vB,CAAI+vB,GAAAA,MAAAA,CAAAA,CAAAA;sBACzEJ,eAAgB1tB,CAAAA,OAAO,CAAC,CAAC6tB,MAAQ9rB,EAAAA,CAAAA,GAAAA;0BAC/Bye,OAAO,CAACA,QAAQ/gB,OAAO,CAACouB,QAAQ,GAAGE,kBAAkB,CAAChsB,CAAE,CAAA;EAC1D,qBAAA,CAAA;EACF;kBACA,IAAIye,OAAAA,CAAQ9gB,QAAQ,CAAC,CAAI8gB,CAAAA,EAAAA,OAAO,CAACA,OAAQ/gB,CAAAA,OAAO,CAAC,CAAA,CAAA,CAAG,GAAG,CAAA;EACzD;cAEA,IAAI,CAACutB,WAAW,GAAI,CAAA,IAAI,CAACjkB,MAAM,KAAK,SAAa,IAAA,IAAI,CAACA,MAAM,KAAK,aAAakkB,qBAAiBvT,GAAAA,kBAAU,IACtGC,MAAM,CAAC6G,OACP5G,CAAAA,CAAAA,KAAK,CAACyR,MAAAA,CAAAA;EAEX;UAEA,IAAI,IAAI,CAAC2B,WAAW,CAACgB,KAAK,EAAE,IAAI,CAAChB,WAAW,CAACgB,KAAK,CAAC,IAAA,CAAA;EAEnD,QAAA,MAAMC,QAAW,GAAA,IAAI,CAACC,WAAW,IAAI,CAAC;EAAC,YAAA,SAAA;EAAW,YAAA,OAAA;EAAS,YAAA;EAAW,SAAA,CAACxuB,QAAQ,CAAC,IAAI,CAACqJ,MAAM,CAAA;EAC3F,QAAA,MAAM3E,IAAIC,uBAAa1C,EAAAA,CAAAA,QAAQ,CAAC,IAAI,CAACC,SAAS,CAAA;EAC9C,QAAA,MAAMusB,WAAc,GAAA;cAACrqB,KAAO,EAAA;kBAACqC,OAAS,EAAA;EAAC,aAAA;cAAGJ,IAAM,EAAA;kBAACI,OAAS,EAAA;EAAC,aAAA;cAAGvF,MAAQ,EAAA,IAAI,CAACoJ,MAAM;cAAE3F,UAAYD,EAAAA,CAAAA;cAAGG,MAAQ,EAAA;kBAAC4B,OAAS,EAAA;EAAC;EAAC,SAAA;EACtH,QAAA,MAAMioB,UAAa5mB,GAAAA,QAAAA,CAAK,4BAA8BrI,EAAAA,MAAAA,CAAOgB,MAAM,CAAC;cAACkuB,SAAWJ,EAAAA;WAAWE,EAAAA,WAAAA,CAAAA,CAAAA;EAC3F,QAAA,MAAMG,SAAY9mB,GAAAA,QAAAA,CAAK,0BAA4BrI,EAAAA,MAAAA,CAAOgB,MAAM,CAAC;cAACkuB,SAAWJ,EAAAA;WAAWE,EAAAA,WAAAA,CAAAA,CAAAA;EACxF,QAAA,MAAMI,WAAc/mB,GAAAA,QAAAA,CAAK,4BAA8BrI,EAAAA,MAAAA,CAAOgB,MAAM,CAAC;EAACkuB,YAAAA,SAAAA,EAAW,CAACJ;WAAWE,EAAAA,WAAAA,CAAAA,CAAAA;EAE7F,QAAA,IAAIF,QAAU,EAAA;EAEZ,YAAA,MAAMO,OAAU,GAAA;kBAACloB,CAAG,EAAA,CAAA;kBAAGC,CAAG,EAAA;EAAC,aAAA;cAE3B,MAAMkoB,UAAAA,GAAa9U,OAAOjL,KAAK,EAAA;cAC/B,IAAI,IAAI,CAACwf,WAAW,EAAE;EACpB,gBAAA,MAAMhR,OAAOuR,UAAU,CAACA,UAAWpuB,CAAAA,MAAM,GAAG,CAAE,CAAA;EAC9C,gBAAA,MAAMujB,OAAO6K,UAAU,CAACA,UAAWpuB,CAAAA,MAAM,GAAG,CAAE,CAAA;EAC9C,gBAAA,MAAM6a,GAAMgC,GAAAA,IAAAA,GAAOA,IAAO,GAAA,EAAA,GAAK0G,IAAO,GAAA,EAAA;EAEtC,gBAAA,MAAM/K,GAAMqC,GAAAA,GAAAA,IAAO,CAAKA,IAAAA,GAAAA,IAAO,EAAC,GAAIjd,IAAKqc,CAAAA,KAAK,CAACY,GAAAA,CAAAA,CAAK9c,QAAQ,EAAA,CAAGiC,MAAM,GAAG,CAAA,GAAI6a,GAAI9c,CAAAA,QAAQ,EAAG8V,CAAAA,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE,CAAC4G,OAAO,CAAC,iBAAA,EAAmB,IAAMza,CAAAA,CAAAA,MAAM,GAAG,EAAC;EACpJ,gBAAA,MAAMquB,GAAMzwB,GAAAA,IAAAA,CAAK4a,GAAG,CAAC,EAAIA,EAAAA,GAAAA,CAAAA;EACzB4V,gBAAAA,UAAU,CAACA,UAAWpuB,CAAAA,MAAM,GAAG,CAAA,CAAE,GAAG6c,IAAOwR,GAAAA,GAAAA;EAC7C;EAEA,YAAA,MAAMC,aAAaxuB,UAAO,CAAA;EACxBwZ,gBAAAA,MAAAA,EAAQgE,UAAa8Q,GAAAA,UAAAA,GAAaA,UAAW/f,CAAAA,KAAK,GAAGkD,OAAO,EAAA;kBAC5DjQ,QAAU,EAAA,IAAI,CAACC,SAAS;kBACxB8D,MAAQ,EAAA,IAAI,CAACvB,OAAO;EACpB0H,gBAAAA,MAAAA,EAAQA,MAAU2O,IAAAA,KAAAA;kBAClBxF,MAAQ,EAAA,IAAI,CAACC,OAAO;kBACpB9D,OAAS,EAAA,IAAI,CAAC2M,QAAQ;EACtBhV,gBAAAA,KAAAA,EAAO,IAAI,CAACC,MAAM,KAAK,QAAQ,KAAQ,GAAA,QAAA;EACvCyR,gBAAAA,KAAAA;kBACA/U,KAAO,EAAA,IAAI,CAACxB;eACX,EAAA,IAAI,CAAC2qB,WAAW,CAAA;EAEnB,YAAA,MAAMziB,cAAchM,UAAO,CAAA;EACzBuF,gBAAAA,MAAAA,EAAQ,IAAI,CAAC,CAAC,CAAC,EAAEA,MAAAA,CAAAA,CAAQ,CAAC,GAAG,CAAA;EAC7BD,gBAAAA,KAAAA,EAAO,IAAI,CAAC,CAAC,CAAC,EAAEA,KAAAA,CAAAA,CAAO,CAAC,GAAG;eAC1B,EAAA,IAAI,CAACgH,YAAY,CAAA;EAEpB,YAAA,IAAI,CAACF,WAAW,CAAC3M,MAAM,CAACuM,WAAAA,CAAAA;EACxB,YAAA,MAAMP,YAAY,EAAE;EAEpB,YAAA,IAAI+R,UAAc,IAAA,IAAI,CAACkR,SAAS,EAAE;EAEhC,gBAAA,MAAMC,QAAW,GAAA;sBACf,aAAe,EAAA,IAAI,CAACviB,WAAW,CAACiW,UAAU,EAAG,CAAA,IAAI,CAACqM,SAAS,CAAA;sBAC3D,WAAa,EAAA,IAAI,CAACtiB,WAAW,CAAC2E,QAAQ,EAAG,CAAA,IAAI,CAAC2d,SAAS,CAAA;sBACvD,aAAe,EAAA,IAAI,CAACtiB,WAAW,CAACwiB,UAAU,EAAG,CAAA,IAAI,CAACF,SAAS;EAC7D,iBAAA;EAEA,gBAAA,IAAIC,QAAQ,CAAC,aAAc,CAAA,YAAYnsB,KAAOmsB,EAAAA,QAAQ,CAAC,aAAA,CAAc,GAAGA,QAAQ,CAAC,aAAA,CAAc,CAAC,CAAE,CAAA;EAClG,gBAAA,IAAIE,aAAgB1F,GAAAA,aAAAA,CAAU,IAAI,CAACuF,SAAS,EAAEC,QAAAA,CAAAA;kBAE9C,IAAIE,aAAAA,IAAiBA,aAAgB,GAAA,IAAI,CAAC,CAAC,CAAC,EAAEvpB,KAAAA,CAAAA,CAAO,CAAC,GAAG,CAAG,EAAA;EAC1DmG,oBAAAA,SAAAA,CAAUH,IAAI,CAAC,IAAI,CAACojB,SAAS,CAAA;sBAC7BG,aAAiB,IAAA,IAAI,CAAClR,QAAQ;sBAC9B,IAAIH,UAAAA,EAAY6Q,OAAQloB,CAAAA,CAAC,IAAI0oB,aAAAA;sBAC7BL,UAAU,CAAClpB,MAAM,IAAIupB,aAAAA;EACvB;EAEF;EACA,YAAA,IAAIrR,UAAc,IAAA,IAAI,CAACsR,SAAS,EAAE;EAEhC,gBAAA,MAAMH,QAAW,GAAA;sBACf,aAAe,EAAA,IAAI,CAACviB,WAAW,CAACiW,UAAU,EAAG,CAAA,IAAI,CAACyM,SAAS,CAAA;sBAC3D,WAAa,EAAA,IAAI,CAAC1iB,WAAW,CAAC2E,QAAQ,EAAG,CAAA,IAAI,CAAC+d,SAAS,CAAA;sBACvD,aAAe,EAAA,IAAI,CAAC1iB,WAAW,CAACwiB,UAAU,EAAG,CAAA,IAAI,CAACE,SAAS;EAC7D,iBAAA;EAEA,gBAAA,IAAIH,QAAQ,CAAC,aAAc,CAAA,YAAYnsB,KAAOmsB,EAAAA,QAAQ,CAAC,aAAA,CAAc,GAAGA,QAAQ,CAAC,aAAA,CAAc,CAAC,CAAE,CAAA;EAClG,gBAAA,IAAII,aAAgB5F,GAAAA,aAAAA,CAAU,IAAI,CAAC2F,SAAS,EAAEH,QAAAA,CAAAA;kBAE9C,IAAII,aAAAA,IAAiBA,aAAgB,GAAA,IAAI,CAAC,CAAC,CAAC,EAAEzpB,KAAAA,CAAAA,CAAO,CAAC,GAAG,CAAG,EAAA;EAC1DmG,oBAAAA,SAAAA,CAAUH,IAAI,CAAC,IAAI,CAACwjB,SAAS,CAAA;sBAC7BC,aAAiB,IAAA,IAAI,CAACpR,QAAQ;EAC9B,oBAAA,IAAI,CAACH,UAAAA,EAAY6Q,OAAQjoB,CAAAA,CAAC,IAAI2oB,aAAAA;sBAC9BP,UAAU,CAAClpB,MAAM,IAAIypB,aAAAA;EACvB;EAEF;EAEA,YAAA,IAAI,CAACC,SAAS,CACXhsB,MAAM,CAACqE,SAAK,8BAAgC,EAAA;kBAAC1D,KAAO,EAAA;sBAACqC,OAAS,EAAA;EAAC,iBAAA;kBAAGvF,MAAQ,EAAA,IAAI,CAACoJ;eAASvG,CAAAA,CAAAA,IAAI,IAC5F7D,MAAM,CAAC+uB,YACPhtB,QAAQ,CAAC,GACTqB,MAAM,EAAA;EAET,YAAA,MAAMosB,UAAa,GAAA,IAAI,CAACD,SAAS,CAACtI,WAAW,EAAA;EAE7C,YAAA,IAAI,CAAC7K,YAAY,CAACvW,KAAM,CAAA,GAAG,IAAI,CAAC,CAAC,CAAC,EAAEA,OAAO,CAAC,GAAG,IAAI,CAACqY,QAAQ,GAAG,CAAA;cAC/D,IAAI,CAAC9B,YAAY,CAACtW,MAAO,CAAA,GAAG0pB,UAAU,CAAC1pB,MAAO,CAAA,GAAG,IAAI,CAAC2pB,KAAK;EAE3D,YAAA,IAAI,CAACrT,YAAY,CAAC1V,EAAE,GAAG,IAAI,CAACwX,QAAQ;EACpC,YAAA,IAAI,CAAC9B,YAAY,CAACzV,EAAE,GAAG,IAAI,CAACuX,QAAQ;cACpC,IAAI,IAAI,CAACuH,MAAM,KAAK,QAAA,EAAU,IAAI,CAACrJ,YAAY,CAACzV,CAAE,CAAA,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAEb,MAAAA,CAAAA,CAAQ,CAAC,GAAG,IAAI,CAACsW,YAAY,CAACtW,MAAO,CAAD,IAAK,CAAA;mBACnG,IAAI,IAAI,CAAC2f,MAAM,KAAK,KAAA,EAAO,IAAI,CAACrJ,YAAY,CAACzV,CAAE,CAAA,GAAG,IAAI,CAAC,CAAC,CAAC,EAAEb,MAAAA,CAAAA,CAAQ,CAAC,GAAG,IAAI,CAACoY,QAAQ,GAAG,IAAI,CAAC9B,YAAY,CAACtW,MAAO,CAAA;EAErH,YAAA,MAAM4pB,kBAAkB,IAAI,CAACtT,YAAY,CAACzV,CAAAA,CAAE,IAAI;EAAC,gBAAA,QAAA;EAAU,gBAAA;eAAQ,CAAC7G,QAAQ,CAAC,IAAI,CAACuV,OAAO,CAAI,GAAA,IAAI,CAACoa,KAAK,GAAG,CAAA,CAAMV,IAAAA,WAAWxd,OAAO,IAAI,IAAI,CAACoe,UAAU,CAACpe,OAAO,EAAC,CAAA;cAC9J,MAAMqe,SAAAA,GAAY,CAAC,UAAU,EAAEhB,QAAQloB,CAAC,IAAIqX,UAAAA,GAAa,CAAI2R,GAAAA,eAAc,EAAG,EAAE,EAAEd,OAAQjoB,CAAAA,CAAC,IAAIoX,aAAa2R,eAAkB,GAAA,CAAA,CAAG,CAAA,CAAC,CAAC;cACnI,IAAI,CAACC,UAAU,CACZpsB,MAAM,CAACqE,QAAK,CAAA,0BAAA,EAA4BrH,WAAOguB,WAAa,EAAA;kBAC3DE,SAAW,EAAA,IAAA;kBACXvqB,KAAO,EAAA;EAAC0rB,oBAAAA;EAAS,iBAAA;kBACjBjrB,MAAQ,EAAA;EAACirB,oBAAAA;EAAS;eAChB/rB,CAAAA,CAAAA,CAAAA,IAAI,IACP7D,MAAM,CAAC+uB,YACPvI,KAAK,CAAC,SACNpjB,MAAM,EAAA;cAET,MAAMysB,SAAAA,GAAY,IAAI,CAACN,SAAS,CAAC5S,YAAY,CAACna,IAAI,CAAC,IAAI,CAAC+sB,SAAS,CAAA;EACjE,YAAA,MAAMtV,UAAa,GAAA,IAAI,CAACsV,SAAS,CAAC1S,SAAS,EAAA;cAE3C,IAAIiT,IAAAA,GAAO,IAAI,CAAC1lB,MAAM,CAACrG,SAAS,CAAC,MAAQzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,gBAAA;EAAE,aAAA,CAAA;EACjD,YAAA,MAAMytB,SAAYD,GAAAA,IAAAA,CAAK5rB,KAAK,EAAA,CAAGV,MAAM,CAAC,MAAA,CAAA;EACtCusB,YAAAA,SAAAA,CAAUvsB,MAAM,CAAC,gBAAkBW,CAAAA,CAAAA,IAAI,CAAC,IAAA,EAAM,CAAC,SAAS,EAAE,IAAI,CAAC1C,KAAK,CAAE,CAAA,CAAA;cACtEquB,IAAOC,GAAAA,SAAAA,CAAUnrB,KAAK,CAACkrB,IAAAA,CAAAA;EACvBA,YAAAA,IAAAA,CAAKvsB,MAAM,CAAC,gBAAA,CAAA,CACTY,IAAI,CAAC,GAAGuC,CAAE,CAAA,CAAC,CAAC,EAAEqX,aAAa,IAAO,GAAA,MAAA,CAAA,CAClC5Z,IAAI,CAAC,GAAGuC,CAAE,CAAA,CAAC,CAAC,EAAEqX,aAAa,MAAS,GAAA,IAAA,CAAA,CACpC5Z,IAAI,CAAC,GAAGwC,CAAE,CAAA,CAAC,CAAC,EAAE,MACdxC,IAAI,CAAC,GAAGwC,CAAE,CAAA,CAAC,CAAC,EAAE,IAAA,CAAA;cACjB,MAAMqpB,KAAAA,GAAQF,KAAKvsB,MAAM,CAAC,kBAAkBQ,SAAS,CAAC,MACnDzB,CAAAA,CAAAA,IAAI,CAACmpB,MAAAA,CAAAA;EACR,YAAA,MAAMwE,WAAc,GAAA,IAAI,CAAC7C,WAAW,CAACrT,MAAM,EAAA;EAC3C,YAAA,MAAMmW,cAAcpW,kBACjBC,EAAAA,CAAAA,MAAM,CAACE,UACPD,CAAAA,CAAAA,KAAK,CAAC+D,UAAa,GAAA;EAAC,gBAAA,CAAA;EAAG,gBAAA;eAAI,GAAG;EAAC,gBAAA,GAAA;EAAK,gBAAA;EAAE,aAAA,CAAA;EAEzCiS,YAAAA,KAAAA,CAAM9rB,KAAK,EAAA,CAAGV,MAAM,CAAC,QAAQoB,KAAK,CAACorB,KAChC7rB,CAAAA,CAAAA,IAAI,CAAC,QAAA,EAAU,CAAChG,CAAAA,EAAGgE,IAAM,CAAGA,EAAAA,CAAAA,IAAK8tB,WAAYxvB,CAAAA,MAAM,GAAG,CAAA,GAAIyvB,WAAYL,CAAAA,SAAAA,CAAUI,WAAW,CAAC9tB,CAAAA,CAAE,CAAK,CAAA,GAAA,GAAA,CAAI,CAAC,CAAC,CACzGgC,CAAAA,IAAI,CAAC,YAAcgsB,EAAAA,MAAAA,CAAAA;EAEtB,mDACA,MAAMC,WAAc,GAAA,CAACjyB,CAAGgE,EAAAA,CAAAA,GAAAA;kBACtB,MAAMkuB,IAAAA,GAAOzV,KAAK,CAACzY,CAAI,GAAA,CAAA,CAAE,IAAI0sB,UAAU,CAACA,UAAAA,CAAWpuB,MAAM,GAAG,CAAE,CAAA;EAC9D,gBAAA,OAAOpC,IAAKsV,CAAAA,GAAG,CAACkc,SAAAA,CAAUQ,QAAQR,SAAU1xB,CAAAA,CAAAA,CAAAA,CAAAA;EAC9C,aAAA;EAEA,YAAA,MAAMoa,aAAahY,UAAO,CAAA;kBACxBwB,QAAU,EAAA,IAAI,CAACC,SAAS;EACxB6H,gBAAAA,IAAAA,EAAM+Q,QAAQzc,CAAAA,CAAAA,GAAK,IAAI,CAACivB,WAAW,CAACjvB,CAAAA,CAAAA,GAAK,CAAC,cAAc,EAAE,IAAI,CAACsD,KAAK,CAAC,CAAC,CAAC;EACvE,gBAAA,CAACiF,CAAE,GAAEkU,KAAQ,GAAA,CAACzc,CAAGgE,EAAAA,CAAAA,GAAM0tB,SAAU1xB,CAAAA,CAAAA,CAAAA,GAAKiyB,WAAYjyB,CAAAA,CAAAA,EAAGgE,CAAK,CAAA,GAAA,CAAA,IAAK;EAAC,wBAAA,MAAA;EAAQ,wBAAA;EAAQ,qBAAA,CAACrC,QAAQ,CAAC,IAAI,CAACuV,OAAO,CAAA,GAAI+a,WAAYjyB,CAAAA,CAAAA,EAAGgE,CAAK,CAAA,GAAA,CAAA,CAAK8X,GAAAA,UAAU,CAAC,CAAA,CAAE,GAAIA,CAAAA,UAAU,CAAC,CAAA,CAAE,GAAGA,UAAU,CAAC,CAAA,CAAE,IAAI,CAAI2U,GAAAA,OAAO,CAACloB,CAAE,CAAA;kBACnM,CAACC,CAAAA,GAAI,IAAI,CAACyV,YAAY,CAACzV,CAAAA,CAAE,IAAI;EAAC,oBAAA,KAAA;EAAO,oBAAA;EAAO,iBAAA,CAAC7G,QAAQ,CAAC,IAAI,CAACuV,OAAO,CAAA,GAAIma,UAAU,CAAC1pB,MAAAA,CAAO,GAAG,CAAA,CAAA,GAAK,IAAI,CAAC2pB,KAAK,GAAG,CAAIb,GAAAA,OAAO,CAACjoB,CAAE,CAAA;kBAC3H,CAACd,KAAAA,GAAQ+U,KAAAA,GAAQwV,WAAcnW,GAAAA,UAAU,CAAC,CAAE,CAAA,GAAGA,UAAU,CAAC,CAAE,CAAA;EAC5D,gBAAA,CAACnU,MAAO,GAAE,IAAI,CAAC2pB;eACd,EAAA,IAAI,CAAChY,WAAW,CAAA;EAEnB,YAAA,IAAI,CAAC6Y,UAAU,CACZhuB,IAAI,CAACsY,KAAS,IAAA;EAAC,gBAAA;EAAE,aAAA,CAAA,CACjBtU,EAAE,CAAC,CAACnI,CAAAA,EAAGgE,IAAMA,CACboB,CAAAA,CAAAA,MAAM,CAACmrB,SAAAA,CAAU7qB,IAAI,EAAA,CAAA,CACrB7D,MAAM,CAACuY,YACPnV,MAAM,EAAA;EAETmJ,YAAAA,WAAAA,CAAYzG,MAAM,GAAG,IAAI,CAACsW,YAAY,CAACtW,MAAO,CAAA;EAC9CyG,YAAAA,WAAAA,CAAY1G,KAAK,GAAG,IAAI,CAACuW,YAAY,CAACvW,KAAM,CAAA;EAC5C,YAAA,IAAI,CAAC8G,WAAW,CACb3M,MAAM,CAACuM,WACPjK,CAAAA,CAAAA,IAAI,CAAC0J,SAAAA,CAAAA,CACLzI,MAAM,CAACirB,UAAAA,CAAW3qB,IAAI,EAAA,CAAA,CACtB6C,CAAC,CAACvI,CAAAA,CAAKA,GAAAA,CAAAA,KAAM,IAAI,CAACkxB,SAAS,GACxB9W,WAAW7R,CAAC,GAAG6R,UAAW1S,CAAAA,KAAK,GAAG,CAAI,GAAA,IAAI,CAACqY,QAAQ,GACnD,IAAI,CAAC9B,YAAY,CAAC1V,CAAC,CAAA,CACtBC,CAAC,CAACxI,CAAAA,CAAKoa,GAAAA,UAAAA,CAAW5R,CAAC,GAAG,IAAI,CAACgG,WAAW,CAAC2E,QAAQ,GAAGnT,CAAK,CAAA,GAAA,CAAA,CAAA,CACvDuO,IAAI,CAACvO,CAAAA,CAAAA,GAAKA,CACViL,CAAAA,CAAAA,MAAM,CAAC2U,UAAa,GAAA,CAAA,GAAI,IAAI,CAAC1I,OAAO,KAAK,OAAA,GAAU,EAAK,GAAA,KACxDjS,MAAM,EAAA;WAGN,MAAA;cAEHwE,QAAK,CAAA,0BAAA,EAA4BrI,MAAOgB,CAAAA,MAAM,CAAC;kBAACkuB,SAAWJ,EAAAA;eAAWE,EAAAA,WAAAA,CAAAA,CAAAA;EAEtE,YAAA,IAAIgC,aAAa3V,KAAMP,CAAAA,MAAM,CAAC,CAACxX,KAAK6c,IAAMvd,EAAAA,CAAAA,GAAAA;kBAExC,MAAM6N,KAAAA,GAAQ,IAAI,CAACwgB,aAAa,CAAChuB,IAAI,CAAC,IAAI,CAAA,CAAEkd,IAAMvd,EAAAA,CAAAA,EAAGyY,KAAOsQ,EAAAA,SAAAA,CAAAA;EAC5DroB,gBAAAA,GAAAA,CAAIgJ,IAAI,CAAC;sBAACoF,KAAOwa,EAAAA,MAAM,CAACtpB,CAAAA,GAAI,CAAE,CAAA;sBAAEmE,EAAI0J,EAAAA;EAAK,iBAAA,CAAA;kBAEzC,OAAOnN,GAAAA;EACT,aAAA,EAAG,EAAE,CAAA;EACL,YAAA,IAAI,CAACkb,UAAAA,EAAYwS,UAAaA,GAAAA,UAAAA,CAAWve,OAAO,EAAA;EAEhD,YAAA,MAAMye,eAAelwB,UAAO,CAAA;kBAC1BimB,KAAOzI,EAAAA,UAAAA,GAAa,WAAW,CAAA;sBAAC2S,KAAO,EAAA,MAAA;sBAAQC,MAAQ,EAAA,QAAA;sBAAUC,GAAK,EAAA;EAAO,iBAAA,EAAE,IAAI,CAACnL,MAAM,CAAC;EAC3FiF,gBAAAA,SAAAA,EAAW3M,aAAa,KAAQ,GAAA,QAAA;kBAChChc,QAAU,EAAA,IAAI,CAACC,SAAS;kBACxB8D,MAAQ,EAAA,IAAI,CAACvB,OAAO;kBACpBgN,OAAS,EAAA,IAAI,CAAC2M,QAAQ;EACtB9c,gBAAAA,WAAAA,EAAab,UAAO,CAAA;sBAClBwB,QAAU,EAAA,IAAI,CAACC;EACjB,iBAAA,EAAG,IAAI,CAACgtB,WAAW,CAAC5tB,WAAW,IAAI,EAAC,CAAA;EACpCumB,gBAAAA,KAAAA,EAAO,IAAI,CAACqH,WAAW,CAACrH,KAAK;EAC7BC,gBAAAA,WAAAA,EAAa,IAAI,CAACoH,WAAW,CAACpH,WAAW,IAAI,EAAC;kBAC9C/hB,KAAO,EAAA,IAAI,CAACxB,MAAM;EAClByM,gBAAAA,aAAAA,EAAeiN,aAAa,CAAA;sBAAC2S,KAAO,EAAA,KAAA;sBAAOC,MAAQ,EAAA,QAAA;sBAAUC,GAAK,EAAA;EAAQ,iBAAA,EAAE,IAAI,CAACnL,MAAM,CAAC,GAAG;eAC1F,EAAA,IAAI,CAACoL,aAAa,CAAA;EAErB,YAAA,IAAI,CAACC,YAAY,CACdxuB,IAAI,CAACiuB,UACLhtB,CAAAA,CAAAA,MAAM,CAACorB,WAAAA,CAAY9qB,IAAI,EAAA,CAAA,CACvB7D,MAAM,CAACywB,cACPrtB,MAAM,EAAA;EAET,YAAA,IAAI,CAACgZ,YAAY,GAAG,IAAI,CAAC0U,YAAY,CAAC7J,WAAW,EAAA;EAEnD;EAEA,QAAA,IAAI5jB,UAAUgD,UAAWhD,CAAAA,QAAAA,EAAU,IAAI,CAACrB,SAAS,GAAG,GAAA,CAAA;EAEpD,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMA+sB,UAAAA,CAAW9uB,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACuuB,WAAW,GAAGzuB,UAAAA,CAAO,IAAI,CAACyuB,WAAW,EAAE/uB,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC+uB,WAAW;EACrG;EAEA;;;;;OAMAxI,KAAAA,CAAMvmB,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACglB,MAAM,GAAGxlB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACwlB,MAAM;EACjE;EAEA;;;;;OAMA7E,OAAAA,CAAQ3gB,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+qB,QAAQ,GAAGvrB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACurB,QAAQ;EACrE;EAEA;;;;;OAMAuF,UAAAA,CAAW9wB,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6tB,WAAW,GAAGruB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACquB,WAAW;EAC3E;EAEA;;;;;OAMA0C,YAAAA,CAAa/wB,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+vB,aAAa,GAAGvwB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACuwB,aAAa;EAC/E;EAEA;;;;;OAMAS,YAAAA,CAAahxB,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACywB,aAAa,GAAGjxB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACixB,aAAa;EAC/E;EAEA;;;;;OAOAC,QAAAA,CAASlxB,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACqrB,SAAS,GAAG7rB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC6rB,SAAS;EACvE;EAEA;;;;;OAMA7a,KAAAA,CAAMhR,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACirB,MAAM,GAAGzrB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACyrB,MAAM;EACjE;EAEA;;;;;OAMA0F,QAAAA,CAASnxB,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACssB,SAAS,GAAG9sB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC8sB,SAAS;EACvE;EAEA;;;;;OAMAsE,QAAAA,CAASpxB,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACkrB,SAAS,GAAG1rB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC0rB,SAAS;EACvE;EAEA;;;;;OAMA2F,QAAAA,CAASrxB,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACqsB,SAAS,GAAG7sB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC6sB,SAAS;EACvE;EAEA;;;;;OAMAxqB,IAAAA,CAAKrC,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuD,KAAK,GAAG/D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+D,KAAK;EAC/D;EAEA;;;;;OAMA+V,MAAAA,CAAO9Z,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACue,OAAO,GAAG/e,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+e,OAAO;EACnE;EAEA;;;;;OAMAjd,QAAAA,CAAS9B,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuB,SAAS,GAAG/B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+B,SAAS;EACvE;EAEA;;;;;OAMA8D,MAAAA,CAAO7F,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC8D,OAAO,GAAGtE,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACsE,OAAO;EACnE;EAEA;;;;;OAMAgI,WAAAA,CAAYtM,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACoM,YAAY,GAAGtM,UAAAA,CAAO,IAAI,CAACsM,YAAY,EAAE5M,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC4M,YAAY;EACxG;EAEA;;;;;OAMA0kB,QAAAA,CAAStxB,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwuB,SAAS,GAAGhvB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgvB,SAAS;EACvE;EAEA;;;;;OAMAuC,QAAAA,CAASvxB,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4uB,SAAS,GAAGpvB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACovB,SAAS;EACvE;EAEA;;;;;OAMAoB,YAAAA,CAAaxwB,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACowB,aAAa,GAAGtwB,UAAAA,CAAO,IAAI,CAACswB,aAAa,EAAE5wB,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC4wB,aAAa;EAC3G;EAEA;;;;;OAMAY,QAAAA,CAASxxB,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4qB,SAAS,GAAGprB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACorB,SAAS;EACvE;EAEA;;;;;OAMAjW,MAAAA,CAAOnV,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4U,OAAO,GAAGpV,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACoV,OAAO;EACnE;EAEA;;;;;EAKA,KACA4R,WAAc,GAAA;UACZ,OAAO,IAAI,CAAC7K,YAAY;EAC1B;EAEA;;;;;OAMA7K,OAAAA,CAAQtR,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACyd,QAAQ,GAAGje,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACie,QAAQ;EACrE;EAEA;;;;;OAMA3F,UAAAA,CAAWtY,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACgX,WAAW,GAAGlX,UAAAA,CAAO,IAAI,CAACkX,WAAW,EAAExX,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACwX,WAAW;EACrG;EAEA;;;;;OAMAvO,KAAAA,CAAMjJ,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC0I,MAAM,GAAGlJ,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACkJ,MAAM;EACjE;EAEA;;;;;OAMA5F,MAAAA,CAAOtD,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6C,OAAO,GAAGC,kBAAAA,CAAOtD,IAAI,IAAG,IAAK,IAAI,CAACqD,OAAO;EAC3E;EAEA;;;;;OAMAuE,IAAAA,CAAK5H,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACgvB,KAAK,GAAGxvB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACwvB,KAAK;EAC/D;EAEA;;;;;;;;;OAUAxsB,KAAAA,CAAMhD,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0qB,MAAM,GAAG,OAAOlrB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkrB,MAAM;EACzG;EAEA;;;;;OAMAtlB,KAAAA,CAAM5F,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4D,MAAM,GAAGpE,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACoE,MAAM;EACjE;EA9xBA;;;;EAIA,KACA/C,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACquB,UAAU,GAAG,IAAI/T,IAAAA,EAAAA;UACtB,IAAI,CAACoT,WAAW,GAAG;cACjBpI,QAAU,EAAA;EACZ,SAAA;UACA,IAAI,CAAC2I,SAAS,GAAG,IAAI3T,IAAAA,EAAAA;UACrB,IAAI,CAAC6J,MAAM,GAAG,QAAA;UACd,IAAI,CAAC+F,QAAQ,GAAG,CAAA;UAChB,IAAI,CAAC8C,WAAW,GAAG,KAAA;EACnB,QAAA,IAAI,CAACkC,aAAa,GAAG,CAAC9Q,IAAAA,EAAMvd,GAAGyY,KAAOsQ,EAAAA,SAAAA,GAAAA;EAEpC,YAAA,MAAMpN,QAAS,GAAA,IAAI,CAACkR,WAAW,CAACpQ,UAAU,GACtC,IAAI,CAACoQ,WAAW,CAACpQ,UAAU,GAAGgB,uBAAAA;EAElC,YAAA,MAAMyQ,IAAOzV,GAAAA,KAAK,CAACzY,CAAAA,GAAI,CAAE,CAAA;EACzB,YAAA,MAAM6hB,OAAO7hB,CAAIyY,GAAAA,KAAK,CAACzY,CAAAA,GAAI,EAAE,GAAG,KAAA;EAChC,YAAA,MAAMmb,IAAOnb,GAAAA,CAAAA,KAAMyY,KAAMna,CAAAA,MAAM,GAAG,CAAA;cAClC,IAAIif,IAAAA,KAAS2Q,QAAQ/S,IAAM,EAAA;EACzB,gBAAA,MAAM6C,MAAS7C,GAAAA,IAAAA,IAAQoC,IAAOzI,GAAAA,WAAAA,CAAIiU,aAAa,GAAM,GAAA,EAAA;kBACrD,OAAO,CAAA,EAAGpN,QAAO4B,CAAAA,IAAAA,CAAAA,CAAAA,EAAQS,MAAQ,CAAA,CAAA;eAE9B,MAAA;EACH,gBAAA,MAAM7E,GAAM+U,GAAAA,IAAAA,GAAOA,IAAO,GAAA,GAAA,GAAM3Q,IAAO,GAAA,GAAA;EAEvC,gBAAA,MAAMzG,GAAMqC,GAAAA,GAAAA,IAAO,CAAKA,IAAAA,GAAAA,IAAO,EAAC,GAAIjd,IAAKqc,CAAAA,KAAK,CAACY,GAAAA,CAAAA,CAAK9c,QAAQ,EAAA,CAAGiC,MAAM,GAAG,CAAA,GAAI6a,GAAI9c,CAAAA,QAAQ,EAAG8V,CAAAA,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE,CAAC4G,OAAO,CAAC,iBAAA,EAAmB,IAAMza,CAAAA,CAAAA,MAAM,GAAG,EAAC;EACpJ,gBAAA,MAAMquB,GAAMzwB,GAAAA,IAAAA,CAAK4a,GAAG,CAAC,EAAIA,EAAAA,GAAAA,CAAAA;EAEzB,gBAAA,MAAMyY,YAAY1N,IAAStE,KAAAA,IAAAA,IAAQvd,CAAM,KAAA,CAAA,GACrC2b,SAAOpW,WAAI,CAAA;sBAACgY,IAAOoP,GAAAA,GAAAA;EAAK5D,oBAAAA,SAAAA,CAAUtG,IAAI,CAACzmB,CAAAA,CAAKA,GAAAA,CAAAA,GAAIuhB,QAAQvhB,CAAIkyB,GAAAA,IAAAA;EAAM,iBAAA,CAAA,CAAA,GAClEvS,QAAO4B,CAAAA,IAAAA,CAAAA;EAEX,gBAAA,MAAMiS,YAAYjS,IAAQvd,IAAAA,CAAAA,KAAM,IAC5B2b,QAAOuS,CAAAA,IAAAA,CAAAA,GACPvS,SAAO7G,WAAI,CAAA;sBAACoZ,IAAOvB,GAAAA,GAAAA;sBAAK5D,SAAUlZ,CAAAA,OAAO,GAAG4S,IAAI,CAACzmB,CAAAA,CAAKA,GAAAA,CAAAA,GAAIuhB,QAAQvhB,CAAIkyB,GAAAA,IAAAA;EAAM,iBAAA,CAAA,CAAA;EAEhF,gBAAA,OAAO,IAAI,CAACa,aAAa,CAACQ,SAAWC,EAAAA,SAAAA,CAAAA;EAEvC;EACF,SAAA;EACA,QAAA,IAAI,CAACT,aAAa,GAAG,CAAChkB,GAAGZ,CAAMY,GAAAA,CAAAA,KAAMZ,CAAI,GAAA,CAAA,EAAGY,EAAE,GAAG,EAAEZ,CAAG,CAAA,CAAA,GAAG,GAAGY,CAAG,CAAA,CAAA;UAC/D,IAAI,CAAC4e,SAAS,GAAG,IAAA;UACjB,IAAI,CAACJ,MAAM,GAAG;EAAC,YAAA,SAAA;EAAW,YAAA,SAAA;EAAW,YAAA,SAAA;EAAW,YAAA,SAAA;EAAW,YAAA;EAAU,SAAA;EACrE,QAAA,IAAI,CAACqB,SAAS,GAAG/E,mBAAAA,CAAclnB,EAAE;EACjC,QAAA,IAAI,CAAC6qB,SAAS,GAAG3D,mBAAAA,CAAc4J,KAAK;EACpC,QAAA,IAAI,CAAC9E,SAAS,GAAG9E,mBAAAA,CAAc6J,GAAG;UAClC,IAAI,CAAC7tB,KAAK,GAAG,EAAE;UACf,IAAI,CAAChC,SAAS,GAAG,GAAA;UACjB,IAAI,CAACuC,OAAO,GAAG,GAAA;UACf,IAAI,CAACoI,WAAW,GAAG,IAAIwE,OAAAA,EAAAA;UACvB,IAAI,CAACtE,YAAY,GAAG;EAClBuE,YAAAA,SAAAA,EAAW4W,oBAAcC,IAAI;cAC7B3W,QAAU,EAAA;EACZ,SAAA;UACA,IAAI,CAACwf,YAAY,GAAG,IAAIxI,MAAAA,EAAAA;UACxB,IAAI,CAACuI,aAAa,GAAG;cACnBzvB,WAAa,EAAA;EACXsI,gBAAAA,MAAAA,EAAQse,oBAAcC,IAAI;kBAC1BxX,WAAa,EAAA;EACf;EACF,SAAA;UACA,IAAI,CAAC4a,SAAS,GAAG,CAAA;UACjB,IAAI,CAAChW,OAAO,GAAG,QAAA;UACf,IAAI,CAAC+G,YAAY,GAAG;cAACvW,KAAO,EAAA,CAAA;cAAGC,MAAQ,EAAA,CAAA;cAAGY,CAAG,EAAA,CAAA;cAAGC,CAAG,EAAA;EAAC,SAAA;UACpD,IAAI,CAACuX,QAAQ,GAAG,CAAA;EAChB,QAAA,IAAI,CAACoS,UAAU,GAAG,IAAIvc,IAAO/S,EAAAA,CAAAA,MAAM,CAAC,IAAI,CAAA;UACxC,IAAI,CAACyW,WAAW,GAAG;cACjB/N,MAAQ,EAAA,MAAA;cACR+G,WAAa,EAAA;EACf,SAAA;UACA,IAAI,CAACtH,MAAM,GAAG,QAAA;UACd,IAAI,CAACsmB,KAAK,GAAG,EAAA;UACb,IAAI,CAACtE,MAAM,GAAGvkB,QAAS,CAAA,OAAA,CAAA;UACvB,IAAI,CAACvC,MAAM,GAAG,GAAA;EAEhB;EA8sBF;;ECjzBe,MAAMytB,OAAAA,CAAAA;EAWnB;;;;EAIA,KACA3rB,IAAKyB,CAAAA,IAAI,EAAE7F,QAAQ,EAAE;UAEnB6F,IACGnD,CAAAA,UAAU,EAAG1C,CAAAA,QAAQ,CAACA,QAAAA,CAAAA,CAAU0B,KAAK,CAAC,SAAW,EAAA,CAAA,CAAA,CACjDgB,UAAU,EAAA,CAAG2B,MAAM,EAAA;UAEtB,IAAI,CAAC2rB,UAAU,GAAG,KAAA;EAEpB;EAEA;;;;OAKAC,IAAAA,CAAK,EAACjwB,QAAAA,GAAW,GAAG,EAAEsB,QAAQ,EAAC,GAAG,EAAE,EAAE;EAEpC,QAAA,IAAI,CAAC4uB,IAAI,CAACjzB,IAAI,CAAC,IAAI,CAACmH,IAAI,CAAC3D,IAAI,CAAC,IAAI,CAAGT,EAAAA,QAAAA,CAAAA;EACrC,QAAA,IAAI,CAAC6F,IAAI,CAAC5I,IAAI,CAAC,IAAI,CAACmH,IAAI,CAAC3D,IAAI,CAAC,IAAI,CAAGT,EAAAA,QAAAA,CAAAA;UAErC,IAAIsB,QAAAA,EAAUgD,UAAWhD,CAAAA,QAAAA,EAAUtB,QAAW,GAAA,GAAA,CAAA;UAE9C,IAAI,CAACgwB,UAAU,GAAG,KAAA;EAElB,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMA3uB,MAAAA,CAAO,EACLC,QAAQ,EACR6uB,YAAY,MAAM,EAClBnwB,QAAW,GAAA,GAAG,EACdowB,IAAAA,GAAO,aAAa,EACpBF,IAAAA,GAAO,qBAAqB,EAC5BxuB,KAAQ,GAAA,EAAE,EACX,GAAG,EAAE,EAAE;EAEN,QAAA,MAAMzC,SAASuC,kBAAO2uB,CAAAA,SAAAA,CAAAA;UAEtB,IAAI,CAACD,IAAI,GAAGjxB,MAAAA,CAAO+C,SAAS,CAAC,iBAAA,CAAA,CAAmBzB,IAAI,CAAC2vB,IAAO,GAAA;EAACA,YAAAA;EAAK,SAAA,GAAG,EAAE,CAAA;UAEvE,IAAI,CAACA,IAAI,GAAG,IAAI,CAACA,IAAI,CAAC/tB,KAAK,EAAGV,CAAAA,MAAM,CAAC,KAAA,CAAA,CAClCW,IAAI,CAAC,OAAA,EAAS,aACdV,CAAAA,CAAAA,KAAK,CAAC,SAAA,EAAW,GACjBmB,KAAK,CAAC,IAAI,CAACqtB,IAAI,CAAA;EAElB,QAAA,IAAI,CAACA,IAAI,CAAC9rB,IAAI,GAAGnH,IAAI,CAAC,IAAI,CAACmH,IAAI,CAAC3D,IAAI,CAAC,IAAI,CAAGT,EAAAA,QAAAA,CAAAA;UAE5CqwB,WAAQ,CAAA,IAAI,CAACH,IAAI,EAAE;cACjB,kBAAoB9B,EAAAA,MAAAA;cACpB,QAAU,EAAA,KAAA;cACV,MAAQ,EAAA,KAAA;cACR,UAAY,EAAA,UAAA;cACZ,OAAS,EAAA,KAAA;cACT,KAAO,EAAA;EACT,SAAA,CAAA;UAEA,IAAI,CAACvoB,IAAI,GAAG5G,MAAAA,CAAO+C,SAAS,CAAC,oBAAA,CAAA,CAAsBzB,IAAI,CAAC;EAAC6vB,YAAAA;EAAK,SAAA,CAAA;UAE9D,IAAI,CAACvqB,IAAI,GAAG,IAAI,CAACA,IAAI,CAAC1D,KAAK,EAAA,CAAGV,MAAM,CAAC,KAClCW,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS,gBACdV,CAAAA,CAAAA,KAAK,CAAC,SAAA,EAAW,CACjBmB,CAAAA,CAAAA,KAAK,CAAC,IAAI,CAACgD,IAAI,CACfuqB,CAAAA,IAAI,CAAChC,MAAAA,CAAAA;UAERiC,WAAQ,CAAA,IAAI,CAACxqB,IAAI,EAAEnE,KAAAA,CAAAA;UAEnB,IAAIJ,QAAAA,EAAUgD,WAAWhD,QAAU,EAAA,GAAA,CAAA;UAEnC,IAAI,CAAC0uB,UAAU,GAAG,IAAA;EAElB,QAAA,OAAO,IAAI;EAEb;EA7FA;;;;EAIA,KACAzwB,WAAc,EAAA;UACZ,IAAI,CAACywB,UAAU,GAAG,KAAA;EACpB;EAwFF;;EC/FA,MAAMM,iBAAoB,GAAA;MACxBlwB,CAAG,EAAA,qBAAA;MACHmwB,EAAI,EAAA,qBAAA;MACJhmB,CAAG,EAAA,oBAAA;MACHimB,MAAQ,EAAA;EACV,CAAA;EAOe,MAAMphB,OAAgBpR,SAAAA,SAAAA,CAAAA;EA6CnC;;;;OAKAqD,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,IAAI,IAAI,CAACC,OAAO,KAAK,MAAQ,EAAA,IAAI,CAACC,MAAM,CAACA,kBAAO,CAAA,MAAA,CAAA,CAAQC,MAAM,CAAC,OAAOC,KAAK,CAAC,OAAS,EAAA,CAAA,EAAGC,OAAOC,UAAU,CAAC,EAAE,CAAC,EAAEF,KAAK,CAAC,QAAU,EAAA,CAAA,EAAGC,OAAOE,WAAW,CAAC,EAAE,CAAC,EAAEC,IAAI,EAAA,CAAA;EAE9J,QAAA,MAAMa,OAAO,IAAI;EAEjB,QAAA,MAAM8tB,QAAQ,IAAI,CAAClvB,OAAO,CAACS,SAAS,CAAC,iBAAmBzB,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAAC0B,KAAK,CAACqW,MAAM,CAAC,CAACxX,KAAK1E,CAAGgE,EAAAA,CAAAA,GAAAA;EAEtF,YAAA,IAAIqC,CAAI,GAAA,IAAI,CAACiuB,KAAK,CAACt0B,CAAGgE,EAAAA,CAAAA,CAAAA;cACtB,IAAIqC,CAAAA,KAAM,MAAK,EAAG,OAAO3B,GAAAA;EACzB2B,YAAAA,CAAAA,GAAIkuB,SAAKluB,CAAAA,CAAAA,CAAAA;EAET,YAAA,MAAMmuB,MAAS,GAAA,IAAI,CAACC,WAAW,CAACz0B,CAAGgE,EAAAA,CAAAA,CAAAA;cACnC,MAAM0wB,OAAAA,GAAU,IAAI,CAACC,WAAW,CAAC30B,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,IAAI,CAAC4wB,SAAS,CAAC50B,CAAGgE,EAAAA,CAAAA,CAAAA;EAE3D,YAAA,IAAIohB,EAAKoP,GAAAA,MAAAA,GAAS,IAAI,CAACK,QAAQ,CAAC70B,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,IAAI,CAAC4wB,SAAS,CAAC50B,CAAGgE,EAAAA,CAAAA,CAAAA,EACtDgnB,EAAKwJ,GAAAA,MAAAA,GAASpP,EAAKsP,GAAAA,OAAAA,GAAU,IAAI,CAACC,WAAW,CAAC30B,CAAGgE,EAAAA,CAAAA,CAAAA,EACjD6S,IAAO,GAAA,CAAA,EACPG,QAAW,GAAA,EAAE,EACb8d,KACAC,EAAAA,WAAAA;EAEJ,YAAA,MAAMzvB,KAAQ,GAAA;EACZ,gBAAA,aAAA,EAAe0vB,cAAW,CAAA,IAAI,CAACC,WAAW,CAACj1B,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA;kBAC9C,WAAaohB,EAAAA,EAAAA;EACb,gBAAA,aAAA,EAAe,IAAI,CAAC8P,WAAW,CAACl1B,CAAGgE,EAAAA,CAAAA,CAAAA;kBACnC,aAAegnB,EAAAA;EACjB,aAAA;EAEA,YAAA,MAAM5X,UAAU+hB,cAAW,CAAA,IAAI,CAACpV,QAAQ,CAAC/f,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA;EAE5C,YAAA,MAAMgN,CAAI,GAAA,IAAI,CAAC5K,OAAO,CAACpG,CAAAA,EAAGgE,CAAMoP,CAAAA,IAAAA,OAAQiN,CAAAA,GAAG,GAAGjN,OAAAA,CAAQmN,MAAK,CACrD9K,EAAAA,CAAAA,GAAI,IAAI,CAACvP,MAAM,CAAClG,CAAGgE,EAAAA,CAAAA,CAAAA,IAAMoP,OAAAA,CAAQoN,IAAI,GAAGpN,OAAQkN,CAAAA,KAAK,CAAD;cAE1D,MAAM8U,OAAAA,GAAUvQ,gBACbJ,UAAU,CAACnf,KAAK,CAAC,aAAA,CAAc,EAC/B6N,QAAQ,CAACiS,IACT4L,UAAU,CAAC1rB,KAAK,CAAC,aAAA,CAAc,EAC/Bof,UAAU,CAACsG,EACXa,CAAAA,CAAAA,QAAQ,CAAC,IAAI,CAACwJ,SAAS,CAACr1B,GAAGgE,CAC3B2D,CAAAA,CAAAA,CAAAA,MAAM,CAACqJ,CACPskB,CAAAA,CAAAA,QAAQ,CAAC,IAAI,CAACC,SAAS,CAACv1B,CAAAA,EAAGgE,IAC3B0D,KAAK,CAAC+N,GACNU,KAAK,CAAC,IAAI,CAACqf,MAAM,CAAA;cAEpB,MAAMC,IAAAA,GAAO,IAAI,CAACZ,QAAQ,CAAC70B,CAAGgE,EAAAA,CAAAA,CAAAA,EACxB0xB,IAAO,GAAA,IAAI,CAACC,QAAQ,CAAC31B,CAAAA,EAAGgE,IACxB4xB,EAAK,GAAA,IAAI,CAAChjB,cAAc,CAAC5S,CAAAA,EAAGgE,CAC5BonB,CAAAA,EAAAA,KAAAA,GAAQ,IAAI,CAACoK,MAAM,CAACnvB,CAAGrC,EAAAA,CAAAA,CAAAA;EAE7B;;;EAGA,SACA,SAAS6xB,SAAAA,GAAAA;EACP,gBAAA,MAAMC,QAAW,GAAA,IAAA;sBACf,IAAIjf,IAAAA,GAAO,GAAGG,QAAW,GAAA;0BAACzQ,IAAKwvB,CAAAA,SAAS,CAAC,EAAIlf,EAAAA,IAAAA;EAAM,qBAAA;2BAC9CG,QAAQ,CAACH,IAAO,GAAA,CAAA,CAAE,GAAGtQ,IAAAA,CAAKwvB,SAAS,CAAC/e,QAAQ,CAACH,IAAO,GAAA,CAAA,CAAE,EAAEA,IAAAA,CAAAA;EAC/D,iBAAA;;EAGAuO,gBAAAA,EAAAA,GAAKtM,WAAI,CAAA;EAACsM,oBAAAA,EAAAA;EAAIsQ,oBAAAA;EAAK,iBAAA,CAAA;EACnBtQ,gBAAAA,EAAAA,GAAK7b,WAAI,CAAA;EAAC6b,oBAAAA,EAAAA;EAAIqQ,oBAAAA;EAAK,iBAAA,CAAA;EAEnB,gBAAA,IAAIjB,MAAQ,EAAA;EACVxJ,oBAAAA,EAAAA,GAAK5F,EAAKsP,GAAAA,OAAAA;EACVU,oBAAAA,OAAAA,CACGjiB,QAAQ,CAACiS,EACTV,CAAAA,CAAAA,UAAU,CAACsG,EAAAA,CAAAA;sBACd1lB,KAAK,CAAC,YAAY,GAAG8f,EAAAA;sBACrB9f,KAAK,CAAC,cAAc,GAAG0lB,EAAAA;EACzB;EAEA+J,gBAAAA,WAAAA,GAAcK,OAAQ/uB,CAAAA,CAAAA,CAAAA;EACtB2Q,gBAAAA,QAAAA,GAAW+d,YAAYjf,KAAK,CAACtU,MAAM,CAAC0M,CAAAA,IAAKA,CAAM,KAAA,EAAA,CAAA;EAC/C2I,gBAAAA,IAAAA,GAAOG,SAAS1U,MAAM;kBAEtB,IAAIyyB,WAAAA,CAAYrO,SAAS,EAAE;EACzB,oBAAA,IAAI8N,MAAQ,EAAA;EACVpP,wBAAAA,EAAAA,EAAAA;EACA,wBAAA,IAAIA,KAAKsQ,IAAM,EAAA;8BACbtQ,EAAKsQ,GAAAA,IAAAA;EACLI,4BAAAA,QAAAA,EAAAA;EACA,4BAAA;2BAEGD,MAAAA,SAAAA,EAAAA;uBAEFC,MAAAA,QAAAA,EAAAA;EACP;EACF;cAEA,IAAIrgB,CAAAA,GAAIigB,SAAS1kB,CAAAA,GAAIga,MAAMwJ,MAAUxjB,IAAAA,CAAAA,GAAI0kB,IAAOhB,GAAAA,OAAM,CAAI,EAAA;EAExD,gBAAA,IAAIF,MAAQ,EAAA;EAEVM,oBAAAA,KAAAA,GAAQvJ,cAAUH,KAAO9lB,EAAAA,KAAAA,CAAAA;EAEzB,oBAAA,MAAM0wB,UAAU,KAAQvgB,GAAAA,CAAAA,GAAIzE,CAAI,GAAA,GAAA,EAC1BilB,UAAUxgB,CAAIzE,GAAAA,CAAAA,EACdklB,QAAWpd,GAAAA,WAAAA,CAAIgc,QACfqB,QAAW1f,GAAAA,WAAAA,CAAIqe,OAAO90B,CAAAA,CAAAA,GAAKA,IAAIgrB,EAAMgL,CAAAA,GAAAA,OAAAA;sBAE3C,IAAIE,QAAAA,GAAWzgB,CAAK0gB,IAAAA,QAAAA,GAAWF,OAAS,EAAA;EACtC,wBAAA,MAAMG,YAAYl2B,IAAKm2B,CAAAA,IAAI,CAACJ,OAAUE,GAAAA,QAAAA,CAAAA,EAChCG,aAAa7gB,CAAIygB,GAAAA,QAAAA;EACvB,wBAAA,MAAMK,YAAYhtB,WAAI,CAAA;EAAC6sB,4BAAAA,SAAAA;EAAWE,4BAAAA;EAAW,yBAAA,CAAA;0BAC7ClR,EAAKllB,GAAAA,IAAAA,CAAKC,KAAK,CAACilB,EAAKmR,GAAAA,SAAAA,CAAAA;EACvB;EAEA,oBAAA,MAAMC,SAAYt2B,GAAAA,IAAAA,CAAKC,KAAK,CAAC6Q,CAAI,GAAA,GAAA,CAAA;sBACjC,IAAIoU,EAAAA,GAAKoR,WAAWpR,EAAKoR,GAAAA,SAAAA;EAE3B;EAEAX,gBAAAA,SAAAA,EAAAA;EAEF;cAEA,IAAI7e,QAAAA,CAAS1U,MAAM,EAAE;EAEnB,gBAAA,MAAMm0B,KAAK5f,IAAOmU,GAAAA,EAAAA;EAClB,gBAAA,MAAMxd,CAAI,GAAA,IAAI,CAACtC,OAAO,CAAClL,CAAGgE,EAAAA,CAAAA,CAAAA;EAC1B,gBAAA,IAAI0yB,EAAKlpB,GAAAA,CAAAA,KAAM,CAAIooB,GAAAA,EAAAA,KAAO,KAAQ,GAAA,CAAA,GAAIA,EAAO,KAAA,QAAA,GAAW5kB,CAAI,GAAA,CAAA,GAAIylB,EAAK,GAAA,CAAA,GAAIzlB,IAAIylB,EAAK,GAAA,CAAA;EAClFC,gBAAAA,EAAAA,IAAM1L,EAAK,GAAA,GAAA;EAEXtmB,gBAAAA,GAAAA,CAAIgJ,IAAI,CAAC;EACPipB,oBAAAA,EAAAA,EAAI,IAAI,CAACC,WAAW,CAAC52B,CAAGgE,EAAAA,CAAAA,CAAAA;sBACxBG,IAAMnE,EAAAA,CAAAA;EACNgE,oBAAAA,CAAAA;sBACA8R,KAAOkB,EAAAA,QAAAA;EACP6f,oBAAAA,EAAAA,EAAI,IAAI,CAACC,UAAU,CAAC92B,CAAGgE,EAAAA,CAAAA,CAAAA;EACvB+yB,oBAAAA,OAAAA,EAAS,IAAI,CAACC,WAAW,CAACh3B,CAAGgE,EAAAA,CAAAA,CAAAA;EAC7BizB,oBAAAA,GAAAA,EAAK,IAAI,CAACC,gBAAgB,CAACl3B,CAAGgE,EAAAA,CAAAA,CAAAA;sBAC9BkhB,EAAI5f,EAAAA,KAAK,CAAC,aAAc,CAAA;EACxB6xB,oBAAAA,EAAAA,EAAI,IAAI,CAACC,YAAY,CAACp3B,CAAGgE,EAAAA,CAAAA,CAAAA;sBACzBqzB,EAAI/xB,EAAAA,KAAK,CAAC,aAAc,CAAA;EACxB6C,oBAAAA,EAAAA,EAAI,IAAI,CAACrC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EAChBszB,oBAAAA,EAAAA,EAAI,IAAI,CAAC9kB,WAAW,CAACxS,CAAGgE,EAAAA,CAAAA,CAAAA;EACxB4xB,oBAAAA,EAAAA,EAAI,IAAI,CAAChjB,cAAc,CAAC5S,CAAGgE,EAAAA,CAAAA,CAAAA;EAC3B2hB,oBAAAA,MAAAA,EAAQoP,YAAYpP,MAAM;EAC1BP,oBAAAA,EAAAA;EAAI4F,oBAAAA,EAAAA;EAAIvV,oBAAAA,CAAAA;EAAGzE,oBAAAA,CAAAA;EAAGxD,oBAAAA,CAAAA;EACdjF,oBAAAA,CAAAA,EAAG,IAAI,CAACtC,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA,GAAKoP,QAAQoN,IAAI;sBAC/BhY,CAAG,EAAA,IAAI,CAACrC,EAAE,CAACnG,GAAGgE,CAAK0yB,CAAAA,GAAAA,EAAAA,GAAKtjB,QAAQiN;EAClC,iBAAA,CAAA;EAEF;cAEA,OAAO3b,GAAAA;EAET,SAAA,EAAG,EAAE,CAAA,EAAG1E,CAAAA,CAAAA,GAAK,IAAI,CAAC8F,GAAG,CAAC9F,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAA,CAAA;UAEjC,MAAMqC,CAAAA,GAAI,IAAI,CAAClB,OAAO,CAACmB,UAAU,EAAA,CAAG1C,QAAQ,CAAC,IAAI,CAACC,SAAS,CAAA;EAE3D,QAAA,IAAI,IAAI,CAACA,SAAS,KAAK,CAAG,EAAA;cAExBwwB,KAAMrsB,CAAAA,IAAI,GAAGC,MAAM,EAAA;WAGhB,MAAA;cAEHosB,KAAMrsB,CAAAA,IAAI,EAAG1B,CAAAA,UAAU,EAAG2J,CAAAA,KAAK,CAAC,IAAI,CAACpM,SAAS,CAAA,CAAEoE,MAAM,EAAA;EAEtDosB,YAAAA,KAAAA,CAAMrsB,IAAI,EAAA,CAAGpC,SAAS,CAAC,QAAQU,UAAU,CAACD,CACvCL,CAAAA,CAAAA,IAAI,CAAC,SAAA,EAAW,CAChBV,CAAAA,CAAAA,KAAK,CAAC,SAAW,EAAA,CAAA,CAAA;EAEtB;EAEA;;;;UAKA,SAAS2F,OAAOsD,IAAI,EAAA;EAClBA,YAAAA,IAAAA,CAAKvI,IAAI,CAAC,WAAa,EAAA,CAAChG,CAAGgE,EAAAA,CAAAA,GAAAA;EACzB,gBAAA,MAAMsK,YAAe/H,GAAAA,IAAAA,CAAKgxB,aAAa,CAACv3B,CAAGgE,EAAAA,CAAAA,CAAAA;EAC3C,gBAAA,OAAO,CAAC,UAAU,EAAEhE,CAAAA,CAAEuI,CAAC,CAAC,EAAE,EAAEvI,CAAEwI,CAAAA,CAAC,CAAC,SAAS,EAAExI,CAAAA,CAAEwN,CAAC,CAAC,EAAE,EAAEc,YAAY,CAAC,CAAE,CAAA,CAAC,EAAE,EAAEA,YAAY,CAAC,CAAE,CAAA,CAAC,CAAC,CAAC;EAC3F,aAAA,CAAA;EACF;EAEA,QAAA,MAAM9H,MAAS6tB,GAAAA,KAAAA,CAAMtuB,KAAK,EAAA,CAAGV,MAAM,CAAC,GAC/BW,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS,gBACdA,CAAAA,CAAAA,IAAI,CAAC,IAAA,EAAMhG,CAAAA,CAAAA,GAAK,CAAC,eAAe,EAAE2P,UAAAA,CAAM3P,CAAEmI,CAAAA,EAAE,CAAG,CAAA,CAAA,CAAA,CAC/CtH,IAAI,CAACoK,MACPxE,CAAAA,CAAAA,KAAK,CAAC4tB,KAAAA,CAAAA;EAET,QAAA,MAAM1K,GAAMC,GAAAA,OAAAA,EAAAA;UAEZpjB,MACGiJ,CAAAA,KAAK,GACLnK,KAAK,CAAC,kBAAkBtF,CAAAA,CAAAA,GAAK,IAAI,CAAC2G,cAAc,CAAC3G,CAAEmE,CAAAA,IAAI,EAAEnE,CAAEgE,CAAAA,CAAC,GAC5D6C,IAAI,CAAC,SAAS7G,CAAC,EAAA;EAEd;;;aAIA,SAASw3B,YAAYjpB,MAAI,EAAA;EAEvB,gBAAA,IAAIkpB,GAAM,GAAA,KAAA;EAEVlpB,gBAAAA,MAAI,CAAChI,IAAKmxB,CAAAA,KAAK,GAAG,MAAS,GAAA,MAAA,CAAO,CAACrxB,CAAAA,CAAAA,GAAAA;EAEjC,oBAAA,IAAIsxB,UAAUC,cAAUvxB,CAAAA,CAAAA,CAAAA,CACrB0W,OAAO,CAAC,cAAc,CAAC5B,GAAAA,EAAKpM,CAAMA,GAAAA,CAAAA,KAAM,QAAQoM,GAAM,GAAA,CAAC,KAAK,EAAEpM,CAAAA,CAAAA,CAAG;EACjEgO,qBAAAA,OAAO,CAAC,eAAA,EAAiB,CAAC5B,GAAAA,EAAKpM,IAAM,CAAC,IAAI,EAAEA,CAAAA,CAAAA,CAAG,CAAEgO,CAAAA,OAAO,CAAC,KAAA,EAAO;EAChEA,qBAAAA,OAAO,CAAC,wBAAA,EAA0B,CAAC5B,GAAAA,EAAKpM,GAAGZ,CAAM,GAAA,CAAA,EAAGY,CAAIZ,CAAAA,EAAAA,CAAAA,CAAAA,EAAIY,EAAEgO,OAAO,CAAC,GAAK,EAAA,IAAA,CAAA,CAAA,CAAO;EAClFA,qBAAAA,OAAO,CAAC,wBAAA,EAA0B,CAAC5B,GAAAA,EAAKpM,GAAGZ,CAAM,GAAA,CAAA,EAAGA,CAAE4O,CAAAA,OAAO,CAAC,IAAM,EAAA,GAAA,CAAA,CAAA,EAAOhO,CAAIZ,CAAAA,EAAAA,CAAAA,CAAAA,CAAG;sBAErF,MAAM0pB,QAAAA,GAAW,IAAIC,MAAO,CAAA,oCAAA,CAAA;sBAC5B,IAAIH,OAAAA,CAAQtc,KAAK,CAACwc,QAAW,CAAA,EAAA;EAC3BF,wBAAAA,OAAAA,GAAUA,QACP5a,OAAO,CAAC8a,QAAU,EAAA,CAAC1c,KAAKpM,CAAGZ,EAAAA,CAAAA,GAAAA;EAC1BspB,4BAAAA,GAAAA,GAAMlxB,IAAKmxB,CAAAA,KAAK,CAAC3oB,CAAAA,CAAE,GAAGA,CAAI,GAAA,KAAA;EAC1B,4BAAA,IAAI0oB,GAAK,EAAA;EACP,gCAAA,MAAMnyB,KAAQiB,GAAAA,IAAAA,CAAKmxB,KAAK,CAACD,GAAI,CAAA;kCAC7B,IAAIpxB,CAAAA,CAAE1E,QAAQ,CAAC,CAAC,EAAE,EAAE81B,GAAI,CAAA,CAAC,CAAC,CAAA,EAAGA,GAAM,GAAA,KAAA;kCACnC,OAAO,CAAC,cAAc,EAAEnyB,KAAAA,CAAM,EAAE,EAAE6I,CAAAA,CAAE,QAAQ,CAAC;EAC/C;8BACA,OAAOA,CAAAA;EACT,yBAAA,CAAA;uBAEC,MAAA,IAAIspB,GAAIn1B,CAAAA,MAAM,EAAE;EACnBq1B,wBAAAA,OAAAA,GAAU,CAAC,cAAc,EAAEpxB,IAAAA,CAAKmxB,KAAK,CAACD,GAAI,CAAA,CAAC,EAAE,EAAEE,OAAQ,CAAA,QAAQ,CAAC;EAClE;sBAEA,OAAOA,OAAAA;EAET,iBAAA,CAAA;EAEF;EAEA;;;aAIA,SAASI,UAAUxpB,IAAI,EAAA;kBAErBA,IACGvI,CAAAA,IAAI,CAAC,aAAA,EAAehG,CAAE22B,CAAAA,EAAE,CACxB3wB,CAAAA,IAAI,CAAC,KAAA,EAAO2jB,GAAM,GAAA,KAAA,GAAQ,KAC1B3jB,CAAAA,CAAAA,IAAI,CAAC,MAAQhG,EAAAA,CAAAA,CAAE62B,EAAE,CAAA,CACjB7wB,IAAI,CAAC,QAAUhG,EAAAA,CAAAA,CAAE+2B,OAAO,CAAA,CACxB/wB,IAAI,CAAC,cAAgBhG,EAAAA,CAAAA,CAAEi3B,GAAG,CAC1BjxB,CAAAA,IAAI,CAAC,aAAA,EAAehG,CAAEs3B,CAAAA,EAAE,CACxBtxB,CAAAA,IAAI,CAAC,aAAA,EAAehG,CAAEklB,CAAAA,EAAE,CACxB5f,CAAAA,KAAK,CAAC,aAAetF,EAAAA,CAAAA,CAAEklB,EAAE,CAAA,CACzBlf,IAAI,CAAC,WAAa,EAAA,CAAA,EAAGhG,CAAEolB,CAAAA,EAAE,CAAC,EAAE,CAAC,CAAA,CAC7B9f,KAAK,CAAC,WAAA,EAAa,CAAGtF,EAAAA,CAAAA,CAAEolB,EAAE,CAAC,EAAE,CAAC,CAC9Bpf,CAAAA,IAAI,CAAC,aAAA,EAAehG,CAAEq3B,CAAAA,EAAE,EACxB/xB,KAAK,CAAC,aAAetF,EAAAA,CAAAA,CAAEq3B,EAAE,CAAA,CACzBrxB,IAAI,CAAC,GAAK,EAAA,CAAA,EAAGhG,CAAEs3B,CAAAA,EAAE,KAAK,QAAA,GAAWt3B,EAAEyV,CAAC,GAAG,CAAIkU,GAAAA,GAAAA,GAAM3pB,CAAEs3B,CAAAA,EAAE,KAAK,OAAA,GAAUt3B,CAAEyV,CAAAA,CAAC,GAAG,CAAA,GAAIzV,CAAEs3B,CAAAA,EAAE,KAAK,KAAQt3B,GAAAA,CAAAA,CAAEyV,CAAC,GAAG,CAAIvV,GAAAA,IAAAA,CAAK83B,GAAG,CAAC93B,IAAK+3B,CAAAA,EAAE,GAAGj4B,CAAAA,CAAEwN,CAAC,GAAG,KAAK,EAAE,CAAC,CAC1IxH,CAAAA,IAAI,CAAC,GAAA,EAAK,CAACK,CAAAA,EAAGrC,CAAMhE,GAAAA,CAAAA,CAAEwN,CAAC,KAAK,CAAKxN,IAAAA,CAAAA,CAAE41B,EAAE,KAAK,KAAA,GAAQ,CAAG,EAAC5xB,CAAAA,CAAAA,GAAI,CAAA,IAAKhE,CAAEgrB,CAAAA,EAAE,IAAIhrB,CAAEgrB,CAAAA,EAAE,GAAGhrB,CAAEolB,CAAAA,EAAE,CAAD,CAAG,EAAE,CAAC,GACtFplB,CAAAA,CAAE41B,EAAE,KAAK,QACP,GAAA,CAAA,EAAG,CAAC51B,EAAEgR,CAAC,GAAGhR,CAAEolB,CAAAA,EAAE,IAAI,CAAKplB,IAAAA,CAAEgrB,CAAAA,EAAE,GAAGhrB,CAAAA,CAAEolB,EAAC,IAAK,CAACphB,CAAIhE,GAAAA,CAAAA,CAAE8V,KAAK,CAACxT,MAAM,GAAG,CAAI,GAAA,GAAE,IAAKtC,CAAAA,CAAEgrB,EAAE,CAAC,EAAE,CAAC,GAC/E,CAAGhrB,EAAAA,CAAAA,CAAEgR,CAAC,GAAG,CAAKhR,IAAAA,CAAEgrB,CAAAA,EAAE,GAAGhrB,CAAAA,CAAEolB,EAAC,IAAK,CAACplB,CAAE8V,CAAAA,KAAK,CAACxT,MAAM,IAAI0B,CAAI,GAAA,CAAA,CAAC,IAAKhE,CAAEgrB,CAAAA,EAAE,GAAG,CAAI9qB,GAAAA,IAAAA,CAAKg4B,GAAG,CAACh4B,IAAK+3B,CAAAA,EAAE,GAAGj4B,CAAAA,CAAEwN,CAAC,GAAG,GAAK,CAAA,CAAA,EAAE,CAAC,CAAA;EAE9G;cAEA,MAAM2qB,KAAAA,GAAQ/yB,kBAAO,CAAA,IAAI,CAAEQ,CAAAA,SAAS,CAAC,MAAQzB,CAAAA,CAAAA,IAAI,CAACnE,CAAAA,CAAE8V,KAAK,CAAA;cAEzD,IAAIvP,IAAAA,CAAK1C,SAAS,KAAK,CAAG,EAAA;EAExBs0B,gBAAAA,KAAAA,CACGt3B,IAAI,CAAC22B,WACL32B,CAAAA,CAAAA,IAAI,CAACk3B,SAAAA,CAAAA;kBAERI,KAAMnwB,CAAAA,IAAI,GAAGC,MAAM,EAAA;EAEnBkwB,gBAAAA,KAAAA,CAAMpyB,KAAK,EAAA,CAAGV,MAAM,CAAC,QAClBW,IAAI,CAAC,mBAAqB,EAAA,YAAA,CAAA,CAC1BV,KAAK,CAAC,gBAAkB,EAAA,IAAA,CAAA,CACxBU,IAAI,CAAC,cAAA,EAAgB,eACrBnF,CAAAA,CAAAA,IAAI,CAAC22B,WAAAA,CAAAA,CACL32B,IAAI,CAACk3B,WACL/xB,IAAI,CAAC,SAAWhG,EAAAA,CAAAA,CAAEm3B,EAAE,CACpB7xB,CAAAA,KAAK,CAAC,SAAA,EAAWtF,EAAEm3B,EAAE,CAAA;eAGrB,MAAA;EAEHgB,gBAAAA,KAAAA,CAAMt3B,IAAI,CAAC22B,WAAAA,CAAAA,CAAalxB,UAAU,CAACD,CAAAA,CAAAA,CAAGxF,IAAI,CAACk3B,SAAAA,CAAAA;kBAE3CI,KAAMnwB,CAAAA,IAAI,GAAG1B,UAAU,CAACD,GACrBL,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA,CAAGiC,MAAM,EAAA;kBAE5BkwB,KAAMpyB,CAAAA,KAAK,GAAGV,MAAM,CAAC,QAChBW,IAAI,CAAC,mBAAqB,EAAA,YAAA,CAAA,CAC1BV,KAAK,CAAC,kBAAkB,IACxBU,CAAAA,CAAAA,IAAI,CAAC,SAAA,EAAW,CAChBV,CAAAA,CAAAA,KAAK,CAAC,SAAW,EAAA,CAAA,CAAA,CACjBzE,IAAI,CAAC22B,WACL32B,CAAAA,CAAAA,IAAI,CAACk3B,SACPtxB,CAAAA,CAAAA,KAAK,CAAC0xB,KAAAA,CAAAA,CAAO7xB,UAAU,CAACD,GAAG4J,KAAK,CAAC1J,IAAK6xB,CAAAA,MAAM,CAC1Cv3B,CAAAA,IAAI,CAACk3B,SACL/xB,CAAAA,CAAAA,IAAI,CAAC,SAAA,EAAWhG,CAAEm3B,CAAAA,EAAE,EACpB7xB,KAAK,CAAC,SAAWtF,EAAAA,CAAAA,CAAEm3B,EAAE,CAAA;EAC5B;EAEF,SAAA,CAAA,CACC7wB,UAAU,CAACD,CAAGxF,CAAAA,CAAAA,IAAI,CAACoK,MAAAA,CAAAA;EAEtB,QAAA,MAAMnC,MAAS1H,GAAAA,MAAAA,CAAO2H,IAAI,CAAC,IAAI,CAACxG,GAAG,CAAA,EAC7BI,EAAKmG,GAAAA,MAAAA,CAAOoT,MAAM,CAAC,CAAC1b,GAAKiB,EAAAA,CAAAA,GAAAA;EACvBjB,YAAAA,GAAG,CAACiB,CAAAA,CAAE,GAAG,CAACzB,GAAGgE,CAAM,GAAA,IAAI,CAACzB,GAAG,CAACd,CAAAA,CAAE,CAACzB,CAAAA,CAAEmE,IAAI,EAAEH,CAAAA,CAAAA;cACvC,OAAOxD,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;UACV,IAAK,IAAIiB,IAAI,CAAGA,EAAAA,CAAAA,GAAIqH,OAAOxG,MAAM,EAAEb,IAAK+E,MAAO7D,CAAAA,EAAE,CAACmG,MAAM,CAACrH,EAAE,EAAEkB,EAAE,CAACmG,MAAM,CAACrH,EAAE,CAAC,CAAA;EAE1E,QAAA,IAAIyD,UAAUgD,UAAWhD,CAAAA,QAAAA,EAAU,IAAI,CAACrB,SAAS,GAAG,GAAA,CAAA;EAEpD,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMAw0B,UAAAA,CAAWv2B,CAAC,EAAE;EACZ,QAAA,OAAOA,MAAM/B,SACR,IAAA,IAAI,CAAC62B,WAAW,GAAG,OAAO90B,CAAAA,KAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IACnE,IAAI,CAAC80B,WAAW;EACtB;EAEA;;;;;OAMAzyB,IAAAA,CAAKrC,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuD,KAAK,GAAG/D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+D,KAAK;EAC/D;EAEA;;;;;OAMAoK,KAAAA,CAAMnO,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC81B,MAAM,GAAGt2B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACs2B,MAAM;EACjE;EAEA;;;;;OAMAx0B,QAAAA,CAAS9B,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuB,SAAS,GAAG/B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+B,SAAS;EACvE;EAEA;;;;;;;;;OAUAskB,QAAAA,CAASrmB,CAAC,EAAE;EACV,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACyzB,SAAS,GAAG,OAAOj0B,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACi0B,SAAS;EAC/G;EAEA;;;;;OAMA9iB,SAAAA,CAAUnR,CAAC,EAAE;EACX,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACw0B,UAAU,GAAG,OAAOh1B,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACg1B,UAAU;EACjH;EAEA;;;;;OAMArS,UAAAA,CAAW3iB,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2yB,WAAW,GAAG,OAAOnzB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmzB,WAAW;EACnH;EAEA;;;;;OAMAqD,OAAAA,CAAQx2B,CAAC,EAAE;EACT,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACuyB,QAAQ,GAAG,OAAO/yB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC+yB,QAAQ;EAC7G;EAEA;;;;;OAMA0D,OAAAA,CAAQz2B,CAAC,EAAE;EACT,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqzB,QAAQ,GAAG,OAAO7zB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6zB,QAAQ;EAC7G;EAEA;;;;;QAMAlnB,WAAAA,CAAY3M,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC80B,YAAY,GAAG,OAAOt1B,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACs1B,YAAY;EACrH;EAEA;;;;;OAMA1N,UAAAA,CAAW5nB,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACmyB,WAAW,GAAG,OAAO3yB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC2yB,WAAW;EACnH;EAEA;;;;;OAMAthB,QAAAA,CAASrR,CAAC,EAAE;EACV,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACsyB,SAAS,GAAG,OAAO9yB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC8yB,SAAS;EAC/G;EAEA;;;;;OAMA4D,UAAAA,CAAW12B,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC00B,WAAW,GAAG,OAAOl1B,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACk1B,WAAW;EACnH;EAEA;;;;;OAMAyB,eAAAA,CAAgB32B,CAAC,EAAE;EACjB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC40B,gBAAgB,GAAG,OAAOp1B,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACo1B,gBAAgB;EAC7H;EAEA;;;;;OAMAlG,UAAAA,CAAWlvB,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4yB,WAAW,GAAG,OAAOpzB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACozB,WAAW;EACnH;EAEA;;;;;;;;;OAUAvtB,MAAAA,CAAO7F,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8D,OAAO,GAAG,OAAOtE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACsE,OAAO;EAC3G;EAEA;;;;;;;;;;OAWA4tB,IAAAA,CAAKlyB,CAAC,EAAE;UACN,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACo1B,KAAK,GAAG,OAAO51B,CAAAA,KAAM,YAAYA,CAAIoyB,GAAAA,iBAAAA,GAAoB,QAAQpyB,CAAG,EAAA,IAAI,IAAI,IAAI,CAAC41B,KAAK;EACxH;EAGA;;;;;;;;;OAUAvvB,EAAAA,CAAGrG,CAAC,EAAE;EACJ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACwD,GAAG,GAAG,OAAOhE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACgE,GAAG;EACnG;EAEA;;;;;OAMA4e,UAAAA,CAAW5iB,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqyB,WAAW,GAAG,OAAO7yB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6yB,WAAW;EACnH;EAEA;;;;;OAMA9I,QAAAA,CAAS/pB,CAAC,EAAE;EACV,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC+yB,SAAS,GAAG,OAAOvzB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACuzB,SAAS;EAC/G;EAEA;;;;;OAMAC,QAAAA,CAASxzB,CAAC,EAAE;EACV,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACizB,SAAS,GAAG,OAAOzzB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACyzB,SAAS;EAC/G;EAEA;;;;;OAMAniB,OAAAA,CAAQtR,CAAC,EAAE;EACT,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACyd,QAAQ,GAAG,OAAOje,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACie,QAAQ;EAC7G;EAEA;;;;;OAMA1X,aAAAA,CAAcvG,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqE,cAAc,GAAG,OAAO7E,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6E,cAAc;EACzH;EAEA;;;;;OAMAsE,MAAAA,CAAOnJ,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4I,OAAO,GAAG,OAAOpJ,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoJ,OAAO;EAC3G;EAEA;;;;;QAMAoD,YAAAA,CAAaxM,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACi1B,aAAa,GAAG,OAAOz1B,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACy1B,aAAa;EACvH;EAEA;;;;;OAMAnyB,MAAAA,CAAOtD,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6C,OAAO,GAAGC,kBAAAA,CAAOtD,IAAI,IAAG,IAAK,IAAI,CAACqD,OAAO;EAC3E;EAEA;;;;;OAMAgR,KAAAA,CAAMrU,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACkzB,MAAM,GAAG1zB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC0zB,MAAM;EACjE;EAEA;;;;;;;;;OAUAjnB,IAAAA,CAAKzM,CAAC,EAAE;EACN,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACgyB,KAAK,GAAG,OAAOxyB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACwyB,KAAK;EACvG;EAEA;;;;;OAMA/hB,UAAAA,CAAWzQ,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACkQ,WAAW,GAAG,OAAO1Q,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC0Q,WAAW;EACnH;EAEA;;;;;OAMAG,aAAAA,CAAc7Q,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACsQ,cAAc,GAAG,OAAO9Q,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC8Q,cAAc;EACzH;EAEA;;;;;;;;;OAUAlL,KAAAA,CAAM5F,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4D,MAAM,GAAG,OAAOpE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoE,MAAM;EACzG;EAEA;;;;;;;;;OAUAqC,CAAAA,CAAEzG,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2D,EAAE,GAAG,OAAOnE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmE,EAAE;EACjG;EAEA;;;;;;;;;OAUAuC,CAAAA,CAAE1G,CAAC,EAAE;EACH,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC6D,EAAE,GAAG,OAAOrE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACqE,EAAE;EACjG;EAvtBA;;;;EAIA,KACAhD,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACyzB,WAAW,GAAG7xB,QAAS,CAAA,OAAA,CAAA;UAC5B,IAAI,CAACqzB,MAAM,GAAG,CAAA;UACd,IAAI,CAACv0B,SAAS,GAAG,CAAA;EACjB,QAAA,IAAI,CAACkyB,SAAS,GAAG,CAACxnB,MAAMsI,IAASA,GAAAA,IAAAA,GAAO,CAAGtI,EAAAA,IAAAA,CAAKwO,OAAO,CAAC,QAAA,EAAU,EAAI,CAAA,CAAA,GAAG,CAAC,GAAG,EAAA;UAC7E,IAAI,CAAC+Z,UAAU,GAAG/xB,QAAS,CAAA,OAAA,CAAA;UAC3B,IAAI,CAACkwB,WAAW,GAAGlwB,QAAS0f,CAAAA,eAAAA,CAAAA;UAC5B,IAAI,CAACoQ,QAAQ,GAAG9vB,QAAS,CAAA,EAAA,CAAA;UACzB,IAAI,CAAC4wB,QAAQ,GAAG5wB,QAAS,CAAA,CAAA,CAAA;UACzB,IAAI,CAACqyB,YAAY,GAAGryB,QAAS,CAAA,CAAA,CAAA;UAC7B,IAAI,CAAC0vB,WAAW,GAAG1vB,QAAS,CAAA,KAAA,CAAA;UAC5B,IAAI,CAAC6vB,SAAS,GAAG7vB,QAAS,CAAA,EAAA,CAAA;UAC1B,IAAI,CAACiyB,WAAW,GAAGjyB,QAAS,CAAA,aAAA,CAAA;UAC5B,IAAI,CAACmyB,gBAAgB,GAAGnyB,QAAS,CAAA,CAAA,CAAA;UACjC,IAAI,CAACmwB,WAAW,GAAGnwB,QAAS,CAAA,GAAA,CAAA;EAC5B,QAAA,IAAI,CAACqB,OAAO,GAAGqC,QAAAA,CAAS,QAAU,EAAA,GAAA,CAAA;UAClC,IAAI,CAACivB,KAAK,GAAGxD,iBAAAA;UACb,IAAI,CAACpuB,GAAG,GAAG,CAAC9F,CAAAA,EAAGgE,IAAMhE,CAAEmI,CAAAA,EAAE,IAAI,CAAA,EAAGnE,CAAG,CAAA,CAAA;UACnC,IAAI,CAAC2wB,WAAW,GAAG,CAAC30B,CAAAA,EAAGgE,CAAM,GAAA,IAAI,CAAC4wB,SAAS,CAAC50B,CAAAA,EAAGgE,CAAK,CAAA,GAAA,GAAA;UACpD,IAAI,CAACqxB,SAAS,GAAGtwB,QAAS,CAAA,IAAA,CAAA;UAC1B,IAAI,CAACxC,GAAG,GAAG,EAAC;UACZ,IAAI,CAACgzB,SAAS,GAAGxwB,QAAS,CAAA,KAAA,CAAA;UAC1B,IAAI,CAACgb,QAAQ,GAAGhb,QAAS,CAAA,CAAA,CAAA;UACzB,IAAI,CAAC4B,cAAc,GAAG5B,QAAS,CAAA,MAAA,CAAA;UAC/B,IAAI,CAACmG,OAAO,GAAGnG,QAAS,CAAA,CAAA,CAAA;EACxB,QAAA,IAAI,CAACwyB,aAAa,GAAGv3B,CAAAA,CAAK,GAAA;EAACA,gBAAAA,CAAAA,CAAEyV,CAAC,GAAG,CAAA;EAAGzV,gBAAAA,CAAAA,CAAEgR,CAAC,GAAG;EAAE,aAAA;UAC5C,IAAI,CAACwkB,MAAM,GAAGkD,cAAAA;UACd,IAAI,CAACpE,KAAK,GAAG7rB,QAAS,CAAA,MAAA,CAAA;UACtB,IAAI,CAAC+J,WAAW,GAAGzN,QAAS,CAAA,OAAA,CAAA;UAC5B,IAAI,CAAC6N,cAAc,GAAG7N,QAAS,CAAA,KAAA,CAAA;EAC/B,QAAA,IAAI,CAACmB,MAAM,GAAGuC,QAAAA,CAAS,OAAS,EAAA,GAAA,CAAA;EAChC,QAAA,IAAI,CAACxC,EAAE,GAAGwC,QAAAA,CAAS,GAAK,EAAA,CAAA,CAAA;EACxB,QAAA,IAAI,CAACtC,EAAE,GAAGsC,QAAAA,CAAS,GAAK,EAAA,CAAA,CAAA;EAC1B;EAgrBF;;ECnuBA,MAAMyqB,QAAW,GAAA,MAAA;EAMF,MAAMyF,QAAiBlb,SAAAA,IAAAA,CAAAA;EAmIpC;;;;OAKAmb,WAAAA,CAAYp0B,KAAK,EAAE;UAEjB,IAAIA,KAAAA,CAAMq0B,WAAW,IAAIr0B,KAAAA,CAAMq0B,WAAW,CAACC,OAAO,IAAIt0B,KAAAA,CAAMu0B,SAAS,KAAK,SAAS,CAAC,IAAI,CAACC,SAAS,IAAI,IAAI,CAACC,SAAQ,CAAI,EAAA;cAErHC,aAAc,CAAA,IAAI,CAACC,UAAU,CAAA;cAC7B,IAAI,CAACA,UAAU,GAAG,KAAA;cAClB,IAAI,CAACC,gBAAgB,CAACn0B,MAAM,EAAA;EAE5B,YAAA,MAAM2W,MAAS,GAAA,IAAI,CAACyd,aAAa,CAAC70B,KAAAA,CAAAA;EAClC,YAAA,IAAI,CAAC80B,WAAW,CAACz4B,IAAI,CAAC,IAAI,CAAC04B,MAAM,CAACC,IAAI,EAAE,IAAI,CAACC,iBAAiB,CAAC7d,MAAAA,CAAAA,CAAAA;EAEjE;EAEA,QAAA,IAAI,CAAC8d,WAAW,EAAA;EAChB,QAAA,IAAI,IAAI,CAACn3B,GAAG,CAACo3B,KAAK,EAAE,IAAI,CAACp3B,GAAG,CAACo3B,KAAK,CAAC,IAAI,CAACC,UAAU,CAAA;EAEpD;EAEA;;;;OAKAC,SAAAA,CAAUr1B,KAAK,EAAE;EAEf,QAAA,IAAI,CAACA,KAAAA,CAAMq0B,WAAW,EAAE;EAExB,QAAA,MAAMjd,MAAS,GAAA,IAAI,CAACyd,aAAa,CAAC70B,KAAAA,CAAAA;EAElC,QAAA,IAAI,CAACk1B,WAAW,EAAA;EAEhB,QAAA,IAAI,IAAI,CAACV,SAAS,IAAI,CAAC,IAAI,CAACC,SAAS,EAAE,IAAI,CAACK,WAAW,CAAChzB,UAAU,CAAC,IAAI,CAACqI,WAAW,CAAA,CAAE9N,IAAI,CAAC,IAAI,CAAC04B,MAAM,CAACC,IAAI,EAAE,IAAI,CAACC,iBAAiB,CAAC7d,MAAAA,CAAAA,CAAAA;EAEnI,QAAA,IAAI,IAAI,CAACrZ,GAAG,CAACkwB,GAAG,EAAE,IAAI,CAAClwB,GAAG,CAACkwB,GAAG,CAAC,IAAI,CAACmH,UAAU,CAAA;EAEhD;EAEA;;;;OAKAE,WAAAA,CAAYt1B,KAAK,EAAE;EAEjB,QAAA,IAAIA,KAAMq0B,CAAAA,WAAW,KAAK,IAAA,KAAS,CAAC,IAAI,CAACG,SAAS,IAAI,IAAI,CAACC,SAAS,CAAG,EAAA;cAErEC,aAAc,CAAA,IAAI,CAACC,UAAU,CAAA;cAC7B,IAAI,CAACA,UAAU,GAAG,KAAA;cAClB,IAAI,CAACC,gBAAgB,CAACn0B,MAAM,EAAA;EAE5B,YAAA,MAAM2W,MAAS,GAAA,IAAI,CAACyd,aAAa,CAAC70B,KAAAA,CAAAA;EAClC,YAAA,IAAI,CAAC80B,WAAW,CAACz4B,IAAI,CAAC,IAAI,CAAC04B,MAAM,CAACC,IAAI,EAAE,IAAI,CAACC,iBAAiB,CAAC7d,MAAAA,CAAAA,CAAAA;EAEjE;EAEA,QAAA,IAAI,CAAC8d,WAAW,EAAA;UAChB,IAAI,IAAI,CAACn3B,GAAG,CAACgwB,KAAK,EAAE,IAAI,CAAChwB,GAAG,CAACgwB,KAAK,CAAC/tB,KAAAA,CAAAA;EAErC;EAEA;;;;EAIA,KACAk1B,WAAc,GAAA;EAEZ,QAAA,MAAM,EAAC/xB,MAAM,EAAC,GAAG,IAAI,CAACkW,SAAS;EAC/B,QAAA,MAAMkc,iBAAiB,IAAI,CAAC7Z,MAAM,KAAK,QAAA,GACnC,OAAO,IAAI,CAAChd,YAAY,CAACsK,CAAC,KAAK,UAAa,GAAA,IAAI,CAACtK,YAAY,CAACsK,CAAC,CAAC;cAAC+T,IAAM,EAAA;WAAS,CAAA,GAAA,CAAA,GAAI,IAAI,CAACre,YAAY,CAACsK,CAAC,GACvG,IAAI,CAAC0S,MAAM,KAAK,MAAA,GACd,OAAO,IAAI,CAAChd,YAAY,CAACyE,MAAO,CAAA,KAAK,UAAa,GAAA,IAAI,CAACzE,YAAY,CAACyE,MAAAA,CAAO,CAAC;cAAC4Z,IAAM,EAAA;WAAS,CAAA,GAAA,IAAI,CAACre,YAAY,CAACyE,OAAO,GACrH,IAAI,CAACmd,SAAS;UAEpB,MAAMkV,cAAAA,GAAiB,IAAI,CAACV,WAAW,CAAC1zB,SAAS,CAAC,YAC/C/E,CAAAA,CAAAA,IAAI,CAACiJ,WAAAA,EAAS,IAAI,CAACmwB,gBAAgB,EACnCj0B,IAAI,CAAC,aAAa,iBAClBA,CAAAA,CAAAA,IAAI,CAAC,QAAA,EAAU+zB,cAAiB,GAAA,CAAA,CAAA;EAEnC,QAAA,MAAMG,WAAc,GAAA,IAAI,CAACZ,WAAW,CAAC1zB,SAAS,CAAC,SAC5C/E,CAAAA,CAAAA,IAAI,CAACiJ,WAAAA,EAAS,IAAI,CAACqwB,aAAa,CAChCn0B,CAAAA,IAAI,CAAC,SAAA,EAAW,IAAI,CAACo0B,cAAc,GAAG,SAAS,OAC/Cp0B,CAAAA,CAAAA,IAAI,CAAC,WAAA,EAAahG,CAAAA,CAAAA,GAAK,IAAI,CAACq6B,sBAAsB,KAAK,SAAA,GAAY,CAAC,UAAU,EAAEr6B,CAAAA,CAAEyD,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC62B,WAAW,GAAG,CAAA,GAAI,CAAE,CAAA,IAAI,CAAC,GAAG,EAAA,CAAA,CACnIt0B,IAAI,CAAC,QAAU,EAAA,IAAI,CAACq0B,sBAAsB,KAAK,SAAY,GAAA,IAAI,CAACE,aAAa,GAAG,CAAA,GAAIR,cAAiB,GAAA,IAAI,CAACO,WAAW,CAAA;EAExH,QAAA,IAAI,CAAChB,WAAW,CAAC1zB,SAAS,CAAC,UACxBI,CAAAA,CAAAA,IAAI,CAAC,GAAA,EAAK,IAAI,CAACw0B,YAAY,CAC3Bx0B,CAAAA,IAAI,CAAC,QAAU,EAAA,SAAA,CAAA,CACfA,IAAI,CAAC,WAAa,EAAA,CAAC,YAAY,EAAE,IAAI,CAACq0B,sBAAsB,KAAK,SAAA,GAAY,IAAI,CAACE,aAAa,GAAG,CAAA,GAAI,CAAC,IAAI,CAACD,WAAW,CAAC,CAAC,CAAC,CAC1Ht0B,CAAAA,IAAI,CAAC,OAAS,EAAA,IAAI,CAACq0B,sBAAsB,KAAK,SAAY,GAAA,IAAI,CAACI,WAAW,GAAG,IAAI,CAACv0B,MAAM,CAAA,CACxFF,IAAI,CAAC,QAAU,EAAA,IAAI,CAACq0B,sBAAsB,KAAK,SAAY,GAAA,IAAI,CAACE,aAAa,GAAG,IAAI,CAACD,WAAW,GAAG,CAAA,CAAA;EAEtG,QAAA,IAAI,IAAI,CAACD,sBAAsB,KAAK,SAAW,EAAA;EAE7C,YAAA,MAAMK,aAAa,IAAI,CAACpT,MAAM,KAAK,WAC/B,IAAI,CAAClhB,OAAO,GAAG,IAAI,IAAI,CAACm0B,aAAa,GAAG,CAAA,GACxC,IAAI,CAACjT,MAAM,KAAK,OAAA,GACd,IAAI,CAACvJ,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACja,OAAO,GAAG,IAAI,CAACm0B,aAAa,GAAG,IAAI,CAACxc,OAAO,CAACwC,MAAM;cAEhF2Z,WAAYl0B,CAAAA,IAAI,CAAC,GAAK00B,EAAAA,UAAAA,CAAAA;cACtBV,cAAeh0B,CAAAA,IAAI,CAAC,GAAK00B,EAAAA,UAAAA,CAAAA;EAC3B;EAEF;EAEA;;;;OAKArB,aAAAA,CAAc70B,KAAK,EAAE;EAEnB,QAAA,MAAM+D,IAAIoyB,oBAASn2B,CAAAA,KAAAA,EAAO,IAAI,CAACW,OAAO,CAACO,IAAI,EAAA,CAAA;EAC3C,QAAA,IAAIkW,MAASpX,GAAAA,KAAAA,CAAMu0B,SAAS,IAAI,IAAI,CAACC,SAAS,IAAI,CAACzwB,CAAEjG,CAAAA,MAAM,GAAGkC,KAAAA,CAAMu0B,SAAS,GAAG;cAACxwB,CAAC,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA;cAAEA,CAAC,CAAC,CAAE,CAAA,CAAC,CAAE;EAAC,SAAA;EAElG,QAAA,IAAI,IAAI,CAAC8xB,sBAAsB,KAAK,OAASze,EAAAA,MAAAA,GAASA,MAAOjX,CAAAA,GAAG,CAAC,IAAI,CAACwZ,QAAQ,CAACyc,MAAM,CAAA;UACrFhf,MAASA,GAAAA,MAAAA,CAAOjX,GAAG,CAACyR,MAAAA,CAAAA;EAEpB,QAAA,IAAI5R,KAAMf,CAAAA,IAAI,KAAK,OAAA,IAAW,IAAI,CAACu1B,SAAS,IAAI,IAAI,CAACqB,sBAAsB,KAAK,SAAW,EAAA;EACzF,YAAA,MAAMQ,KAAQr2B,GAAAA,KAAAA,CAAMu0B,SAAS,CAACp0B,GAAG,CAAC3E,CAAAA,CAAKE,GAAAA,IAAAA,CAAKsV,GAAG,CAACxV,CAAAA,GAAIwE,KAAMq0B,CAAAA,WAAW,CAACC,OAAO,CAAA,CAAA;EAE7Eld,YAAAA,MAAAA,GAASif,KAAK,CAAC,CAAA,CAAE,IAAIA,KAAK,CAAC,EAAE,GACzB;kBAACr2B,KAAMu0B,CAAAA,SAAS,CAAC,CAAE,CAAA;kBAAEv0B,KAAMq0B,CAAAA,WAAW,CAACC;EAAQ,aAAA,CAAChqB,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAMY,IAAIZ,CACnE,CAAA,GAAA;kBAAC3J,KAAMq0B,CAAAA,WAAW,CAACC,OAAO;kBAAEt0B,KAAMu0B,CAAAA,SAAS,CAAC,CAAE;EAAC,aAAA,CAACjqB,IAAI,CAAC,CAACC,CAAAA,EAAGZ,IAAMY,CAAIZ,GAAAA,CAAAA,CAAAA;EAEzE;EAEA,QAAA,MAAMsO,QAAQ,IAAI,CAAC4d,sBAAsB,KAAK,UAC1C,IAAI,CAAChW,eAAe,CAAC1f,GAAG,CAACyR,MAAAA,CAAAA,GACzB,IAAI,CAAC+H,QAAQ,CAACtC,KAAK,EAAA;EAEvB,QAAA,IAAI,IAAI,CAACwe,sBAAsB,KAAK,OAAS,EAAA;;;EAI3C,YAAA,IAAIS,YAAY7b,QAAKqF,CAAAA,YAAAA,CAAQ1I,MAAM,CAAC,EAAE,EAAEa,KAAAA,CAAAA,CAAAA;EACxC,YAAA,IAAIse,QAAWte,GAAAA,KAAAA,CAAM/a,OAAO,CAAC,CAACo5B,SAAAA,CAAAA;EAC9B,YAAA,IAAIE,YAAY/b,QAAKqF,CAAAA,YAAAA,CAAQ1I,MAAM,CAAC,EAAE,EAAEa,KAAAA,CAAAA,CAAAA;EACxC,YAAA,IAAIwe,QAAWxe,GAAAA,KAAAA,CAAM/a,OAAO,CAAC,CAACs5B,SAAAA,CAAAA;;;;;;EAO9B,YAAA,IAAIE,UAAah7B,GAAAA,IAAAA,CAAKsV,GAAG,CAACylB,QAAWF,GAAAA,QAAAA,CAAAA;EACrC,YAAA,MAAMI,eAAkB,GAAA,IAAI,CAACC,SAAS,EAAK,GAAA,CAAA;;;EAI3C,YAAA,IAAIF,aAAaC,eAAiB,EAAA;;EAGhCF,gBAAAA,QAAAA,GAAW1xB,WAAI,CAAA;EAACkT,oBAAAA,KAAAA,CAAMna,MAAM,GAAG,CAAA;sBAAG24B,QAAYE,IAAAA,kBAAkBD,UAAS;EAAG,iBAAA,CAAA;kBAC5EF,SAAYve,GAAAA,KAAK,CAACwe,QAAS,CAAA;kBAC3BC,UAAah7B,GAAAA,IAAAA,CAAKsV,GAAG,CAACylB,QAAWF,GAAAA,QAAAA,CAAAA;;;EAIjC,gBAAA,IAAIG,aAAaC,eAAiB,EAAA;EAChCJ,oBAAAA,QAAAA,GAAWjiB,WAAI,CAAA;EAAC,wBAAA,CAAA;0BAAGiiB,QAAYI,IAAAA,kBAAkBD,UAAS;EAAG,qBAAA,CAAA;sBAC7DJ,SAAYre,GAAAA,KAAK,CAACse,QAAS,CAAA;EAC7B;EAEF;cAEAnf,MAAM,CAAC,EAAE,GAAGkf,SAAAA;cACZlf,MAAM,CAAC,EAAE,GAAGof,SAAAA;WAGT,MAAA;EACHpf,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAG0I,aAAQ1I,MAAM,CAAC,EAAE,EAAEa,KAAAA,CAAAA;EAC/Bb,YAAAA,MAAM,CAAC,CAAE,CAAA,GAAG0I,aAAQ1I,MAAM,CAAC,EAAE,EAAEa,KAAAA,CAAAA;EACjC;;UAGA,MAAM4e,MAAAA,GAAS,CAACzf,MAAM,CAAC,EAAE,KAAK,CAACA,MAAM,CAAC,CAAE,CAAA;EACxC,QAAA,IAAIpX,MAAMf,IAAI,KAAK,WAAWe,KAAMf,CAAAA,IAAI,KAAK,KAAO,EAAA;cAClD,IAAI,CAACm2B,UAAU,GAAG,IAAI,CAACS,sBAAsB,KAAK,OAC9CgB,GAAAA,MAAAA,GAASzf,MAAM,CAAC,CAAE,CAAA,GAAGA,MACrByf,GAAAA,MAAAA,GACEpc,QAAK,CAAA,IAAI,CAACoF,eAAe,CAAC5H,KAAAA,CAAM/a,OAAO,CAACka,MAAM,CAAC,CAAE,CAAA,CAAA,CAAE,CACnD,GAAA;kBAACqD,QAAK,CAAA,IAAI,CAACoF,eAAe,CAAC5H,KAAAA,CAAM/a,OAAO,CAACka,MAAM,CAAC,CAAA,CAAE,CAAE,CAAA,CAAA;kBAAGqD,QAAK,CAAA,IAAI,CAACoF,eAAe,CAAC5H,KAAAA,CAAM/a,OAAO,CAACka,MAAM,CAAC,CAAA,CAAE,CAAE,CAAA;EAAE,aAAA;EACpH;UAEA,OAAOA,MAAAA;EAET;EAEA;;;;OAKA6d,iBAAAA,CAAkB7d,MAAM,EAAE;EAExB,QAAA,MAAMmd,SAAY,GAAA,IAAI,CAACsB,sBAAsB,KAAK,OAAUze,GAAAA,MAAAA,CAAOjX,GAAG,CAACsa,UAAMta,GAAG,CAAC,IAAI,CAACwZ,QAAQ,CAAIvC,GAAAA,MAAAA;EAElG,QAAA,IAAImd,SAAS,CAAC,CAAA,CAAE,KAAKA,SAAS,CAAC,EAAE,EAAE;cACjCA,SAAS,CAAC,EAAE,IAAI,GAAA;cAChBA,SAAS,CAAC,EAAE,IAAI,GAAA;EAClB;EAEA,QAAA,IAAI,IAAI,CAACsB,sBAAsB,KAAK,SAAW,EAAA;cAC7C,MAAMiB,UAAAA,GAAa,IAAI,CAAClB,cAAc,GAAG,CAAI,GAAA,IAAI,CAACE,WAAW;EAC7D,YAAA,MAAMiB,WAAc,GAAA,GAAA,IAAO,IAAI,CAACd,WAAW,GAAG,IAAI,CAACpW,eAAe,CAAC/hB,MAAM,GAAGg5B,UAAS,CAAA;cACrFvC,SAAS,CAAC,EAAE,IAAIwC,WAAAA;cAChBxC,SAAS,CAAC,EAAE,IAAIwC,WAAAA;EAClB;UAEA,OAAOxC,SAAAA;EACT;EAEA;;;;;OAMA9zB,MAAAA,CAAOC,QAAQ,EAAE;UACf,MAAM,EAACyC,MAAM,EAAEa,CAAC,EAAC,GAAG,IAAI,CAACqV,SAAS;EAElC,QAAA,IAAI,IAAI,CAACqG,MAAM,EAAE,IAAI,CAACA,MAAM,GAAG,IAAI,CAACA,MAAM,CAACvf,GAAG,CAACsa,QAAAA,CAAAA;EAC/C,QAAA,IAAI,IAAI,CAACpZ,KAAK,EAAE,IAAI,CAACA,KAAK,GAAG,IAAI,CAACA,KAAK,CAAClB,GAAG,CAACsa,QAAAA,CAAAA;EAE5C,QAAA,IAAIxC,KAAQ,GAAA,IAAI,CAACyH,MAAM,GAAG,IAAI,CAACA,MAAM,GAAG,IAAI,CAACrD,OAAO,CAAClc,GAAG,CAACsa,QAAAA,CAAAA;EACzD,QAAA,IAAI,CAAC,IAAI,CAACiF,MAAM,EAAE;EAChB,YAAA,MAAMsX,UAAUC,gBAAY7f,EAAAA,CAAAA,MAAM,CAACa,KAAAA,CAAAA,CAAOZ,KAAK,CAAC;EAAC,gBAAA,CAAA;EAAG,gBAAA,IAAI,CAAC3V;EAAO,aAAA,CAAA;EAChEuW,YAAAA,KAAAA,GAAQ+e,QAAQ/e,KAAK,EAAA;EACvB;EAEA,QAAA,MAAM+C,UAAa,GAAA,IAAI,CAACC,WAAW,IAAIjd,cAAM,CAAC,IAAI,CAACC,OAAO,CAAC,IAAID,cAAM,CAAC,OAAQ,CAAA;EAC9E,QAAA,IAAI,IAAI,CAACk5B,WAAW,KAAK37B,SAAW,EAAA,IAAI,CAAC27B,WAAW,GAAG,IAAI,CAAChb,WAAW,IAAI,KAAA;UAC3E,MAAMD,UAAAA,GAAa,IAAI,CAACC,WAAW,GAAG,IAAI,CAACgb,WAAW,GAAG,IAAI,CAACA,WAAW,GAAG17B,CAAAA,IAAK8gB,iBAAW9gB,CAAAA,CAAAA,EAAGyc,OAAOM,OAAO,CAAC,KAAOyC,EAAAA,UAAAA,CAAWwB,OAAO,CAAA;;EAGvI,QAAA,IAAI,CAACyZ,WAAW,GAAG,IAAI,CAACv0B,MAAM;UAC9B,IAAI;EAAC,YAAA,MAAA;EAAQ,YAAA;EAAU,SAAA,CAACvE,QAAQ,CAAC,IAAI,CAACg6B,eAAe,CAAG,EAAA;EACtD,YAAA,IAAIC,QAAW,GAAA,CAAA;cACfnf,KAAMxa,CAAAA,OAAO,CAAC,CAACjC,CAAGgE,EAAAA,CAAAA,GAAAA;kBAEhB,MAAM,EAACygB,UAAU,EAAEtR,QAAQ,EAAC,GAAG,IAAI,CAACjQ,YAAY,CAACkL,WAAW;EAE5D,gBAAA,MAAMxL,CAAI,GAAA,OAAO6hB,UAAe,KAAA,UAAA,GAAaA,WAAWzkB,CAAGgE,EAAAA,CAAAA,CAAAA,GAAKygB,UAC1DxkB,EAAAA,CAAAA,GAAI,OAAOkT,QAAAA,KAAa,UAAaA,GAAAA,QAAAA,CAASnT,GAAGgE,CAAKmP,CAAAA,GAAAA,QAAAA;kBAE5D,MAAMsS,IAAAA,GAAOZ,gBACVJ,UAAU,CAAC7hB,GACXuQ,QAAQ,CAAClT,CACTykB,CAAAA,CAAAA,UAAU,CAAC,IAAI,CAACxhB,YAAY,CAACwhB,UAAU,GAAG,IAAI,CAACxhB,YAAY,CAACwhB,UAAU,CAAC1kB,CAAAA,EAAGgE,CAAKjE,CAAAA,GAAAA,SAAAA,CAAAA;kBAElF,MAAM2lB,GAAAA,GAAMD,KAAKhF,UAAWzgB,CAAAA,CAAAA,CAAAA,CAAAA;EAE5B,gBAAA,IAAI0H,QAAQge,GAAI5P,CAAAA,KAAK,CAACxT,MAAM,GACxBpC,KAAK+a,IAAI,CAACnC,WAAI4M,CAAAA,GAAAA,CAAI5P,KAAK,CAACnR,GAAG,CAACkS,CAAAA,IAAAA,GAAQ0U,cAAU1U,IAAM,EAAA;0BAAC,aAAejU,EAAAA,CAAAA;0BAAG,WAAa3C,EAAAA;EAAC,qBAAA,CAAA,CAAA,CAAA,CAAA,GAAQA,IAAI,CACjG,GAAA,CAAA;EAEJ,gBAAA,IAAIyH,QAAQ,CAAGA,EAAAA,KAAAA,EAAAA;EACf,gBAAA,IAAIk0B,WAAWl0B,KAAOk0B,EAAAA,QAAAA,GAAWl0B,QAAQ,CAAI,GAAA,IAAI,CAACm0B,cAAc;EAElE,aAAA,CAAA;EACA,YAAA,IAAI,CAACpB,WAAW,GAAGmB,QAAAA,GAAWnf,MAAMna,MAAM;EAC5C;UAEA,MAAMw5B,eAAAA,GAAkB,IAAI,CAACC,WAAW,GAAG,IAAI,CAACxB,aAAa,GAAG,CAAA;EAChE,QAAA,MAAMlV,KAAQ,GAAA,IAAI,CAACnf,MAAM,GAAG41B,eAAAA;EAE5B,QAAA,IAAI,CAACzB,sBAAsB,GAAG,IAAI,CAACsB,eAAe,KAAK,MAAA,GAAS,IAAI,CAAClB,WAAW,GAAGpV,KAAAA,GAAQ,YAAY,OAAU,GAAA,IAAI,CAACsW,eAAe;EACrI,QAAA,MAAMK,aAAgB,GAAA,IAAI,CAAC5B,cAAc,GAAG,IAAI,CAACC,sBAAsB,KAAK,SAAA,IAAa,CAAC,IAAI,CAACrB,SAAS;EAExG,QAAA,IAAI,IAAI,CAACqB,sBAAsB,KAAK,SAAW,EAAA;cAE7C,IAAI,CAACrvB,MAAM,GAAG,SAAA;EACd,YAAA,MAAM4Q,MAAS6f,GAAAA,gBAAAA,EAAAA,CAAY7f,MAAM,CAAC,IAAI,CAACiF,OAAO,CAAClc,GAAG,CAACsa,QAAAA,CAAAA,CAAAA,CAAOxC,KAAK,EAAA,CAAG9X,GAAG,CAACyR,MAAAA,CAAAA;EAEtE,YAAA,IAAI,CAACyK,OAAO,GAAG,IAAI,CAACqD,MAAM,GAAG,IAAI,CAACA,MAAM,GAAGtf,KAAM8pB,CAAAA,IAAI,CAAC9pB,KAAAA,CAAMgX,MAAM,CAACA,MAAAA,CAAOtZ,MAAM,GAAG,EAAE,GAAGsZ,MAAM,CAAC,CAAA,CAAE,GAAG,CAAI,CAAA,EAAA,CAAC9Z,CAAGyG,EAAAA,CAAAA,GAAMqT,MAAM,CAAC,CAAA,CAAE,GAAGrT,CAAAA,CAAAA,CAAG5D,GAAG,CAACsa,QAAAA,CAAAA;EAErI,YAAA,IAAI,CAACiF,MAAM,GAAG,IAAI,CAACrD,OAAO;cAE1B,MAAMob,YAAAA,GAAe,GAAM,GAAA,IAAI,CAACxB,WAAW,GAAG,IAAI,CAACvW,MAAM,CAAC5hB,MAAM;cAEhE,MAAM45B,UAAAA,GAAa,IAAI,CAACh2B,MAAM,GAAG,IAAI,CAACu0B,WAAW,GAAGqB,eAAAA;EAEpD,YAAA,IAAI,CAACtB,YAAY,GAAG,IAAI,CAAC2B,YAAY,KAAK,QAAA,GAAWD,UAAa,GAAA,CAAA,GAAIJ,kBAClE,IAAI,CAACK,YAAY,KAAK,KAAA,GAAQD,aAAaJ,eACzCA,GAAAA,eAAAA;cAEN,IAAI,CAACzZ,MAAM,GAAG;kBACZ,IAAI,CAACmY,YAAY,GAAGyB,YAAAA;EACpB,gBAAA,IAAI,CAACzB,YAAY,GAAG,IAAI,CAACC,WAAW,GAAGwB;EACxC,aAAA;WAEE,MAAA;cACH,IAAI,CAACjxB,MAAM,GAAG,MAAA;cACd,IAAI,CAAC6V,OAAO,GAAG3M,cAAOuI,CAAAA,KAAAA,CAAAA;cACtB,IAAI,CAAC4F,MAAM,GAAG;EAACyZ,gBAAAA,eAAAA,GAAkBA,kBAAkB,GAAM/7B,GAAAA,SAAAA;EAAWA,gBAAAA;EAAU,aAAA;cAC9E,IAAI,CAACy6B,YAAY,GAAGsB,eAAAA;EACtB;EAEA,QAAA,KAAK,CAAC72B,MAAOC,CAAAA,QAAAA,CAAAA;EAEb,QAAA,MAAM4Y,MAAS,GAAA,IAAI,CAACG,YAAY,CAACzV,CAAAA,CAAE,EAC7BqT,KAAAA,GAAQ,IAAI,CAACsC,QAAQ,CAACtC,KAAK,EAAA;EAEjC,QAAA,MAAM8d,QAAQ,IAAI,CAACJ,MAAM,GAAG6C,cAAAA,EAAAA,CACzBloB,MAAM,CAAC;EAAC,YAAA;EAAC2H,gBAAAA,KAAK,CAAC,CAAE,CAAA;EAAEiC,gBAAAA;EAAO,aAAA;EAAE,YAAA;EAACjC,gBAAAA,KAAK,CAACA,KAAAA,CAAMvZ,MAAM,GAAG,CAAE,CAAA;EAAEwb,gBAAAA,MAAAA,GAAS,IAAI,CAACG,YAAY,CAACtW,MAAO;EAAC;WAAC,CAC1FnG,CAAAA,MAAM,CAAC,IAAI,CAAC66B,YAAY,CACxBf,CAAAA,UAAU,CAACU,aAAgB,GAAA,CAAA,GAAI,IAAI,CAAC1B,WAAW,EAC/C33B,EAAE,CAAC,SAAS,IAAI,CAACm3B,WAAW,CAACz1B,IAAI,CAAC,IAAI,CAAA,CAAA,CACtC1B,EAAE,CAAC,OAAA,EAAS,IAAI,CAACi2B,WAAW,CAACv0B,IAAI,CAAC,IAAI,CACtC1B,CAAAA,CAAAA,EAAE,CAAC,KAAO,EAAA,IAAI,CAACk3B,SAAS,CAACx1B,IAAI,CAAC,IAAI,CAAA,CAAA;;UAGrC,MAAMi4B,WAAAA,GAAc,IAAI,CAACjC,sBAAsB,KAAK,OAChD,GAAA,IAAI,CAAChW,eAAe,GACpBxI,KAAAA;;EAGJ,QAAA,MAAM0gB,gBAAmB,GAAA;EACvB,YAAA,IAAI,CAACnB,SAAS,EAAA,GAAKkB,YAAYh6B,MAAM,GACjCg6B,WAAW,CAAC,CAAA,CAAE,GACdA,WAAW,CAACA,WAAYh6B,CAAAA,MAAM,GAAG,IAAI,CAAC84B,SAAS,EAAG,CAAA;EACtDkB,YAAAA,WAAW,CAACA,WAAAA,CAAYh6B,MAAM,GAAG,CAAE;EACpC,SAAA;;UAGD,MAAMy2B,SAAAA,GAAY,IAAI,CAACa,UAAU,KAAK,MAAS2C,GAAAA,gBAAAA,GAC3C,IAAI,CAAC3C,UAAU,YAAYh1B,QACzB,IAAI,CAACy1B,sBAAsB,KAAK,SAC9B,GAAA,IAAI,CAACT,UAAU,CAACj1B,GAAG,CAACsa,QAAAA,CAAAA,CAAMta,GAAG,CAAC3E,CAAAA,CAAK6b,GAAAA,KAAK,CAAC,IAAI,CAACqI,MAAM,CAACvf,GAAG,CAACyR,MAAQ1U,CAAAA,CAAAA,OAAO,CAAC,CAAC1B,GAAG,CAC7E,GAAA,IAAI,CAAC45B,UAAU,CAACj1B,GAAG,CAACsa,QAAAA,CAAAA,GACtB,IAAI,CAACob,sBAAsB,KAAK,SAC9B,GAAA;EAACxe,YAAAA,KAAK,CAAC,IAAI,CAACqI,MAAM,CAACvf,GAAG,CAACyR,MAAQ1U,CAAAA,CAAAA,OAAO,CAAC,CAAC,IAAI,CAACk4B,UAAU,CAAE;WAAC,GAC1D;EAAC,YAAA,IAAI,CAACA;EAAW,SAAA;UAEzB,IAAIb,SAAAA,CAAUz2B,MAAM,KAAK,CAAA,EAAGy2B,UAAUrrB,IAAI,CAACqrB,SAAS,CAAC,CAAE,CAAA,CAAA;UACvD,IAAI,CAACU,iBAAiB,CAACV,SAAAA,CAAAA;EAEvB,QAAA,IAAI,CAACO,WAAW,GAAG7vB,QAAAA,CAAK,cAAgB,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACoJ;EAAM,SAAA,CAAA;UAC5D,IAAI,CAACqtB,WAAW,CAACz4B,IAAI,CAAC84B,KAAOrzB,CAAAA,CAAAA,UAAU,CAAC,IAAI,CAACqI,WAAW,CACrD9N,CAAAA,IAAI,CAAC84B,KAAMH,CAAAA,IAAI,EAAE,IAAI,CAACa,sBAAsB,KAAK,OAAA,GAAU,IAAI,CAACZ,iBAAiB,CAACV,SAAaA,CAAAA,GAAAA,SAAAA,CAAAA;UAElG,IAAI,CAAC9a,YAAY,CAACzV,CAAC,IAAI,IAAI,CAAC8xB,WAAW,GAAG,CAAA;UAC1C,IAAI,CAACrc,YAAY,CAACtW,MAAM,IAAI,IAAI,CAAC2yB,WAAW,GAAG,CAAA;UAE/C,MAAMkC,eAAAA,GAAkB/yB,SAAK,wBAA0B,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACoJ;EAAM,SAAA,CAAA;UAE3E,IAAI,CAACmtB,gBAAgB,CAClBj1B,IAAI,CAAC,IAAI,CAAC43B,WAAW,GAAG;EAAC,YAAA;kBACxBxzB,CAAG,EAAA,IAAI,CAACiyB,YAAY,GAAGsB,eAAAA;kBACvBtzB,CAAG,EAAA,IAAI,CAAC6xB,sBAAsB,KAAK,YAC7B,IAAI,CAAC/S,MAAM,KAAK,QAAW,GAAA,IAAI,CAAClhB,OAAO,GAAG,IAAI,IAAI,CAACm0B,aAAa,GAAG,CAAA,GACnE,IAAI,CAACjT,MAAM,KAAK,UAAU,IAAI,CAACvJ,OAAO,CAACsC,GAAG,GAC1C,IAAI,CAACja,OAAO,GAAG,IAAI,CAACm0B,aAAa,GAAG,IAAI,CAACxc,OAAO,CAACwC,MAAM,GACzD,IAAI,CAACtC,YAAY,CAACzV,CAAC;kBACvBd,KAAOo0B,EAAAA,eAAAA;kBACPn0B,MAAQm0B,EAAAA;EACV;EAAE,SAAA,GAAG,EAAE,CAAA,CACN12B,MAAM,CAACo3B,eAAgB92B,CAAAA,IAAI,EAC3B7D,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAAC46B,iBAAiB,EAC7Bx3B,MAAM,EAAA;EAET,QAAA,OAAO,IAAI;EACb;EAEA;;;;;SAMAy3B,aAAAA,CAAc56B,CAAC,EAAE;EACf,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACu5B,cAAc,GAAG/5B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+5B,cAAc;EACjF;EAEA;;;;;OAMAc,QAAAA,CAAS76B,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC02B,SAAS,GAAGl3B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACk3B,SAAS;EACvE;EAEA;;;;;;;;;OAUA4D,WAAAA,CAAY96B,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+5B,YAAY,GAAGv6B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACu6B,YAAY;EAC7E;EAEA;;;;;OAMAQ,QAAAA,CAAS/6B,CAAC,EAAE;EACV,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC84B,SAAS,GAAG,OAAOt5B,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACs5B,SAAS;EAC/G;EAEA;;;;;OAMA0B,WAAAA,CAAYh7B,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC65B,YAAY,GAAGr6B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACq6B,YAAY;EAC7E;EAEA;;;;;OAMAY,cAAAA,CAAej7B,CAAC,EAAE;EAChB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACq5B,eAAe,GAAG75B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC65B,eAAe;EACnF;EAEA;;;;;SAMAqB,YAAAA,CAAal7B,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACi4B,aAAa,GAAGz4B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACy4B,aAAa;EAC/E;EAEA;;;;;OAMA0C,YAAAA,CAAan7B,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC63B,aAAa,GAAG/3B,UAAAA,CAAO,IAAI,CAAC+3B,aAAa,EAAEr4B,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACq4B,aAAa;EAC3G;EAEA;;;;;OAMAmB,UAAAA,CAAWx5B,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACg4B,WAAW,GAAGx4B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACw4B,WAAW;EAC3E;EAEA;;;;;;EAMA,KACA33B,EAAGb,CAAAA,CAAC,EAAEc,CAAC,EAAE;UACP,OAAOP,SAAAA,CAAUC,MAAM,KAAK,CAAA,IAAK,IAAI,CAACC,GAAG,CAACT,CAAAA,CAAE,GAAGc,CAAG,EAAA,IAAI,IAAIP,SAAAA,CAAUC,MAAM,GAAG,OAAOR,MAAM,QAAW,GAAA,IAAI,CAACS,GAAG,CAACT,EAAE,IAAI,IAAI,CAACS,GAAG,GAAGH,UAAO,CAAA,IAAI,IAAI,CAACG,GAAG,EAAET,CAAAA,CAAAA,EAAI,IAAI,CAAD,GAAK,IAAI,CAACS,GAAG;EAC1K;EAEA;;;;;OAMA26B,UAAAA,CAAWp7B,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACy5B,WAAW,GAAGj6B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACi6B,WAAW;EAC3E;EAEA;;;;;OAMAoB,gBAAAA,CAAiBr7B,CAAC,EAAE;EAClB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACm6B,iBAAiB,GAAGr6B,UAAAA,CAAO,IAAI,CAACq6B,iBAAiB,EAAE36B,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC26B,iBAAiB;EACvH;EAEA;;;;;OAMAW,kBAAAA,CAAmBt7B,CAAC,EAAE;EACpB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+6B,mBAAmB,GAAGv7B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACu7B,mBAAmB;EAC3F;EAEA;;;;;OAMAC,eAAAA,CAAgBx7B,CAAC,EAAE;EACjB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC23B,gBAAgB,GAAG73B,UAAAA,CAAO,IAAI,CAAC63B,gBAAgB,EAAEn4B,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACm4B,gBAAgB;EACpH;EAEA;;;;;OAMAlB,SAAAA,CAAUj3B,CAAC,EAAE;EACX,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACs3B,UAAU,GAAG93B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC83B,UAAU;EACzE;EAEA;;;;;OAMA2D,QAAAA,CAASz7B,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC22B,SAAS,GAAGn3B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACm3B,SAAS;EACvE;EAtpBA;;;;EAIA,KACA91B,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACob,UAAU,GAAGnc,UAAAA,CAAO,EAAI,EAAA,IAAI,CAACmc,UAAU,EAAE;EAC5ChT,YAAAA,MAAAA,EAAQ,IAAM,IAAI,CAAC8uB,sBAAsB,KAAK,YAAY,aAAgBnH,GAAAA,QAAAA;EAC1E,YAAA,cAAA,EAAgB,IAAM,IAAI,CAACmH,sBAAsB,KAAK,YAAY,CAAI,GAAA;EACxE,SAAA,CAAA;UACA,IAAI,CAACrB,SAAS,GAAG,IAAA;UACjB,IAAI,CAACqD,YAAY,GAAG73B,CAAAA,KAAAA,GAAS,CAACA,KAAAA,CAAMg5B,MAAM,IAAIh5B,KAAMi5B,CAAAA,MAAM,GAAG,CAAA;UAC7D,IAAI,CAACrC,SAAS,GAAGr2B,QAAS,CAAA,CAAA,CAAA;UAC1B,IAAI,CAACo3B,YAAY,GAAG,QAAA;UACpB,IAAI,CAACR,eAAe,GAAG,MAAA;UACvB,IAAI,CAACE,cAAc,GAAG,EAAA;UACtB,IAAI,CAACtB,aAAa,GAAG,EAAA;UACrB,IAAI,CAAC1Z,OAAO,GAAG;EAAC,YAAA,IAAA;EAAM,YAAA;EAAK,SAAA;UAC3B,IAAI,CAACwG,SAAS,GAAG,CAAA;UACjB,IAAI,CAAC8S,aAAa,GAAG;EACnBzuB,YAAAA,IAAAA,EAAMme,oBAAc4J,KAAK;cACzBloB,MAAQ,EAAA,SAAA;cACR,cAAgB,EAAA,CAAA;cAChByG,EAAI,EAAA,CAAA;cACJC,EAAI,EAAA;EACN,SAAA;UACA,IAAI,CAACqoB,WAAW,GAAG,CAAA;UACnB,IAAI,CAACl0B,OAAO,GAAG,GAAA;UACf,IAAI,CAACwgB,YAAY,GAAG,KAAA;UACpB,IAAI,CAACrkB,GAAG,GAAG,EAAC;UACZ,IAAI,CAAC0U,MAAM,CAAC,QAAA,CAAA;UACZ,IAAI,CAAC8kB,WAAW,GAAG,IAAA;EACnB,QAAA,IAAI,CAAC3C,gBAAgB,GAAG,IAAIpmB,OACzBrQ,EAAAA,CAAAA,EAAE,CAAC,OAAS,EAAA,IAAA;;cAGX,IAAI,IAAI,CAACw2B,UAAU,EAAE;kBACnBD,aAAc,CAAA,IAAI,CAACC,UAAU,CAAA;kBAC7B,IAAI,CAACA,UAAU,GAAG,KAAA;kBAClB,IAAI,CAACC,gBAAgB,CAACn0B,MAAM,EAAA;eAGzB,MAAA;EACH,gBAAA,IAAIy4B,SAAY,GAAA,IAAA;EAChB,gBAAA,MAAMC,QAAW,GAAA,IAAA;EACf,oBAAA,IAAI5E,SAAY,GAAA,IAAI,CAACa,UAAU,IAAI;0BAAC,IAAI,CAAC/Y,OAAO,CAAC,IAAI,CAACA,OAAO,CAACve,MAAM,GAAG,CAAE;EAAC,qBAAA;EAC1E,oBAAA,IAAI,EAAEy2B,SAAqBn0B,YAAAA,KAAI,GAAIm0B,SAAY,GAAA;EAACA,wBAAAA;EAAU,qBAAA;EAC1DA,oBAAAA,SAAAA,GAAYA,SAAUp0B,CAAAA,GAAG,CAACsa,QAAAA,CAAAA,CAAMta,GAAG,CAACyR,MAAAA,CAAAA;sBACpC,IAAI2iB,SAAAA,CAAUz2B,MAAM,KAAK,CAAA,EAAGy2B,UAAUrrB,IAAI,CAACqrB,SAAS,CAAC,CAAE,CAAA,CAAA;EACvD,oBAAA,MAAMtc,QAAQ,IAAI,CAACyH,MAAM,CAACvf,GAAG,CAACyR,MAAAA,CAAAA;EAC9B,oBAAA,MAAMwnB,aAAanhB,KAAM/a,CAAAA,OAAO,CAACq3B,SAAS,CAAC,CAAE,CAAA,CAAA;sBAC7C,MAAM8E,SAAAA,GAAYphB,MAAM/a,OAAO,CAACq3B,SAAS,CAACA,SAAAA,CAAUz2B,MAAM,GAAG,CAAE,CAAA,CAAA;EAC/D,oBAAA,IAAIu7B,SAAcphB,KAAAA,KAAAA,CAAMna,MAAM,GAAG,CAAG,EAAA;EAClC,wBAAA,IAAI,CAACo7B,SAAW,EAAA;8BACdxE,aAAc,CAAA,IAAI,CAACC,UAAU,CAAA;8BAC7B,IAAI,CAACA,UAAU,GAAG,KAAA;8BAClB,IAAI,CAACC,gBAAgB,CAACn0B,MAAM,EAAA;2BAEzB,MAAA;8BACH,IAAI,CAAC8zB,SAAS,CAAC;kCACb,IAAI,CAAC7U,MAAM,CAAC,CAAE,CAAA;EACd,gCAAA,IAAI,CAACA,MAAM,CAAC2Z,SAAAA,GAAYD,UAAW;EACpC,6BAAA,CAAA,CAAE34B,MAAM,EAAA;EACX;uBAEG,MAAA;EACH,wBAAA,IAAI44B,SAAY,GAAA,CAAA,KAAMphB,KAAMna,CAAAA,MAAM,GAAG,CAAG,EAAA;8BACtC42B,aAAc,CAAA,IAAI,CAACC,UAAU,CAAA;8BAC7B,IAAI,CAACA,UAAU,GAAG,KAAA;EACpB;0BACA,IAAI,CAACJ,SAAS,CAAC;EACb,4BAAA,IAAI,CAAC7U,MAAM,CAAC0Z,UAAAA,GAAa,CAAE,CAAA;EAC3B,4BAAA,IAAI,CAAC1Z,MAAM,CAAC2Z,SAAAA,GAAY,CAAE;EAC3B,yBAAA,CAAA,CAAE54B,MAAM,EAAA;EACX;sBACAy4B,SAAY,GAAA,KAAA;EACd,iBAAA;EACA,gBAAA,IAAI,CAACvE,UAAU,GAAG2E,YAAYH,QAAU,EAAA,IAAI,CAACN,mBAAmB,CAAA;EAChEM,gBAAAA,QAAAA,EAAAA;EACF;EACF,SAAA,CAAA,CACCh7B,EAAE,CAAC,WAAa,EAAA,IAAM,IAAI,CAACy2B,gBAAgB,CAACh0B,MAAM,EAAA,CAAGE,KAAK,CAAC,QAAU,EAAA,SAAA,CAAA,CAAA;UACxE,IAAI,CAACm3B,iBAAiB,GAAG;EACvBxpB,YAAAA,SAAAA,EAAW4W,oBAAcC,IAAI;cAC7B3W,QAAU,EAAA,EAAA;EACV5E,YAAAA,IAAAA,EAAM,IAAM,IAAI,CAAC4qB,UAAU,GAAG,kBAAqB,GAAA,GAAA;cACnD5mB,UAAY,EAAA,QAAA;cACZI,aAAe,EAAA;EACjB,SAAA;UACA,IAAI,CAAC0qB,mBAAmB,GAAG,IAAA;UAC3B,IAAI,CAACpD,gBAAgB,GAAG;cACtB,MAAQ,EAAA,SAAA;EACR,YAAA,cAAA,EAAgB,IAAM,IAAI,CAACI,sBAAsB,KAAK,YAAY,GAAM,GAAA,CAAA;cACxE,cAAgB,EAAA;EAClB,SAAA;UACA,IAAI,CAACna,MAAM,GAAG,MAAA;UACd,IAAI,CAAChd,YAAY,GAAGd,UAAAA,CAAO,EAAI,EAAA,IAAI,CAACc,YAAY,EAAE;EAChD4O,YAAAA,WAAAA,EAAa9R,CAAAA,CAAK,GAAA,IAAI,CAACq6B,sBAAsB,KAAK,SAC9C,GAAA;sBAAC9xB,CAAGvI,EAAAA,CAAAA,CAAE8R,WAAW,CAACvJ,CAAC;EAAEC,oBAAAA,CAAAA,EAAG,CAAC,IAAI,CAAC+xB,aAAa,GAAG,CAAI,GAAA,CAAA;sBAAG7yB,KAAO1H,EAAAA,CAAAA,CAAE8R,WAAW,CAACpK,KAAK;sBAAEC,MAAQ,EAAA,IAAI,CAAC4yB;EAAa,iBAAA,GAC3Gv6B,EAAE8R,WAAW;cACjB1D,WAAa,EAAA;EACX6E,gBAAAA,SAAAA,EAAW4W,oBAAcC,IAAI;EAC7B3W,gBAAAA,QAAAA,EAAU,IAAM,EAAA;EAChBR,gBAAAA,aAAAA,EAAe,IAAM,IAAI,CAAC0nB,sBAAsB,KAAK,YAAY,QAAW,GAAA;EAC9E,aAAA;EACA3uB,YAAAA,IAAAA,EAAM,IAAM,IAAI,CAAC2uB,sBAAsB,KAAK,YAAY,MAASnH,GAAAA,QAAAA;EACjE3nB,YAAAA,MAAAA,EAAQ,IAAM,IAAI,CAAC8uB,sBAAsB,KAAK,YAAYnH,QAAW,GAAA,aAAA;EACrEvrB,YAAAA,MAAAA,EAAQ3H,CAAAA,CAAK,GAAA,IAAI,CAACq6B,sBAAsB,KAAK,SAAY,GAAA,IAAI,CAACE,aAAa,GAAGv6B,CAAEuhB,CAAAA,IAAI,GAAG,IAAI,CAAC+Y,WAAW,GAAG,CAAA;EAC1G5yB,YAAAA,KAAAA,EAAO1H,CAAAA,CAAAA,GAAK,IAAI,CAACq6B,sBAAsB,KAAK,SAAA,GACtC,IAAI,CAACI,WAAW,GAAG,IAAI,CAACpW,eAAe,CAAC/hB,MAAM,GAChDtC,CAAAA,CAAEuhB,IAAI,GACJ,IAAI,CAACV,OAAO,CAAClc,GAAG,CAACyR,MAAAA,CAAAA,CAAQzU,QAAQ,CAAC3B,CAAAA,CAAEmI,EAAE,CAAA,GAAI,IAAI,CAC9C,GAAA,CAAA;cACNK,CAAGxI,EAAAA,CAAAA,IAAK,IAAI,CAACq6B,sBAAsB,KAAK,SAAA,GAClC,IAAI,CAAC/S,MAAM,KAAK,WAAW,IAAI,CAAClhB,OAAO,GAAG,CAAA,GAC1C,IAAI,CAACkhB,MAAM,KAAK,OAAA,GAAU,IAAI,CAACvJ,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACka,aAAa,GAAG,CAAA,GAClE,IAAI,CAACn0B,OAAO,GAAG,IAAI,CAACm0B,aAAa,GAAG,CAAA,GAAI,IAAI,CAACxc,OAAO,CAACwC,MAAM,GAC7DvgB,CAAAA,CAAEwI,CAAC;cACPwJ,EAAIhS,EAAAA,CAAAA,IAAK,IAAI,CAACq6B,sBAAsB,KAAK,SAAA,GAAY,IAAI,IAAI,CAACxZ,OAAO,CAAClc,GAAG,CAACyR,MAAQzU,CAAAA,CAAAA,QAAQ,CAAC3B,CAAEmI,CAAAA,EAAE,IAAI,CAAI,GAAA,CAAA;cACvG8J,EAAIjS,EAAAA,CAAAA,IAAK,IAAI,CAACq6B,sBAAsB,KAAK,SAAA,GAAY,IAAI,IAAI,CAACxZ,OAAO,CAAClc,GAAG,CAACyR,MAAQzU,CAAAA,CAAAA,QAAQ,CAAC3B,CAAEmI,CAAAA,EAAE,IAAI,CAAI,GAAA;EACzG,SAAA,CAAA;UACA,IAAI,CAAC8wB,SAAS,GAAG,IAAA;EAEnB;EA0hBF;;ECtqBA;;;;MAKA,SAAS8E,kBAAkB/f,QAAW,GAAA;EAAC,IAAA,CAAA;EAAG,IAAA;EAAE,CAAA,EAAA;EAC1C,IAAA,OAAO,KAAO;cACZtW,KAAO,EAAA,CAAA;cACPC,MAAQ,EAAA,CAAA;cACR0Y,GAAKrC,EAAAA,QAAQ,CAAC,CAAE,CAAA;cAChBsC,KAAOtC,EAAAA,QAAQ,CAAC,CAAE,CAAA;cAClBuC,MAAQvC,EAAAA,QAAQ,CAAC,CAAE,CAAA;cACnBwC,IAAMxC,EAAAA,QAAQ,CAAC,CAAE;WACnB,CAAA;EACF;EAOe,MAAMggB,OAAgBp8B,SAAAA,SAAAA,CAAAA;EAmFnC;;;OAIAqD,MAAAA,CAAOC,QAAQ,EAAE;EAEf,QAAA,MAAMqB,OAAO,IAAI;EAEjB,QAAA,MAAM03B,SAASx0B,QAAK,CAAA,mBAAA,CAAA;UACpB,MAAMy0B,QAAAA,GAAWD,OAAOr4B,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,CAACu4B,UAAU,EAAE,CACpDh6B,CAAAA,IAAI,CAAC,IAAI,CAAC0B,KAAK,EAAE,IAAI,CAACC,GAAG,CAAA;EAE5B,QAAA,MAAMC,KAAQm4B,GAAAA,QAAAA,CAASn4B,KAAK,EAAA,CAAGV,MAAM,CAAC,KACnCW,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS,IAAI,CAACm4B,UAAU,CAAA;UAEhC,MAAM33B,MAAAA,GAAS03B,QAASz3B,CAAAA,KAAK,CAACV,KAAAA,CAAAA;UAC9BkuB,WAAQztB,CAAAA,MAAAA,EAAQ,IAAI,CAAC43B,aAAa,CAAA;EAElC;;;SAIA,SAASC,WAAWC,GAAG,EAAA;EAErBv4B,YAAAA,KAAAA,CAAMV,MAAM,CAAC,KACVW,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS,CAAC,eAAe,EAAEs4B,GAAAA,CAAAA,CAAK,CACrCt4B,CAAAA,IAAI,CAAC,IAAA,EAAM,CAAChG,CAAAA,EAAGgE,CAAM,GAAA,CAAC,eAAe,EAAEs6B,GAAI,CAAA,CAAC,EAAEt+B,CAAAA,GAAIuG,IAAKT,CAAAA,GAAG,CAAC9F,CAAAA,EAAGgE,KAAK,EAAI,CAAA,CAAA,CAAA;EAE1E,YAAA,MAAMu6B,GAAM/3B,GAAAA,MAAAA,CAAOpB,MAAM,CAAC,CAAC,gBAAgB,EAAEk5B,GAAAA,CAAAA,CAAK,CAC/CtK,CAAAA,IAAI,CAAC,CAACh0B,CAAGgE,EAAAA,CAAAA,GAAMuC,IAAI,CAAC,CAAC,CAAC,EAAE+3B,GAAAA,CAAAA,CAAK,CAAC,CAACt+B,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAClCsB,KAAK,CAAC,SAAW,EAAA,CAACtF,CAAGgE,EAAAA,CAAAA,GAAAA;kBACpB,MAAMqmB,GAAAA,GAAM9jB,IAAI,CAAC,CAAC,CAAC,EAAE+3B,GAAAA,CAAAA,CAAK,CAAC,CAACt+B,CAAGgE,EAAAA,CAAAA,CAAAA;EAC/B,gBAAA,MAAMw6B,OAAUnU,GAAAA,GAAAA,KAAQ,KAASA,IAAAA,GAAAA,KAAQtqB,aAAasqB,GAAQ,KAAA,IAAA;EAC9D,gBAAA,OAAOmU,UAAU,OAAU,GAAA,MAAA;EAC7B,aAAA,CAAA;cAEFvK,WAAQsK,CAAAA,GAAAA,EAAKh4B,IAAI,CAAC,CAAC,CAAC,EAAE+3B,GAAAA,CAAI,KAAK,CAAC,CAAC,CAAA;EAEnC;EAEA;;;SAIA,SAASG,YAAYz+B,CAAC,EAAA;cACpB,IAAI,OAAOA,MAAM,UAAY,EAAA;kBAC3B,MAAMsN,KAAAA,GAAQlI,mBAAO,IAAI,CAAC8G,UAAU,CAACA,UAAU,EAAEoB,KAAK,EAAA;EACtD,gBAAA,OAAOtN,EAAEsN,KAAO/G,EAAAA,IAAAA,CAAKV,KAAK,CAACnE,OAAO,CAAC4L,KAAAA,CAAAA,CAAAA;EACrC,aAAA,MACK,OAAOtN,CAAAA;EACd;EAEA;;;SAIA,SAAS0+B,UAAUC,GAAG,EAAA;cAEpBA,GACGr5B,CAAAA,KAAK,CAAC,YAAciB,EAAAA,IAAAA,CAAKq4B,WAAW,CACpCt5B,CAAAA,KAAK,CAAC,CAAGiB,EAAAA,IAAAA,CAAKs4B,OAAO,CAAC,aAAa,CAAC,EAAEt4B,IAAAA,CAAKu4B,aAAa,CACxDx5B,CAAAA,KAAK,CAAC,gBAAA,EAAkBiB,IAAKI,CAAAA,cAAc,EAC3CrB,KAAK,CAAC,WAAWiB,IAAKwZ,CAAAA,QAAQ,EAC9Bza,KAAK,CAAC,SAASiB,IAAKL,CAAAA,MAAM,EAC1BZ,KAAK,CAAC,UAAUiB,IAAKH,CAAAA,OAAO,EAC5Bd,KAAK,CAAC,QAAUiB,EAAAA,IAAAA,CAAKw4B,OAAO,CAAA;EACjC;UAEAV,UAAW,CAAA,OAAA,CAAA;UACXA,UAAW,CAAA,MAAA,CAAA;EAEX,QAAA,MAAMW,aAAaj5B,KAAMV,CAAAA,MAAM,CAAC,OAASW,CAAAA,CAAAA,IAAI,CAAC,OAAS,EAAA,sBAAA,CAAA;UACvD,MAAMi5B,KAAAA,GAAQz4B,MAAOpB,CAAAA,MAAM,CAAC,uBAAA,CAAA;UAC5B6uB,WAAQgL,CAAAA,KAAAA,EAAO,IAAI,CAACC,WAAW,CAAA;EAE/BF,QAAAA,UAAAA,CAAW35B,MAAM,CAAC,OAASW,CAAAA,CAAAA,IAAI,CAAC,OAAS,EAAA,sBAAA,CAAA;UACzC,MAAMm5B,SAAAA,GAAY34B,MAAOpB,CAAAA,MAAM,CAAC,uBAAA,CAAA;UAChC6uB,WAAQkL,CAAAA,SAAAA,EAAW,IAAI,CAACC,WAAW,CAAA;EACnC,QAAA,MAAMC,UAAUF,SAAUv5B,CAAAA,SAAS,CAAC,IAAA,CAAA,CAAMzB,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;EAClD,QAAA,MAAMm7B,YAAeD,GAAAA,OAAAA,CAAQt5B,KAAK,EAAA,CAAGV,MAAM,CAAC,IAAA,CAAA;UAC5Cg6B,OAAQr3B,CAAAA,IAAI,GAAGC,MAAM,EAAA;UACrB,MAAMs3B,aAAAA,GAAgBF,OAAQ54B,CAAAA,KAAK,CAAC64B,YAAAA,CAAAA;UACpCrL,WAAQsL,CAAAA,aAAAA,EAAe,IAAI,CAACC,QAAQ,CAAA;UACpC,MAAMC,EAAAA,GAAKF,cAAc35B,SAAS,CAAC,MAAMzB,IAAI,CAAC,IAAI,CAACu7B,MAAM,CAAA;UACzDD,EAAG15B,CAAAA,KAAK,GAAGV,MAAM,CAAC,MAAMoB,KAAK,CAACg5B,EAAIzL,CAAAA,CAAAA,IAAI,CAACyK,WAAAA,CAAAA;UACvCgB,EAAGz3B,CAAAA,IAAI,GAAGC,MAAM,EAAA;EAEhB+2B,QAAAA,UAAAA,CAAW35B,MAAM,CAAC,OAASW,CAAAA,CAAAA,IAAI,CAAC,OAAS,EAAA,sBAAA,CAAA;UACzC,MAAM25B,SAAAA,GAAYn5B,MAAOpB,CAAAA,MAAM,CAAC,uBAAA,CAAA;UAChC6uB,WAAQ0L,CAAAA,SAAAA,EAAW,IAAI,CAACC,WAAW,CAAA;UACnC,MAAMC,EAAAA,GAAKF,UAAU/5B,SAAS,CAAC,MAAMzB,IAAI,CAAC,IAAI,CAAC27B,MAAM,CAAA;EACrD,QAAA,MAAMC,OAAUF,GAAAA,EAAAA,CAAG95B,KAAK,EAAA,CAAGV,MAAM,CAAC,IAAA,CAAA;UAClCw6B,EAAG73B,CAAAA,IAAI,GAAGC,MAAM,EAAA;UAChB,MAAM+3B,QAAAA,GAAWH,EAAGp5B,CAAAA,KAAK,CAACs5B,OAAAA,CAAAA;UAC1B9L,WAAQ+L,CAAAA,QAAAA,EAAU,IAAI,CAACR,QAAQ,CAAA;UAC/B,MAAM3X,EAAAA,GAAKmY,SAASp6B,SAAS,CAAC,MAAMzB,IAAI,CAACnE,CAAAA,CAAKA,GAAAA,CAAAA,CAAAA;UAC9C6nB,EAAG9hB,CAAAA,KAAK,GAAGV,MAAM,CAAC,MAAMoB,KAAK,CAACohB,EAAImM,CAAAA,CAAAA,IAAI,CAACyK,WAAAA,CAAAA;UACvCxK,WAAQpM,CAAAA,EAAAA,EAAI,IAAI,CAACoY,QAAQ,CAAA;UAEzB5B,UAAW,CAAA,QAAA,CAAA;UAEXA,UAAW,CAAA,OAAA,CAAA;UAEXt4B,KACGC,CAAAA,IAAI,CAAC,IAAA,EAAM,CAAChG,CAAAA,EAAGgE,IAAM,CAAC,eAAe,EAAEhE,CAAAA,GAAI,IAAI,CAAC8F,GAAG,CAAC9F,CAAAA,EAAGgE,CAAK,CAAA,GAAA,EAAA,CAAA,CAAI,CAChEnD,CAAAA,IAAI,CAAC69B,SACL73B,CAAAA,CAAAA,IAAI,CAAC,CAAC7G,CAAGgE,EAAAA,CAAAA,GAAAA;EAER,YAAA,MAAMmE,EAAK5B,GAAAA,IAAAA,CAAKT,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EACvB,YAAA,MAAMk8B,UAAU14B,QAAS24B,CAAAA,cAAc,CAAC,CAAC,eAAe,EAAEh4B,EAAI,CAAA,CAAA,CAAA;EAC9D,YAAA,MAAMi4B,QAAQ54B,QAAS24B,CAAAA,cAAc,CAAC,CAAC,qBAAqB,EAAEh4B,EAAI,CAAA,CAAA,CAAA;cAClE,MAAMk4B,WAAAA,GAAcD,MAAME,YAAY;EACtC,YAAA,MAAMC,aAAgBH,GAAAA,KAAAA,CAAMI,qBAAqB,EAAA,CAAG74B,MAAM,GAAG,CAAA;cAC7Dy4B,KAAM96B,CAAAA,KAAK,CAACib,MAAM,GAAG,CAAC,CAAC,EAAE8f,WAAAA,GAAc,CAAE,CAAA,EAAE,CAAC;EAE5C,YAAA,MAAMriB,QAAWzX,GAAAA,IAAAA,CAAKsX,SAAS,CAAC7d,CAAGgE,EAAAA,CAAAA,CAAAA;EAEnC,YAAA,MAAMy8B,eAAkB77B,GAAAA,KAAAA,CAAM87B,OAAO,CAAC1iB,QAAY,CAAA,GAAA;EAChDwiB,gBAAAA,qBAAAA,EAAuBzC,iBAAkB/f,CAAAA,QAAAA;eAEvCA,GAAAA,QAAAA;EAEJ,YAAA,IAAI,CAAC2iB,cAAc,CAACx4B,GAAG,GAAGy4B,iBAAAA,CAAaH,iBAAiBP,OAAS,EAAA;kBAC/DW,SAAW,EAAA,KAAA;kBACXC,SAAW,EAAA;EACT,oBAAA;0BACEC,IAAM,EAAA,OAAA;0BACNC,OAAS,EAAA;8BACPC,OAASb,EAAAA;EACX;EACF,qBAAA;EACA,oBAAA;0BACEW,IAAM,EAAA,QAAA;0BACNC,OAAS,EAAA;8BACPljB,MAAQ,EAAA;EAAC,gCAAA,CAAA;kCAAGvX,IAAK26B,CAAAA,OAAO,CAAClhC,CAAAA,EAAGgE,CAAKu8B,CAAAA,GAAAA;EAAc;EACjD;EACF,qBAAA;EACA,oBAAA;0BACEQ,IAAM,EAAA,iBAAA;0BACNC,OAAS,EAAA;8BACPG,QAAU,EAAA,cAAA;8BACV/tB,OAAS,EAAA;EACX;EACF,qBAAA;EACA,oBAAA;0BACE2tB,IAAM,EAAA,MAAA;0BACNC,OAAS,EAAA;8BACPI,QAAU,EAAA,MAAA;8BACVD,QAAU,EAAA,UAAA;8BACVE,kBAAoB,EAAA;EAAC,gCAAA;EAAS,6BAAA;8BAC9BjuB,OAAS,EAAA;EACX;EACF,qBAAA;EACA,oBAAA;0BACE2tB,IAAM,EAAA,QAAA;0BACNO,OAAS,EAAA,IAAA;0BACTC,KAAO,EAAA,YAAA;EACPC,wBAAAA,EAAAA,CAAAA,CAAGj5B,CAAC,EAAA;8BACF,MAAM,EAACk5B,KAAK,EAAC,GAAGl5B,CAAAA;EAChB,4BAAA,MAAMm5B,YAAeD,GAAAA,KAAAA,CAAME,QAAQ,CAACvB,KAAK;EACzC,4BAAA,MAAMwB,WAAcH,GAAAA,KAAAA,CAAMI,MAAM,CAACzB,KAAK;EACtC,4BAAA,MAAM0B,UAAUL,KAAMM,CAAAA,aAAa,CAACjiB,IAAI,CAACkiB,KAAK;EAC9C,4BAAA,MAAMC,SAAShxB,UAAWywB,CAAAA,YAAAA,CAAap8B,KAAK,CAAC48B,gBAAgB,EAAE,EAAA,CAAA;EAC/D,4BAAA,IAAIJ,OAAS,EAAA;kCACXJ,YAAap8B,CAAAA,KAAK,CAACmsB,SAAS,GAAG,GAAGmQ,WAAYnQ,CAAAA,SAAS,CAAC,cAAc,CAAC;kCACvEiQ,YAAap8B,CAAAA,KAAK,CAAC+a,GAAG,GAAG,CAAC,CAAC,EAAEggB,WAAc,GAAA,CAAA,GAAI4B,MAAO,CAAA,EAAE,CAAC;+BAEtD,MAAA;kCACHP,YAAap8B,CAAAA,KAAK,CAACmsB,SAAS,GAAG,GAAGmQ,WAAYnQ,CAAAA,SAAS,CAAC,aAAa,CAAC;kCACtEiQ,YAAap8B,CAAAA,KAAK,CAACib,MAAM,GAAG,CAAC,CAAC,EAAE8f,WAAc,GAAA,CAAA,GAAI4B,MAAO,CAAA,EAAE,CAAC;EAC9D;EACF;EACF;EACD,iBAAA;kBACDE,eAAiB,EAAA;EACnB,aAAA,CAAA;EAEF,SAAA,CAAA;UAEF37B,MACGK,CAAAA,IAAI,CAAC,CAAC7G,CAAGgE,EAAAA,CAAAA,GAAAA;EACR,YAAA,MAAMmE,EAAK5B,GAAAA,IAAAA,CAAKT,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EACvB,YAAA,MAAMga,QAAWzX,GAAAA,IAAAA,CAAKsX,SAAS,CAAC7d,CAAGgE,EAAAA,CAAAA,CAAAA;EACnC,YAAA,MAAMo+B,QAAW,GAAA,IAAI,CAACzB,cAAc,CAACx4B,EAAG,CAAA;EAExC,YAAA,IAAIi6B,QAAU,EAAA;EACZA,gBAAAA,QAAAA,CAASX,KAAK,CAACE,QAAQ,CAACU,SAAS,CAAC7B,qBAAqB,GAAG57B,KAAM87B,CAAAA,OAAO,CAAC1iB,QAAAA,CAAAA,GACpE+f,kBAAkB/f,QAClBA,CAAAA,GAAAA,QAAAA;EACJokB,gBAAAA,QAAAA,CAAS57B,MAAM,EAAA;EACjB;EAEF,SAAA,CAAA,CACC3F,IAAI,CAAC69B,SAAAA,CAAAA;EAERR,QAAAA,QAAAA,CAASl2B,IAAI,EAAA,CACVnB,IAAI,CAAC,CAAC7G,CAAGgE,EAAAA,CAAAA,GAAAA;EACR,YAAA,MAAMmE,EAAK5B,GAAAA,IAAAA,CAAKT,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EACvB,YAAA,MAAMo+B,QAAW,GAAA,IAAI,CAACzB,cAAc,CAACx4B,EAAG,CAAA;EACxC,YAAA,IAAIi6B,QAAU,EAAA;EACZA,gBAAAA,QAAAA,CAASE,OAAO,EAAA;EAChB,gBAAA,OAAO,IAAI,CAAC3B,cAAc,CAACx4B,EAAG,CAAA;EAChC;EACF,SAAA,CAAA,CACCF,MAAM,EAAA;UAET,IAAI/C,QAAAA,EAAUgD,WAAWhD,QAAU,EAAA,GAAA,CAAA;EAEnC,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;;;;QASAk7B,KAAAA,CAAMt+B,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACigC,MAAM,GAAG,OAAOzgC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACygC,MAAM;EACzG;EAEA;;;;;;;;;;;;QAaAC,UAAAA,CAAW1gC,CAAC,EAAE;UACZ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACmgC,WAAW,GAAGrhC,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAACqgC,WAAW,EAAE3gC,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAAC2gC,WAAW;EAC5G;EAEA;;;;OAKAn3B,UAAAA,CAAWxJ,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACs8B,WAAW,GAAG,OAAO98B,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC88B,WAAW;EACnH;EAEA;;;;;;;;OASA8D,IAAAA,CAAK5gC,CAAC,EAAE;EACN,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqgC,KAAK,GAAG,OAAO7gC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6gC,KAAK;EACvG;EAEA;;;;;;;;;OAUAC,SAAAA,CAAU9gC,CAAC,EAAE;UACX,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACugC,UAAU,GAAGzhC,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAACygC,UAAU,EAAE/gC,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAAC+gC,UAAU;EACzG;EAEA;;;;OAKAZ,MAAAA,CAAOngC,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACy8B,OAAO,GAAG,OAAOj9B,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACi9B,OAAO;EAC3G;EAEA;;;;OAKA+D,YAAAA,CAAahhC,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACw8B,aAAa,GAAG,OAAOh9B,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACg9B,aAAa;EACvH;EAEA;;;;OAKAtyB,SAAAA,CAAU1K,CAAC,EAAE;EACX,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC67B,UAAU,GAAGr8B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACq8B,UAAU;EACzE;EAEA;;;;OAKAh6B,IAAAA,CAAKrC,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuD,KAAK,GAAG/D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+D,KAAK;EAC/D;EAEA;;;;;;;;OASAk9B,MAAAA,CAAOjhC,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0gC,OAAO,GAAG,OAAOlhC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkhC,OAAO;EAC3G;EAEA;;;;;;;;;OAUAC,WAAAA,CAAYnhC,CAAC,EAAE;UACb,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAAC4gC,YAAY,GAAG9hC,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAAC8gC,YAAY,EAAEphC,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACohC,YAAY;EAC/G;EAEA;;;;OAKAv7B,MAAAA,CAAO7F,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8D,OAAO,GAAG,OAAOtE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACsE,OAAO;EAC3G;EAEA;;;;;;;;OASA+B,EAAAA,CAAGrG,CAAC,EAAE;EACJ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACwD,GAAG,GAAG,OAAOhE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACgE,GAAG;EACnG;EAEA;;;;OAKAgY,MAAAA,CAAOhc,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4+B,OAAO,GAAG,OAAOp/B,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACo/B,OAAO;EAC3G;EAEA;;;;OAKA9tB,OAAAA,CAAQtR,CAAC,EAAE;EACT,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACyd,QAAQ,GAAG,OAAOje,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACie,QAAQ;EAC7G;EAEA;;;;OAKA1X,aAAAA,CAAcvG,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqE,cAAc,GAAG,OAAO7E,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6E,cAAc;EACzH;EAEA;;;;;;;;QASAqX,QAAAA,CAASlc,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACub,SAAS,GAAG,OAAO/b,MAAM,QAAWiD,GAAAA,QAAAA,CAASK,kBAAOtD,CAAAA,CAAAA,CAAAA,CAAG4D,IAAI,EAAM,IAAA;EAAC,YAAA,CAAA;EAAG,YAAA;WAAE,CAAI,GAAA,OAAO5D,CAAM,KAAA,UAAA,GAAaA,CAAIiD,GAAAA,QAAAA,CAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC+b,SAAS;EAC9K;EAEA;;;;;;;;;;OAWAslB,UAAAA,CAAWrhC,CAAC,EAAE;UACZ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAAC48B,WAAW,GAAG99B,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAAC88B,WAAW,EAAEp9B,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACo9B,WAAW;EAC5G;EAEA;;;;OAKAkE,KAAAA,CAAMthC,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACw9B,MAAM,GAAGh+B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACg+B,MAAM;EACjE;EAEA;;;;;;;;;;OAWAuD,UAAAA,CAAWvhC,CAAC,EAAE;UACZ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACs9B,WAAW,GAAGx+B,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAACw9B,WAAW,EAAE99B,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAAC89B,WAAW;EAC5G;EAEA;;;;OAKA0D,KAAAA,CAAMxhC,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACo9B,MAAM,GAAG59B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC49B,MAAM;EACjE;EAEA;;;;;;;;;;OAWA6D,UAAAA,CAAWzhC,CAAC,EAAE;UACZ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAAC88B,WAAW,GAAGh+B,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAACg9B,WAAW,EAAEt9B,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACs9B,WAAW;EAC5G;EAEA;;;;;;;;OASA5V,KAAAA,CAAM1nB,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACkiB,MAAM,GAAG,OAAO1iB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC0iB,MAAM;EACzG;EAEA;;;;;;;;;;OAWAgf,UAAAA,CAAW1hC,CAAC,EAAE;UACZ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACmhC,WAAW,GAAGriC,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAACqhC,WAAW,EAAE3hC,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAAC2hC,WAAW;EAC5G;EAEA;;;;;;;;;;;OAYAC,YAAAA,CAAa5hC,CAAC,EAAE;UACd,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAAC87B,aAAa,GAAGh9B,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAACg8B,aAAa,EAAEt8B,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACs8B,aAAa;EAClH;EAEA;;;;;;;;QASAuF,OAAAA,CAAQ7hC,CAAC,EAAE;UACT,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACk9B,QAAQ,GAAGp+B,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAACo9B,QAAQ,EAAE19B,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAAC09B,QAAQ;EACnG;EAEA;;;;QAKAoE,OAAAA,CAAQ9hC,CAAC,EAAE;UACT,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAAC29B,QAAQ,GAAG7+B,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAAC69B,QAAQ,EAAEn+B,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACm+B,QAAQ;EACnG;EAEA;;;;OAKAv4B,KAAAA,CAAM5F,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4D,MAAM,GAAG,OAAOpE,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoE,MAAM;EACzG;EA5mBA;;;;EAIA,KACA/C,WAAc,EAAA;UAEZ,KAAK,EAAA;EAEL,QAAA,IAAI,CAACo/B,MAAM,GAAG95B,QAAAA,CAAS,OAAS,EAAA,EAAA,CAAA;UAChC,IAAI,CAACg6B,WAAW,GAAG;cACjB,SAAW,EAAA,EAAA;cACX,YAAc,EAAA,SAAA;cACd,QAAU,EAAA,SAAA;cACV,cAAgB,EAAA,aAAA;cAChB,QAAU,EAAA,MAAA;cACV,UAAY,EAAA,UAAA;cACZ,WAAa,EAAA,eAAA;cACb,OAAS,EAAA,MAAA;cACT,SAAW,EAAA;EACb,SAAA;EACA,QAAA,IAAI,CAAC7D,WAAW,GAAG75B,QAAAA,CAAS8kB,oBAAc4J,KAAK,CAAA;EAC/C,QAAA,IAAI,CAACkP,KAAK,GAAGl6B,QAAAA,CAAS,MAAQ,EAAA,EAAA,CAAA;UAC9B,IAAI,CAACo6B,UAAU,GAAG;cAChB,WAAa,EAAA,MAAA;cACb,aAAe,EAAA,KAAA;cACf,SAAW,EAAA;EACb,SAAA;UACA,IAAI,CAAC9D,OAAO,GAAGh6B,QAAS,CAAA,+BAAA,CAAA;UACxB,IAAI,CAAC+5B,aAAa,GAAG/5B,QAAS,CAAA,KAAA,CAAA;UAC9B,IAAI,CAACo5B,UAAU,GAAG,gBAAA;UAClB,IAAI,CAACt4B,KAAK,GAAG,EAAE;EACf,QAAA,IAAI,CAACm9B,OAAO,GAAGv6B,QAAAA,CAAS,QAAU,EAAA,EAAA,CAAA;UAClC,IAAI,CAACy6B,YAAY,GAAG;cAClB,WAAa,EAAA,KAAA;cACb,aAAe,EAAA,KAAA;cACf,YAAc,EAAA,KAAA;cACd,SAAW,EAAA;EACb,SAAA;UACA,IAAI,CAAC98B,OAAO,GAAGrB,QAAS,CAAA,MAAA,CAAA;EACxB,QAAA,IAAI,CAACe,GAAG,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,GAAM,GAAGA,CAAG,CAAA,CAAA;UAC3B,IAAI,CAACk9B,OAAO,GAAGn8B,QAAS,CAAA,CAAA,CAAA;UACxB,IAAI,CAACgb,QAAQ,GAAGhb,QAAS,CAAA,MAAA,CAAA;UACzB,IAAI,CAAC4B,cAAc,GAAG5B,QAAS,CAAA,MAAA,CAAA;UAC/B,IAAI,CAAC47B,cAAc,GAAG,EAAC;EACvB,QAAA,IAAI,CAAC9iB,SAAS,GAAG7d,CAAAA,CAAK,GAAA;EAACA,gBAAAA,CAAAA,CAAEuI,CAAC;EAAEvI,gBAAAA,CAAAA,CAAEwI;EAAE,aAAA;UAChC,IAAI,CAACq2B,OAAO,GAAGjd,UAAAA,EAAAA;UACf,IAAI,CAACsd,WAAW,GAAG;cACjB,iBAAmB,EAAA,UAAA;cACnB,gBAAkB,EAAA,GAAA;cAClB,OAAS,EAAA;EACX,SAAA;UACA,IAAI,CAACY,MAAM,GAAG,EAAE;UAChB,IAAI,CAACF,WAAW,GAAG;cACjB,WAAa,EAAA,MAAA;cACb,YAAc,EAAA;EAChB,SAAA;UACA,IAAI,CAACF,MAAM,GAAG,EAAE;UAChB,IAAI,CAACN,WAAW,GAAG;cACjB,WAAa,EAAA,MAAA;cACb,aAAe,EAAA,KAAA;cACf,YAAc,EAAA;EAChB,SAAA;EACA,QAAA,IAAI,CAAC5a,MAAM,GAAG/b,QAAAA,CAAS,OAAS,EAAA,EAAA,CAAA;UAChC,IAAI,CAACg7B,WAAW,GAAG;cACjB,WAAa,EAAA,MAAA;cACb,aAAe,EAAA,KAAA;cACf,eAAiB,EAAA;EACnB,SAAA;UACA,IAAI,CAACrF,aAAa,GAAG;cACnB,YAAc,EAAA,+BAAA;EACd,YAAA,OAAA,EAASvU,oBAAcC,IAAI;EAC3B,YAAA,aAAA,EAAe+Z,wBAAoBpf,CAAAA,eAAAA;EACrC,SAAA;UACA,IAAI,CAAC+a,QAAQ,GAAG;EACd,YAAA,YAAA,EAAc,CAACx/B,CAAAA,EAAGgE,CAAMA,GAAAA,CAAAA,GAAI,8BAAiC,GAAA;EAC/D,SAAA;UACA,IAAI,CAACi8B,QAAQ,GAAG,EAAC;UACjB,IAAI,CAAC/5B,MAAM,GAAGnB,QAAS,CAAA,OAAA,CAAA;EACzB;EA+hBF;;EC5oBA;;;;EAIA,GACe,iBAAA,GAAA;EAEb,IAAA,MAAMy5B,OAAU,GAAA,IAAI,CAACsF,QAAQ,CAACxhC,MAAM;MAEpC,MAAMyhC,SAAAA,GAAYt6B,SAAK,mBAAqB,EAAA;UAC1C5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;UACpBvB,QAAU,EAAA,IAAI,CAACC,SAAS;UACxB2C,MAAQ,EAAA;EAACirB,YAAAA,SAAAA,EAAW,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,CAAC,CAAC;EAAC;EAC5E,KAAA,CAAA,CAAG3a,IAAI,EAAA;EAEP,IAAA,IAAI,CAACs+B,UAAU,CACZ7/B,IAAI,CAACq6B,OAAU,GAAA;EAAC,QAAA;EAACjwB,YAAAA,IAAAA,EAAM,CAAC,EAAE,EAAE,IAAI,CAACvL,UAAU,CAAC,MAAS,CAAA,CAAA,CAAA;cAAEuF,CAAG,EAAA,CAAA;cAAGC,CAAG,EAAA;EAAC;OAAE,GAAG,EAAE,CACxEpD,CAAAA,MAAM,CAAC2+B,SAAAA,CAAAA,CACPliC,MAAM,CAAC,IAAI,CAACoiC,WAAW,CAAA,CACvBh/B,MAAM,EAAA;EAET,IAAA,IAAI,CAAC8Y,OAAO,CAACsC,GAAG,IAAIme,OAAAA,GAAU,IAAI,CAACwF,UAAU,CAAC7wB,QAAQ,OAAO,IAAI,CAAC6wB,UAAU,CAAC5wB,OAAO,OAAO,CAAI,GAAA,CAAA;EAEjG;;ECtBA;;;;EAIA,GACe,uBAAA,GAAA;MAEb,MAAMjP,IAAAA,GAAO,IAAI,CAAC0B,KAAK;MAEvB,IAAImY,QAAAA,GAAW,IAAI,CAACkmB,mBAAmB,CAAC7/B,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACxC,MAAM,EAAA,CAAA;EAC9D,IAAA,IAAI,CAAC;EAAC,QAAA,KAAA;EAAO,QAAA,KAAA;EAAO,QAAA,QAAA;EAAU,QAAA,MAAA;EAAQ,QAAA;OAAQ,CAACF,QAAQ,CAACqc,QAAAA,CAAAA,EAAWA,QAAW,GAAA,QAAA;EAC9E,IAAA,MAAMmmB,IAAO,GAAA;EAAC,QAAA,KAAA;EAAO,QAAA;EAAS,KAAA,CAACxiC,QAAQ,CAACqc,QAAAA,CAAAA;EACxC,IAAA,MAAMomB,cAAiB,GAAA,IAAI,CAACnV,WAAW,IAAIjR,QAAAA;MAC3C,MAAM5K,OAAAA,GAAU,IAAI,CAACixB,kBAAkB,KAAK,IAAI,CAACtkB,QAAQ,GAAG;UAACM,GAAK,EAAA,CAAA;UAAGC,KAAO,EAAA,CAAA;UAAGC,MAAQ,EAAA,CAAA;UAAGC,IAAM,EAAA;EAAC,KAAA;MAEjG,MAAMkL,cAAAA,GAAiB,IAAI,CAACxlB,MAAM,IAAI,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK,GAAGlN,QAAQoN,IAAI,GAAGpN,OAAQkN,CAAAA,KAAK,CAAD;MAE1G,MAAM5Y,KAAAA,GAAQy8B,OACV56B,WAAI,CAAA;EAAC,QAAA,IAAI,CAAC+6B,kBAAkB;EAAE5Y,QAAAA;EAAe,KAAA,CAAA,GAC7C,IAAI,CAACxlB,MAAM,IAAI,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK,CAAD;MAExD,MAAMuK,eAAAA,GAAkB,IAAI,CAACzkB,OAAO,IAAI,IAAI,CAAC2X,OAAO,CAACwC,MAAM,GAAG,IAAI,CAACxC,OAAO,CAACsC,GAAG,GAAGjN,QAAQmN,MAAM,GAAGnN,OAAQiN,CAAAA,GAAG,CAAD;MAE5G,MAAM1Y,MAAAA,GAAS,CAACw8B,IAAAA,GACZ56B,WAAI,CAAA;EAAC,QAAA,IAAI,CAAC+6B,kBAAkB;EAAEzZ,QAAAA;EAAgB,KAAA,CAAA,GAC9C,IAAI,CAACzkB,OAAO,IAAI,IAAI,CAAC2X,OAAO,CAACwC,MAAM,GAAG,IAAI,CAACxC,OAAO,CAACsC,GAAG,CAAD;EAEzD,IAAA,MAAMoR,SAAY,GAAA;EAChBrpB,QAAAA,OAAAA,EAAS4V,WAAW,CAAI,GAAA,CAAA;UACxByT,SAAW,EAAA,CAAC,UAAU,EAAE0S,IAAAA,GAAO,IAAI,CAACpmB,OAAO,CAACyC,IAAI,GAAGpN,OAAAA,CAAQoN,IAAI,GAAIkL,CAAAA,cAAAA,GAAiBhkB,KAAI,IAAK,IAAI,IAAI,CAACqW,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE2jB,IAAAA,GAAO,IAAI,CAACpmB,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACsC,GAAG,GAAGjN,OAAAA,CAAQiN,GAAG,GAAG,CAACwK,kBAAkBljB,MAAK,IAAK,CAAE,CAAA,CAAC;EACpN,KAAA;MAEA,MAAM48B,UAAAA,GAAa96B,SAAK,yBAA2B,EAAA;EACjD6mB,QAAAA,SAAAA,EAAW8T,kBAAkB,CAAC,IAAI,CAACI,iBAAiB,CAACp/B,MAAM;UAC3DW,KAAO0rB,EAAAA,SAAAA;UACP5uB,MAAQ,EAAA,IAAI,CAACsC,OAAO;UACpBvB,QAAU,EAAA,IAAI,CAACC,SAAS;UACxB2C,MAAQirB,EAAAA;EACV,KAAA,CAAA,CAAG/rB,IAAI,EAAA;MAEP,IAAI,IAAI,CAACupB,WAAW,EAAE;EAEpB,QAAA,MAAMwV,SAAYtgC,GAAAA,IAAAA,CAAK3C,MAAM,CAAC,CAACxB,CAAGgE,EAAAA,CAAAA,GAAAA;EAChC,YAAA,MAAM6O,CAAI,GAAA,IAAI,CAACoc,WAAW,CAACjvB,CAAGgE,EAAAA,CAAAA,CAAAA;cAC9B,OAAO6O,CAAAA,KAAM9S,aAAa8S,CAAM,KAAA,IAAA;EAClC,SAAA,CAAA;EAEA,QAAA,IAAI,CAAC6xB,gBAAgB,CAClBrc,KAAK,CAAC;cAAC9H,MAAQ,EAAA,KAAA;cAAOC,IAAM,EAAA,OAAA;cAASF,KAAO,EAAA,KAAA;cAAOD,GAAK,EAAA;EAAO,SAAC,CAACrC,QAAS,CAAA,IAAI,UAC9Epa,QAAQ,CAAC,IAAI,CAACC,SAAS,EACvBM,IAAI,CAACsgC,WACL98B,MAAM,CAACA,QACPnF,MAAM,CAAC,IAAI,CAACC,OAAO,EACnBwU,MAAM,CAAC+G,UACP5Y,MAAM,CAACm/B,YACPz/B,KAAK,CAAC,IAAI,CAACmqB,WAAW,EACtBvnB,KAAK,CAACA,OACN7F,MAAM,CAAC,IAAI,CAAC2iC,iBAAiB,EAC7Bv/B,MAAM,EAAA;EAET,QAAA,IAAIm/B,cAAgB,EAAA;EAElB,YAAA,MAAMO,WAAc,GAAA,IAAI,CAACD,gBAAgB,CAAC5b,WAAW,EAAA;cACrD,IAAI,CAAC,IAAI,CAAC0b,iBAAiB,CAACp/B,MAAM,IAAIu/B,WAAYh9B,CAAAA,MAAM,EAAE;EACxD,gBAAA,IAAIw8B,IAAM,EAAA,IAAI,CAACpmB,OAAO,CAACC,QAAS,CAAA,IAAI2mB,WAAYh9B,CAAAA,MAAM,GAAG,IAAI,CAACgrB,YAAY,CAACvf,OAAO,EAAK,GAAA,CAAA;EAClF,qBAAA,IAAI,CAAC2K,OAAO,CAACC,QAAAA,CAAS,IAAI2mB,WAAAA,CAAYj9B,KAAK,GAAG,IAAI,CAACirB,YAAY,CAACvf,OAAO,EAAK,GAAA,CAAA;EACnF;EAEF;EAEF;EAIF;;ECxEA,MAAMwxB,WAAc,GAAA;EAAC,IAAA,MAAA;EAAQ,IAAA,SAAA;EAAW,IAAA;EAAU,CAAA;EAElD;;;;EAIA,GACO,SAASC,WAAY7kC,CAAAA,CAAC,EAAEgE,CAAC,EAAA;MAC9B,OAAO,IAAI,CAAC8gC,UAAU,CAAC9kC,GAAGgE,CAAG,EAAA,IAAI,CAAC+gC,YAAY,CAAA;EAChD;EAEA;;;;;EAKA,GACe,mBAAS5gC,CAAAA,MAAAA,GAAO,EAAE,EAAA;EAE/B,IAAA,MAAMiuB,aAAa,EAAE;MAErB,MAAM4S,OAAAA,GAAU,CAAChlC,CAAAA,EAAGgE,CAAGgC,EAAAA,IAAAA,GAAAA;EACrB,QAAA,MAAMqjB,KAAQ,GAAA,IAAI,CAACnJ,MAAM,CAAClgB,CAAGgE,EAAAA,CAAAA,CAAAA;EAC7B,QAAA,IAAIgC,IAAS,KAAA,MAAA,IAAUqjB,KAAU,KAAA,MAAA,EAAQrjB,IAAO,GAAA,QAAA;UAChD,MAAMlB,KAAAA,GAAQ,IAAI,CAAC5B,YAAY,CAACmmB,KAAM,CAAA,IAAI,IAAI,CAACnmB,YAAY,CAACmmB,KAAM,CAAA,CAACrjB,IAAK,CAAA,GACpE,IAAI,CAAC9C,YAAY,CAACmmB,KAAM,CAAA,CAACrjB,IAAK,CAAA,GAAG,IAAI,CAAC9C,YAAY,CAAC8C,IAAK,CAAA;UAC5D,OAAO,OAAOlB,UAAU,UAAaA,GAAAA,KAAAA,CAAMT,IAAI,CAAC,IAAI,CAAErE,CAAAA,CAAAA,EAAGgE,CAAKc,CAAAA,GAAAA,KAAAA;EAChE,KAAA;EAEA,IAAA,MAAM4G,IAAO,GAAA,CAAC1L,CAAGgE,EAAAA,CAAAA,GAAM4gC,YAAYjgC,GAAG,CAACoK,CAAAA,CAAAA,GAAKi2B,OAAQhlC,CAAAA,CAAAA,EAAGgE,CAAG+K,EAAAA,CAAAA,CAAAA,CAAAA,CAAI4H,IAAI,CAAC,GAAA,CAAA;EAEnE,IAAA,MAAMsuB,aAAa,IAAI,CAAChW,WAAW,GAAG9qB,OAAK3C,MAAM,CAAC,CAACxB,CAAAA,EAAGgE,IAAM,IAAI,CAACirB,WAAW,CAACjvB,CAAAA,EAAGgE,OAAOjE,SAAaoE,CAAAA,GAAAA,MAAAA;MACpG+gC,cAAOD,CAAAA,UAAAA,EAAYE,CAAAA,MAAAA,GAAU/S,UAAW1kB,CAAAA,IAAI,CAACjH,UAAAA,CAAM0+B,MAAQ,EAAA,IAAI,CAACC,KAAK,CAAI15B,CAAAA,EAAAA,IAAAA,CAAAA;EAEzE0mB,IAAAA,UAAAA,CAAWtjB,IAAI,CAAC,IAAI,CAACu2B,WAAW,CAAA;EAEhC,IAAA,MAAMv3B,SAASskB,UAAWztB,CAAAA,GAAG,CAAC,CAAC3E,CAAAA,EAAGgE,IAAM,IAAI,CAACshC,IAAI,CAACtlC,CAAAA,EAAGgE,GAAG2M,KAAK,CAAC,GAAG,IAAI,CAAC40B,UAAU,GAAG,CAAA,CAAA,CAAA;MACnF,IAAI,CAACR,YAAY,GAAG,CAAA;MACpB,IAAK,IAAIx8B,IAAI,CAAGA,EAAAA,CAAAA,IAAK,IAAI,CAACg9B,UAAU,EAAEh9B,CAAK,EAAA,CAAA;UACzC,MAAMU,MAAAA,GAAS6E,OAAOnJ,GAAG,CAACuJ,CAAAA,CAAKA,GAAAA,CAAC,CAAC3F,CAAE,CAAA,CAAA;EACnC,QAAA,IAAI,CAACU,MAAOqU,CAAAA,IAAI,CAACnb,CAAAA,CAAAA,GAAKA,aAAayC,KAAUA,CAAAA,IAAAA,KAAAA,CAAM8pB,IAAI,CAAC,IAAID,GAAIxlB,CAAAA,MAAAA,CAAAA,CAAAA,CAAS3G,MAAM,KAAK8vB,UAAAA,CAAW9vB,MAAM,EAAE;cACrG,IAAI,CAACyiC,YAAY,GAAGx8B,CAAAA;EACpB,YAAA;EACF;EACF;MAEA,MAAMi9B,MAAAA,GAAS,CAACxlC,CAAGgE,EAAAA,CAAAA,GAAAA;EACjB,QAAA,IAAImE,EAAK,GAAA,IAAI,CAACrC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EACrB,QAAA,IAAImE,EAAcvD,YAAAA,KAAAA,EAAOuD,EAAKA,GAAAA,EAAE,CAAC,CAAE,CAAA;EACnC,QAAA,OAAO,IAAI,CAACs9B,OAAO,CAAC9jC,QAAQ,CAACwG,OAAO,IAAI,CAACu9B,KAAK,CAACpjC,MAAM,IAAI,CAAC,IAAI,CAACojC,KAAK,CAAC/jC,QAAQ,CAACwG,EAAAA,CAAAA;EAChF,KAAA;EAEA,IAAA,MAAMw9B,YAAe,GAAA,IAAI,CAAChT,YAAY,CAAC7J,WAAW,EAAA;MAClD,MAAMjnB,MAAAA,GAAS,IAAI,CAACA,MAAM,EAAA;MAC1B,IAAImc,QAAAA,GAAW,IAAI,CAAC4nB,eAAe,CAACvhC,IAAI,CAAC,IAAI,CAAExC,CAAAA,MAAAA,CAAAA;EAC/C,IAAA,IAAI,CAAC;EAAC,QAAA,KAAA;EAAO,QAAA,KAAA;EAAO,QAAA,QAAA;EAAU,QAAA,MAAA;EAAQ,QAAA;OAAQ,CAACF,QAAQ,CAACqc,QAAAA,CAAAA,EAAWA,QAAW,GAAA,QAAA;EAC9E,IAAA,MAAMmmB,IAAO,GAAA;EAAC,QAAA,KAAA;EAAO,QAAA;EAAS,KAAA,CAACxiC,QAAQ,CAACqc,QAAAA,CAAAA;MACxC,MAAM5K,OAAAA,GAAU,IAAI,CAACyyB,cAAc,KAAK,IAAI,CAAC9lB,QAAQ,GAAG;UAACM,GAAK,EAAA,CAAA;UAAGC,KAAO,EAAA,CAAA;UAAGC,MAAQ,EAAA,CAAA;UAAGC,IAAM,EAAA;EAAC,KAAA;EAC7F,IAAA,MAAMiR,SAAY,GAAA;EAACA,QAAAA,SAAAA,EAAW,CAAC,UAAU,EAAE0S,IAAO,GAAA,IAAI,CAACpmB,OAAO,CAACyC,IAAI,GAAGpN,QAAQoN,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE2jB,OAAO,IAAI,CAACpmB,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACsC,GAAG,GAAGjN,QAAQiN,GAAG,CAAC,CAAC;EAAC,KAAA;MACtK,MAAMme,OAAAA,GAAU,IAAI,CAACsH,OAAO,CAACzhC,IAAI,CAAC,IAAI,CAAA,CAAExC,MAAQuwB,EAAAA,UAAAA,CAAAA;MAEhD,MAAM5B,WAAAA,GAAc/mB,SAAK,qBAAuB,EAAA;EAC9C6mB,QAAAA,SAAAA,EAAWkO,WAAW,CAAC,IAAI,CAAC9L,aAAa,CAACttB,MAAM;UAChDW,KAAO0rB,EAAAA,SAAAA;UACP5uB,MAAQ,EAAA,IAAI,CAACsC,OAAO;UACpBvB,QAAU,EAAA,IAAI,CAACC,SAAS;UACxB2C,MAAQirB,EAAAA;EACV,KAAA,CAAA,CAAG/rB,IAAI,EAAA;EAEP,IAAA,IAAI,CAACitB,YAAY,CACdxqB,EAAE,CAACuD,IACH2c,CAAAA,CAAAA,KAAK,CAAC8b,IAAAA,GAAO,WAAWnmB,QACxBuO,CAAAA,CAAAA,SAAS,CAAC4X,IAAAA,GAAO,QAAQ,QACzBvgC,CAAAA,CAAAA,QAAQ,CAAC,IAAI,CAACC,SAAS,CACvBM,CAAAA,IAAI,CAACq6B,OAAUpM,GAAAA,UAAAA,GAAa,EAAE,CAAA,CAC9BzqB,MAAM,CAACw8B,IAAAA,GAAO,IAAI,CAAC/9B,OAAO,IAAI,IAAI,CAAC2X,OAAO,CAACwC,MAAM,GAAG,IAAI,CAACxC,OAAO,CAACsC,GAAG,CAAI,GAAA,IAAI,CAACja,OAAO,IAAI,IAAI,CAAC2X,OAAO,CAACwC,MAAM,GAAG,IAAI,CAACxC,OAAO,CAACsC,GAAG,GAAGjN,OAAAA,CAAQmN,MAAM,GAAGnN,OAAAA,CAAQiN,GAAE,GAC5J7d,MAAM,CAAC,IAAI,CAACC,OAAO,CAAA,CACnBI,MAAM,CAAC,IAAI,CACXuC,CAAAA,MAAM,CAACorB,WAAAA,CAAAA,CACP7d,aAAa,CAAC,CAACwxB,IAAO,GAAA,QAAA,GAAWnmB,UACjCtW,KAAK,CAACy8B,IAAO,GAAA,IAAI,CAACj+B,MAAM,IAAI,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK,GAAGlN,OAAAA,CAAQoN,IAAI,GAAGpN,OAAQkN,CAAAA,KAAK,CAAD,GAAK,IAAI,CAACpa,MAAM,IAAI,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK,CAAD,CAAA,CACzJrd,WAAW,CAACO,WAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACnB,YAAY,EAAE,QAAA,CAAA,CAAA,CACrDD,WAAW,CAAC;EACXyI,QAAAA,IAAAA,EAAM,CAAC1L,CAAAA,EAAGgE,CAAMwhC,GAAAA,MAAAA,CAAOxlC,GAAGgE,CAAK,CAAA,GAAA,IAAI,CAAC+hC,YAAY,CAAC/lC,CAAAA,EAAGgE,CAAKghC,CAAAA,GAAAA,OAAAA,CAAQhlC,GAAGgE,CAAG,EAAA,MAAA,CAAA;UACvEoK,WAAa,EAAA;cACXK,WAAa,EAAA,CAACzO,CAAGgE,EAAAA,CAAAA,GAAMwhC,MAAOxlC,CAAAA,CAAAA,EAAGgE,CAAK,CAAA,GAAA,IAAI,CAACgiC,cAAc,CAAChmC,CAAAA,EAAGgE,CAAK,CAAA,GAAA;EACpE;EACF,KAAA,CAAA,CACCnC,MAAM,CAAC,IAAI,CAAC6wB,aAAa,EACzBztB,MAAM,EAAA;MAET,IAAI,CAAC,IAAI,CAACytB,aAAa,CAACttB,MAAM,IAAIugC,YAAah+B,CAAAA,MAAM,EAAE;EACrD,QAAA,IAAIw8B,IAAM,EAAA,IAAI,CAACpmB,OAAO,CAACC,QAAS,CAAA,IAAI2nB,YAAah+B,CAAAA,MAAM,GAAG,IAAI,CAACgrB,YAAY,CAACvf,OAAO,EAAK,GAAA,CAAA;EACnF,aAAA,IAAI,CAAC2K,OAAO,CAACC,QAAAA,CAAS,IAAI2nB,YAAAA,CAAaj+B,KAAK,GAAG,IAAI,CAACirB,YAAY,CAACvf,OAAO,EAAK,GAAA,CAAA;EACpF;EAEF;;ECnGA;;;;;EAKA,GACe,qBAASjP,CAAAA,IAAAA,GAAO,EAAE,EAAA;MAE/B,MAAMoK,IAAAA,GAAO,IAAI,CAAC03B,SAAS,GAAG,IAAI,CAACA,SAAS,CAAC9hC,IAAQ,CAAA,GAAA,KAAA;MACrD,MAAMiP,OAAAA,GAAU,IAAI,CAAC8yB,gBAAgB,KAAK,IAAI,CAACnmB,QAAQ,GAAG;UAASO,KAAO,EAAA,CAAA;UAAcE,IAAM,EAAA;EAAC,KAAA;EAE/F,IAAA,MAAMiR,SAAY,GAAA;UAACA,SAAW,EAAA,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,GAAGpN,OAAAA,CAAQoN,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,CAAC,CAAC;EAAC,KAAA;MAEnG,MAAMjU,KAAAA,GAAQ3C,SAAK,uBAAyB,EAAA;UAC1C1D,KAAO0rB,EAAAA,SAAAA;UACP5uB,MAAQ,EAAA,IAAI,CAACsC,OAAO;UACpBvB,QAAU,EAAA,CAAA;UACV4C,MAAQirB,EAAAA;EACV,KAAA,CAAA,CAAG/rB,IAAI,EAAA;EAEP,IAAA,IAAI,CAACygC,cAAc,CAChBhiC,IAAI,CAACoK,IAAO,GAAA;EAAC,QAAA;EAACA,YAAAA;EAAI;EAAE,KAAA,GAAG,EAAE,CACzB/L,CAAAA,MAAM,CAAC,IAAI,CAACC,OAAO,CACnB2C,CAAAA,MAAM,CAACgH,KACP1E,CAAAA,CAAAA,KAAK,CAAC,IAAI,CAACxB,MAAM,IAAI,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK,GAAGlN,QAAQoN,IAAI,GAAGpN,QAAQkN,KAAI,GACzFze,MAAM,CAAC,IAAI,CAACukC,eAAe,EAC3BnhC,MAAM,EAAA;EAET,IAAA,IAAI,CAAC8Y,OAAO,CAACsC,GAAG,IAAI9R,OAAOnC,KAAMi6B,CAAAA,OAAO,EAAG1+B,CAAAA,MAAM,GAAG,IAAI,CAACy+B,eAAe,CAAChzB,OAAO,GAAG,CAAI,GAAA,CAAA;EAEzF;;EC3BA;;;;;EAKA,GACA,SAASkzB,cAAcrmC,CAAC,EAAA;EACtB,IAAA,IAAI,EAAEA,CAAa2E,YAAAA,KAAI,GAAI3E,CAAI,GAAA;EAACA,QAAAA,CAAAA;EAAGA,QAAAA;EAAE,KAAA;MACrC,IAAI2L,IAAAA,CAAKC,SAAS,CAAC5L,CAAO2L,CAAAA,KAAAA,IAAAA,CAAKC,SAAS,CAAC,IAAI,CAAC06B,kBAAkB,CAAG,EAAA;UACjE,IAAI,CAACA,kBAAkB,GAAGtmC,CAAAA;UAC1BA,CAAIA,GAAAA,CAAAA,CAAE0E,GAAG,CAACyR,MAAAA,CAAAA;UACV,IAAI,CAACowB,UAAU,CAACxmC,CAAAA,CAAAA,GAAAA;EACd,YAAA,MAAMymC,KAAKxnB,QAAK,CAAA,IAAI,CAACynB,KAAK,CAAC1mC,IAAI2mC,OAAO,EAAA;cACtC,OAAOF,EAAAA,IAAMxmC,CAAC,CAAC,CAAA,CAAE,IAAIwmC,EAAMxmC,IAAAA,CAAC,CAAC,CAAE,CAAA;EACjC,SAAA,CAAA,CAAGgF,MAAM,EAAA;EACX;EACF;EAEA;;;;;EAKA,GACe,qBAASd,CAAAA,MAAAA,GAAO,EAAE,EAAA;EAE/B,IAAA,IAAIyiC,mBAAmB,IAAI,CAACF,KAAK,IAAI,IAAI,CAACG,SAAS;EACnD,IAAA,MAAMpqB,QAAQmqB,gBAAmB33B,GAAAA,WAAAA,CAAO,IAAI,CAACpJ,KAAK,CAAClB,GAAG,CAAC,IAAI,CAAC+hC,KAAK,CAAA,CAAA,CAAG/hC,GAAG,CAACsa,YAAQ,EAAE;MAClF2nB,gBAAmBA,GAAAA,gBAAAA,IAAoBnqB,KAAMna,CAAAA,MAAM,GAAG,CAAA;MACtD,MAAM8Q,OAAAA,GAAU,IAAI,CAAC0zB,gBAAgB,KAAK,IAAI,CAAC/mB,QAAQ,GAAG;UAASO,KAAO,EAAA,CAAA;UAAcE,IAAM,EAAA;EAAC,KAAA;EAE/F,IAAA,MAAMiR,SAAY,GAAA;EAACA,QAAAA,SAAAA,EAAW,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,GAAGpN,OAAAA,CAAQoN,IAAI,CAAC,IAAI;EAAC,KAAA;MAEjF,MAAMumB,aAAAA,GAAgBt9B,SAAK,uBAAyB,EAAA;UAClD6mB,SAAWsW,EAAAA,gBAAAA;UACX7gC,KAAO0rB,EAAAA,SAAAA;UACP5uB,MAAQ,EAAA,IAAI,CAACsC,OAAO;UACpBvB,QAAU,EAAA,IAAI,CAACC,SAAS;UACxB2C,MAAQirB,EAAAA;EACV,KAAA,CAAA,CAAG/rB,IAAI,EAAA;EAEP,IAAA,IAAIkhC,gBAAkB,EAAA;EAEpB,QAAA,MAAMI,QAAW,GAAA,IAAI,CAACC,cAAc,CACjCrrB,MAAM,CAAC1H,cAAOuI,CAAAA,KAAAA,CAAAA,CAAAA,CACd7Y,QAAQ,CAAC,IAAI,CAACC,SAAS,EACvB8D,MAAM,CAAC,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACwC,MAAM,CACzC/d,CAAAA,MAAM,CAAC,IAAI,CAACC,OAAO,CAAA,CACnB2C,MAAM,CAAC2hC,aAAAA,CAAAA,CACPtqB,KAAK,CAACA,KAAM3N,CAAAA,IAAI,CAAC,CAACC,GAAGZ,CAAM,GAAA,CAACY,CAAI,GAAA,CAACZ,IACjCzG,KAAK,CAAC,IAAI,CAACxB,MAAM,IAAI,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK,GAAGlN,OAAQoN,CAAAA,IAAI,GAAGpN,OAAAA,CAAQkN,KAAK,CAAD,CAAA;UAE5F,MAAMtE,UAAAA,GAAa9H,cAAO/P,CAAAA,MAAAA,CAAKQ,GAAG,CAAC,IAAI,CAAC+hC,KAAK,CAAE/hC,CAAAA,GAAG,CAACsa,QAAAA,CAAAA,CAAAA;EACnD,QAAA,IAAI,CAAC,IAAI,CAACsnB,kBAAkB,EAAE;EAC5B,YAAA,IAAI,CAACA,kBAAkB,GAAG,IAAI,CAACW,gBAAgB,IAAIlrB,UAAAA;WAEhD,MAAA;EACH,YAAA,IAAI,IAAI,CAACuqB,kBAAkB,CAAC,CAAE,CAAA,GAAGvqB,UAAU,CAAC,CAAA,CAAE,EAAE,IAAI,CAACuqB,kBAAkB,CAAC,EAAE,GAAGvqB,UAAU,CAAC,CAAE,CAAA;EAC1F,YAAA,IAAI,IAAI,CAACuqB,kBAAkB,CAAC,CAAE,CAAA,GAAGvqB,UAAU,CAAC,CAAA,CAAE,EAAE,IAAI,CAACuqB,kBAAkB,CAAC,EAAE,GAAGvqB,UAAU,CAAC,CAAE,CAAA;EAC5F;EACAgrB,QAAAA,QAAAA,CAASjO,SAAS,CAAC,IAAI,CAACwN,kBAAkB,CAAA;UAE1C,MAAM1kC,MAAAA,GAAS,IAAI,CAACslC,eAAe;EAEnCH,QAAAA,QAAAA,CACGnlC,MAAM,CAACA,MAAAA,CAAAA,CACPc,EAAE,CAAC,SAAS1C,CAAAA,CAAAA,GAAAA;cACXqmC,aAAcjiC,CAAAA,IAAI,CAAC,IAAI,CAAEpE,CAAAA,CAAAA,CAAAA;EACzB,YAAA,IAAI4B,MAAOc,CAAAA,EAAE,IAAId,MAAAA,CAAOc,EAAE,CAACg3B,KAAK,EAAE93B,MAAOc,CAAAA,EAAE,CAACg3B,KAAK,CAAC15B,CAAAA,CAAAA;WAEnD0C,CAAAA,CAAAA,EAAE,CAAC,KAAA,EAAO1C,CAAAA,CAAAA,GAAAA;cACTqmC,aAAcjiC,CAAAA,IAAI,CAAC,IAAI,CAAEpE,CAAAA,CAAAA,CAAAA;EACzB,YAAA,IAAI4B,MAAOc,CAAAA,EAAE,IAAId,MAAAA,CAAOc,EAAE,CAAC8vB,GAAG,EAAE5wB,MAAOc,CAAAA,EAAE,CAAC8vB,GAAG,CAACxyB,CAAAA,CAAAA;EAChD,SAAA,CAAA,CACCgF,MAAM,EAAA;EAET,QAAA,IAAI,CAAC8Y,OAAO,CAACwC,MAAM,IAAIymB,QAAAA,CAASle,WAAW,EAAA,CAAGnhB,MAAM,GAAGq/B,QAAS5zB,CAAAA,OAAO,EAAK,GAAA,CAAA;EAE9E;EAEF;;ECnFA;;;;;EAKA,GACe,kBAASjP,CAAAA,IAAAA,GAAO,EAAE,EAAA;MAE/B,MAAMoK,IAAAA,GAAO,IAAI,CAACiW,MAAM,GAAG,IAAI,CAACA,MAAM,CAACrgB,IAAQ,CAAA,GAAA,KAAA;MAC/C,MAAMiP,OAAAA,GAAU,IAAI,CAACg0B,aAAa,KAAK,IAAI,CAACrnB,QAAQ,GAAG;UAASO,KAAO,EAAA,CAAA;UAAcE,IAAM,EAAA;EAAC,KAAA;EAE5F,IAAA,MAAMiR,SAAY,GAAA;UAACA,SAAW,EAAA,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,GAAGpN,OAAAA,CAAQoN,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,CAAC,CAAC;EAAC,KAAA;MAEnG,MAAMjU,KAAAA,GAAQ3C,SAAK,oBAAsB,EAAA;UACvC1D,KAAO0rB,EAAAA,SAAAA;UACP5uB,MAAQ,EAAA,IAAI,CAACsC,OAAO;UACpBvB,QAAU,EAAA,CAAA;UACV4C,MAAQirB,EAAAA;EACV,KAAA,CAAA,CAAG/rB,IAAI,EAAA;EAEP,IAAA,IAAI,CAAC0iB,WAAW,CACbjkB,IAAI,CAACoK,IAAO,GAAA;EAAC,QAAA;EAACA,YAAAA;EAAI;EAAE,KAAA,GAAG,EAAE,CACzB/L,CAAAA,MAAM,CAAC,IAAI,CAACC,OAAO,CACnB2C,CAAAA,MAAM,CAACgH,KACP1E,CAAAA,CAAAA,KAAK,CAAC,IAAI,CAACxB,MAAM,IAAI,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK,GAAGlN,QAAQoN,IAAI,GAAGpN,QAAQkN,KAAI,GACzFze,MAAM,CAAC,IAAI,CAAC8iB,YAAY,EACxB1f,MAAM,EAAA;EAET,IAAA,IAAI,CAAC8Y,OAAO,CAACsC,GAAG,IAAI9R,OAAOnC,KAAMi6B,CAAAA,OAAO,EAAG1+B,CAAAA,MAAM,GAAG,IAAI,CAACgd,YAAY,CAACvR,OAAO,GAAG,CAAI,GAAA,CAAA;EAEtF;;EC5BA;;;;;EAKA,GACe,kBAASjP,CAAAA,IAAAA,GAAO,EAAE,EAAA;EAE/B,IAAA,MAAMkjC,KAAQ,GAAA,OAAO,IAAI,CAACC,MAAM,KAAK,UAAa7wB,GAAAA,WAAAA,CAAItS,IAAKQ,CAAAA,GAAG,CAAC,IAAI,CAAC2iC,MAAM,CAAA,CAAA,GACtE,IAAI,CAACA,MAAM,KAAK,IAAQ,IAAA,IAAI,CAAChW,KAAK,GAAG7a,WAAItS,CAAAA,IAAAA,CAAKQ,GAAG,CAAC,IAAI,CAAC2sB,KAAK,CAAK,CAAA,GAAA,KAAA;MAErE,MAAMle,OAAAA,GAAU,IAAI,CAACm0B,aAAa,KAAK,IAAI,CAACxnB,QAAQ,GAAG;UAASO,KAAO,EAAA,CAAA;UAAcE,IAAM,EAAA;EAAC,KAAA;EAE5F,IAAA,MAAMiR,SAAY,GAAA;UAACA,SAAW,EAAA,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,GAAGpN,OAAAA,CAAQoN,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,CAAC,CAAC;EAAC,KAAA;MAEnG,MAAMjU,KAAAA,GAAQ3C,SAAK,oBAAsB,EAAA;UACvC1D,KAAO0rB,EAAAA,SAAAA;UACP5uB,MAAQ,EAAA,IAAI,CAACsC,OAAO;UACpBvB,QAAU,EAAA,CAAA;UACV4C,MAAQirB,EAAAA;EACV,KAAA,CAAA,CAAG/rB,IAAI,EAAA;EAEP,IAAA,IAAI,CAAC8hC,WAAW,CACbrjC,IAAI,CAACkjC,KAAQ,GAAA;EAAC,QAAA;cAAC94B,IAAM,EAAA,IAAI,CAACk5B,YAAY,CAACJ,KAAAA;EAAM;EAAE,KAAA,GAAG,EAAE,CACpD7kC,CAAAA,MAAM,CAAC,IAAI,CAACC,OAAO,CACnB2C,CAAAA,MAAM,CAACgH,KACP1E,CAAAA,CAAAA,KAAK,CAAC,IAAI,CAACxB,MAAM,IAAI,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK,GAAGlN,QAAQoN,IAAI,GAAGpN,QAAQkN,KAAI,GACzFze,MAAM,CAAC,IAAI,CAAC6lC,YAAY,EACxBziC,MAAM,EAAA;EAET,IAAA,IAAI,CAAC8Y,OAAO,CAACsC,GAAG,IAAIgnB,QAAQj7B,KAAMi6B,CAAAA,OAAO,EAAG1+B,CAAAA,MAAM,GAAG,IAAI,CAAC+/B,YAAY,CAACt0B,OAAO,GAAG,CAAI,GAAA,CAAA;EAEvF;;EC/BA,IAAIupB,QAAW,GAAA,KAAA;EAEf;;;;EAIA,GACe,qBAAA,GAAA;MAEb,IAAI,CAAC,IAAI,CAACgL,UAAU,IAAI,CAAC,IAAI,CAACC,UAAU,EAAE;EAE1C,IAAA,MAAMjgC,SAAS,IAAI,CAACkgC,WAAW,IAAI,IAAI,CAACzhC,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,EAClFha,OAAO,IAAI,EACXmB,QAAQ,IAAI,CAACogC,UAAU,IAAI,IAAI,CAAC5hC,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;EAErF,IAAA,IAAI,CAACynB,aAAa,CACf7zB,MAAM,CAAC;EAAC,QAAA;EAAC,YAAA,CAAA;EAAG,YAAA;EAAE,SAAA;EAAE,QAAA;EAACxM,YAAAA,KAAAA;EAAOC,YAAAA;EAAO;EAAC,KAAA,CAAA,CAChCqgC,WAAW,CAAC;EAAC,QAAA,CAAA;EAAG,QAAA,IAAI,CAACC;EAAS,KAAA,CAAA,CAC9BC,eAAe,CAAC;EAAC,QAAA;EAAC,YAAA,CAAA;EAAG,YAAA;EAAE,SAAA;EAAE,QAAA;EAACxgC,YAAAA,KAAAA;EAAOC,YAAAA;EAAO;OAAC,CACzChF,CAAAA,EAAE,CAAC,MAAA,EAAQ6B,CAAAA,KAAAA,GAAS2jC,MAAO9jC,CAAAA,IAAI,CAAC,IAAI,CAAEG,CAAAA,KAAAA,CAAMitB,SAAS,CAAA,CAAA;EAExD,IAAA,IAAI,CAAC2W,aAAa,GAAGC,YAAahkC,CAAAA,IAAI,CAAC,IAAI,CAAA;EAE3C,IAAA,IAAIikC,UAAUljC,kBAAO,CAAA,IAAI,CAACD,OAAO,CAACO,IAAI,EAAGwG,CAAAA,UAAU,CAAEtG,CAAAA,SAAS,CAAC,yBAA2BzB,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAACokC,KAAK,GAAG;EAAC,QAAA;EAAE,KAAA,GAAG,EAAE,CAAA;MACpH,MAAMC,YAAAA,GAAeF,QAAQviC,KAAK,EAAA,CAAGV,MAAM,CAAC,KAAA,CAAA,CAAOW,IAAI,CAAC,OAAS,EAAA,qBAAA,CAAA;MACjEsiC,OAAQtgC,CAAAA,IAAI,GAAGC,MAAM,EAAA;EACrBqgC,IAAAA,OAAAA,GAAUA,OAAQ7hC,CAAAA,KAAK,CAAC+hC,YAAAA,CAAAA,CACrBljC,KAAK,CAAC,UAAA,EAAY,UAClBA,CAAAA,CAAAA,KAAK,CAAC,KAAA,EAAO,CAAG,EAAA,IAAI,CAACyY,OAAO,CAACsC,GAAG,CAAC,EAAE,CAAC,CACpC/a,CAAAA,KAAK,CAAC,MAAQ,EAAA,CAAA,EAAG,IAAI,CAACyY,OAAO,CAACyC,IAAI,CAAC,EAAE,CAAC,CAAA;EAEzCgoB,IAAAA,YAAAA,CAAanjC,MAAM,CAAC,KAAOW,CAAAA,CAAAA,IAAI,CAAC,OAAS,EAAA,sBAAA,CAAA;EACzCsiC,IAAAA,OAAAA,CAAQljC,MAAM,CAAC,UAAA,CAAA,CACZzC,EAAE,CAAC,SAAS8lC,QAASpkC,CAAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAACqkC,WAAW,CAAA,CAAA,CAChD1U,IAAI,CAAC,UAAA,CAAA;EAERwU,IAAAA,YAAAA,CAAanjC,MAAM,CAAC,KAAOW,CAAAA,CAAAA,IAAI,CAAC,OAAS,EAAA,uBAAA,CAAA;EACzCsiC,IAAAA,OAAAA,CAAQljC,MAAM,CAAC,WAAA,CAAA,CACZzC,EAAE,CAAC,SAAS8lC,QAASpkC,CAAAA,IAAI,CAAC,IAAI,EAAE,CAAI,GAAA,IAAI,CAACqkC,WAAW,CAAA,CAAA,CACpD1U,IAAI,CAAC,UAAA,CAAA;EAERwU,IAAAA,YAAAA,CAAanjC,MAAM,CAAC,KAAOW,CAAAA,CAAAA,IAAI,CAAC,OAAS,EAAA,yBAAA,CAAA;EACzCsiC,IAAAA,OAAAA,CAAQljC,MAAM,CAAC,aACZzC,CAAAA,CAAAA,EAAE,CAAC,OAAA,EAAS8lC,QAASpkC,CAAAA,IAAI,CAAC,IAAI,EAAE,CAAA,CAAA,CAAA,CAChC2vB,IAAI,CAAC,QAAA,CAAA;EAERwU,IAAAA,YAAAA,CAAanjC,MAAM,CAAC,KAAOW,CAAAA,CAAAA,IAAI,CAAC,OAAS,EAAA,yBAAA,CAAA;EACzCsiC,IAAAA,OAAAA,CAAQljC,MAAM,CAAC,aACZzC,CAAAA,CAAAA,EAAE,CAAC,OAAS,EAAA,WAAA;EACXyC,QAAAA,kBAAAA,CAAO,IAAI,CACR+G,CAAAA,OAAO,CAAC,QAAU,EAAA,CAACwwB,UACnB97B,IAAI,CAACozB,aAAS0I,QAAWp2B,GAAAA,IAAAA,CAAKoiC,iBAAiB,IAAI,KAAKpiC,IAAKqiC,CAAAA,uBAAuB,IAAI,EAAC,CAAA;UAC5FC,UAAWxkC,CAAAA,IAAI,CAACkC,IAAAA,CAAAA,CAAM,CAACo2B,QAAAA,CAAAA;EACzB,KAAA,CAAA,CACC3I,IAAI,CAAC,OAAA,CAAA;MAERsU,OAAQ1iC,CAAAA,SAAS,CAAC,eAAA,CAAA,CACf/E,IAAI,CAACozB,WAAS1tB,EAAAA,IAAAA,CAAKoiC,iBAAiB,CAAA,CACpChmC,EAAE,CAAC,YAAc,EAAA,WAAA;UAChByC,kBAAO,CAAA,IAAI,EAAEvE,IAAI,CAACozB,aAAS1tB,IAAKuiC,CAAAA,sBAAsB,IAAI,EAAC,CAAA;OAE5DnmC,CAAAA,CAAAA,EAAE,CAAC,YAAc,EAAA,WAAA;EAChByC,QAAAA,kBAAAA,CAAO,IAAI,CAAEvE,CAAAA,IAAI,CAACozB,WAAS7uB,EAAAA,kBAAAA,CAAO,IAAI,CAAE+G,CAAAA,OAAO,CAAC,QAAY5F,CAAAA,GAAAA,IAAAA,CAAKqiC,uBAAuB,IAAI,KAAKriC,IAAKoiC,CAAAA,iBAAiB,IAAI,EAAC,CAAA;EAC9H,KAAA,CAAA;EAEF,IAAA,IAAI,CAACI,UAAU,CACZ70B,MAAM,CAAC;EAAC,QAAA;EAAC,YAAA,CAAA;EAAG,YAAA;EAAE,SAAA;EAAE,QAAA;EAACxM,YAAAA,KAAAA;EAAOC,YAAAA;EAAO;EAAC,KAAA,CAAA,CAChCnG,MAAM,CAACgD,CAAAA,QAAS,CAACA,KAAAA,CAAMg5B,MAAM,IAAIh5B,KAAAA,CAAMi5B,MAAM,GAAG,GAChDnC,UAAU,CAAC,IAAI,CAAC0N,oBAAoB,EACpCrmC,EAAE,CAAC,OAASsmC,EAAAA,UAAAA,CAAW5kC,IAAI,CAAC,IAAI,GAChC1B,EAAE,CAAC,SAASumC,UAAW7kC,CAAAA,IAAI,CAAC,IAAI,GAChC1B,EAAE,CAAC,OAAOwmC,QAAS9kC,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAA;MAE/B,MAAM+kC,UAAAA,GAAa,IAAI,CAACzB,UAAU,CAAC/hC,SAAS,CAAC,SAAWzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,QAAA;EAAE,KAAA,CAAA;MAChE,IAAI,CAACm1B,WAAW,GAAG8P,UAAAA,CAAWrjC,KAAK,EAAGV,CAAAA,MAAM,CAAC,GACxCW,CAAAA,CAAAA,IAAI,CAAC,OAAS,EAAA,OAAA,CAAA,CAChBS,KAAK,CAAC2iC,UAAAA,CAAAA,CACNvoC,IAAI,CAAC,IAAI,CAACkoC,UAAU,CAAA;MAEvBF,UAAWxkC,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;EACpB,IAAA,IAAI,IAAI,CAACglC,YAAY,EAAE,IAAI,CAACA,YAAY,CAACC,oBAAAA,CAAc,IAAI,CAAC3B,UAAU,CAACjiC,IAAI,EAAK,CAAA,EAAA,CAAA,CAAA;EAElF;EAEA;;;;EAIA,GACA,SAASmjC,UAAWlP,CAAAA,KAAAA,GAAQ,KAAK,EAAA;MAE/BgD,QAAWhD,GAAAA,KAAAA;EAEX,IAAA,IAAIgD,UAAU,IAAI,CAACrD,WAAW,CAACh0B,KAAK,CAAC,SAAW,EAAA,QAAA,CAAA;EAC3C,SAAA,IAAI,CAACg0B,WAAW,CAACh0B,KAAK,CAAC,SAAW,EAAA,MAAA,CAAA;EAEvC,IAAA,IAAI,CAACq3B,QAAAA,IAAY,IAAI,CAAC4L,KAAK,EAAE;EAC3B,QAAA,IAAI,CAACZ,UAAU,CAAC9mC,IAAI,CAAC,IAAI,CAACknC,aAAa,CAAA;EACvC,QAAA,IAAI,CAAC,IAAI,CAACwB,WAAW,EAAE;EACrB,YAAA,IAAI,CAAC5B,UAAU,CACZhlC,EAAE,CAAC,YAAc,EAAA,IAAA,CAAA;EACtB;EACA,QAAA,IAAI,CAAC,IAAI,CAAC6mC,QAAQ,EAAE;cAClB,IAAI,CAAC7B,UAAU,CACZhlC,EAAE,CAAC,+BAAiC,EAAA,IAAA,CAAA,CACpCA,EAAE,CAAC,+DAAiE,EAAA,IAAA,CAAA;EACzE;OAEG,MAAA;EACH,QAAA,IAAI,CAACglC,UAAU,CAAChlC,EAAE,CAAC,OAAS,EAAA,IAAA,CAAA;EAC9B;EAEF;EAEA;;;;;;EAMA,GACA,SAASwlC,MAAO1W,CAAAA,SAAAA,GAAY,KAAK,EAAE7tB,WAAW,CAAC,EAAA;MAE7C,IAAI,IAAI,CAACgkC,UAAU,EAAE;UACnB,IAAI,CAAChkC,UAAU,IAAI,CAACgkC,UAAU,CAAC5hC,IAAI,CAAC,WAAayrB,EAAAA,SAAAA,CAAAA;eAC5C,IAAI,CAACmW,UAAU,CAACthC,UAAU,EAAA,CAAG1C,QAAQ,CAACA,QAAAA,CAAAA,CAAUoC,IAAI,CAAC,WAAayrB,EAAAA,SAAAA,CAAAA;EACzE;EAEA,IAAA,IAAI,IAAI,CAAC4X,YAAY,EAAE,IAAI,CAACA,YAAY,CAACC,oBAAAA,CAAc,IAAI,CAAC3B,UAAU,CAACjiC,IAAI,EAAK9B,CAAAA,EAAAA,QAAAA,CAAAA;EAElF;EAEA;;;;;EAKA,GACA,SAAS6kC,QAASxlB,CAAAA,MAAAA,GAAS,CAAC,EAAA;EAE1B,IAAA,IAAI,CAAC,IAAI,CAAC0kB,UAAU,EAAE;EAEtB,IAAA,MAAMvb,MAAS,GAAA,IAAI,CAAC2b,aAAa,CAAC7zB,MAAM,EAAA,CAAG7P,IAAI,CAACmD,QAAW,CAAA,EAAA,CAAC,CAAE,CAAA,CAAC7C,GAAG,CAAC3E,CAAAA,CAAKA,GAAAA,CAAAA,GAAI,CACtEgoC,CAAAA,EAAAA,WAAAA,GAAc,IAAI,CAACD,aAAa,CAACC,WAAW,EAC5C3hC,EAAAA,CAAAA,GAAIijC,oBAAc,CAAA,IAAI,CAAC3B,UAAU,CAACjiC,IAAI,EAAA,CAAA;EAE5C,IAAA,IAAI,CAACud,MAAQ,EAAA;EACX5c,QAAAA,CAAAA,CAAEnE,CAAC,GAAG8lC,WAAW,CAAC,CAAE,CAAA;EACpB3hC,QAAAA,CAAAA,CAAEkC,CAAC,GAAG,CAAA;EACNlC,QAAAA,CAAAA,CAAEmC,CAAC,GAAG,CAAA;OAEH,MAAA;EACH,QAAA,MAAMihC,UAAa,GAAA;cAAErd,CAAAA,MAAM,CAAC,CAAE,CAAA,GAAG/lB,EAAEkC,CAAAA,IAAKlC,CAAAA,CAAEnE,CAAC;cAAGkqB,CAAAA,MAAM,CAAC,CAAE,CAAA,GAAG/lB,EAAEmC,CAAAA,IAAKnC,CAAAA,CAAEnE;EAAE,SAAA;UACrEmE,CAAEnE,CAAAA,CAAC,GAAGhC,IAAAA,CAAKqJ,GAAG,CAACy+B,WAAW,CAAC,CAAE,CAAA,EAAE3hC,CAAEnE,CAAAA,CAAC,GAAG+gB,MAAAA,CAAAA;EACrC,QAAA,IAAI5c,EAAEnE,CAAC,IAAI8lC,WAAW,CAAC,EAAE,EAAE;EACzB3hC,YAAAA,CAAAA,CAAEnE,CAAC,GAAG8lC,WAAW,CAAC,CAAE,CAAA;EACpB3hC,YAAAA,CAAAA,CAAEkC,CAAC,GAAG,CAAA;EACNlC,YAAAA,CAAAA,CAAEmC,CAAC,GAAG,CAAA;WAEH,MAAA;EACHnC,YAAAA,CAAAA,CAAEkC,CAAC,IAAI6jB,MAAM,CAAC,CAAA,CAAE,IAAIqd,UAAU,CAAC,CAAA,CAAE,GAAGpjC,CAAEnE,CAAAA,CAAC,GAAGmE,CAAAA,CAAEkC,CAAC,CAADA;EAC5ClC,YAAAA,CAAAA,CAAEmC,CAAC,IAAI4jB,MAAM,CAAC,CAAA,CAAE,IAAIqd,UAAU,CAAC,CAAA,CAAE,GAAGpjC,CAAEnE,CAAAA,CAAC,GAAGmE,CAAAA,CAAEmC,CAAC,CAADA;EAC9C;EAEF;EAEA2/B,IAAAA,MAAAA,CAAO9jC,IAAI,CAAC,IAAI,EAAEgC,CAAG,EAAA,IAAI,CAACxC,SAAS,CAAA;EAErC;EAEA;;;;;;EAMA,GACA,SAASwkC,YAAap6B,CAAAA,MAAM,EAAErK,QAAW,GAAA,IAAI,CAACC,SAAS,EAAA;EAErD,IAAA,MAAMmkC,WAAc,GAAA,IAAI,CAACD,aAAa,CAACC,WAAW,EAC5C3hC,EAAAA,CAAAA,GAAIijC,oBAAc,CAAA,IAAI,CAAC3B,UAAU,CAACjiC,IAAI,EAAA,CAAA;EAE5C,IAAA,IAAIuI,MAAQ,EAAA;EAEV,QAAA,MAAM,CAACvG,KAAOC,EAAAA,MAAAA,CAAO,GAAG,IAAI,CAACogC,aAAa,CAACG,eAAe,EAAE,CAAC,CAAE,CAAA,EACzDwB,EAAKz7B,GAAAA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,EAChC07B,EAAK17B,GAAAA,MAAM,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,CAAC,CAAE,CAAA;EAEtC,QAAA,IAAI/L,CAAIhC,GAAAA,IAAAA,CAAKqJ,GAAG,CAACy+B,WAAW,CAAC,CAAA,CAAE,EAAE,CAAA,GAAI9nC,IAAK4Y,CAAAA,GAAG,CAAC4wB,EAAAA,GAAKhiC,OAAOiiC,EAAKhiC,GAAAA,MAAAA,CAAAA,CAAAA;EAE/D,QAAA,IAAIiiC,IAAMC,EAAAA,IAAAA;UACV,IAAIH,EAAAA,GAAKC,EAAKjiC,GAAAA,KAAAA,GAAQC,MAAQ,EAAA;cAC5BzF,CAAK,IAACyF,CAAAA,MAAS,GAAA,IAAI,CAACmiC,YAAY,GAAG,CAAA,IAAKniC,MAAAA;EACxCiiC,YAAAA,IAAAA,GAAO,CAACliC,KAAAA,GAAQgiC,EAAKxnC,GAAAA,CAAAA,IAAK,CAAIA,GAAAA,CAAAA;cAC9B2nC,IAAO,GAAA,IAAI,CAACC,YAAY,GAAG5nC,CAAAA;WAExB,MAAA;cACHA,CAAK,IAACwF,CAAAA,KAAQ,GAAA,IAAI,CAACoiC,YAAY,GAAG,CAAA,IAAKpiC,KAAAA;EACvCmiC,YAAAA,IAAAA,GAAO,CAACliC,MAAAA,GAASgiC,EAAKznC,GAAAA,CAAAA,IAAK,CAAIA,GAAAA,CAAAA;cAC/B0nC,IAAO,GAAA,IAAI,CAACE,YAAY,GAAG5nC,CAAAA;EAC7B;UAEAmE,CAAEkC,CAAAA,CAAC,GAAG,CAAClC,EAAEkC,CAAC,GAAG0F,MAAM,CAAC,CAAE,CAAA,CAAC,EAAE,GAAG27B,IAAG,KAAMvjC,CAAAA,CAAEnE,CAAC,GAAGA,CAAAA,GAAImE,CAAEnE,CAAAA,CAAC,CAADA;UACjDmE,CAAEmC,CAAAA,CAAC,GAAG,CAACnC,EAAEmC,CAAC,GAAGyF,MAAM,CAAC,CAAE,CAAA,CAAC,EAAE,GAAG47B,IAAG,KAAMxjC,CAAAA,CAAEnE,CAAC,GAAGA,CAAAA,GAAImE,CAAEnE,CAAAA,CAAC,CAADA;EACjDmE,QAAAA,CAAAA,CAAEnE,CAAC,IAAIA,CAAAA;EAEP,QAAA,IAAImE,EAAEkC,CAAC,GAAG,CAAGlC,EAAAA,CAAAA,CAAEkC,CAAC,GAAG,CAAA;EACd,aAAA,IAAIlC,EAAEkC,CAAC,GAAGb,KAAQ,GAAA,CAACrB,EAAEnE,CAAC,GAAGwF,KAAOrB,EAAAA,CAAAA,CAAEkC,CAAC,GAAGb,KAAAA,GAAQ,CAACrB,CAAAA,CAAEnE,CAAC,GAAGwF,KAAAA;EAC1D,QAAA,IAAIrB,EAAEmC,CAAC,GAAG,CAAGnC,EAAAA,CAAAA,CAAEmC,CAAC,GAAG,CAAA;EACd,aAAA,IAAInC,EAAEmC,CAAC,GAAGb,MAAS,GAAA,CAACtB,EAAEnE,CAAC,GAAGyF,MAAQtB,EAAAA,CAAAA,CAAEmC,CAAC,GAAGb,MAAAA,GAAS,CAACtB,CAAAA,CAAEnE,CAAC,GAAGyF,MAAAA;OAG1D,MAAA;EAEHtB,QAAAA,CAAAA,CAAEnE,CAAC,GAAG8lC,WAAW,CAAC,CAAE,CAAA;EACpB3hC,QAAAA,CAAAA,CAAEkC,CAAC,GAAG,CAAA;EACNlC,QAAAA,CAAAA,CAAEmC,CAAC,GAAG,CAAA;EAER;EAEA2/B,IAAAA,MAAAA,CAAO9jC,IAAI,CAAC,IAAI,CAAA,CAAEgC,CAAGzC,EAAAA,QAAAA,CAAAA;EAEvB;EAEA;;;EAGA,GACA,SAASslC,UAAAA,GAAAA;MACPa,UAAW1lC,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;EACtB;EAEA;;;EAGA,GACA,SAAS8kC,SAAS3kC,KAAK,EAAA;EAErB,IAAA,IAAI,CAACA,KAAAA,CAAMu0B,SAAS,EAAE;MAEtB,IAAI,CAACO,WAAW,CAACz4B,IAAI,CAAC,IAAI,CAACkoC,UAAU,CAACvP,IAAI,EAAE,IAAA,CAAA;EAC5C6O,IAAAA,YAAAA,CAAahkC,IAAI,CAAC,IAAI,CAAA,CAAEG,MAAMu0B,SAAS,CAAA;EAEzC;EAEA;;;EAGA,GACA,SAASkQ,UAAAA,GAAAA;MACPc,UAAW1lC,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;EACtB;EAEA;;;EAGA,GACA,SAAS0lC,UAAAA,GAAAA;EAEP,IAAA,IAAI,CAACzQ,WAAW,CAAC1zB,SAAS,CAAC,YAAA,CAAA,CACxB/E,IAAI,CAACiJ,WAAS,EAAA,IAAI,CAACkgC,wBAAwB,IAAI,EAAC,CAAA;EAEnD,IAAA,IAAI,CAAC1Q,WAAW,CAAC1zB,SAAS,CAAC,SAAA,CAAA,CACxB/E,IAAI,CAACiJ,WAAS,EAAA,IAAI,CAACmgC,qBAAqB,IAAI,EAAC,CAAA;EAElD;;EC3QA;;;;EAIA,GACe,wBAAA,GAAA;EAEb,IAAA,IAAIjkC,OAAOZ,kBAAO,CAAA,IAAI,CAACD,OAAO,CAACO,IAAI,EAAGwG,CAAAA,UAAU,CAC7CtG,CAAAA,SAAS,CAAC,wBACVzB,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAAC+lC,YAAY,GAAG;EAAC,QAAA;EAAE,KAAA,GAAG,EAAE,CAAA;MAEpC,MAAMC,SAAAA,GAAYnkC,KAAKD,KAAK,EAAA,CAAGV,MAAM,CAAC,KAAA,CAAA,CACnCW,IAAI,CAAC,OAAS,EAAA,oBAAA,CAAA;MAEjBA,IAAKgC,CAAAA,IAAI,GAAGC,MAAM,EAAA;MAElBjC,IAAOA,GAAAA,IAAAA,CAAKS,KAAK,CAAC0jC,SAAAA,CAAAA,CACf7kC,KAAK,CAAC,UAAA,EAAY,YAClB0uB,IAAI,CAAC,IAAI,CAACkW,YAAY,EACtB5kC,KAAK,CAAC,SAAS,CAAG,EAAA,IAAI,CAACyY,OAAO,CAACuC,KAAK,CAAC,EAAE,CAAC,CACxChb,CAAAA,KAAK,CAAC,QAAU,EAAA,CAAA,EAAG,IAAI,CAACyY,OAAO,CAACwC,MAAM,CAAC,EAAE,CAAC,CAAA,CAC1C1f,IAAI,CAACozB,WAAAA,EAAS,IAAI,CAACmW,iBAAiB,CAAA;EAEzC;;EC1BA;;;;;;EAMA,GACe,oBAASpqC,CAAC,EAAEgE,CAAC,EAAEuE,CAAC,EAAE/D,KAAK,EAAA;EACpCA,IAAAA,KAAAA,CAAM6lC,eAAe,EAAA;MAErB,IAAI,IAAI,CAAC9E,UAAU,GAAG,IAAI,CAAC+E,QAAQ,CAAChoC,MAAM,GAAG,CAAG,EAAA;EAE9C,QAAA,IAAI,CAAC6C,OAAO,CAACG,KAAK,CAAC,QAAU,EAAA,MAAA,CAAA;EAE7B,QAAA,MAAMilC,WAAc,GAAA,IAAI,CAACD,QAAQ,CAAC,IAAI,CAAC/E,UAAU,CAAC,EAC5CiF,QAAWD,GAAAA,WAAAA,CAAYvqC,CAAGgE,EAAAA,CAAAA,CAAAA;UAEhC,IAAI,CAACyN,KAAK,CAAC,KAAA,CAAA;EACX,QAAA,IAAI,IAAI,CAACg5B,QAAQ,CAACzqC,GAAGgE,CAAI,CAAA,EAAA,IAAI,CAAC0mC,aAAa,CAACvmC,IAAI,CAAC,EAAE,EAAEc,MAAM,EAAA;UAE3D,MAAM0lC,SAAAA,GAAY,IAAI,CAACC,OAAO;EAE9B,QAAA,IAAI,CAAC9G,QAAQ,CAACp2B,IAAI,CAAC;cACjBm9B,KAAO,EAAA,IAAI,CAACC,MAAM;cAClBtpC,MAAQmpC,EAAAA;EACV,SAAA,CAAA;UAEA,IAAI,CAAC9oC,MAAM,CAAC;cACVgpC,KAAO,EAAA,IAAI,CAACtF,UAAU,GAAG,CAAA;EACzB/jC,YAAAA,MAAAA,EAAQ,CAACoB,CAAAA,EAAG2F,CAAM,GAAC,CAAA,CAACoiC,SAAaA,IAAAA,SAAAA,CAAU/nC,CAAG2F,EAAAA,CAAAA,CAAC,KAAMgiC,WAAAA,CAAY3nC,GAAG2F,CAAOiiC,CAAAA,KAAAA;EAC7E,SAAA,CAAA,CAAGvlC,MAAM,EAAA;EAEX;EAEF;;EChCA;;;;;;EAMA,GACe,qBAASjF,CAAC,EAAEgE,CAAC,EAAEuE,CAAC,EAAE/D,KAAK,EAAA;EAEpC,IAAA,IAAI,CAACW,OAAO,CAACG,KAAK,CAAC,QAAU,EAAA,MAAA,CAAA;EAC7B,IAAA,IAAI,IAAI,CAACmlC,QAAQ,CAACzqC,GAAGgE,CAAI,CAAA,EAAA,IAAI,CAAC0mC,aAAa,CAACvmC,IAAI,CAAC,EAAE,EAAEc,MAAM,EAAA;EAE3D,IAAA,IAAIkD,EAAK,GAAA,IAAI,CAACrC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EACrB,IAAA,IAAI,EAAEmE,EAAcvD,YAAAA,KAAI,GAAIuD,EAAK,GAAA;EAACA,QAAAA;EAAG,KAAA;MACrC,MAAM4iC,WAAAA,GAAc,IAAI,CAACtF,OAAO,CAAC/jC,OAAO,CAACyG,EAAE,CAAC,CAAE,CAAA,CAAA;MAC9C,MAAM6iC,SAAAA,GAAY,IAAI,CAACtF,KAAK,CAAChkC,OAAO,CAACyG,EAAE,CAAC,CAAE,CAAA,CAAA;MAC1C,MAAM8iC,UAAAA,GAAaxkC,aAAM,CAAA,IAAI,CAACksB,YAAY,CAACxuB,IAAI,EAAGQ,CAAAA,GAAG,CAAC,CAAC3E,CAAGgE,EAAAA,CAAAA,GAAAA;EACxD,QAAA,IAAImE,EAAK,GAAA,IAAI,CAACrC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EACrB,QAAA,IAAI,EAAEmE,EAAcvD,YAAAA,KAAI,GAAIuD,EAAK,GAAA;EAACA,YAAAA;EAAG,SAAA;UACrC,OAAOA,EAAAA;EACT,KAAA,CAAA,CAAA,CAAI7F,MAAM;EAEV,IAAA,MAAMoa,WAAW,IAAI,CAACwuB,mBAAmB,CAAC7mC,IAAI,CAAC,IAAI,CAAA,EAAA;EAEnD,IAAA,IAAIqY,QAAU,EAAA;UAEZ,IAAIlY,KAAAA,CAAM2mC,QAAQ,EAAE;cAElB,IAAIJ,WAAAA,GAAc,KAAK,CAAC,IAAI,CAACrF,KAAK,CAACpjC,MAAM,EAAE;kBACzC,IAAI,CAACmjC,OAAO,GAAG,IAAI,CAACA,OAAO,CAACtkC,MAAM,CAACgH,EAAAA,CAAAA;EACnC,gBAAA,IAAI6iC,aAAa,CAAG,EAAA,IAAI,CAACtF,KAAK,GAAG,EAAE;kBACnC,IAAI,IAAI,CAACD,OAAO,CAACnjC,MAAM,KAAK2oC,UAAAA,EAAY,IAAI,CAACxF,OAAO,GAAG,EAAE;EACzD,gBAAA,IAAI,CAACxgC,MAAM,EAAA;eAER,MAAA,IAAI+lC,aAAa,CAAG,EAAA;kBACvB,IAAI,CAACtF,KAAK,GAAG,EAAE;kBACf,IAAI,CAACD,OAAO,GAAG,EAAE;EACjB,gBAAA,IAAI,CAACxgC,MAAM,EAAA;EACb;WAGG,MAAA;cACH,IAAI+lC,SAAAA,GAAY,KAAK,IAAI,CAACvF,OAAO,CAACnjC,MAAM,GAAG2oC,UAAAA,GAAa,CAAG,EAAA;kBACzD,IAAI,CAACvF,KAAK,GAAGv9B,EAAAA;kBACb,IAAI,CAACs9B,OAAO,GAAG,EAAE;eAEd,MAAA;kBACH,IAAI,CAACC,KAAK,GAAG,EAAE;kBACf,IAAI,CAACD,OAAO,GAAG,EAAE;EACnB;EACA,YAAA,IAAI,CAACxgC,MAAM,EAAA;EACb;OAGG,MAAA;EAEH,QAAA,IAAIT,KAAM2mC,CAAAA,QAAQ,IAAIH,SAAAA,GAAY,CAAG,EAAA;cACnC,IAAI,CAACtF,KAAK,GAAGv9B,EAAAA;cACb,IAAI,CAACs9B,OAAO,GAAG,EAAE;EACjB,YAAA,IAAI,CAACxgC,MAAM,EAAA;EACb,SAAA,MACK,IAAI,CAACT,KAAM2mC,CAAAA,QAAQ,EAAE;EACxB,YAAA,IAAIJ,eAAe,CAAG,EAAA;EACpB,gBAAA,IAAI,CAACtF,OAAO,CAAC3mB,MAAM,CAACisB,WAAAA,EAAa5iC,GAAG7F,MAAM,CAAA;eAEvC,MAAA,IAAI0oC,aAAa,CAAG,EAAA;kBACvB,IAAI,CAACtF,KAAK,GAAG,EAAE;kBACf,IAAI,CAACD,OAAO,GAAG,EAAE;eAEd,MAAA,IAAI,IAAI,CAACC,KAAK,CAACpjC,MAAM,IAAI0oC,YAAY,CAAG,EAAA;kBAC3C,IAAI,CAACtF,KAAK,GAAG,IAAI,CAACA,KAAK,CAACvkC,MAAM,CAACgH,EAAAA,CAAAA;kBAC/B,IAAI,IAAI,CAACu9B,KAAK,CAACpjC,MAAM,KAAK2oC,UAAAA,EAAY,IAAI,CAACvF,KAAK,GAAG,EAAE;eAElD,MAAA;kBACH,IAAI,CAACD,OAAO,GAAG,IAAI,CAACA,OAAO,CAACtkC,MAAM,CAACgH,EAAAA,CAAAA;kBACnC,IAAI,IAAI,CAACs9B,OAAO,CAACnjC,MAAM,KAAK2oC,UAAAA,EAAY,IAAI,CAACxF,OAAO,GAAG,EAAE;EAC3D;EACA,YAAA,IAAI,CAACxgC,MAAM,EAAA;EAEb;EAEF;EAEF;;ECrFA;;;;;;EAMA,GACe,mBAAA,CAASjF,CAAC,EAAEgE,CAAC,EAAA;EAE1B,IAAA,IAAI,IAAI,CAACd,YAAY,CAACyO,YAAY,KAAK,CAAG,EAAA;EAExC,QAAA,IAAIy5B,SAAY,GAAA,IAAI,CAACtlC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EAC5B,QAAA,IAAI,EAAEonC,SAAqBxmC,YAAAA,KAAI,GAAIwmC,SAAY,GAAA;EAACA,YAAAA;EAAU,SAAA;EAE1D,QAAA,IAAI,CAAC35B,KAAK,CAAC,CAACT,CAAGzI,EAAAA,CAAAA,GAAAA;EACb,YAAA,IAAIJ,EAAK,GAAA,IAAI,CAACrC,GAAG,CAACkL,CAAGzI,EAAAA,CAAAA,CAAAA;EACrB,YAAA,IAAI,EAAEJ,EAAcvD,YAAAA,KAAI,GAAIuD,EAAK,GAAA;EAACA,gBAAAA;EAAG,aAAA;EACrC,YAAA,OAAOijC,UAAU9tB,IAAI,CAAC1a,CAAAA,CAAKuF,GAAAA,EAAAA,CAAGxG,QAAQ,CAACiB,CAAAA,CAAAA,CAAAA;EACzC,SAAA,CAAA;EAEF;EAEF;;ECtBA;;;;;;EAMA,GACe,mBAAA,CAAS5C,CAAC,EAAEgE,CAAC,EAAA;MAE1BkE,UAAW,CAAA,IAAA;EACT,QAAA,IAAI,IAAI,CAAChF,YAAY,CAACyO,YAAY,KAAK,CAAK,IAAA,IAAI,CAAC/E,MAAM,GAAG,IAAI,CAACA,MAAM,CAAC5M,CAAAA,EAAGgE,KAAK,IAAM,EAAA;cAClF,IAAI,CAACyN,KAAK,CAAC,KAAA,CAAA;EACb;EACA,QAAA,MAAM45B,WAAc,GAAA,IAAI,CAACX,aAAa,CAACvmC,IAAI,EAAA;UAC3C,IAAIknC,WAAAA,CAAY/oC,MAAM,IAAI,IAAI,CAACmoC,QAAQ,CAACzqC,GAAGgE,CAAI,CAAA,EAAA;cAC7C,IAAIsnC,YAAAA,GAAeD,WAAW,CAAC,CAAE,CAAA;cACjC,MAAOC,YAAAA,CAAarnC,UAAU,IAAIqnC,YAAAA,CAAannC,IAAI,CAAEmnC,YAAAA,GAAeA,aAAannC,IAAI;EACrF,YAAA,IAAI,IAAI,CAAC2B,GAAG,CAACwlC,YAAkB,CAAA,KAAA,IAAI,CAACxlC,GAAG,CAAC9F,CAAI,CAAA,EAAA,IAAI,CAAC0qC,aAAa,CAACvmC,IAAI,CAAC,EAAE,EAAEc,MAAM,EAAA;EAChF;OACC,EAAA,EAAA,CAAA;EAEH,IAAA,IAAI,CAACE,OAAO,CAACG,KAAK,CAAC,QAAU,EAAA,MAAA,CAAA;EAE/B;;EClBA;;;;;;;EAOA,GACe,yBAAStF,CAAC,EAAEgE,CAAC,EAAEuE,CAAC,EAAE/D,KAAK,EAAA;MAEpC,MAAMwZ,QAAAA,GAAWxZ,KAAM+mC,CAAAA,OAAO,GAAG;EAAC/mC,QAAAA,KAAAA,CAAM+mC,OAAO,CAAC,CAAE,CAAA,CAACC,OAAO;EAAEhnC,QAAAA,KAAAA,CAAM+mC,OAAO,CAAC,CAAE,CAAA,CAACE;OAAQ,GAAG;EAACjnC,QAAAA,KAAAA,CAAMgnC,OAAO;EAAEhnC,QAAAA,KAAAA,CAAMinC;EAAQ,KAAA;MACtH,MAAMR,UAAAA,GAAaxkC,aAAM,CAAA,IAAI,CAACksB,YAAY,CAACxuB,IAAI,EAAGQ,CAAAA,GAAG,CAAC,CAAC3E,CAAGgE,EAAAA,CAAAA,GAAAA;EACxD,QAAA,IAAImE,EAAK,GAAA,IAAI,CAACrC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EACrB,QAAA,IAAI,EAAEmE,EAAcvD,YAAAA,KAAI,GAAIuD,EAAK,GAAA;EAACA,YAAAA;EAAG,SAAA;UACrC,OAAOA,EAAAA;EACT,KAAA,CAAA,CAAA,CAAI7F,MAAM;EAEV,IAAA,IAAItC,KAAK,IAAI,CAACyqC,QAAQ,CAACzqC,GAAGgE,CAAI,CAAA,EAAA;EAE5B,QAAA,IAAImE,EAAK,GAAA,IAAI,CAACrC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA;EACrB,QAAA,IAAImE,EAAcvD,YAAAA,KAAAA,EAAOuD,EAAKA,GAAAA,EAAE,CAAC,CAAE,CAAA;UAEnC,MAAM9B,CAAAA,GAAI,IAAI,CAACrD,UAAU;EACzB,QAAA,MAAM0oC,eAAeC,WAAYtnC,CAAAA,IAAI,CAAC,IAAI,EAAEhE,QAAQ,EAAA;;EAGpD,QAAA,MAAMurC,YAAexqC,GAAAA,MAAAA,CAAO2H,IAAI,CAAC,IAAI,CAACxG,GAAG,CAAA,CACtC+a,IAAI,CAAC7b,CAAAA,CAAAA;EAEJ,YAAA;EAAC,gBAAA,OAAA;EAAS,gBAAA;eAAe,CAACE,QAAQ,CAACF,CAAAA,CAAAA;EAEnC,YAAA,IAAI,CAACc,GAAG,CAACd,CAAAA,CAAE;EAEX,YAAA,IAAI,CAACc,GAAG,CAACd,CAAE,CAAA,CAACpB,QAAQ,EAAOqrC,KAAAA,YAAAA,CAAAA;;;EAK/B,QAAA,MAAMG,eAAkB,GAAA,IAAI,CAACtpC,GAAG,CAAC,cAAe,CAAA,IAC9C,IAAI,CAACA,GAAG,CAAC,cAAe,CAAA,CAAClC,QAAQ,EAAOqrC,KAAAA,YAAAA;;UAG1C,MAAMI,cAAAA,GAAiB,IAAI,CAACvG,UAAU,GAAG,IAAI,CAAC+E,QAAQ,CAAChoC,MAAM,GAAG,CAAA;;UAGhE,IAAI,CAAC6C,OAAO,CAACG,KAAK,CAAC,QACjBsmC,EAAAA,YAAAA,IAAgBC,eAAmBC,IAAAA,cAAAA,GAAiB,SAAY,GAAA,MAAA,CAAA;EAElE,QAAA,MAAMC,mBAAmB,IAAI,CAACb,mBAAmB,CAAC7mC,IAAI,CAAC,IAAI,CAAA,EAAA;EAE3D,QAAA,MAAM2nC,OAAO,IAAI,CAACtG,KAAK,CAAC/jC,QAAQ,CAACwG,EAAAA,CAAAA;EACjC,QAAA,MAAMq9B,SAAS,IAAI,CAACC,OAAO,CAAC9jC,QAAQ,CAACwG,EAAAA,CAAAA;EAErC,QAAA,IAAI,CAACuiC,aAAa,CAACvmC,IAAI,CAAC;cAACoE,CAAKvI,IAAAA;EAAE,SAAA,CAAA,CAC7B+iC,MAAM,CACL8I,eACIE,GAAAA,gBAAAA,GACE,IAAI,CAACrG,KAAK,CAACpjC,MAAM,IAAI,CAAC0pC,IAAAA,IAAQxG,MAASn/B,GAAAA,CAAAA,CAAE,oBACzC,CAAA,GAAA,IAAI,CAACq/B,KAAK,CAACpjC,MAAM,KAAK,CAAA,IAAK0pC,IAAQ,IAAA,IAAI,CAACvG,OAAO,CAACnjC,MAAM,KAAK2oC,UAAa,GAAA,CAAA,GAAI5kC,CAAE,CAAA,mBAAA,CAAA,GAC9E,CAAGA,EAAAA,CAAAA,CAAE,oBAAsB,CAAA,CAAA,MAAM,EAAEA,CAAAA,CAAE,qBAAwB,CAAA,CAAA,CAAA,GAE7D,IAAI,CAACq/B,KAAK,CAACpjC,MAAM,IAAI,CAAC0pC,IAAAA,IAAQxG,MAAS,GAAA,CAAA,EAAGn/B,CAAE,CAAA,eAAA,CAAA,CAAiB,MAAM,EAAEA,CAAE,CAAA,0BAAA,CAAA,CAAA,CAA6B,GACpG,IAAI,CAACq/B,KAAK,CAACpjC,MAAM,KAAK,CAAK0pC,IAAAA,IAAAA,IAAQ,IAAI,CAACvG,OAAO,CAACnjC,MAAM,KAAK2oC,UAAa,GAAA,CAAA,GAAI5kC,CAAE,CAAA,mBAAA,CAAA,GAC9E,CAAGA,EAAAA,CAAAA,CAAE,eAAiB,CAAA,CAAA,MAAM,EAAEA,CAAAA,CAAE,0BAA6B,CAAA,CAAA,CAAA,GAC/D,KAELmjB,CAAAA,CAAAA,KAAK,CAAC,IAAI,CAACkJ,aAAa,CAAC7gB,KAAK,GAAG,IAAI,CAAC8gB,YAAY,CAAC9gB,KAAK,EAAA,GAAKgzB,WAAYxgC,CAAAA,IAAI,CAAC,IAAI,CAClF2Z,CAAAA,CAAAA,QAAQ,CAACA,QAAAA,CAAAA,CACTnc,MAAM,CAAC2B,UAAWa,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAAC4nC,cAAc,CAAA,CAAA,CAChDpqC,MAAM,CAAC2B,UAAWa,CAAAA,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAAC6nC,cAAc,GAChDjnC,MAAM,EAAA;EAEX;EAEF;;EC5EA;;;;;;;EAOA,GACe,wBAASjF,CAAC,EAAEgE,CAAC,EAAEuE,CAAC,EAAE/D,KAAK,EAAA;EAEpC,IAAA,IAAIxE,KAAK,IAAI,CAACyqC,QAAQ,CAACzqC,GAAGgE,CAAI,CAAA,EAAA;EAE5B,QAAA,MAAM0nC,eAAeS,UAAW9nC,CAAAA,IAAI,CAAC,IAAI,EAAEhE,QAAQ,EAAA;;EAGnD,QAAA,MAAMurC,YAAexqC,GAAAA,MAAAA,CAAO2H,IAAI,CAAC,IAAI,CAACxG,GAAG,CAAA,CACtC+a,IAAI,CAAC7b,CAAAA,CAAAA;EAEJ,YAAA;EAAC,gBAAA,OAAA;EAAS,gBAAA;eAAc,CAACE,QAAQ,CAACF,CAAAA,CAAAA;EAElC,YAAA,IAAI,CAACc,GAAG,CAACd,CAAAA,CAAE;EAEX,YAAA,IAAI,CAACc,GAAG,CAACd,CAAE,CAAA,CAACpB,QAAQ,EAAOqrC,KAAAA,YAAAA,CAAAA;;;EAK/B,QAAA,MAAMG,eAAkB,GAAA,IAAI,CAACtpC,GAAG,CAAC,aAAc,CAAA,IAC7C,IAAI,CAACA,GAAG,CAAC,aAAc,CAAA,CAAClC,QAAQ,EAAOqrC,KAAAA,YAAAA;;UAGzC,MAAMI,cAAAA,GAAiB,IAAI,CAACvG,UAAU,GAAG,IAAI,CAAC+E,QAAQ,CAAChoC,MAAM,GAAG,CAAA;;UAGhE,IAAI,CAAC6C,OAAO,CAACG,KAAK,CAAC,QACjBsmC,EAAAA,YAAAA,IAAgBC,eAAmBC,IAAAA,cAAAA,GAAiB,SAAY,GAAA,MAAA,CAAA;UAElE,MAAM9tB,QAAAA,GAAWxZ,KAAM+mC,CAAAA,OAAO,GAC1B;EAAC/mC,YAAAA,KAAAA,CAAM+mC,OAAO,CAAC,CAAE,CAAA,CAACC,OAAO;EAAEhnC,YAAAA,KAAAA,CAAM+mC,OAAO,CAAC,CAAE,CAAA,CAACE;WAAQ,GACpD;EAACjnC,YAAAA,KAAAA,CAAMgnC,OAAO;EAAEhnC,YAAAA,KAAAA,CAAMinC;EAAQ,SAAA;EAElC,QAAA,IAAI,CAACf,aAAa,CAACvmC,IAAI,CAAC;cAACoE,CAAKvI,IAAAA;EAAE,SAAA,CAAA,CAC7B+iC,MAAM,CACL8I,eAAmBC,IAAAA,cAAAA,GACf,IAAI,CAAC9oC,UAAU,CAAC,iBAChB,CAAA,GAAA,KAAA,CAAA,CAELwmB,KAAK,CAAC,IAAI,CAACsb,UAAU,CACrB9mB,CAAAA,QAAQ,CAACA,QAAAA,CAAAA,CACTnc,MAAM,CAAC2B,UAAWa,CAAAA,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAAC4nC,cAAc,GAChDhnC,MAAM,EAAA;EACX;EAEF;;ECxDA;;;;EAIC,IACc,uBAAA,GAAA;EACb,IAAA,IAAI,CAACylC,aAAa,CAACvmC,IAAI,CAAC,EAAE,EAAEc,MAAM,EAAA;EACpC;;ECmCA;;EAEC,IACD,SAASmnC,cAAAA,GAAAA;EACP,IAAA,OAAO,OAAO7mC,MAAW,KAAA,WAAA,GAAcA,MAAOC,CAAAA,UAAU,GAAG,GAAM,GAAA,IAAA;EACnE;EAEA;;MAGA,SAAS6mC,QAAQlwB,CAAC,EAAA;EAChB,IAAA,OAAOA,CAAED,CAAAA,MAAM,CAAC,CAACf,KAAKmxB,IAAMtoC,EAAAA,CAAAA,GAAAA;UAC1B,IAAI,CAACA,GAAGmX,GAAOmxB,IAAAA,IAAAA;eACV,IAAItoC,CAAAA,KAAMmY,CAAE7Z,CAAAA,MAAM,GAAG,CAAA,IAAK0B,CAAM,KAAA,CAAA,EAAGmX,GAAO,IAAA,CAAC,KAAK,EAAEmxB,IAAM,CAAA,CAAA;eACxD,IAAItoC,CAAAA,KAAMmY,EAAE7Z,MAAM,GAAG,GAAG6Y,GAAO,IAAA,CAAC,MAAM,EAAEmxB,IAAM,CAAA,CAAA;eAC9CnxB,GAAO,IAAA,CAAC,EAAE,EAAEmxB,IAAM,CAAA,CAAA;UACvB,OAAOnxB,GAAAA;OACN,EAAA,EAAA,CAAA;EACL;EAEA;;;;;;;EAOC,IACD,SAASoxB,aAAcC,CAAAA,GAAG,EAAExsC,CAAC,EAAEgE,CAAC,EAAA;EAC9B,IAAA,MAAOhE,CAAEiE,CAAAA,UAAU,IAAIjE,CAAAA,CAAEmE,IAAI,CAAE;EAC7BnE,QAAAA,CAAAA,GAAIA,EAAEmE,IAAI;EACVH,QAAAA,CAAAA,GAAIhE,EAAEgE,CAAC;EACT;EACA,IAAA,OAAOwoC,IAAIxsC,CAAGgE,EAAAA,CAAAA,CAAAA;EAChB;EAOe,MAAMyoC,GAAY7qC,SAAAA,SAAAA,CAAAA;EAyQ/B;;;;EAIC,MACD8qC,QAAW,GAAA;EACT,QAAA,MAAMnmC,OAAO,IAAI;;UAEjB,IAAI,CAACg/B,UAAU,GAAG,IAAI,CAACuF,MAAM,KAAK,MAAK,GACnCvhC,WAAI,CAAA;EAAC,YAAA,IAAI,CAACuhC,MAAM,IAAI,IAAI,IAAI,CAACA,MAAM,GAAG,CAAA;EAAG,YAAA,IAAI,CAACR,QAAQ,CAAChoC,MAAM,GAAG;EAAE,SAAA,CAAA,GAClE,IAAI,CAACgoC,QAAQ,CAAChoC,MAAM,GAAG,CAAA;;EAG3B,QAAA,IAAI,CAACwD,GAAG,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,GAAAA;cACb,MAAM2oC,gBAAAA,GAAmBJ,aAAc,CAAA,IAAI,CAACjC,QAAQ,CAAC,IAAI,CAAC/E,UAAU,CAAC,EAAEvlC,CAAGgE,EAAAA,CAAAA,CAAAA;EAC1E,YAAA,OAAO,OAAO2oC,gBAAAA,KAAqB,QAAW,GAAA,CAAA,EAAGA,kBAAkB,GAAGA,gBAAAA;EACxE,SAAA;;UAGA,IAAI,CAACrH,IAAI,GAAG,CAACtlC,GAAGgE,CAAM,GAAA,IAAI,CAACsmC,QAAQ,CAChC3lC,GAAG,CAACioC,CAAAA,IAAK,CAAGL,EAAAA,aAAAA,CAAcK,GAAG5sC,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAAI,CACpCxC,CAAAA,MAAM,CAAC0N,OAAAA,CAAAA;UAEV,IAAI,CAAC41B,UAAU,GAAG,CAAC9kC,GAAGgE,CAAG6mC,EAAAA,KAAAA,GAAQ,IAAI,CAACtF,UAAU,GAAA;cAC9C,IAAI,CAACvlC,GAAG,OAAO,EAAA;EACf,YAAA,MAAOA,CAAEiE,CAAAA,UAAU,IAAIjE,CAAAA,CAAEmE,IAAI,CAAE;EAC7BnE,gBAAAA,CAAAA,GAAIA,EAAEmE,IAAI;EACVH,gBAAAA,CAAAA,GAAIhE,EAAEgE,CAAC;EACT;cACA,IAAIhE,CAAAA,CAAE6sC,cAAc,EAAE;EACpB,gBAAA,OAAO,GAAG,IAAI,CAACC,cAAc,CAAC9sC,CAAAA,EAAGgE,GAAG,GAAG,EAAEyd,wBAAiBzhB,CAAE+sC,CAAAA,UAAU,GAAG,GAAK,EAAA,IAAI,CAACtqC,OAAO,CAAA,CAAE,CAAC,CAAC;EAChG;EACA,YAAA,IAAI,IAAI,CAACsL,MAAM,IAAI88B,KAAAA,KAAU,IAAI,CAACtF,UAAU,EAAE,OAAO,GAAG,IAAI,CAACx3B,MAAM,CAAC/N,GAAGgE,CAAI,CAAA,CAAA,CAAA;cAC3E,MAAMkK,CAAAA,GAAI3H,KAAK++B,IAAI,CAACtlC,GAAGgE,CAAG2M,CAAAA,CAAAA,KAAK,CAAC,CAAA,EAAGk6B,KAAQ,GAAA,CAAA,CAAA;EAC3C,YAAA,MAAM1uB,IAAIjO,CAAE2F,CAAAA,OAAO,GAAG4S,IAAI,CAACumB,CAAAA,EAAM,GAAA,EAAEA,EAAAA,YAAcpoC,KAAI,CAAOsJ,CAAAA,IAAAA,CAAC,CAACA,CAAE5L,CAAAA,MAAM,GAAG,CAAE,CAAA;EAC3E,YAAA,OAAO6Z,CAAavX,YAAAA,KAAAA,GAAQynC,OAAQlwB,CAAAA,CAAAA,CAAAA,GAAK,GAAGA,CAAG,CAAA,CAAA;EACjD,SAAA;;EAGA,QAAA,IAAI,IAAI,CAACuqB,KAAK,IAAI,CAAC,IAAI,CAACuG,WAAW,IAAI,IAAI,CAACpnC,KAAK,CAACvD,MAAM,EAAE;EAExD,YAAA,MAAM4qC,KAAQ,GAAA,IAAI,CAACrnC,KAAK,CAAClB,GAAG,CAAC,IAAI,CAAC+hC,KAAK,CAAE/hC,CAAAA,GAAG,CAACsa,QAAAA,CAAAA;EAC7C,YAAA,MAAMjf,IAAI,IAAI,CAAC6F,KAAK,CAAC,CAAA,CAAE,EAAE7B,CAAI,GAAA,CAAA;EAE7B,YAAA,IAAI,IAAI,CAACmF,SAAS,IAAI,CAAC,CAAC,EAAE,IAAI,CAACA,SAAS,CAAA,CAAE,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAACA,SAAS,EAAE,CAAC,CAACnJ,CAAGgE,EAAAA,CAAAA,CAAAA,KAAO,IAAI,CAAC0iC,KAAK,CAAC1mC,GAAGgE,CAAI,CAAA,EAAA;kBAC3G,IAAI,CAACipC,WAAW,GAAG,IAAM,IAAA;eAEtB,MAAA;kBACH,MAAME,UAAAA,GAAa,CAACr0B,WAAIo0B,CAAAA,KAAAA,CAAAA;EACxB,gBAAA,IAAI,CAACD,WAAW,GAAG,CAACjtC,CAAGgE,EAAAA,CAAAA,GAAM,CAACib,QAAAA,CAAK,IAAI,CAACynB,KAAK,CAAC1mC,GAAGgE,CAAQmpC,CAAAA,CAAAA,KAAAA,UAAAA;EAC3D;EAEF;UAEA,IAAI,CAACC,aAAa,GAAG,EAAE;UACvB,IAAI,CAACC,WAAW,GAAG,EAAE;EACrB,QAAA,IAAIC,WAAW,EAAE;EACjB,QAAA,IAAI,IAAI,CAACznC,KAAK,CAACvD,MAAM,EAAE;EAErBgrC,YAAAA,QAAAA,GAAW,IAAI,CAACL,WAAW,GAAG,IAAI,CAACpnC,KAAK,CAACrE,MAAM,CAAC,IAAI,CAACyrC,WAAW,CAAI,GAAA,IAAI,CAACpnC,KAAK;cAC9E,IAAI,IAAI,CAAC+kC,OAAO,EAAE0C,QAAAA,GAAWA,SAAS9rC,MAAM,CAAC,IAAI,CAACopC,OAAO,CAAA;EACzD,YAAA,MAAM2C,WAAW,EAAE;EACnB,YAAA,IAAK,IAAIvpC,CAAI,GAAA,CAAA,EAAGA,CAAK,IAAA,IAAI,CAACuhC,UAAU,EAAEvhC,CAAKupC,EAAAA,CAAAA,QAAAA,CAAS7/B,IAAI,CAAC,IAAI,CAAC48B,QAAQ,CAACtmC,CAAE,CAAA,CAAA;cACzE,IAAI,IAAI,CAACmF,SAAS,IAAI,CAAC,CAAC,EAAE,IAAI,CAACA,SAAS,CAAA,CAAE,IAAI,IAAI,EAAEokC,QAAS7/B,CAAAA,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAACvE,SAAS,CAAA,CAAE,CAAC,CAAA;EAC5F,YAAA,IAAI,IAAI,CAACA,SAAS,IAAI,CAAC,CAAC,EAAE,IAAI,CAACA,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,EAAEokC,QAAAA,CAAS7/B,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAACvE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;cAE9F,MAAMqkC,IAAAA,GAAOtI,cAAOoI,CAAAA,QAAAA,EAAUnI,CAAAA,MAAAA,GAAAA;kBAE5B,MAAMjsB,KAAAA,GAAQ,IAAI,CAACrT,KAAK,CAACnE,OAAO,CAACyjC,MAAM,CAAC,CAAE,CAAA,CAAA;kBAC1C,MAAM9b,KAAAA,GAAQ,IAAI,CAACnJ,MAAM,CAACilB,MAAM,CAAC,EAAE,EAAEjsB,KAAAA,CAAAA;kBACrC,MAAM/Q,EAAAA,GAAK,IAAI,CAACrC,GAAG,CAACq/B,MAAM,CAAC,EAAE,EAAEjsB,KAAAA,CAAAA;EAE/B,gBAAA,MAAMlZ,CAAIyG,GAAAA,UAAAA,CAAM0+B,MAAQ,EAAA,IAAI,CAACC,KAAK,CAAA;kBAElC,IAAI,CAAC,IAAI,CAACK,OAAO,CAAC9jC,QAAQ,CAACwG,EAAQ,CAAA,KAAA,CAAC,IAAI,CAACu9B,KAAK,CAACpjC,MAAM,IAAI,IAAI,CAACojC,KAAK,CAAC/jC,QAAQ,CAACwG,EAAAA,CAAE,CAAI,EAAA;EACjF,oBAAA,IAAI,CAAC,IAAI,CAACgB,SAAS,IAAIkgB,UAAU,MAAQ,EAAA,IAAI,CAAC+jB,aAAa,GAAG,IAAI,CAACA,aAAa,CAACjsC,MAAM,CAACgkC,MAAAA,CAAAA;EACnF,yBAAA,IAAI,CAACiI,aAAa,CAAC1/B,IAAI,CAAC1N,CAAAA,CAAAA;EAC/B;EACA,gBAAA,IAAI,CAACqtC,WAAW,CAAC3/B,IAAI,CAAC1N,CAAAA,CAAAA;eAElButC,EAAAA,GAAAA,QAAAA,CAAAA;cAEN,IAAI,CAACH,aAAa,GAAG,IAAI,CAACK,kBAAkB,CAAC,IAAI,CAACL,aAAa,EAAEI,IAAAA,CAAAA;EAEnE;;UAGA,MAAME,SAAAA,GAAYthC,aAAM,CAAA,IAAI,CAACghC,aAAa,EAAE,IAAI,CAACtnC,GAAG,CAAA,CAAE4D,IAAI;EAC1D,QAAA,IAAIgkC,SAAY,GAAA,IAAI,CAACC,WAAW,EAAE;EAChC,YAAA,IAAI,IAAI,CAACC,UAAU,KAAK7tC,WAAW,IAAI,CAAC6tC,UAAU,GAAG,IAAI,CAAC1qC,YAAY,CAACyO,YAAY,IAAI,GAAA;EACvF,YAAA,IAAI,IAAI,CAACk8B,aAAa,KAAK9tC,WAAW,IAAI,CAAC8tC,aAAa,GAAG,IAAI,CAAC3qC,YAAY,CAACU,QAAQ,IAAI,GAAA;EACzF,YAAA,IAAI,CAACV,YAAY,CAACyO,YAAY,GAAG,CAAA;EACjC,YAAA,IAAI,CAACzO,YAAY,CAACU,QAAQ,GAAG,CAAA;EAC/B,SAAA,MACK,IAAI,IAAI,CAACgqC,UAAU,KAAK7tC,SAAW,EAAA;EACtC,YAAA,IAAI,CAACmD,YAAY,CAACyO,YAAY,GAAG,IAAI,CAACi8B,UAAU;EAChD,YAAA,IAAI,CAAC1qC,YAAY,CAACU,QAAQ,GAAG,IAAI,CAACiqC,aAAa;EACjD;UAEA,IAAI,IAAI,CAACC,cAAc,IAAI,CAAC,IAAI,CAACV,aAAa,CAAC9qC,MAAM,EAAE;EACrD,YAAA,IAAI,CAACyrC,aAAa,CAAC9oC,MAAM,CAAC;EACxB8uB,gBAAAA,SAAAA,EAAW,IAAI,CAAC5uB,OAAO,CAACO,IAAI,GAAGwG,UAAU;EACzC8nB,gBAAAA,IAAAA,EAAM,IAAI,CAACga,WAAW,CAAC,IAAI,CAAA;kBAC3Bla,IAAM,EAAA,KAAA;kBACNxuB,KAAO,EAAA,IAAI,CAAC2oC;EACd,aAAA,CAAA;EACA,YAAA,IAAI,CAAC9oC,OAAO,CAACmB,UAAU,EAAG1C,CAAAA,QAAQ,CAAC,IAAI,CAACC,SAAS,CAAEmC,CAAAA,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA;EACrE;EAEF;EAEA;;;;EAIA,KACAkoC,KAAQ,GAAA;;UAGN,IAAIC,cAAAA,GAAiB,IAAI,CAACvI,eAAe,CAACvhC,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACxC,MAAM,EAAA,CAAA;EAChE,QAAA,IAAI,CAAC;EAAC,YAAA,KAAA;EAAO,YAAA,KAAA;EAAO,YAAA,QAAA;EAAU,YAAA,MAAA;EAAQ,YAAA;WAAQ,CAACF,QAAQ,CAACwsC,cAAAA,CAAAA,EAAiBA,cAAiB,GAAA,QAAA;UAC1F,IAAIC,kBAAAA,GAAqB,IAAI,CAAClK,mBAAmB,CAAC7/B,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACxC,MAAM,EAAA,CAAA;EACxE,QAAA,IAAI,CAAC;EAAC,YAAA,KAAA;EAAO,YAAA,KAAA;EAAO,YAAA,QAAA;EAAU,YAAA,MAAA;EAAQ,YAAA;WAAQ,CAACF,QAAQ,CAACysC,kBAAAA,CAAAA,EAAqBA,kBAAqB,GAAA,QAAA;;UAGlG,IAAID,cAAAA,KAAmB,MAAUA,IAAAA,cAAAA,KAAmB,OAASE,EAAAA,UAAAA,CAAWhqC,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACgpC,WAAW,CAAA;EACnG,QAAA,IAAIe,kBAAuB,KAAA,MAAA,IAAUA,kBAAuB,KAAA,OAAA,IAAWA,kBAAuB,KAAA,KAAA,EAAOE,cAAejqC,CAAAA,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAAC+oC,aAAa,CAAA;;UAGjJmB,QAASlqC,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;EAClBmqC,QAAAA,SAAAA,CAAUnqC,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAAC+oC,aAAa,CAAA;EACvCqB,QAAAA,YAAAA,CAAapqC,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAAC+oC,aAAa,CAAA;EAC1CsB,QAAAA,SAAAA,CAAUrqC,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAAC+oC,aAAa,CAAA;EACvCuB,QAAAA,YAAAA,CAAatqC,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAAC+oC,aAAa,CAAA;;UAG1C,IAAIe,cAAAA,KAAmB,KAASA,IAAAA,cAAAA,KAAmB,QAAUE,EAAAA,UAAAA,CAAWhqC,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACgpC,WAAW,CAAA;UACnG,IAAIe,kBAAAA,KAAuB,KAASA,IAAAA,kBAAAA,KAAuB,QAAUE,EAAAA,cAAAA,CAAejqC,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAAC+oC,aAAa,CAAA;UAEjH,IAAI,CAAC/gB,OAAO,GAAG,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqDnB;EAEA;;;QAIAohB,kBAAAA,CAAmBtpC,IAAI,EAAE;UACvB,OAAOA,IAAAA;EACT;EAEA;;;;;OAMAc,MAAAA,CAAOC,QAAQ,EAAE;;UAGf,IAAI,CAAC6Y,OAAO,GAAG;cAACwC,MAAQ,EAAA,CAAA;cAAGC,IAAM,EAAA,CAAA;cAAGF,KAAO,EAAA,CAAA;cAAGD,GAAK,EAAA;EAAC,SAAA;UACpD,IAAI,CAACN,QAAQ,GAAG;cAACQ,MAAQ,EAAA,CAAA;cAAGC,IAAM,EAAA,CAAA;cAAGF,KAAO,EAAA,CAAA;cAAGD,GAAK,EAAA;EAAC,SAAA;;EAGrD,QAAA,IAAI,IAAI,CAAClb,OAAO,KAAK,UAAU,IAAI,CAACA,OAAO,CAACO,IAAI,EAAGiE,CAAAA,OAAO,CAACilC,WAAW,OAAO,KAAO,EAAA;EAClF,YAAA,MAAM/rC,MAAS,GAAA,IAAI,CAACsC,OAAO,KAAK,MAAK,GAAIC,kBAAO,CAAA,MAAA,CAAA,CAAQC,MAAM,CAAC,KAAS,CAAA,GAAA,IAAI,CAACF,OAAO;EACpF,YAAA,MAAM0pC,GAAMhsC,GAAAA,MAAAA,CAAOuC,MAAM,CAAC,aAAesE,CAAAA,CAAAA,IAAI,EAAK7G,GAAAA,MAAAA,CAAOuC,MAAM,CAAC,aAAiBvC,CAAAA,GAAAA,MAAAA,CAAOwC,MAAM,CAAC,KAAA,CAAA;EAC/F,YAAA,IAAI,CAACD,MAAM,CAACypC,GAAAA,CAAInpC,IAAI,EAAA,CAAA;EACtB;EAEA,gEACA,SAASopC,UAAAA,GAAAA;EAEP,YAAA,MAAMC,UAAU,IAAI,CAAC5pC,OAAO,CAACG,KAAK,CAAC,SAAA,CAAA;EACnC,YAAA,IAAI,CAACH,OAAO,CAACG,KAAK,CAAC,SAAW,EAAA,MAAA,CAAA;cAE9B,IAAI,CAACmQ,CAAGzE,EAAAA,CAAAA,CAAE,GAAGg+B,WAAAA,CAAQ,IAAI,CAAC7pC,OAAO,CAACO,IAAI,EAAA,CAAGwG,UAAU,CAAA;EACnDuJ,YAAAA,CAAAA,IAAKxE,WAAW,IAAI,CAAC9L,OAAO,CAACG,KAAK,CAAC,mBAAsB,CAAA,EAAA,EAAA,CAAA;EACzDmQ,YAAAA,CAAAA,IAAKxE,WAAW,IAAI,CAAC9L,OAAO,CAACG,KAAK,CAAC,oBAAuB,CAAA,EAAA,EAAA,CAAA;EAC1D0L,YAAAA,CAAAA,IAAKC,WAAW,IAAI,CAAC9L,OAAO,CAACG,KAAK,CAAC,kBAAqB,CAAA,EAAA,EAAA,CAAA;EACxD0L,YAAAA,CAAAA,IAAKC,WAAW,IAAI,CAAC9L,OAAO,CAACG,KAAK,CAAC,qBAAwB,CAAA,EAAA,EAAA,CAAA;EAC3D,YAAA,IAAI,CAACH,OAAO,CAACG,KAAK,CAAC,SAAWypC,EAAAA,OAAAA,CAAAA;cAE9B,IAAI,IAAI,CAACE,UAAU,EAAE;kBACnB,IAAI,CAACvnC,KAAK,CAAC+N,CAAAA,CAAAA;kBACX,IAAI,CAACtQ,OAAO,CAACG,KAAK,CAAC,OAAS,EAAA,CAAA,EAAG,IAAI,CAACY,MAAM,CAAC,EAAE,CAAC,CAAA,CAAEF,IAAI,CAAC,OAAS,EAAA,CAAA,EAAG,IAAI,CAACE,MAAM,CAAC,EAAE,CAAC,CAAA;EAClF;cACA,IAAI,IAAI,CAACgpC,WAAW,EAAE;kBACpB,IAAI,CAACvnC,MAAM,CAACqJ,CAAAA,CAAAA;kBACZ,IAAI,CAAC7L,OAAO,CAACG,KAAK,CAAC,QAAU,EAAA,CAAA,EAAG,IAAI,CAACc,OAAO,CAAC,EAAE,CAAC,CAAA,CAAEJ,IAAI,CAAC,QAAU,EAAA,CAAA,EAAG,IAAI,CAACI,OAAO,CAAC,EAAE,CAAC,CAAA;EACtF;EAEF;;UAGA,IAAK,CAAA,CAAC,IAAI,CAACF,MAAM,IAAI,CAAC,IAAI,CAACE,OAAO,MAAM,CAAC,IAAI,CAAC+oC,cAAc,IAAIC,cAAAA,CAAW,IAAI,CAACjqC,OAAO,CAACO,IAAI,EAAA,CAAE,CAAI,EAAA;EAChG,YAAA,IAAI,CAACupC,UAAU,GAAG,IAAI,CAAC/oC,MAAM,KAAKnG,SAAAA;EAClC,YAAA,IAAI,CAACmvC,WAAW,GAAG,IAAI,CAAC9oC,OAAO,KAAKrG,SAAAA;cACpC+uC,UAAWzqC,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;EACtB;UAEA,IAAI,CAACc,OAAO,CACPa,IAAI,CAAC,OAAS,EAAA,YAAA,CAAA,CACdA,IAAI,CAAC,aAAe,EAAA,IAAI,CAAC4wB,WAAW,EACpC5wB,IAAI,CAAC,iBAAmB,EAAA,CAAA,EAAG,IAAI,CAAC1C,KAAK,CAAC,OAAO,EAAE,IAAI,CAACA,KAAK,CAAC,KAAK,CAAC,CAAA,CAChE0C,IAAI,CAAC,MAAQ,EAAA,KAAA,CAAA,CACbA,IAAI,CAAC,OAAS,EAAA,4BAAA,CAAA,CACdA,IAAI,CAAC,aAAe,EAAA,8BAAA,CAAA,CACtBM,UAAU,EAAG1C,CAAAA,QAAQ,CAAC,IAAI,CAACC,SAAS,CAClCyB,CAAAA,KAAK,CAAC,OAAA,EAAS,IAAI,CAACY,MAAM,KAAKnG,YAAY,CAAG,EAAA,IAAI,CAACmG,MAAM,CAAC,EAAE,CAAC,GAAGnG,SAChEuF,CAAAA,CAAAA,KAAK,CAAC,QAAA,EAAU,IAAI,CAACc,OAAO,KAAKrG,SAAAA,GAAY,CAAG,EAAA,IAAI,CAACqG,OAAO,CAAC,EAAE,CAAC,GAAGrG,SACnEiG,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS,IAAI,CAACE,MAAM,KAAKnG,SAAAA,GAAY,CAAG,EAAA,IAAI,CAACmG,MAAM,CAAC,EAAE,CAAC,GAAGnG,SAC/DiG,CAAAA,CAAAA,IAAI,CAAC,QAAA,EAAU,IAAI,CAACI,OAAO,KAAKrG,SAAY,GAAA,CAAA,EAAG,IAAI,CAACqG,OAAO,CAAC,EAAE,CAAC,GAAGrG,SAAAA,CAAAA;;UAGvE,MAAM8C,MAAAA,GAASuC,mBAAO,IAAI,CAACD,OAAO,CAACO,IAAI,GAAGwG,UAAU,CAAA;UACpD,MAAM8R,QAAAA,GAAWnb,MAAOyC,CAAAA,KAAK,CAAC,UAAA,CAAA;EAC9B,QAAA,IAAI0Y,QAAa,KAAA,QAAA,EAAUnb,MAAOyC,CAAAA,KAAK,CAAC,UAAY,EAAA,UAAA,CAAA;EACpDzC,QAAAA,MAAAA,CAAOyC,KAAK,CAAC,aAAA,EAAeu+B,wBAAoB,CAAA,IAAI,CAAC5O,WAAW,CAAA,CAAA;;EAGhE,QAAA,IAAI,IAAI,CAAC9vB,OAAO,CAACa,IAAI,CAAC,SAAA,CAAA,KAAe,IAAM,EAAA,IAAI,CAACb,OAAO,CAACa,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA;;UAGxE,MAAMqpC,QAAAA,GAAW,IAAI,CAAClqC,OAAO,CAACS,SAAS,CAAC,OAASzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;EACzD,QAAA,MAAMmrC,gBAAgBD,QAAStpC,CAAAA,KAAK,EAAGV,CAAAA,MAAM,CAAC,OAASW,CAAAA,CAAAA,IAAI,CAAC,IAAA,EAAM,GAAG,IAAI,CAAC1C,KAAK,CAAC,MAAM,CAAC,CAAA;EACvF+rC,QAAAA,QAAAA,CAAS5oC,KAAK,CAAC6oC,aAAAA,CAAAA,CAAe/gC,IAAI,CAAC,IAAI,CAACghC,SAAS,CAAA;;UAGjD,MAAMC,OAAAA,GAAU,IAAI,CAACrqC,OAAO,CAACS,SAAS,CAAC,MAAQzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;EACvD,QAAA,MAAMsrC,eAAeD,OAAQzpC,CAAAA,KAAK,EAAGV,CAAAA,MAAM,CAAC,MAAQW,CAAAA,CAAAA,IAAI,CAAC,IAAA,EAAM,GAAG,IAAI,CAAC1C,KAAK,CAAC,KAAK,CAAC,CAAA;EACnFksC,QAAAA,OAAAA,CAAQ/oC,KAAK,CAACgpC,YAAAA,CAAAA,CAAclhC,IAAI,CAAC,IAAI,CAACmhC,QAAQ,CAAA;EAE9C,QAAA,IAAI,CAACC,YAAY,GAAGzW,aAAc,CAAA,IAAI,CAACyW,YAAY,CAAA;EACnD,QAAA,IAAI,CAACC,WAAW,GAAGC,YAAa,CAAA,IAAI,CAACD,WAAW,CAAA;EAChD,QAAA,IAAI,CAACE,WAAW,GAAGD,YAAa,CAAA,IAAI,CAACC,WAAW,CAAA;EAChD1qC,QAAAA,kBAAAA,CAAO,IAAI,CAAC2qC,gBAAgB,CAAA,CAAEptC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAACW,KAAK,EAAE,EAAE,IAAA,CAAA;EACzD8B,QAAAA,kBAAAA,CAAO,IAAI,CAAC4qC,gBAAgB,CAAA,CAAErtC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAACW,KAAK,EAAE,EAAE,IAAA,CAAA;UACzD,IAAI,IAAI,CAAC6rC,cAAc,IAAI,IAAI,CAAChqC,OAAO,CAACG,KAAK,CAAC,YAAA,CAAA,KAAkB,QAAU,EAAA;cAExE,IAAI,CAACqqC,YAAY,GAAG7R,WAAY,CAAA,IAAA;EAC9B,gBAAA,IAAI,IAAI,CAAC34B,OAAO,CAACG,KAAK,CAAC,kBAAkB,QAAU,EAAA;EACjD,oBAAA,IAAI,CAACqqC,YAAY,GAAGzW,aAAc,CAAA,IAAI,CAACyW,YAAY,CAAA;sBACnD,IAAI,CAAC1qC,MAAM,CAACC,QAAAA,CAAAA;EACd;eACC,EAAA,IAAI,CAAC+qC,sBAAsB,CAAA;EAEhC,SAAA,MACK,IAAI,IAAI,CAACd,cAAc,IAAI,IAAI,CAAChqC,OAAO,CAACG,KAAK,CAAC,SAAA,CAAA,KAAe,MAAQ,EAAA;cAExE,IAAI,CAACqqC,YAAY,GAAG7R,WAAY,CAAA,IAAA;EAC9B,gBAAA,IAAI,IAAI,CAAC34B,OAAO,CAACG,KAAK,CAAC,eAAe,MAAQ,EAAA;EAC5C,oBAAA,IAAI,CAACqqC,YAAY,GAAGzW,aAAc,CAAA,IAAI,CAACyW,YAAY,CAAA;sBACnD,IAAI,CAAC1qC,MAAM,CAACC,QAAAA,CAAAA;EACd;eACC,EAAA,IAAI,CAAC+qC,sBAAsB,CAAA;EAEhC,SAAA,MACK,IAAI,IAAI,CAACd,cAAc,IAAI,CAACC,cAAW,CAAA,IAAI,CAACjqC,OAAO,CAACO,IAAI,EAAK,CAAA,EAAA;EAEhEN,YAAAA,kBAAAA,CAAO,IAAI,CAAC2qC,gBAAgB,CAAA,CAAEptC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAACW,KAAK,EAAE,EAAE,IAAA;EACvD,gBAAA,IAAI,CAAC,IAAI,CAACwsC,WAAW,EAAE;sBACrB,IAAI,CAACA,WAAW,GAAG5nC,UAAW,CAAA,IAAA;EAC5B,wBAAA,IAAIknC,eAAW,IAAI,CAACjqC,OAAO,CAACO,IAAI,EAAK,CAAA,EAAA;EACnCN,4BAAAA,kBAAAA,CAAO,IAAI,CAAC2qC,gBAAgB,CAAA,CAAEptC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAACW,KAAK,EAAE,EAAE,IAAA,CAAA;8BACzD,IAAI,CAAC2B,MAAM,CAACC,QAAAA,CAAAA;EACd;EACA,wBAAA,IAAI,CAAC4qC,WAAW,GAAGD,YAAa,CAAA,IAAI,CAACC,WAAW,CAAA;uBAC/C,EAAA,IAAI,CAACG,sBAAsB,CAAA;EAChC;EACF,aAAA,CAAA;WAGG,MAAA;EACH,YAAA,MAAMC,CAAIC,GAAAA,aAAAA,EAAAA;EAEV,YAAA,IAAI,CAACC,MAAM,CAACnuC,OAAO,CAAC2U,CAAAA,CAAAA,GAAAA;kBAClB,MAAMy5B,KAAAA,GAAQ,IAAI,CAACC,MAAM,GACrB,IAAI,CAACC,SAAS,CAACC,GAAG,CAAC,GAAG55B,CAAC,CAAC,EAAE,CAAC,CAAC,EAAEA,CAAC,CAAC,CAAE,CAAA,CAAA,CAAE,CACpC7W,GAAAA,SAAAA;EACJ,gBAAA,IAAI,CAACswC,KAAAA,EAAOH,CAAEO,CAAAA,KAAK,CAAI75B,GAAAA,CAAAA,CAAAA;EAClB,qBAAA,IAAI,CAAC,CAAC,CAAC,EAAEA,CAAC,CAAC,EAAE,CAAE,CAAA,CAAC,GAAGA,CAAC,CAAC,CAAE,CAAA,GAAGA,CAAC,CAAC,CAAA,CAAE,CAACy5B,KAASA,CAAAA,GAAAA,KAAAA;EAC/C,aAAA,CAAA;cACA,IAAI,CAACD,MAAM,GAAG,EAAE;cAEhB,IAAI,IAAI,CAACM,eAAe,IAAIR,EAAES,MAAM,CAACruC,MAAM,EAAE;EAC3C,gBAAA,IAAI,CAACyrC,aAAa,CAAC9oC,MAAM,CAAC;EACxB8uB,oBAAAA,SAAAA,EAAW,IAAI,CAAC5uB,OAAO,CAACO,IAAI,GAAGwG,UAAU;EACzC8nB,oBAAAA,IAAAA,EAAM,IAAI,CAAC4c,YAAY,CAAC,IAAI,CAAA;EAC5B9c,oBAAAA,IAAAA,EAAM,IAAI,CAACsZ,aAAa,GAAG,IAAI,CAACyD,YAAY,GAAG,KAAA;sBAC/CvrC,KAAO,EAAA,IAAI,CAAC2oC;EACd,iBAAA,CAAA;EACF;EAEAiC,YAAAA,CAAAA,CAAEY,QAAQ,CAAC,IAAA;;;kBAIT,MAAMC,OAAAA,GAAU,IAAI,CAAClrC,KAAK,YAAYjB,KAAS,IAAA,IAAI,CAACiB,KAAK,CAACvD,MAAM,GAAG,CAAIlB,GAAAA,MAAAA,CAAO2H,IAAI,CAAC,IAAI,CAAClD,KAAK,CAAC,CAAE,CAAA,CAAA,GAAI,EAAE;kBACtG,MAAMmrC,QAAAA,GAAW,IAAI,CAAC7rC,OAAO,CAACS,SAAS,CAAC,cAAA,CAAA,CACrCzB,IAAI,CAAC,CAAC,IAAI,CAACyyB,WAAW,IAAI,IAAI,CAAC/wB,KAAK,YAAYjB,KAAS,IAAA,IAAI,CAACiB,KAAK,CAACvD,MAAM,GAAG;EAAC,oBAAA;EAAE,iBAAA,GAAG,EAAE,CAAA;EACxF,gBAAA,MAAM2uC,aAAgBD,GAAAA,QAAAA,CAASjrC,KAAK,EAAA,CAAGV,MAAM,CAAC,GAC3CW,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS,YACdA,CAAAA,CAAAA,IAAI,CAAC,MAAQ,EAAA,OAAA,CAAA;kBAChBgrC,QAAShpC,CAAAA,IAAI,GAAGC,MAAM,EAAA;kBACtB,MAAMipC,IAAAA,GAAOF,QAASvqC,CAAAA,KAAK,CAACwqC,aAAAA,CAAAA,CACzBrrC,SAAS,CAAC,MAAA,CAAA,CACVzB,IAAI,CAAC,IAAI,CAAC0B,KAAK,YAAYjB,KAAAA,GAAQiX,aAAM,CAAA,CAAA,EAAG,IAAI,CAAChW,KAAK,CAACvD,MAAM,GAAG,CAAA,CAAA,GAAK,EAAE,CAAA;kBAC1E4uC,IAAKlpC,CAAAA,IAAI,GAAGC,MAAM,EAAA;kBAClB,MAAMkpC,KAAAA,GAAQD,IAAKzqC,CAAAA,KAAK,CAACyqC,IAAAA,CAAKnrC,KAAK,EAAA,CAAGV,MAAM,CAAC,MAAQW,CAAAA,CAAAA,IAAI,CAAC,MAAA,EAAQ,KAC/DJ,CAAAA,CAAAA,CAAAA,SAAS,CAAC,OAAA,CAAA,CACVzB,IAAI,CAAC,CAACnE,CAAAA,EAAGgE,CAAM+sC,GAAAA,OAAAA,CAAQpsC,GAAG,CAACkO,CAAAA,CAAAA,IAAM;EAChCd,4BAAAA,IAAAA,EAAM/N,IAAI,MAAS,GAAA,cAAA;8BACnBuK,IAAMvK,EAAAA,CAAAA,GAAI,IAAI,CAAC6B,KAAK,CAAC7B,CAAI,GAAA,CAAA,CAAE,CAAC6O,CAAAA,CAAE,GAAGA;2BACnC,CAAA,CAAA,CAAA;kBACFs+B,KAAMnpC,CAAAA,IAAI,GAAGC,MAAM,EAAA;kBACnBkpC,KAAM1qC,CAAAA,KAAK,CAAC0qC,KAAAA,CAAMprC,KAAK,EAAA,CAAGV,MAAM,CAAC,OAAA,CAAA,CAAA,CAC9BW,IAAI,CAAC,MAAQhG,EAAAA,CAAAA,IAAKA,CAAE+R,CAAAA,IAAI,CACxB/L,CAAAA,IAAI,CAAC,IAAA,EAAM,SACXguB,CAAAA,CAAAA,IAAI,CAACh0B,CAAAA,CAAKA,GAAAA,CAAAA,CAAEuO,IAAI,CAAA;;EAGnB,gBAAA,IAAI,CAACm+B,QAAQ,EAAA;kBACb,IAAI,CAACwB,KAAK,CAAChpC,QAAAA,CAAAA;kBACXksC,YAAa/sC,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;kBACtBgtC,eAAgBhtC,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;EAEzB,gBAAA,IAAI,IAAI,CAAC0pC,aAAa,CAACna,UAAU,KAAK,CAAC,IAAI,CAACka,cAAc,IAAI,IAAI,CAACV,aAAa,CAAC9qC,MAAM,CAAG,EAAA;sBACxF,IAAI,CAACyrC,aAAa,CAACla,IAAI,EAAA;sBACvB,IAAI,IAAI,CAAC1uB,OAAO,CAACa,IAAI,CAAC,SAAA,CAAA,KAAe,GAAK,EAAA,IAAI,CAACb,OAAO,CAACmB,UAAU,EAAA,CAAG1C,QAAQ,CAAC,IAAI,CAACC,SAAS,CAAA,CAAEmC,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA;EAC/G;EAEA,gBAAA,IAAI,IAAI,CAACsrC,aAAa,KAAK,IAAI,CAACrC,UAAU,IAAI,IAAI,CAACC,WAAW,CAAG,EAAA;EAC/D9pC,oBAAAA,kBAAAA,CAAO,IAAI,CAAC4qC,gBAAgB,CAAA,CAAErtC,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAACW,KAAK,EAAE,EAAE,IAAA;EACvD,wBAAA,IAAI,CAACssC,WAAW,GAAGC,YAAa,CAAA,IAAI,CAACD,WAAW,CAAA;0BAChD,IAAI,CAACA,WAAW,GAAG1nC,UAAW,CAAA,IAAA;EAC5B,4BAAA,IAAI,CAAC0nC,WAAW,GAAGC,YAAa,CAAA,IAAI,CAACD,WAAW,CAAA;8BAChDd,UAAWzqC,CAAAA,IAAI,CAAC,IAAI,CAAA,EAAA;8BACpB,IAAI,CAACY,MAAM,CAACC,QAAAA,CAAAA;2BACX,EAAA,IAAI,CAACqsC,kBAAkB,CAAA;EAC5B,qBAAA,CAAA;EACF;EAEA,gBAAA,IAAIrsC,UAAUgD,UAAWhD,CAAAA,QAAAA,EAAU,IAAI,CAACrB,SAAS,GAAG,GAAA,CAAA;EACtD,aAAA,CAAA;EAEF;;EAGAuB,QAAAA,kBAAAA,CAAO,MAAQzC,CAAAA,CAAAA,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,CAACW,KAAK,CAAE,CAAA,EAAEkuC,cAAentC,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAA;EAEtE,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMA6M,MAAAA,CAAOpP,CAAC,EAAE;UAER,IAAI,CAACuK,OAAO,GAAGvK,CAAAA;EAEf,QAAA,IAAI,IAAI,CAACoB,YAAY,CAACiO,aAAa,KAAK,CAAG,EAAA;cACzC,IAAI,CAACkb,OAAO,CAACpqB,OAAO,CAAChC,CAAAA,CAAAA,GAAKA,CAAEiR,CAAAA,MAAM,CAACpP,CAAAA,CAAAA,CAAAA;cACnC,IAAI,IAAI,CAACgkC,OAAO,EAAE,IAAI,CAACnT,YAAY,CAACzhB,MAAM,CAACpP,CAAAA,CAAAA;EAC7C;EAEA,QAAA,OAAO,IAAI;EACb;EAEA;;;;;OAMA2vC,IAAAA,CAAK3vC,CAAC,EAAE;EACN,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8iC,KAAK,GAAGhjC,UAAAA,CAAO,IAAI,CAACgjC,KAAK,EAAEtjC,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACsjC,KAAK;EACnF;EAEA;;;;;OAMA/M,UAAAA,CAAWv2B,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACs0B,WAAW,GAAG90B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC80B,WAAW;EAC3E;EAEA;;;;;OAMA8a,WAAAA,CAAY5vC,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4nC,YAAY,GAAGpoC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACooC,YAAY;EAC7E;EAEA;;;;;OAMAyH,gBAAAA,CAAiB7vC,CAAC,EAAE;EAClB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8nC,iBAAiB,GAAGhoC,UAAAA,CAAO,IAAI,CAACgoC,iBAAiB,EAAEtoC,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACsoC,iBAAiB;EACvH;EAEA;;;;;OAMAwH,UAAAA,CAAW9vC,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2hC,WAAW,GAAG7hC,UAAAA,CAAO,IAAI,CAAC6hC,WAAW,EAAEniC,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmiC,WAAW;EACrG;EAEA;;;;;OAMAoM,KAAAA,CAAMvuC,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACguC,MAAM,GAAGxuC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACwuC,MAAM;EACjE;EAEA;;;;;OAMAx9B,KAAAA,CAAMhR,CAAC,EAAE;UACP,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACirB,MAAM,GAAG,CAACzrB,CAAAA,IAAK,OAAOA,CAAM,KAAA,UAAA,GAAaA,IAAI2G,QAAS3G,CAAAA,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACyrB,MAAM;EAC/G;EAEA;;;;;OAMAskB,UAAAA,CAAW/vC,CAAC,EAAE;UACZ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAAC2sB,WAAW,GAAG,CAACntB,CAAAA,IAAK,OAAOA,CAAM,KAAA,UAAA,GAAaA,IAAI2G,QAAS3G,CAAAA,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACmtB,WAAW;EACzH;EAEA;;;;;OAMA6iB,gBAAAA,CAAiBhwC,CAAC,EAAE;EAClB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACkiC,iBAAiB,GAAGpiC,UAAAA,CAAO,IAAI,CAACoiC,iBAAiB,EAAE1iC,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC0iC,iBAAiB;EACvH;EAEA;;;;;OAMAuN,iBAAAA,CAAkBjwC,CAAC,EAAE;EACnB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC+hC,kBAAkB,GAAG,OAAOviC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACuiC,kBAAkB;EACjI;EAEA;;;;;OAMA+J,kBAAAA,CAAmBtsC,CAAC,EAAE;EACpB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4hC,mBAAmB,GAAG,OAAOpiC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoiC,mBAAmB;EACnI;EAEA;;;;;OAMA8N,iBAAAA,CAAkBlwC,CAAC,EAAE;EACnB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACgiC,kBAAkB,GAAGxiC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACwiC,kBAAkB;EACzF;EAEA;;;;;;;;;;;;;;EAcA,KACAngC,IAAKrC,CAAAA,CAAC,EAAEc,CAAC,EAAE;UACT,IAAIP,SAAAA,CAAUC,MAAM,EAAE;EACpB2vC,YAAAA,eAAAA,CAAW5tC,IAAI,CAAC,IAAI,CAAA,CAAEvC,GAAGc,CAAG,EAAA,MAAA,CAAA;cAC5B,IAAI,CAAC6iC,OAAO,GAAG,EAAE;cACjB,IAAI,CAACC,KAAK,GAAG,EAAE;EACf,YAAA,IAAI,IAAI,CAACwM,SAAS,IAAItmC,KAAKC,SAAS,CAAC/J,CAAO8J,CAAAA,KAAAA,IAAAA,CAAKC,SAAS,CAAC,IAAI,CAACqmC,SAAS,CAAG,EAAA;kBAC1E,IAAI,CAACjF,WAAW,GAAG,KAAA;kBACnB,IAAI,CAAC1G,kBAAkB,GAAG,KAAA;EAC5B;cACA,IAAI,CAAC2L,SAAS,GAAGpwC,CAAAA;EACjB,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAAC+D,KAAK;EACnB;EAEA;;;;;OAMAssC,UAAAA,CAAWrwC,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACqrC,WAAW,GAAG7rC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC6rC,WAAW;EAC3E;EAEA;;;;;OAMA9C,KAAAA,CAAM/oC,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwoC,MAAM,GAAGhpC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgpC,MAAM;EACjE;EAEA;;;;;OAMAsH,YAAAA,CAAatwC,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACgvC,aAAa,GAAGxvC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACwvC,aAAa;EAC/E;EAEA;;;;;OAMAe,iBAAAA,CAAkBvwC,CAAC,EAAE;EACnB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACivC,kBAAkB,GAAGzvC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACyvC,kBAAkB;EACzF;EAEA;;;;;OAMAe,aAAAA,CAAcxwC,CAAC,EAAE;EACf,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6sC,cAAc,GAAGrtC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACqtC,cAAc;EACjF;EAEA;;;;;OAMAoD,qBAAAA,CAAsBzwC,CAAC,EAAE;EACvB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2tC,sBAAsB,GAAGnuC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmuC,sBAAsB;EACjG;EAEA;;;;;OAMA1+B,QAAAA,CAASzP,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6G,SAAS,GAAGrH,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACqH,SAAS;EACvE;EAEA;;;;;OAMAqpC,cAAAA,CAAe1wC,CAAC,EAAE;EAChB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACmwC,eAAe,GAAG3wC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC2wC,eAAe;EACnF;EAEA;;;;;OAMAC,cAAAA,CAAe5wC,CAAC,EAAE;EAChB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqwC,eAAe,GAAGvwC,UAAAA,CAAO,IAAI,CAACuwC,eAAe,EAAE7wC,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6wC,eAAe;EACjH;EAEA;;;;;OAMAC,gBAAAA,CAAiB9wC,CAAC,EAAE;EAClB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuwC,iBAAiB,GAAG/wC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+wC,iBAAiB;EACvF;EAEA;;;;;OAMAjvC,QAAAA,CAAS9B,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuB,SAAS,GAAG/B,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+B,SAAS;EACvE;EAEA;;;;;OAMArC,MAAAA,CAAOM,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACsoC,OAAO,GAAG9oC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC8oC,OAAO;EACnE;EAEA;;;;;OAMAnmB,UAAAA,CAAW3iB,CAAC,EAAE;UACZ,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,MAAM8L,WAAc,GAAA;kBAACqW,UAAY3iB,EAAAA;EAAC,aAAA;EAElC,YAAA,MAAM8uB,UAAa,GAAA;kBAACnH,WAAarb,EAAAA,WAAAA;kBAAanL,WAAa,EAAA;EAACmL,oBAAAA;EAAW;EAAC,aAAA;cAExE,IAAI,CAACnL,WAAW,CAAC;EAACmL,gBAAAA;EAAW,aAAA,CAAA;cAC7B,IAAI,CAAC0jC,gBAAgB,CAAC;EAAClhB,gBAAAA;EAAU,aAAA,CAAA;EAEjC,YAAA;EAAC,gBAAA,MAAA;EAAQ,gBAAA,QAAA;EAAU,gBAAA,KAAA;EAAO,gBAAA,UAAA;EAAY,gBAAA,GAAA;EAAK,gBAAA,GAAA;EAAK,gBAAA,IAAA;EAAM,gBAAA;eAAK,CAAC3uB,OAAO,CAAC6wC,CAAAA,IAAAA,GAAAA;EAClE,gBAAA,MAAM/mC,MAAS,GAAA,CAAA,EAAG+mC,IAAK,CAAA,MAAM,CAAC;EAC9B,gBAAA,IAAI,IAAI,CAAC/mC,MAAAA,CAAO,EAAE,IAAI,CAACA,OAAO,CAAC6kB,UAAAA,CAAAA;EACjC,aAAA,CAAA;EACA,YAAA;EAAC,gBAAA,MAAA;EAAQ,gBAAA,OAAA;EAAS,gBAAA,OAAA;EAAS,gBAAA;eAAW,CAAC3uB,OAAO,CAAC4P,CAAAA,KAAAA,GAAAA;EAC7C,gBAAA,MAAM9F,MAAS,GAAA,CAAA,EAAG8F,KAAM,CAAA,MAAM,CAAC;EAC/B,gBAAA,IAAI,IAAI,CAAC9F,MAAAA,CAAO,EAAE,IAAI,CAACA,OAAO,CAACqC,WAAAA,CAAAA;EACjC,aAAA,CAAA;cAEA,IAAI,CAAC2kC,aAAa,CAAC;kBAACrP,YAAc,EAAA;EAAC,oBAAA,aAAA,EAAeG,wBAAoB/hC,CAAAA,CAAAA;EAAE;EAAC,aAAA,CAAA;cAEzE,IAAI,CAACmzB,WAAW,GAAGnzB,CAAAA;EACnB,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACmzB,WAAW;EACzB;EAEA;;;;;;;;;OAUA+d,OAAAA,CAAQlxC,CAAC,EAAE;EACT,QAAA,IAAI,CAACO,SAAUC,CAAAA,MAAM,EAAE,OAAO,IAAI,CAACgoC,QAAQ;UAC3C,IAAI,CAAC2I,WAAW,GAAGnxC,CAAAA;EACnB,QAAA,IAAI,EAAEA,CAAa8C,YAAAA,KAAI,GAAI9C,CAAI,GAAA;EAACA,YAAAA;EAAE,SAAA;EAClC,QAAA,OAAO,IAAI,CAACwoC,QAAQ,GAAGxoC,CAAE6C,CAAAA,GAAG,CAACzC,CAAAA,CAAAA,GAAAA;cAC3B,IAAI,OAAOA,CAAM,KAAA,UAAA,EAAY,OAAOA,CAAAA;EAC/B,iBAAA;EACH,gBAAA,IAAI,CAAC,IAAI,CAACkjC,KAAK,CAACljC,EAAE,EAAE;EAClB,oBAAA,IAAI,CAACkjC,KAAK,CAACljC,CAAE,CAAA,GAAG,CAAC6M,CAAG8D,EAAAA,CAAAA,GAAAA;EAClB,wBAAA,MAAM1Q,IAAI8M,WAAOF,CAAAA,CAAAA,CAAEpK,GAAG,CAACkO,CAAAA,CAAAA,CAAGlO,GAAG,CAACqtB,MAAAA,CAAAA,CAAAA;EAC9B,wBAAA,OAAO7vB,EAAEG,MAAM,KAAK,IAAIH,CAAC,CAAC,EAAE,GAAGA,CAAAA;EACjC,qBAAA;EACF;EACA,gBAAA,OAAOsG,QAASvG,CAAAA,CAAAA,CAAAA;EAClB;EACF,SAAA,CAAA,EAAI,IAAI;EACV;EAEA;;;;;OAMAyF,MAAAA,CAAO7F,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC8D,OAAO,GAAGtE,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACsE,OAAO;EACnE;EAEA;;;;;OAMA8sC,WAAAA,CAAYpxC,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACyjC,YAAY,GAAG,OAAOjkC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACikC,YAAY;EACrH;EAEA;;;;;OAMAoN,aAAAA,CAAcrxC,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0jC,cAAc,GAAG,OAAOlkC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkkC,cAAc;EACzH;EAEA;;;;;OAMAv0B,KAAAA,CAAM3P,CAAC,EAAE;EAEP,QAAA,IAAIsxC,aAAgB,GAAA,IAAI,CAACxmC,MAAM,GAAG9K,CAAAA;EAElC,QAAA,IAAI,IAAI,CAACoB,YAAY,CAACyO,YAAY,KAAK,CAAG,EAAA;cAExC,IAAI,OAAO7P,MAAM,UAAY,EAAA;kBAE3B,IAAI+V,SAAAA,GAAYw7B,aAAW,CAAA,IAAI,CAAChnB,OAAO,CAAC1nB,GAAG,CAAC1E,CAAAA,CAAKA,GAAAA,CAAAA,CAAEkE,IAAI,EAAA,CAAA,CAAA;EACvD0T,gBAAAA,SAAAA,GAAYA,UAAU1W,MAAM,CAAC,IAAI,CAACwxB,YAAY,CAACxuB,IAAI,EAAA,CAAA;EACnD,gBAAA,MAAMmvC,aAAaxxC,CAAI+V,GAAAA,SAAAA,CAAUrW,MAAM,CAACM,KAAK,EAAE;EAE/C,gBAAA,IAAIyxC,YAAY,EAAE;kBAClBD,UAAW3uC,CAAAA,GAAG,CAAC,IAAI,CAAC2gC,IAAI,CAAErjC,CAAAA,OAAO,CAACuxC,CAAAA,GAAAA,GAAAA;EAChC,oBAAA,IAAK,IAAIjrC,CAAI,GAAA,CAAA,EAAGA,KAAKirC,GAAIlxC,CAAAA,MAAM,EAAEiG,CAAK,EAAA,CAAA;0BACpCgrC,SAAU7lC,CAAAA,IAAI,CAAC9B,IAAKC,CAAAA,SAAS,CAAC2nC,GAAI7iC,CAAAA,KAAK,CAAC,CAAGpI,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;EAC7C;EACF,iBAAA,CAAA;kBACAgrC,SAAYA,GAAAA,SAAAA,CAAU/xC,MAAM,CAAC,CAAC2G,IAAInE,CAAMuvC,GAAAA,SAAAA,CAAU7xC,OAAO,CAACyG,EAAQnE,CAAAA,KAAAA,CAAAA,CAAAA;EAElE,gBAAA,IAAIuvC,UAAUjxC,MAAM,EAAE8wC,aAAgB,GAAA,CAACpzC,GAAGgE,CAAMuvC,GAAAA,SAAAA,CAAU5xC,QAAQ,CAACiK,KAAKC,SAAS,CAAC,IAAI,CAACy5B,IAAI,CAACtlC,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;EAEjG;cAEA,IAAI,CAACqoB,OAAO,CAACpqB,OAAO,CAAChC,CAAAA,CAAAA,GAAKA,CAAEwR,CAAAA,KAAK,CAAC2hC,aAAAA,CAAAA,CAAAA;cAClC,IAAI,IAAI,CAACtN,OAAO,EAAE,IAAI,CAACnT,YAAY,CAAClhB,KAAK,CAAC2hC,aAAAA,CAAAA;EAE5C;EAEA,QAAA,OAAO,IAAI;EACb;EAEA;;;;;OAMAvhC,KAAAA,CAAM/P,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACyL,MAAM,GAAG,OAAOjM,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACiM,MAAM;EACzG;EAEA;;;;;OAMA0lC,MAAAA,CAAO3xC,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACwjC,OAAO,GAAG,OAAOhkC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACgkC,OAAO;EAC3G;EAEA;;;;;OAMAxT,YAAAA,CAAaxwB,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACowB,aAAa,GAAGtwB,UAAAA,CAAO,IAAI,CAACswB,aAAa,EAAE5wB,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC4wB,aAAa;EAC3G;EAEA;;;;;OAMAghB,kBAAAA,CAAmB5xC,CAAC,EAAE;EACpB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4oC,mBAAmB,GAAG,OAAOppC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACopC,mBAAmB;EACnI;EAEA;;;;;OAMAyI,aAAAA,CAAc7xC,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACujC,cAAc,GAAG,OAAO/jC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC+jC,cAAc;EACzH;EAEA;;;;;OAMAsI,cAAAA,CAAersC,CAAC,EAAE;EAChB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACsjC,eAAe,GAAG,OAAO9jC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC8jC,eAAe;EAC3H;EAEA;;;;;OAMAgO,UAAAA,CAAW9xC,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+iC,WAAW,GAAGvjC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACujC,WAAW;EAC3E;EAEA;;;;;OAMAwO,aAAAA,CAAc/xC,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4pC,cAAc,GAAG9pC,UAAAA,CAAO,IAAI,CAAC8pC,cAAc,EAAEpqC,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoqC,cAAc;EAC9G;EAEA;;;;;OAMA4H,WAAAA,CAAYhyC,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACsuC,YAAY,GAAG,OAAO9uC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC8uC,YAAY;EACrH;EAEA;;;;;OAMAmD,cAAAA,CAAejyC,CAAC,EAAE;EAChB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACouC,eAAe,GAAG5uC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC4uC,eAAe;EACnF;EAEA;;;;;OAMAsD,WAAAA,CAAYlyC,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuuC,YAAY,GAAG/uC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+uC,YAAY;EAC7E;EAEA;;;;;OAMAoD,YAAAA,CAAanyC,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2rC,aAAa,GAAG7rC,UAAAA,CAAO,IAAI,CAAC6rC,aAAa,EAAEnsC,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmsC,aAAa;EAC3G;EAEA;;;;;OAMAiG,UAAAA,CAAWpyC,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0rC,WAAW,GAAG,OAAOlsC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACksC,WAAW;EACnH;EAEA;;;;;OAMAmG,aAAAA,CAAcryC,CAAC,EAAE;EACf,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwrC,cAAc,GAAGhsC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgsC,cAAc;EACjF;EAEA;;;;;OAMAsG,eAAAA,CAAgBtyC,CAAC,EAAE;EACjB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC0tC,gBAAgB,GAAGluC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACkuC,gBAAgB;EACrF;EAEA;;;;;OAMAqE,eAAAA,CAAgBvyC,CAAC,EAAE;EACjB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACytC,gBAAgB,GAAGjuC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACiuC,gBAAgB;EACrF;EAEA;;;;;OAMA3qC,MAAAA,CAAOtD,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6C,OAAO,GAAGC,kBAAAA,CAAOtD,IAAI,IAAG,IAAK,IAAI,CAACqD,OAAO;EAC3E;EAEA;;;;;OAMAkkB,KAAAA,CAAMvnB,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4d,MAAM,GAAG,OAAOpe,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoe,MAAM;EACzG;EAEA;;;;;OAMAjd,WAAAA,CAAYnB,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACY,YAAY,GAAGd,UAAAA,CAAO,IAAI,CAACc,YAAY,EAAEpB,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACoB,YAAY;EACxG;EAEA;;;;;OAMAoxC,QAAAA,CAASxyC,CAAC,EAAE;EACV,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2jC,SAAS,GAAG,OAAOnkC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmkC,SAAS;EAC/G;EAEA;;;;;OAMAsO,cAAAA,CAAezyC,CAAC,EAAE;EAChB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8jC,eAAe,GAAGhkC,UAAAA,CAAO,IAAI,CAACgkC,eAAe,EAAEtkC,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACskC,eAAe;EACjH;EAEA;;;;;OAMAoO,eAAAA,CAAgB1yC,CAAC,EAAE;EACjB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4jC,gBAAgB,GAAG,OAAOpkC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACokC,gBAAgB;EAC7H;EAEA;;;;;OAMAsJ,OAAAA,CAAQ1tC,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACotC,QAAQ,GAAG5tC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC4tC,QAAQ;EACrE;EAEA;;;;;OAMAL,QAAAA,CAASvtC,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACitC,SAAS,GAAGztC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACytC,SAAS;EACvE;EAEA;;;;;QAMAkF,SAAAA,CAAU3yC,CAAC,EAAE;UACX,IAAIO,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,OAAOR,MAAM,UAAY,EAAA;kBAC3B,IAAI,CAACirC,UAAU,GAAGjrC,CAAAA;EACpB,aAAA,MACK,IAAI4yC,QAAAA,CAAS5yC,CAAM,CAAA,IAAA,CAAC6e,MAAM7e,CAAI,CAAA,EAAA;EACjC,gBAAA,IAAI,CAACirC,UAAU,GAAGhoC,QAAAA,CAASjD,CAAI,GAAA,CAAA,CAAA;EACjC;EACA,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACirC,UAAU;EAC7B;EAEA;;;;;QAMA4H,YAAAA,CAAa90C,GAAG,EAAE;UAChB,IAAIwC,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,OAAOzC,QAAQ,UAAY,EAAA;kBAC7B,IAAI,CAAC+0C,aAAa,GAAG/0C,GAAAA;eAElB,MAAA;kBACH,IAAI,CAAC+0C,aAAa,GAAGnsC,QAAS5I,CAAAA,GAAAA,CAAAA;EAChC;EACA,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAAC+0C,aAAa;EAChC;EAEA;;;;;QAMAC,aAAAA,CAAc/yC,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACwqC,cAAc,GAAG,OAAOhrC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACgrC,cAAc;EACzH;EAEA;;;;;OAMAgI,IAAAA,CAAKhzC,CAAC,EAAE;UACN,IAAIO,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,OAAOR,MAAM,UAAY,EAAA;kBAC3B,IAAI,CAAC4kC,KAAK,GAAG5kC,CAAAA;eAEV,MAAA;kBACH,IAAI,CAAC4kC,KAAK,GAAGj+B,QAAS3G,CAAAA,CAAAA,CAAAA;EACtB,gBAAA,IAAI,CAAC,IAAI,CAACsjC,KAAK,CAACtjC,EAAE,EAAE;EAClB,oBAAA,IAAI,CAACsjC,KAAK,CAACtjC,CAAE,CAAA,GAAG,CAACiN,CAAG8D,EAAAA,CAAAA,GAAAA;EAClB,wBAAA,MAAM1Q,CAAI8M,GAAAA,WAAAA,CAAOF,CAAEpK,CAAAA,GAAG,CAACkO,CAAAA,CAAAA,CAAAA;EACvB,wBAAA,OAAO1Q,EAAEG,MAAM,KAAK,IAAIH,CAAC,CAAC,EAAE,GAAGA,CAAAA;EACjC,qBAAA;EACF;EACA,gBAAA,IAAI,IAAI,CAAC4yC,SAAS,IAAInpC,KAAKC,SAAS,CAAC/J,CAAO8J,CAAAA,KAAAA,IAAAA,CAAKC,SAAS,CAAC,IAAI,CAACkpC,SAAS,CAAG,EAAA;sBAC1E,IAAI,CAAC9H,WAAW,GAAG,KAAA;sBACnB,IAAI,CAAC1G,kBAAkB,GAAG,KAAA;EAC5B;kBACA,IAAI,CAACwO,SAAS,GAAGjzC,CAAAA;EACnB;EACA,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAAC4kC,KAAK;EACxB;EAEA;;;;;OAMAF,UAAAA,CAAW1kC,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2qC,WAAW,GAAGnrC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmrC,WAAW;EAC3E;EAEA;;;;;OAMAjG,QAAAA,CAASllC,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACukC,SAAS,GAAG/kC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+kC,SAAS;EACvE;EAEA;;;;;OAMAmO,cAAAA,CAAelzC,CAAC,EAAE;EAChB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC6kC,eAAe,GAAG/kC,UAAAA,CAAO,IAAI,CAAC+kC,eAAe,EAAErlC,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACqlC,eAAe;EACjH;EAEA;;;;;OAMA8N,eAAAA,CAAgBnzC,CAAC,EAAE;UACjB,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,EAAER,CAAa8C,YAAAA,KAAI,GAAI9C,CAAI,GAAA;EAACA,gBAAAA,CAAAA;EAAGA,gBAAAA;EAAE,aAAA;EACrC,YAAA,IAAI,CAAColC,gBAAgB,GAAGplC,CAAAA,CAAE6C,GAAG,CAACsa,QAAAA,CAAAA;EAC9B,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACioB,gBAAgB;EACnC;EAEA;;;;;OAMAgO,eAAAA,CAAgBpzC,CAAC,EAAE;EACjB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACwkC,gBAAgB,GAAG,OAAOhlC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACglC,gBAAgB;EAC7H;EAEA;;;;;OAMAtd,KAAAA,CAAM1nB,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACkiB,MAAM,GAAG,OAAO1iB,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC0iB,MAAM;EACzG;EAEA;;;;;OAMAiF,WAAAA,CAAY3nB,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACqiB,YAAY,GAAGviB,UAAAA,CAAO,IAAI,CAACuiB,YAAY,EAAE7iB,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC6iB,YAAY;EACxG;EAEA;;;;;OAMAwwB,YAAAA,CAAarzC,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC8kC,aAAa,GAAG,OAAOtlC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACslC,aAAa;EACvH;EAEA;;;;;OAMAlH,OAAAA,CAAQp+B,CAAC,EAAE;EACT,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACmoC,QAAQ,GAAG,OAAO3oC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC2oC,QAAQ;EAC7G;EAEA;;;;;OAMAsI,aAAAA,CAAcjxC,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2pC,cAAc,GAAG7pC,UAAAA,CAAO,IAAI,CAAC6pC,cAAc,EAAEnqC,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmqC,cAAc;EAC9G;EAEA;;;;;OAMA5E,KAAAA,CAAMvlC,CAAC,EAAE;UACP,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,OAAOR,CAAM,KAAA,UAAA,EAAY,IAAI,CAACwlC,MAAM,GAAGxlC,CAAAA;EACtC,iBAAA,IAAIA,CAAG,EAAA,IAAI,CAACwlC,MAAM,GAAG7+B,QAAS3G,CAAAA,CAAAA,CAAAA;mBAC9B,IAAI,CAACwlC,MAAM,GAAG,KAAA;EACnB,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACA,MAAM;EACzB;EAEA;;;;;OAMA8N,WAAAA,CAAYtzC,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAColC,YAAY,GAAGtlC,UAAAA,CAAO,IAAI,CAACslC,YAAY,EAAE5lC,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC4lC,YAAY;EACxG;EAEA;;;;;OAMA2N,WAAAA,CAAYvzC,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACmlC,YAAY,GAAG3lC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC2lC,YAAY;EAC7E;EAEA;;;;;OAMA6N,YAAAA,CAAaxzC,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACilC,aAAa,GAAG,OAAOzlC,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACylC,aAAa;EACvH;EAEA;;;;;OAMA7/B,KAAAA,CAAM5F,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4D,MAAM,GAAGpE,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACoE,MAAM;EACjE;EAEA;;;;;OAMAqvC,IAAAA,CAAKzzC,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACimC,KAAK,GAAGzmC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACymC,KAAK;EAC/D;EAEA;;;;;OAMAiN,mBAAAA,CAAoB1zC,CAAC,EAAE;EACrB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC0mC,oBAAoB,GAAGlnC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACknC,oBAAoB;EAC7F;EAEA;;;;;OAMAyM,oBAAAA,CAAqB3zC,CAAC,EAAE;EACtB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2nC,qBAAqB,GAAGnoC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmoC,qBAAqB;EAC/F;EAEA;;;;;OAMAyL,uBAAAA,CAAwB5zC,CAAC,EAAE;EACzB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC0nC,wBAAwB,GAAGloC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACkoC,wBAAwB;EACrG;EAEA;;;;;OAMA2L,gBAAAA,CAAiB7zC,CAAC,EAAE;EAClB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACqmC,iBAAiB,GAAG7mC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC6mC,iBAAiB;EACvF;EAEA;;;;;OAMAiN,sBAAAA,CAAuB9zC,CAAC,EAAE;EACxB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACsmC,uBAAuB,GAAG9mC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC8mC,uBAAuB;EACnG;EAEA;;;;;OAMAiN,qBAAAA,CAAsB/zC,CAAC,EAAE;EACvB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwmC,sBAAsB,GAAGhnC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgnC,sBAAsB;EACjG;EAEA;;;;;OAMAgN,UAAAA,CAAWh0C,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAComC,WAAW,GAAG5mC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC4mC,WAAW;EAC3E;EAEA;;;;;OAMAqN,OAAAA,CAAQj0C,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2lC,QAAQ,GAAGnmC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmmC,QAAQ;EACrE;EAEA;;;;;OAMA+N,OAAAA,CAAQl0C,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACknC,QAAQ,GAAG1nC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC0nC,QAAQ;EACrE;EAEA;;;;;OAMAyM,WAAAA,CAAYn0C,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwnC,YAAY,GAAGhoC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgoC,YAAY;EAC7E;EAEA;;;;;OAMAoM,UAAAA,CAAWp0C,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACinC,WAAW,GAAGznC,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACynC,WAAW;EAC3E;EAlpDA;;;;EAIA,KACApmC,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACiiC,KAAK,GAAG,EAAC;UACd,IAAI,CAACxO,WAAW,GAAG,IAAA;UACnB,IAAI,CAACsT,YAAY,GAAG,KAAA;UACpB,IAAI,CAACE,iBAAiB,GAAG;cACvB9+B,UAAY,EAAA,2BAAA;cACZ22B,MAAQ,EAAA,+BAAA;cACRnvB,KAAO,EAAA,qBAAA;cACPi8B,OAAS,EAAA,OAAA;EACToH,YAAAA,IAAAA,EAAM,CAAC,cAAc,EAAEtS,wBAAAA,CAAoBpf,eAAa,CAAA,CAAA,CAAA;cACxDrE,MAAQ,EAAA,KAAA;cACRhY,OAAS,EAAA,IAAA;cACTgL,OAAS,EAAA;EACX,SAAA;EACA,QAAA,IAAI,CAAC4wB,UAAU,GAAG,IAAIhxB,OACnBrQ,EAAAA,CAAAA,EAAE,CAAC,OAAS,EAAA,IAAA;EACX,YAAA,IAAI,IAAI,CAACmhC,QAAQ,CAACxhC,MAAM,EAAE,IAAI,CAACT,MAAM,CAAC,IAAI,CAACiiC,QAAQ,CAACttB,GAAG,IAAIvR,MAAM,EAAA;mBAC5D,IAAI,CAAC4lC,KAAK,CAAC,IAAI,CAACtF,UAAU,GAAG,CAAG/jC,CAAAA,CAAAA,MAAM,CAAC,KAAA,CAAA,CAAOyD,MAAM,EAAA;EAC3D,SAAA,CAAA,CACCtC,EAAE,CAAC,WAAa,EAAA,IAAM,IAAI,CAACqhC,UAAU,CAAC5+B,MAAM,EAAA,CAAGE,KAAK,CAAC,QAAU,EAAA,SAAA,CAAA,CAAA;UAClE,IAAI,CAAC2+B,WAAW,GAAG;cACjB9wB,QAAU,EAAA,EAAA;cACVC,OAAS,EAAA,CAAA;cACTohB,MAAQ,EAAA;EACV,SAAA;UACA,IAAI,CAAC8b,MAAM,GAAG,IAAA;EAEd,QAAA,IAAI,CAAC/iB,MAAM,GAAG,CAACvtB,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACsmC,QAAQ,CAAC,CAAE,CAAA,CAACtqC,CAAGgE,EAAAA,CAAAA,CAAAA;UAC5C,IAAI,CAACoyC,cAAc,GAAG;EACpB,YAAA,GAAGvsB,mBAAa;EAChB9e,YAAAA,KAAAA,EAAOsrC,sBAAex6B,KAAK,CAACgO,mBAAc9e,CAAAA,KAAK,CAAC8Q,KAAK,EAAA;EACvD,SAAA;UACA,IAAI,CAAC6oB,gBAAgB,GAAG,IAAI5X,UAAAA,EAAAA;UAC5B,IAAI,CAAC0X,iBAAiB,GAAG;cACvB5T,UAAY,EAAA;kBACV7H,QAAU,EAAA;EACZ,aAAA;cACAhe,KAAO,EAAA;EACT,SAAA;UACA,IAAI,CAACs5B,kBAAkB,GAAG+H,cAAAA;EAC1B,QAAA,IAAI,CAAClI,mBAAmB,GAAG,IAAM,IAAI,CAACh+B,MAAM,GAAG,IAAI,CAACE,OAAO,GAAG,MAAM,OAAU,GAAA,QAAA;UAC9E,IAAI,CAACk+B,kBAAkB,GAAG,GAAA;UAE1B,IAAI,CAACz+B,KAAK,GAAG,EAAE;UACf,IAAI,CAAC8nC,WAAW,GAAG,GAAA;UACnB,IAAI,CAAC2D,aAAa,GAAG,IAAA;UACrB,IAAI,CAACC,kBAAkB,GAAG,GAAA;UAC1B,IAAI,CAACpC,cAAc,GAAG,IAAA;UACtB,IAAI,CAACc,sBAAsB,GAAG,IAAA;UAC9B,IAAI,CAACwC,eAAe,GAAG,KAAA;UACvB,IAAI,CAACE,eAAe,GAAG;cAAClvC,IAAM,EAAA;EAAK,SAAA;UACnC,IAAI,CAACovC,iBAAiB,GAAG,KAAA;UACzB,IAAI,CAAChvC,SAAS,GAAG,GAAA;UACjB,IAAI,CAACoxB,WAAW,GAAGxQ,eAAAA;UACnB,IAAI,CAACghB,OAAO,GAAG,EAAE;UACjB,IAAI,CAACM,YAAY,GAAGhhC,QAAS,CAAA,MAAA,CAAA;UAC7B,IAAI,CAACihC,cAAc,GAAGjhC,QAAS,CAAA,GAAA,CAAA;UAC/B,IAAI,CAAC++B,QAAQ,GAAG,EAAE;UAClB,IAAI,CAACwG,QAAQ,GAAG;cAAC7hC,QAAS,CAAA,IAAA;EAAM,SAAA;EAEhC,QAAA,IAAI,CAACq9B,OAAO,GAAG,CAACjkC,MAAQ6C,EAAAA,GAAAA,GAAAA;EACtB,YAAA,MAAM4xC,UAAax9B,GAAAA,WAAAA,CAAIpU,GAAK,EAAA,CAAC1E,CAAGgE,EAAAA,CAAAA,GAAAA;EAC9B,gBAAA,MAAMmE,EAAK,GAAA,IAAI,CAACmiC,QAAQ,CAAC,IAAI,CAACvF,YAAY,CAAC,CAAC1gC,IAAI,CAAC,IAAI,EAAErE,CAAGgE,EAAAA,CAAAA,CAAAA;EAC1D,gBAAA,OAAOmE,EAAcvD,YAAAA,KAAAA,GAAQuD,EAAG7F,CAAAA,MAAM,GAAG,CAAA;EAC3C,aAAA,CAAA;EACA,YAAA,OAAOoC,GAAIpC,CAAAA,MAAM,GAAG,CAAA,IAAKg0C,UAAc,IAAA,CAAA;EACzC,SAAA;UACA,IAAI,CAAC3jB,YAAY,GAAG,IAAIxI,MAAAA,EAAAA;UACxB,IAAI,CAACuI,aAAa,GAAG;cACnB7gB,KAAOgzB,EAAAA,WAAAA,CAAYxgC,IAAI,CAAC,IAAI,CAAA;cAC5BpB,WAAa,EAAA;kBACXoO,SAAWwzB,EAAAA,WAAAA,CAAYxgC,IAAI,CAAC,IAAI,CAAA;kBAChC+J,WAAa,EAAA;sBACX6E,SAAWlT,EAAAA,SAAAA;sBACX2pB,UAAY,EAAA,KAAA;sBACZtW,OAAS,EAAA;EACX;EACF;EACF,SAAA;UACA,IAAI,CAAC83B,mBAAmB,GAAGnmC,QAAS,CAAA,KAAA,CAAA;UACpC,IAAI,CAAC8gC,cAAc,GAAGuG,cAAAA;EACtB,QAAA,IAAI,CAACxG,eAAe,GAAG,IAAM,IAAI,CAAC1/B,MAAM,GAAG,IAAI,CAACE,OAAO,GAAG,MAAM,OAAU,GAAA,QAAA;EAC1E,QAAA,IAAI,CAACi/B,WAAW,GAAG,CAACt2B,CAAAA,EAAGZ,IAAM,IAAI,CAAC22B,UAAU,CAAC/1B,GAAGwnC,aAAa,CAAC,IAAI,CAACzR,UAAU,CAAC32B,CAAAA,CAAAA,CAAAA;UAC9E,IAAI,CAAC+9B,cAAc,GAAG,EAAC;EAEvB,QAAA,IAAI,CAAC0E,YAAY,GAAG,IAAM;;AAEhB,cAAA,EAAE,IAAI,CAAC5tC,UAAU,CAAC,uBAAyB,CAAA,CAAA;AACmE,4HAAA,EAAE,IAAI,CAACA,UAAU,CAAC,mBAAqB,CAAA,CAAA;UACzJ,CAAC;UAEP,IAAI,CAAC0tC,eAAe,GAAG,IAAA;UACvB,IAAI,CAACH,SAAS,GAAGiG,QAAS,CAAA,EAAA,CAAA;UAC1B,IAAI,CAACzI,aAAa,GAAG,IAAIpa,OAAAA,EAAAA;UACzB,IAAI,CAACkd,YAAY,GAAG,qBAAA;UACpB,IAAI,CAAC5C,aAAa,GAAG;cACnB,QAAU,EAAA,GAAA;cACV,MAAQ,EAAA,GAAA;cACR,UAAY,EAAA,UAAA;cACZ,OAAS,EAAA,GAAA;cACT,YAAc,EAAA,QAAA;cACd,KAAO,EAAA;EACT,SAAA;EAEA,QAAA,IAAI,CAACD,WAAW,GAAG,IAAM;;AAEf,cAAA,EAAE,IAAI,CAAChrC,UAAU,CAAC,mBAAqB,CAAA,CAAA;UAC3C,CAAC;UAEP,IAAI,CAAC8qC,cAAc,GAAG,IAAA;UACtB,IAAI,CAACvrC,GAAG,GAAG;cACT,aAAe4pC,EAAAA,UAAAA,CAAW9nC,IAAI,CAAC,IAAI,CAAA;cACnC,cAAgBsnC,EAAAA,WAAAA,CAAYtnC,IAAI,CAAC,IAAI,CAAA;cACrC,YAAcoyC,EAAAA,UAAAA,CAAWpyC,IAAI,CAAC,IAAI,CAAA;cAClC,YAAcqyC,EAAAA,UAAAA,CAAWryC,IAAI,CAAC,IAAI,CAAA;cAClC,iBAAmBsyC,EAAAA,cAAAA,CAAetyC,IAAI,CAAC,IAAI,CAAA;cAC3C,kBAAoBuyC,EAAAA,eAAAA,CAAgBvyC,IAAI,CAAC,IAAI;EAC/C,SAAA;UACA,IAAI,CAAC+rC,MAAM,GAAG,EAAE;EAChB,QAAA,IAAI,CAACJ,gBAAgB,GAAG,OAAOzqC,MAAAA,KAAW,cAAc,EAAKA,GAAAA,MAAAA;EAC7D,QAAA,IAAI,CAACwqC,gBAAgB,GAAG,OAAOxqC,MAAAA,KAAW,cAAc,EAAKA,GAAAA,MAAAA;UAC7D,IAAI,CAAC2a,MAAM,GAAGnb,QAAS,CAAA,MAAA,CAAA;UACvB,IAAI,CAACsnB,OAAO,GAAG,EAAE;UACjB,IAAI,CAACnpB,YAAY,GAAG;EAClBmO,YAAAA,SAAAA,EAAW,CAACrR,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAAC8gC,UAAU,CAAC9kC,CAAGgE,EAAAA,CAAAA,CAAAA;EACxC0H,YAAAA,IAAAA,EAAM,CAAC1L,CAAGgE,EAAAA,CAAAA,GAAAA;EACR,gBAAA,MAAOhE,CAAEiE,CAAAA,UAAU,IAAIjE,CAAAA,CAAEmE,IAAI,CAAE;EAC7BnE,oBAAAA,CAAAA,GAAIA,EAAEmE,IAAI;EACVH,oBAAAA,CAAAA,GAAIhE,EAAEgE,CAAC;EACT;kBACA,IAAI,IAAI,CAACirB,WAAW,EAAE;EACpB,oBAAA,MAAMpc,CAAI,GAAA,IAAI,CAACoc,WAAW,CAACjvB,CAAGgE,EAAAA,CAAAA,CAAAA;sBAC9B,IAAI6O,CAAAA,KAAM9S,SAAa8S,IAAAA,CAAAA,KAAM,IAAM,EAAA;EACjC,wBAAA,MAAM9H,KAAQ,GAAA,IAAI,CAAC25B,gBAAgB,CAACzV,WAAW;EAC/C,wBAAA,MAAM3B,MAAS,GAAA,IAAI,CAACoX,gBAAgB,CAAC5xB,KAAK,EAAA;0BAC1C,IAAI,CAAC/H,KAAO,EAAA,OAAOuiB,MAAkB1oB,YAAAA,KAAAA,GAAQ0oB,MAAM,CAACA,MAAOhrB,CAAAA,MAAM,GAAG,CAAA,CAAE,GAAGgrB,MAAAA;EACpE,6BAAA,IAAI,CAACviB,KAAM6Q,CAAAA,MAAM,EAAGtZ,CAAAA,MAAM,EAAE,OAAOyI,KAAAA,CAAM8Q,KAAK,EAAE,CAAC9Q,KAAM8Q,CAAAA,KAAK,EAAGvZ,CAAAA,MAAM,GAAG,CAAE,CAAA;EAC/E,wBAAA,OAAOyI,KAAM8H,CAAAA,CAAAA,CAAAA;EACf;EACF;EACA,gBAAA,MAAMA,CAAI,GAAA,IAAI,CAAC0a,MAAM,CAACvtB,CAAGgE,EAAAA,CAAAA,CAAAA;kBACzB,IAAI8O,aAAAA,CAAMD,IAAI,OAAOA,CAAAA;kBACrB,OAAOgkC,iBAAAA,CAAY,OAAOhkC,CAAAA,KAAM,QAAWA,GAAAA,CAAAA,GAAIjH,IAAKC,CAAAA,SAAS,CAACgH,CAAAA,CAAAA,EAAI,IAAI,CAACujC,cAAc,CAAA;EACvF,aAAA;cACAhoC,WAAa,EAAA;EACX6E,gBAAAA,SAAAA,EAAW,CAACjT,CAAGgE,EAAAA,CAAAA,GAAAA;sBACb,MAAM6O,CAAAA,GAAI,OAAO,IAAI,CAAC3P,YAAY,CAACwI,IAAI,KAAK,UAAa,GAAA,IAAI,CAACxI,YAAY,CAACwI,IAAI,CAAC1L,CAAAA,EAAGgE,KAAK,IAAI,CAACd,YAAY,CAACwI,IAAI;EAC9G,oBAAA,OAAOwH,mBAAcL,CAAAA,CAAAA,CAAAA;EACvB;EACF,aAAA;EACAzK,YAAAA,OAAAA,EAASrD,QAAS,CAAA,CAAA,CAAA;EAClBwG,YAAAA,MAAAA,EAAQ,CAACvL,CAAGgE,EAAAA,CAAAA,GAAAA;kBACV,MAAM6O,CAAAA,GAAI,OAAO,IAAI,CAAC3P,YAAY,CAACwI,IAAI,KAAK,UAAa,GAAA,IAAI,CAACxI,YAAY,CAACwI,IAAI,CAAC1L,CAAAA,EAAGgE,KAAK,IAAI,CAACd,YAAY,CAACwI,IAAI;kBAC9G,OAAOoH,aAAAA,CAAMD,CAAGE,CAAAA,CAAAA,MAAM,CAAC,IAAA,CAAA;EACzB,aAAA;cACAhB,IAAM,EAAA,cAAA;EACNO,YAAAA,WAAAA,EAAavN,QAAS,CAAA,CAAA;EACxB,SAAA;UACA,IAAI,CAAC2gC,KAAK,GAAG,EAAE;UAEf,IAAI,CAACS,cAAc,GAAG,IAAInzB,OAAAA,EAAAA;UAC1B,IAAI,CAACozB,eAAe,GAAG;cACrB/N,UAAY,EAAA,IAAA;cACZllB,QAAU,EAAA,EAAA;cACVC,OAAS,EAAA,CAAA;cACTohB,MAAQ,EAAA,KAAA;cACRjiB,UAAY,EAAA;EACd,SAAA;UACA,IAAI,CAAC2zB,gBAAgB,GAAGkG,cAAAA;UAExB,IAAI,CAACsD,QAAQ,GAAG,EAAA;UAChB,IAAI,CAACH,SAAS,GAAG,EAAA;UAEjB,IAAI,CAAC1I,SAAS,GAAG,IAAA;EACjB,QAAA,IAAI,CAACI,cAAc,GAAG,IAAItO,QAAAA,EAAAA,CAAWtQ,KAAK,CAAC,KAAA,CAAA;UAC3C,IAAI,CAAC8e,eAAe,GAAG;cACrBxK,QAAU,EAAA,KAAA;cACVvpB,OAAS,EAAA;EACX,SAAA;UACA,IAAI,CAAC0zB,gBAAgB,GAAGsF,cAAAA;UAExB,IAAI,CAACW,UAAU,GAAGhoC,QAAS,CAAA,MAAA,CAAA;UAC3B,IAAI,CAAC6vC,aAAa,GAAG70C,SAAAA;EACrB,QAAA,IAAI,CAAC+sC,cAAc,GAAG,IAAM,IAAI,CAAC9pC,UAAU,CAAC,QAAA,CAAA;UAE5C,IAAI,CAAColB,WAAW,GAAG,IAAIpV,OAAAA,EAAAA;UACvB,IAAI,CAAC2R,YAAY,GAAG;cAClB0T,UAAY,EAAA,IAAA;cACZllB,QAAU,EAAA,EAAA;cACVC,OAAS,EAAA,CAAA;cACTohB,MAAQ,EAAA,KAAA;cACRjiB,UAAY,EAAA;EACd,SAAA;UACA,IAAI,CAAC60B,aAAa,GAAGgF,cAAAA;UAErB,IAAI,CAAC3B,QAAQ,GAAG1lC,QAAS,CAAA,IAAA,CAAA;UACzB,IAAI,CAAC2lC,aAAa,GAAG,IAAI1M,OAAAA,EAAAA;UACzB,IAAI,CAACiO,cAAc,GAAG;cACpB5jC,aAAe,EAAA,MAAA;cACfm7B,UAAY,EAAA;kBACV,WAAa,EAAA;EACf;EACF,SAAA;UAEA,IAAI,CAACgE,WAAW,GAAG,IAAIx0B,OAAAA,EAAAA;UACvB,IAAI,CAAC00B,YAAY,GAAG;cAClBv0B,QAAU,EAAA,EAAA;cACVC,OAAS,EAAA,CAAA;cACTohB,MAAQ,EAAA,KAAA;cACRjiB,UAAY,EAAA;EACd,SAAA;EACA,QAAA,IAAI,CAACk1B,YAAY,GAAGznC,CAAAA,CAAK,GAAA,CAAA,EAAG,IAAI,CAACgD,UAAU,CAAC,OAAA,CAAA,CAAS,EAAE,EAAEye,uBAAAA,CAAiBzhB,GAAG,IAAI,CAACyC,OAAO,CAAG,CAAA,CAAA;UAC5F,IAAI,CAAC8kC,aAAa,GAAG6E,cAAAA;UAErB,IAAI,CAAC7D,KAAK,GAAG,KAAA;UACb,IAAI,CAACR,aAAa,GAAGwN,WAAAA,EAAAA;UACrB,IAAI,CAACxM,UAAU,GAAGpP,aAAAA,EAAAA;UAClB,IAAI,CAACqP,oBAAoB,GAAG,CAAA;UAC5B,IAAI,CAACiB,qBAAqB,GAAG;cAC3Bv+B,IAAM,EAAA;EACV,SAAA;UACE,IAAI,CAACs+B,wBAAwB,GAAG;cAC9B,MAAQ,EAAA,MAAA;cACR,cAAgB,EAAA;EAClB,SAAA;UACA,IAAI,CAACrB,iBAAiB,GAAG;cACvB,YAAc,EAAA,2BAAA;cACd,QAAU,EAAA,+BAAA;cACV,OAAS,EAAA,qBAAA;cACT,SAAW,EAAA,OAAA;EACX,YAAA,MAAA,EAAQ,CAAC,cAAc,EAAE9E,wBAAAA,CAAoBpf,eAAa,CAAA,CAAA,CAAA;cAC1D,QAAU,EAAA,MAAA;cACV,QAAU,EAAA,KAAA;cACV,SAAW,EAAA,IAAA;cACX,SAAW,EAAA,CAAA;cACX,YAAc,EAAA,QAAA;cACd,OAAS,EAAA;EACX,SAAA;UACA,IAAI,CAACmkB,uBAAuB,GAAG;cAC7Bt9B,UAAY,EAAA,qBAAA;cACZwH,KAAO,EAAA,2BAAA;cACP1K,OAAS,EAAA;EACX,SAAA;UACA,IAAI,CAAC0gC,sBAAsB,GAAG;cAC5B1/B,MAAQ,EAAA,SAAA;cACRhB,OAAS,EAAA;EACX,SAAA;UACA,IAAI,CAACsgC,WAAW,GAAG,CAAA;UACnB,IAAI,CAACT,QAAQ,GAAG,EAAA;UAChB,IAAI,CAAC6B,YAAY,GAAG,EAAA;UACpB,IAAI,CAACN,QAAQ,GAAG,IAAA;UAChB,IAAI,CAACD,WAAW,GAAG,IAAA;EAErB;EA+4CF;;ECzuDA;;;;EAIA,GACA,qBAAe,CAAA,CAACx+B,KAAAA,EAAO5G,IAAMoN,EAAAA,QAAAA,GAAAA;EAE3B,IAAA,IAAIxG,KAAMqI,CAAAA,OAAO,EAAErI,KAAAA,CAAMqI,OAAO,CAAC,GAAA,CAAA;EAC5B,SAAA;EACH,QAAA,IAAI0jC,YAAelyC,GAAAA,KAAAA,CAAM8pB,IAAI,CAAC,IAAID,GAAItqB,CAAAA,IAAAA,CAAKQ,GAAG,CAAC3E,CAAAA,CAAAA,GAAK,CAACA,CAAC,CAACuR,QAAS,CAAA,CAAA,CAAA,CAAA;EAChE,QAAA,MAAM+S,UAAUwyB,YAAa56B,CAAAA,MAAM,CAAC,CAACswB,GAAAA,EAAKuK,MAAM/yC,CAAGU,EAAAA,GAAAA,GAAAA;cACjD,IAAI,CAACV,GAAG,OAAOwoC,GAAAA;EACf,YAAA,MAAM3mB,IAAOnhB,GAAAA,GAAG,CAACV,CAAAA,GAAI,CAAE,CAAA;EACvB,YAAA,IAAI,CAACwoC,GAAOuK,IAAAA,IAAAA,GAAOlxB,IAAO2mB,GAAAA,GAAAA,EAAK,OAAOuK,IAAOlxB,GAAAA,IAAAA;mBACxC,OAAO2mB,GAAAA;WACX,EAAA,CAAA,CAAA;EACH,QAAA,MAAM5wB,MAAS7Q,GAAAA,KAAAA,CAAM6Q,MAAM,EAAA,CAAGjL,KAAK,EAAA;UACnC,IAAIY,QAAAA,KAAa,GAAKqK,EAAAA,MAAAA,CAAO/H,OAAO,EAAA;UACpC+H,MAAM,CAAC,CAAE,CAAA,GAAG,IAAIo7B,IAAAA,CAAK,CAACp7B,MAAM,CAAC,CAAE,CAAA,GAAG0I,OAAU,GAAA,CAAA,CAAA;UAC5C1I,MAAM,CAAC,CAAE,CAAA,GAAG,IAAIo7B,IAAAA,CAAK,CAACp7B,MAAM,CAAC,CAAE,CAAA,GAAG0I,OAAU,GAAA,CAAA,CAAA;UAC5C,IAAI/S,QAAAA,KAAa,GAAKqK,EAAAA,MAAAA,CAAO/H,OAAO,EAAA;EACpC9I,QAAAA,KAAAA,CAAM6Q,MAAM,CAACA,MAAAA,CAAAA;EACf;EAEF,CAAA;;ECrBA;;;;;;;;;EASA,GACe,kBAAA,CAAS,EAACzX,IAAI,EAAEoE,CAAC,EAAEC,CAAC,EAAEyuC,EAAE,EAAEC,EAAE,EAAEC,MAAAA,GAAS,EAAE,EAAC,EAAA;MACvD,MAAMC,IAAAA,GAAOH,KAAK,IAAO,GAAA,GAAA;MACzB,MAAMI,IAAAA,GAAOH,KAAK,IAAO,GAAA,GAAA;EAEzB,IAAA,MAAMI,WAAW,IAAI,CAACnuC,SAAS,KAAK,MAAMX,CAAID,GAAAA,CAAAA;EAE9C,IAAA,MAAMgvC,SAAYD,GAAAA,QAAAA,CAAS17B,MAAM,EAAA,CAAGjL,KAAK,EAAA;EAEzC,IAAA,MAAM6mC,WAAc,GAAA,IAAI,CAACruC,SAAS,KAAK,GAAA;MAEvC,IAAIquC,WAAAA,EAAaD,UAAU1jC,OAAO,EAAA;EAElC,IAAA,IAAI4jC,OAASC,EAAAA,OAAAA;MACb,IAAI,IAAI,CAACC,QAAQ,EAAE;EACjB,QAAA,MAAMC,cAAcl0C,iBACjB7D,EAAAA,CAAAA,GAAG,CAACG,CAAAA,IAAK,CAAGA,EAAAA,CAAC,CAAC,IAAI,CAACmJ,SAAS,CAAC,CAAC,CAAC,EAAEnJ,EAAEoM,KAAK,CAAA,CAAE,CAC1C6H,CAAAA,OAAO,CAAC9P,IACRQ,CAAAA,CAAAA,GAAG,CAAC3E,CAAAA,IAAKA,CAAEiJ,CAAAA,MAAM,CAACtE,GAAG,CAAC4D,CAAAA,CAAAA,GAAKA,CAAC,CAACivC,WAAAA,GAAcH,OAAOD,IAAK,CAAA,CAAA,CAAA;UAC1DM,OAAUE,GAAAA,WAAAA,CAAYjzC,GAAG,CAACD,CAAAA,GAAAA,GAAO+R,WAAI/R,CAAAA,GAAAA,CAAIlD,MAAM,CAACxB,CAAAA,CAAAA,GAAKA,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA;UACzDy3C,OAAUG,GAAAA,WAAAA,CAAYjzC,GAAG,CAACD,CAAAA,GAAAA,GAAO+R,WAAI/R,CAAAA,GAAAA,CAAIlD,MAAM,CAACxB,CAAAA,CAAAA,GAAKA,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA;OAEtD,MAAA;UACH,MAAM+sB,SAAAA,GAAY5oB,IAAKQ,CAAAA,GAAG,CAAC3E,CAAAA,IAAKA,CAAC,CAACw3C,WAAcH,GAAAA,IAAAA,GAAOD,IAAK,CAAA,CAAA;EAC5DM,QAAAA,OAAAA,GAAU3qB,SAAUvrB,CAAAA,MAAM,CAACxB,CAAAA,IAAKA,CAAI,GAAA,CAAA,CAAA;EACpCy3C,QAAAA,OAAAA,GAAU1qB,SAAUvrB,CAAAA,MAAM,CAACxB,CAAAA,IAAKA,CAAI,GAAA,CAAA,CAAA;EACtC;MAEA,IAAI63C,IAAAA,GAAOP,SAASx+B,WAAI4+B,CAAAA,OAAAA,CAAAA,CAAAA;MACxB,IAAIF,WAAAA,GAAcK,IAAOP,GAAAA,QAAAA,CAAS,CAAKO,CAAAA,GAAAA,IAAAA,GAAOP,SAAS,CAAIO,CAAAA,EAAAA,IAAAA,IAAQL,WAAc,GAAA,CAACL,MAASA,GAAAA,MAAAA;MAC3FU,IAAOP,GAAAA,QAAAA,CAAS1c,MAAM,CAACid,IAAAA,CAAAA;MAEvB,IAAIC,IAAAA,GAAOR,SAAS/tC,WAAIkuC,CAAAA,OAAAA,CAAAA,CAAAA;MACxB,IAAID,WAAAA,GAAcM,IAAOR,GAAAA,QAAAA,CAAS,CAAKQ,CAAAA,GAAAA,IAAAA,GAAOR,SAAS,CAAIQ,CAAAA,EAAAA,IAAAA,IAAQN,WAAcL,GAAAA,MAAAA,GAAS,CAACA,MAAAA;MAC3FW,IAAOR,GAAAA,QAAAA,CAAS1c,MAAM,CAACkd,IAAAA,CAAAA;MAEvB,IAAID,IAAAA,GAAON,SAAS,CAAC,CAAA,CAAE,EAAEA,SAAS,CAAC,EAAE,GAAGM,IAAAA;MACxC,IAAIC,IAAAA,GAAOP,SAAS,CAAC,CAAA,CAAE,EAAEA,SAAS,CAAC,EAAE,GAAGO,IAAAA;MAExC,IAAIN,WAAAA,EAAaD,UAAU1jC,OAAO,EAAA;EAElCyjC,IAAAA,QAAAA,CAAS17B,MAAM,CAAC27B,SAAAA,CAAAA;MAEhB,OAAO;EAAChvC,QAAAA,CAAAA;EAAGC,QAAAA;EAAE,KAAA;EAEf;;ECtDA;;;;;;;;;EASA,GACe,kBAAA,CAAS,EAACrE,IAAI,EAAEoE,CAAC,EAAEC,CAAC,EAAEyuC,EAAE,EAAEC,EAAE,EAAEC,MAAAA,GAAS,EAAE,EAAC,EAAA;MACvD,MAAMC,IAAAA,GAAOH,KAAK,IAAO,GAAA,GAAA;MACzB,MAAMI,IAAAA,GAAOH,KAAK,IAAO,GAAA,GAAA;EAEzB,IAAA,MAAMI,WAAW,IAAI,CAACnuC,SAAS,KAAK,MAAMX,CAAID,GAAAA,CAAAA;EAE9C,IAAA,MAAMgvC,SAAYD,GAAAA,QAAAA,CAAS17B,MAAM,EAAA,CAAGjL,KAAK,EAAA;EAEzC,IAAA,MAAM6mC,WAAc,GAAA,IAAI,CAACruC,SAAS,KAAK,GAAA;MAEvC,IAAIquC,WAAAA,EAAaD,UAAU1jC,OAAO,EAAA;EAElC,IAAA,IAAI4jC,OAASC,EAAAA,OAAAA;MACb,IAAI,IAAI,CAACC,QAAQ,EAAE;EACjB,QAAA,MAAMC,WAAcl0C,GAAAA,iBAAAA,EAAAA,CACjB7D,GAAG,CAACG,CAAAA,CAAAA,GAAKA,CAAC,CAAC,IAAI,CAACmJ,SAAS,CAAC,EAC1B8K,OAAO,CAAC9P,IACRQ,CAAAA,CAAAA,GAAG,CAAC3E,CAAAA,CAAKA,GAAAA,CAAAA,CAAEiJ,MAAM,CAACtE,GAAG,CAAC4D,CAAAA,CAAKA,GAAAA,CAAC,CAACivC,WAAAA,GAAcH,OAAOD,IAAK,CAAA,CAAA,CAAA;UAC1DM,OAAUE,GAAAA,WAAAA,CAAYjzC,GAAG,CAACD,CAAAA,GAAAA,GAAO+R,WAAI/R,CAAAA,GAAAA,CAAIlD,MAAM,CAACxB,CAAAA,CAAAA,GAAKA,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA;UACzDy3C,OAAUG,GAAAA,WAAAA,CAAYjzC,GAAG,CAACD,CAAAA,GAAAA,GAAO+R,WAAI/R,CAAAA,GAAAA,CAAIlD,MAAM,CAACxB,CAAAA,CAAAA,GAAKA,CAAI,GAAA,CAAA,CAAA,CAAA,CAAA;OAEtD,MAAA;UACH03C,OAAUvzC,GAAAA,IAAAA,CAAKQ,GAAG,CAAC3E,CAAAA,IAAKA,CAAC,CAACw3C,WAAcH,GAAAA,IAAAA,GAAOD,IAAK,CAAA,CAAA;UACpDK,OAAUC,GAAAA,OAAAA;EACZ;MAEA,IAAIG,IAAAA,GAAOP,SAASx+B,WAAI4+B,CAAAA,OAAAA,CAAAA,CAAAA;MACxBG,IAAQL,IAAAA,WAAAA,GAAc,CAACL,MAASA,GAAAA,MAAAA;MAChCU,IAAOP,GAAAA,QAAAA,CAAS1c,MAAM,CAACid,IAAAA,CAAAA;MAEvB,IAAIC,IAAAA,GAAOR,SAAS/tC,WAAIkuC,CAAAA,OAAAA,CAAAA,CAAAA;MACxBK,IAAQN,IAAAA,WAAAA,GAAcL,SAAS,CAACA,MAAAA;MAChCW,IAAOR,GAAAA,QAAAA,CAAS1c,MAAM,CAACkd,IAAAA,CAAAA;MAEvB,IAAID,IAAAA,GAAON,SAAS,CAAC,CAAA,CAAE,EAAEA,SAAS,CAAC,EAAE,GAAGM,IAAAA;MACxC,IAAIC,IAAAA,GAAOP,SAAS,CAAC,CAAA,CAAE,EAAEA,SAAS,CAAC,EAAE,GAAGO,IAAAA;MAExC,IAAIN,WAAAA,EAAaD,UAAU1jC,OAAO,EAAA;EAElCyjC,IAAAA,QAAAA,CAAS17B,MAAM,CAAC27B,SAAAA,CAAAA;MAEhB,OAAO;EAAChvC,QAAAA,CAAAA;EAAGC,QAAAA;EAAE,KAAA;EAEf;;ECtDA,MAAMuvC,OAAAA,GAAU51C,CAAAA,CAAKjC,GAAAA,IAAAA,CAAK4a,GAAG,CAAC,EAAA,EAAI5a,IAAKC,CAAAA,KAAK,CAACD,IAAAA,CAAK6a,KAAK,CAAC7a,IAAAA,CAAKsV,GAAG,CAACrT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAQjC,KAAK4a,GAAG,CAAC,EAAC,EAAG3Y,CAAI,GAAA,CAAA,CAAA;EAC1F,MAAM61C,MAAAA,GAAS71C,CAAAA,CAAKjC,GAAAA,IAAAA,CAAK4a,GAAG,CAAC,EAAA,EAAI5a,IAAK+a,CAAAA,IAAI,CAAC/a,IAAAA,CAAK6a,KAAK,CAAC7a,IAAAA,CAAKsV,GAAG,CAACrT,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,GAAQjC,KAAK4a,GAAG,CAAC,EAAC,EAAG3Y,CAAI,GAAA,CAAA,CAAA;EAExF;;;EAGA,GACe,sBAAS2wC,CAAAA,IAAI,EAAE/nC,KAAK,EAAEjG,KAAK,EAAE4E,IAAI,EAAEmS,KAAK,EAAED,MAAM,EAAE1C,KAAK,EAAE0hB,MAAM,EAAA;EAE5E,IAAA,IAAI91B,KAAU/E,KAAAA,SAAAA,IAAa4gB,KAAM/E,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAK+E,IAAAA,KAAAA,CAAM/E,MAAM,CAAC,CAAE,CAAA,CAAA,EAAG,OAAOA,MAAAA;EAExE,IAAA,IAAIgf,MAAQ,EAAA;UACVhf,MAASA,GAAAA,MAAAA,CAAOjL,KAAK,EAAA,CAAGkD,OAAO,EAAA;UAC/BgI,KAAQA,GAAAA,KAAAA,CAAMlL,KAAK,EAAA,CAAGkD,OAAO,EAAA;EAC/B;EAEA,IAAA,IAAI+H,MAAM,CAAC,CAAA,CAAE,KAAKA,MAAM,CAAC,EAAE,EAAE;EAC3BA,QAAAA,MAAAA,GAASA,OAAOjL,KAAK,EAAA;EACrB,QAAA,IAAI5F,UAAU,KAAO,EAAA;cACnB6Q,MAAS,GAAA;kBAACm8B,OAAQn8B,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAA;kBAAGo8B,MAAOp8B,CAAAA,MAAM,CAAC,CAAE,CAAA;EAAE,aAAA;cAChD,IAAIA,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,EAAEA,MAAAA,CAAO/H,OAAO,EAAA;WAEtC,MAAA;EACH,YAAA,MAAMsJ,GAAMjd,GAAAA,IAAAA,CAAKsV,GAAG,CAACvE,WAAW2K,MAAM,CAAC,CAAE,CAAA,CAACq8B,WAAW,CAAC,CAAGl7B,CAAAA,CAAAA,OAAO,CAAC,WAAa,EAAA,GAAA,CAAA,CAAA,CAAA;cAC9EnB,MAAM,CAAC,EAAE,IAAIuB,GAAAA;cACbvB,MAAM,CAAC,EAAE,IAAIuB,GAAAA;EACf;EACA21B,QAAAA,IAAAA,CAAKl3B,MAAM,CAACgf,MAAAA,GAAShf,OAAOjL,KAAK,EAAA,CAAGkD,OAAO,EAAK+H,GAAAA,MAAAA,CAAAA;UAChD,OAAOgf,MAAAA,GAAShf,MAAO/H,CAAAA,OAAO,EAAK+H,GAAAA,MAAAA;EACrC;MAEA,MAAMs8B,MAAAA,GAASt8B,MAAM,CAAC,CAAA,CAAE,KAAKA,MAAM,CAAC,CAAE,CAAA,GAAG,EAAK1b,GAAAA,IAAAA,CAAKsV,GAAG,CAACtV,IAAAA,CAAKi4C,GAAG,CAACv8B,MAAM,CAAC,EAAE,GAAGA,MAAM,CAAC,CAAA,CAAE,CAAI,GAAA,GAAA,CAAA;EAEzF,IAAA,MAAMw8B,WAAc,GAAA,IAAA;UAClB,IAAIC,QAAAA,GAAWvF,KAAKnvB,IAAI,EAAA;EACxB,QAAA,IAAI/E,SAAY,GAAA,KAAA;EAChB,QAAA,IAAI7T,UAAU,KAAO,EAAA;cACnB,IAAI/K,CAAAA,GAAI8yC,IAAKl3B,CAAAA,MAAM,EAAGjL,CAAAA,KAAK,IACvBnD,CAAIslC,GAAAA,IAAAA,CAAKj3B,KAAK,EAAA,CAAGlL,KAAK,EAAA;EAC1B,YAAA,IAAIiqB,MAAQ,EAAA;EACV56B,gBAAAA,CAAAA,GAAIA,EAAE6T,OAAO,EAAA;EACbrG,gBAAAA,CAAAA,GAAIA,EAAEqG,OAAO,EAAA;EACf;EACA+K,YAAAA,SAAAA,GAAY5e,CAAC,CAAC,CAAA,CAAE,GAAGA,CAAC,CAAC,EAAE,GAAG,CAAA;EAC1B,YAAA,IAAI4e,SAAW,EAAA;kBACb,MAAM05B,YAAAA,GAAeC,eAAW38B,EAAAA,CAAAA,MAAM,CAAC;EAAC,oBAAA,IAAA;EAAM1b,oBAAAA,IAAAA,CAAKsV,GAAG,CAACxV,CAAC,CAACkZ,KAAM,CAAA;EAAE,iBAAA,CAAA,CAAE2C,KAAK,CAAC;EAAC,oBAAA,CAAA;EAAG,oBAAA;EAAE,iBAAA,CAAA;kBAC/E,MAAM+H,cAAAA,GAAiB00B,aAAap4C,IAAKsV,CAAAA,GAAG,CAACxV,CAAC,CAACkZ,KAAQ,GAAA,CAAA,GAAI,CAAE,CAAA,CAAA,CAAA;EAC7D,gBAAA,MAAM2K,IAAOD,GAAAA,cAAAA,IAAkBA,cAAAA,GAAiB,CAAA,CAAMpW,IAAAA,CAAC,CAAC,CAAE,CAAA,GAAGA,CAAC,CAAC,EAAE,CAAD;kBAChExN,CAAI,GAACkZ,CAAAA,KAAAA,KAAU,CAAI,GAAA;EAAClZ,oBAAAA,CAAC,CAAC,CAAE,CAAA;EAAE,oBAAA;mBAAK,GAAG;EAAC,oBAAA,IAAA;EAAMA,oBAAAA,CAAC,CAAC,CAAE;EAAC,iBAAD,EAAG2E,GAAG,CAACzE,IAAAA,CAAKsV,GAAG,CAAA;EAC5DhI,gBAAAA,CAAAA,GAAI0L,UAAU,CAAI,GAAA;EAAC1L,oBAAAA,CAAC,CAAC,CAAE,CAAA;sBAAEA,CAAC,CAAC,EAAE,GAAGqW;mBAAK,GAAG;sBAACrW,CAAC,CAAC,EAAE,GAAGqW,IAAAA;EAAMrW,oBAAAA,CAAC,CAAC,CAAE;EAAC,iBAAA;EAC7D;EACA6qC,YAAAA,QAAAA,GAAWE,eACR38B,EAAAA,CAAAA,MAAM,CAAC5b,CAAAA,CAAAA,CACP6b,KAAK,CAACrO,CAAAA,CAAAA;EACX;EAEA,QAAA,IAAIgrC,OAAU,GAAA,KAAA;UACd,MAAMC,SAAAA,GAAYJ,SAASx8B,KAAK,EAAA;UAChC,IAAI68B,UAAAA;EACJ,QAAA,IAAI3tC,UAAU,KAAO,EAAA;EACnB2tC,YAAAA,UAAAA,GAAa95B,YAAYy5B,QAASn4C,CAAAA,IAAAA,CAAKsV,GAAG,CAAC1Q,UAAUuzC,QAASvzC,CAAAA,KAAAA,CAAAA;EAChE,SAAA,MACK4zC,aAAaL,QAASvzC,CAAAA,KAAAA,CAAAA;EAE3B,QAAA,IAAI81B,MAAQ,EAAA;EACV,YAAA,IAAI1hB,UAAU,CAAGs/B,EAAAA,OAAAA,GAAUE,aAAahvC,IAAO+uC,GAAAA,SAAS,CAACv/B,KAAM,CAAA;EAC1D,iBAAA,IAAIA,UAAU,CAAGs/B,EAAAA,OAAAA,GAAUE,aAAahvC,IAAO+uC,GAAAA,SAAS,CAACv/B,KAAM,CAAA;WAEjE,MAAA;EACH,YAAA,IAAIA,UAAU,CAAGs/B,EAAAA,OAAAA,GAAUE,aAAahvC,IAAO+uC,GAAAA,SAAS,CAACv/B,KAAM,CAAA;EAC1D,iBAAA,IAAIA,UAAU,CAAGs/B,EAAAA,OAAAA,GAAUE,aAAahvC,IAAO+uC,GAAAA,SAAS,CAACv/B,KAAM,CAAA;EACtE;UACA,OAAOs/B,OAAAA;EAET,KAAA;MAEA,IAAI1F,IAAAA,CAAKlY,MAAM,IAAIwd,WAAe,EAAA,EAAA;EAChC,QAAA,MAAMj7B,GAAM,GAAA,EAAA;EACZ,QAAA,IAAIpS,UAAU,KAAO,EAAA;EACnB,YAAA,IAAI/G,CAAI,GAAA,CAAA;cACR,MAAOA,CAAAA,GAAI,MAAMo0C,WAAe,EAAA,CAAA;EAC9B,gBAAA,MAAMj7B,MAAM,CAACjE,KAAU,KAAA,CAAA,GAAI,EAAK,GAAA,CAAA,KAAM0C,MAAM,CAAC1C,KAAAA,CAAM,GAAG,CAAI,GAAA,KAAK,CAAA,CAAA;EAC/D0C,gBAAAA,MAAM,CAAC1C,KAAM,CAAA,IAAI0C,MAAM,CAAC1C,KAAAA,CAAM,GAAGg/B,MAAS/6B,GAAAA,GAAAA;EAC1C21B,gBAAAA,IAAAA,CAAKl3B,MAAM,CAACgf,MAAAA,GAAShf,OAAOjL,KAAK,EAAA,CAAGkD,OAAO,EAAK+H,GAAAA,MAAAA,CAAAA;EAChD5X,gBAAAA,CAAAA,EAAAA;EACF;WAEG,MAAA,IAAIkV,UAAU,CAAG,EAAA;EACpB,YAAA,MAAM/W,CAAI2wC,GAAAA,IAAAA,CAAKlY,MAAM,CAACkY,KAAKhuC,KAAS,CAAA,GAAC4E,CAAAA,IAAAA,GAAOyT,GAAE,KAAMyd,MAAS,GAAA,CAAA,GAAI,EAAC,CAAA,CAAA;EAClE,YAAA,IAAIz4B,CAAIyZ,GAAAA,MAAM,CAAC1C,KAAAA,CAAM,EAAE;kBACrB0C,MAAM,CAAC1C,MAAM,GAAG/W,CAAAA;EAChB2wC,gBAAAA,IAAAA,CAAKl3B,MAAM,CAACgf,MAAAA,GAAShf,OAAOjL,KAAK,EAAA,CAAGkD,OAAO,EAAK+H,GAAAA,MAAAA,CAAAA;EAClD;WAEG,MAAA,IAAI1C,UAAU,CAAG,EAAA;EACpB,YAAA,MAAM/W,CAAI2wC,GAAAA,IAAAA,CAAKlY,MAAM,CAACkY,KAAKhuC,KAAS,CAAA,GAAC4E,CAAAA,IAAAA,GAAOyT,GAAE,KAAMyd,MAAS,GAAA,KAAK,CAAA,CAAA,CAAA;EAClE,YAAA,IAAIz4B,CAAIyZ,GAAAA,MAAM,CAAC1C,KAAAA,CAAM,EAAE;kBACrB0C,MAAM,CAAC1C,MAAM,GAAG/W,CAAAA;EAChB2wC,gBAAAA,IAAAA,CAAKl3B,MAAM,CAACgf,MAAAA,GAAShf,OAAOjL,KAAK,EAAA,CAAGkD,OAAO,EAAK+H,GAAAA,MAAAA,CAAAA;EAClD;EACF;EACF;MAEA,OAAOgf,MAAAA,GAAShf,MAAO/H,CAAAA,OAAO,EAAK+H,GAAAA,MAAAA;EACrC;;ECvGA;;;;;;;;;EASA,GACe,sBAAS,EAACzX,IAAI,EAAEoE,CAAC,EAAEC,CAAC,EAAEyuC,EAAE,EAAEC,EAAE,EAAEyB,MAAM,EAAEC,MAAM,EAAE/2C,MAAM,EAAEs1C,MAAM,EAAC,EAAA;EAE1E5uC,IAAAA,CAAAA,GAAIA,EAAEob,IAAI,EAAA;EACVnb,IAAAA,CAAAA,GAAIA,EAAEmb,IAAI,EAAA;MAEV,MAAMyzB,IAAAA,GAAOH,KAAK,IAAO,GAAA,GAAA;MACzB,MAAMI,IAAAA,GAAOH,KAAK,IAAO,GAAA,GAAA;MAEzB,IAAI2B,EAAAA,GAAKtwC,CAAEqT,CAAAA,MAAM,EAAGjL,CAAAA,KAAK,IACrBmoC,EAAKtwC,GAAAA,CAAAA,CAAEoT,MAAM,EAAA,CAAGjL,KAAK,EAAA;EAEzB,IAAA,MAAMwD,KAAK5L,CAAEsT,CAAAA,KAAK,EACZzH,EAAAA,EAAAA,GAAK5L,EAAEqT,KAAK,EAAA;EAElB,IAAA,IAAI,CAACtT,CAAAA,CAAEqyB,MAAM,IAAIryB,CAAE6K,CAAAA,OAAO,EAAE2lC,cAAAA,CAAexwC,CAAGpE,EAAAA,IAAAA,EAAM,IAAI,CAACgF,SAAS,CAAA;EAClE,IAAA,IAAI,CAACX,CAAAA,CAAEoyB,MAAM,IAAIpyB,CAAE4K,CAAAA,OAAO,EAAE2lC,cAAAA,CAAevwC,CAAGrE,EAAAA,IAAAA,EAAM,IAAI,CAACgF,SAAS,CAAA;EAElE,IAAA,IAAIZ,CAAEqyB,CAAAA,MAAM,IAAIpyB,CAAAA,CAAEoyB,MAAM,EAAE;UAExBz2B,IAAKlC,CAAAA,OAAO,CAACjC,CAAAA,CAAAA,GAAAA;cAEX,MAAMC,CAAAA,GAAIk3C,MAASA,GAAAA,MAAAA,GAASt1C,MAAO2L,CAAAA,CAAC,CAACxN,CAAAA,CAAEmE,IAAI,EAAEnE,CAAEgE,CAAAA,CAAC,CAAI,GAAA,CAAA;cAEpD,IAAIuE,CAAAA,CAAEqyB,MAAM,EAAE;kBACZie,EAAKG,GAAAA,aAAAA,CAAczwC,CAAGqwC,EAAAA,MAAAA,EAAQ54C,CAAC,CAACo3C,KAAK,EAAEn3C,CAAAA,EAAGkU,EAAI0kC,EAAAA,EAAAA,EAAI,CAAG,EAAA,KAAA,CAAA;kBACrDA,EAAKG,GAAAA,aAAAA,CAAczwC,CAAGqwC,EAAAA,MAAAA,EAAQ54C,CAAC,CAACo3C,KAAK,EAAEn3C,CAAAA,EAAGkU,EAAI0kC,EAAAA,EAAAA,EAAI,CAAG,EAAA,KAAA,CAAA;EACvD;cAEA,IAAIrwC,CAAAA,CAAEoyB,MAAM,EAAE;kBACZke,EAAKE,GAAAA,aAAAA,CAAcxwC,CAAGmwC,EAAAA,MAAAA,EAAQ34C,CAAC,CAACq3C,KAAK,EAAEp3C,CAAAA,EAAGmU,EAAI0kC,EAAAA,EAAAA,EAAI,CAAG,EAAA,IAAA,CAAA;kBACrDA,EAAKE,GAAAA,aAAAA,CAAcxwC,CAAGmwC,EAAAA,MAAAA,EAAQ34C,CAAC,CAACq3C,KAAK,EAAEp3C,CAAAA,EAAGmU,EAAI0kC,EAAAA,EAAAA,EAAI,CAAG,EAAA,IAAA,CAAA;EACvD;EAEF,SAAA,CAAA;EAEF;MAEA,OAAO;EAACvwC,QAAAA,CAAAA;EAAGC,QAAAA;EAAE,KAAA;EAEf;;EClDA;;;;;;;;;EASA,GACe,mBAAA,CAAS,EAACrE,IAAI,EAAEoE,CAAC,EAAEC,CAAC,EAAEyuC,EAAE,EAAEC,EAAE,EAAC,EAAA;MAC1C,MAAME,IAAAA,GAAOH,KAAK,IAAO,GAAA,GAAA;MACzB,MAAMI,IAAAA,GAAOH,KAAK,IAAO,GAAA,GAAA;EAEzB,IAAA,MAAMj3C,IAAI,IAAI,CAACkJ,SAAS,KAAK,MAAMX,CAAID,GAAAA,CAAAA;EAEvC,IAAA,MAAMvI,CAAIC,GAAAA,CAAAA,CAAE2b,MAAM,EAAA,CAAGjL,KAAK,EAAA;EAE1B,IAAA,IAAI,IAAI,CAACxH,SAAS,KAAK,GAAA,EAAKnJ,EAAE6T,OAAO,EAAA;EAErC,IAAA,MAAMolC,IAAO90C,GAAAA,IAAAA,CAAKQ,GAAG,CAAC3E,CAAAA,CAAKA,GAAAA,CAAC,CAAC,IAAI,CAACmJ,SAAS,KAAK,GAAA,GAAMkuC,OAAOD,IAAK,CAAA,CAAA;EAClE,IAAA,MAAMjpC,CAAIlO,GAAAA,CAAAA,CAAE26B,MAAM,CAAC36B,EAAE6Y,WAAImgC,CAAAA,IAAAA,CAAAA,CAAAA,IAAU,IAAI,CAAC9vC,SAAS,KAAK,GAAM,GAAA,MAAM,EAAC,CAAA,CAAA;MAEnE,IAAIgF,CAAAA,GAAInO,CAAC,CAAC,CAAA,CAAE,EAAEA,CAAC,CAAC,EAAE,GAAGmO,CAAAA;EAErB,IAAA,IAAI,IAAI,CAAChF,SAAS,KAAK,GAAA,EAAKnJ,EAAE6T,OAAO,EAAA;EAErC5T,IAAAA,CAAAA,CAAE2b,MAAM,CAAC5b,CAAAA,CAAAA;MAET,OAAO;EAACuI,QAAAA,CAAAA;EAAGC,QAAAA;EAAE,KAAA;EAEf;;EC9BA;;;;;;;;;EASA,GACe,mBAAS,CAAA,EAACrE,IAAI,EAAEoE,CAAC,EAAEC,CAAC,EAAEyuC,EAAE,EAAEC,EAAE,EAAEyB,MAAM,EAAEC,MAAM,EAAE/2C,MAAM,EAAC,EAAA;EAElE0G,IAAAA,CAAAA,GAAIA,EAAEob,IAAI,EAAA;EACVnb,IAAAA,CAAAA,GAAIA,EAAEmb,IAAI,EAAA;MAEV,MAAMyzB,IAAAA,GAAOH,KAAK,IAAO,GAAA,GAAA;MACzB,MAAMI,IAAAA,GAAOH,KAAK,IAAO,GAAA,GAAA;MAEzB,IAAI2B,EAAAA,GAAKtwC,CAAEqT,CAAAA,MAAM,EAAGjL,CAAAA,KAAK,IACrBmoC,EAAKtwC,GAAAA,CAAAA,CAAEoT,MAAM,EAAA,CAAGjL,KAAK,EAAA;EAEzB,IAAA,MAAMwD,KAAK5L,CAAEsT,CAAAA,KAAK,EACZzH,EAAAA,EAAAA,GAAK5L,EAAEqT,KAAK,EAAA;EAElB,IAAA,IAAI,CAACtT,CAAAA,CAAEqyB,MAAM,IAAIryB,CAAE6K,CAAAA,OAAO,EAAE2lC,cAAAA,CAAexwC,CAAGpE,EAAAA,IAAAA,EAAM,IAAI,CAACgF,SAAS,CAAA;EAClE,IAAA,IAAI,CAACX,CAAAA,CAAEoyB,MAAM,IAAIpyB,CAAE4K,CAAAA,OAAO,EAAE2lC,cAAAA,CAAevwC,CAAGrE,EAAAA,IAAAA,EAAM,IAAI,CAACgF,SAAS,CAAA;EAElE,IAAA,IAAIZ,CAAEqyB,CAAAA,MAAM,IAAIpyB,CAAAA,CAAEoyB,MAAM,EAAE;UAExBz2B,IAAKlC,CAAAA,OAAO,CAACjC,CAAAA,CAAAA,GAAAA;cAEX,IAAIuI,CAAAA,CAAEqyB,MAAM,EAAE;kBACZ,MAAMnlB,CAAAA,GAAI5T,OAAO6F,KAAK,CAAC1H,EAAEmE,IAAI,EAAEnE,EAAEgE,CAAC,CAAA;kBAClC60C,EAAKG,GAAAA,aAAAA,CAAczwC,CAAGqwC,EAAAA,MAAAA,EAAQ54C,CAAC,CAACo3C,KAAK,EAAE3hC,CAAAA,EAAGtB,EAAI0kC,EAAAA,EAAAA,EAAI,CAAG,EAAA,KAAA,CAAA;kBACrDA,EAAKG,GAAAA,aAAAA,CAAczwC,CAAGqwC,EAAAA,MAAAA,EAAQ54C,CAAC,CAACo3C,KAAK,EAAE3hC,CAAAA,EAAGtB,EAAI0kC,EAAAA,EAAAA,EAAI,CAAG,EAAA,KAAA,CAAA;EACvD;cAEA,IAAIrwC,CAAAA,CAAEoyB,MAAM,EAAE;kBACZ,MAAM5pB,CAAAA,GAAInP,OAAO8F,MAAM,CAAC3H,EAAEmE,IAAI,EAAEnE,EAAEgE,CAAC,CAAA;kBACnC80C,EAAKE,GAAAA,aAAAA,CAAcxwC,CAAGmwC,EAAAA,MAAAA,EAAQ34C,CAAC,CAACq3C,KAAK,EAAErmC,CAAAA,EAAGoD,EAAI0kC,EAAAA,EAAAA,EAAI,CAAG,EAAA,IAAA,CAAA;kBACrDA,EAAKE,GAAAA,aAAAA,CAAcxwC,CAAGmwC,EAAAA,MAAAA,EAAQ34C,CAAC,CAACq3C,KAAK,EAAErmC,CAAAA,EAAGoD,EAAI0kC,EAAAA,EAAAA,EAAI,CAAG,EAAA,IAAA,CAAA;EACvD;EAEF,SAAA,CAAA;EAEF;MAEA,OAAO;EAACvwC,QAAAA,CAAAA;EAAGC,QAAAA;EAAE,KAAA;EAEf;;ECnCA,MAAM0wC,aAAAA,GAAgB,IAAIpiC,IAAW,EAAA;EACrC,MAAMqiC,cAAc,IAAInmC,OAAAA,EAAAA;EASxB,MAAMomC,cAAiB,GAAA;MACrBlkC,GAAKmkC,EAAAA,SAAAA;MACLlhC,GAAKmhC,EAAAA,SAAAA;MACL5jC,MAAQ6jC,EAAAA,YAAAA;MACR1jC,IAAM2jC,EAAAA,UAAAA;MACN5jC,IAAM6jC,EAAAA;EACR,CAAA;EAEA;;;EAGA,GACA,SAASC,YAAY15C,CAAC,EAAA;EACpB,IAAA,OAAO,IAAI,CAAC25C,YAAY,CAAC,IAAI,CAACroB,KAAK,GAAG,IAAI,CAACA,KAAK,CAACtxB,CAAK,CAAA,GAAA,IAAA,CAAA;EACxD;EAEA;;;EAGA,GACA,SAAS45C,oBAAoBC,MAAM,EAAA;MACjC,MAAMC,IAAAA,GAAOD,MAAOl1C,CAAAA,GAAG,CAACo1C,QAAAA,CAAAA;EACxB,IAAA,MAAMhxC,IAAO8wC,GAAAA,MAAAA,CAAOl1C,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,CAAEH,CAAAA,GAAG,CAACsW,KAAK,CAAC,GAAA,CAAI,CAAC,CAAE,CAAA,CAAA;MAChD,OAAO6jC,gBAAAA,CAAQC,cAAc,CAACJ,MAAQ/qC,CAAAA,CAAAA,IAAI,CAAC,CAACC,CAAAA,EAAGZ,CAAMpF,GAAAA,IAAI,CAACoF,CAAAA,CAAE,CAACooC,aAAa,CAACxtC,IAAI,CAACgG,CAAE,CAAA,CAAA,IAAK+qC,IAAI,CAAC/qC,CAAE,CAAA,GAAG+qC,IAAI,CAAC3rC,CAAE,CAAA,CAAA;EAC1G;EAEA;;;EAGA,GACA,SAAS+rC,qBAAqBL,MAAM,EAAA;MAClC,OAAOD,mBAAAA,CAAoBC,QAAQhmC,OAAO,EAAA;EAC5C;EAEA;;;EAGA,GACA,SAASkmC,SAASF,MAAM,EAAA;EACtB,IAAA,IAAI71C,CAAI,GAAA,EAAI/D,EAAAA,CAAAA,GAAI,CAAGkC,EAAAA,CAAAA;MACnB,MAAMga,CAAAA,GAAI09B,OAAOv3C,MAAM;EACvB,IAAA,MAAO,EAAE0B,CAAAA,GAAImY,CAAG,CAAA,IAAIha,CAAI,GAAA,CAAC03C,MAAM,CAAC71C,CAAE,CAAA,CAAC,CAAE,CAAA,EAAE/D,CAAKkC,IAAAA,CAAAA;MAC5C,OAAOlC,CAAAA;EACT;EAEA;;;EAGA,GACA,SAASk6C,oBAAAA,CAAqBN,MAAM,EAAEpqC,KAAK,EAAA;MACzC,IAAI0M,CAAAA;MACJ,IAAI,EAAGA,CAAAA,CAAAA,GAAI09B,OAAOv3C,MAAK,IAAK,CAAA,CAAI,EAAA;MAChC,IAAItC,CAAAA,EAAG2pC,EAAI3lC,EAAAA,CAAAA,EAAGo2C,EAAIC,EAAAA,EAAAA;MAClB,MAAMx3B,CAAAA,GAAIg3B,MAAM,CAACpqC,KAAK,CAAC,CAAE,CAAA,CAAC,CAACnN,MAAM;EACjC,IAAA,IAAK,IAAIg4C,CAAI,GAAA,CAAA,EAAGA,CAAIz3B,GAAAA,CAAAA,EAAG,EAAEy3B,CAAG,CAAA;UAC1B,IAAKD,EAAAA,GAAKD,KAAK,CAAGp2C,EAAAA,CAAAA,GAAI,GAAGA,CAAImY,GAAAA,CAAAA,EAAG,EAAEnY,CAAG,CAAA;cACnC,IAAK2lC,CAAAA,EAAAA,GAAK,CAAC3pC,IAAI65C,MAAM,CAACpqC,KAAK,CAACzL,CAAE,CAAA,CAAC,CAACs2C,CAAE,CAAD,EAAG,CAAE,CAAA,GAAGt6C,CAAC,CAAC,CAAA,CAAE,KAAK,CAAG,EAAA;kBACnDA,CAAC,CAAC,EAAE,GAAGq6C,EAAAA,EAAIr6C,CAAC,CAAC,CAAA,CAAE,GAAGq6C,EAAM1Q,IAAAA,EAAAA;eAErB,MAAA,IAAIA,KAAK,CAAG,EAAA;kBACf3pC,CAAC,CAAC,EAAE,GAAGo6C,EAAAA,EAAIp6C,CAAC,CAAC,CAAA,CAAE,GAAGo6C,EAAMzQ,IAAAA,EAAAA;eAErB,MAAA;kBACH3pC,CAAC,CAAC,EAAE,GAAGq6C,EAAAA;EACT;EACF;EACF;EACF;EAEA;;;;;EAKC,IACD,SAAS7B,OAAAA,CAAQx4C,CAAC,EAAEgE,CAAC,EAAA;;EAGnB,IAAA,IAAI,IAAI,CAAC2zC,QAAQ,EAAE,OAAO,KAAA;;EAG1B,IAAA,MAAM4C,aAAgB,GAAA,IAAI,CAACC,cAAc,CAACx6C,CAAGgE,EAAAA,CAAAA,CAAAA;MAC7C,IAAIu2C,aAAAA,KAAkB,WAAW,OAAO,IAAA;WACnC,IAAIA,aAAAA,KAAkB,UAAU,OAAO,KAAA;;MAG5C,MAAME,KAAAA,GAAQ,IAAI,CAACtxC,SAAS,CAACsH,MAAM,CAAC,CAAO,CAAA,KAAA,GAAA,GAAM,GAAM,GAAA,GAAA;EACvD,IAAA,MAAMiqC,WAAc,GAAA,IAAI,CAACvxC,SAAS,CAAC4T,OAAO,CAAC,IAAI,CAAC5T,SAAS,CAACsH,MAAM,CAAC,CAAIgqC,CAAAA,EAAAA,KAAAA,CAAAA;EACrE,IAAA,MAAM5+B,KAAQ,GAAA,IAAI,CAAC,CAAC,CAAC,EAAE6+B,WAAY,CAAA,IAAI,CAAC,CAAC,CAACv8B,QAAQ,CAACtC,KAAK,EAAA;MACxD,MAAM/W,KAAAA,GAAQ,IAAI,CAAC,CAAC,CAAC,EAAE41C,WAAAA,CAAAA,CAAa,CAAC,CAAC16C,CAAGgE,EAAAA,CAAAA,CAAAA;EACzC,IAAA,MAAMipB,WAAWnoB,KAAQ,GAAA,CAAA;EACzB,IAAA,MAAM+e,IAAO,GAAA,IAAI,CAAC,CAAC,CAAC,EAAE62B,WAAY,CAAA,IAAI,CAAC,CAAC,CAACl8B,YAAY,CAAC,CAAA,CAAA;MACtD,MAAM6G,KAAAA,GAAQq1B,gBAAgB,GAC1BztB,GAAAA,QAAAA,GAAWpR,KAAK,CAAC,CAAA,CAAE,GAAGgI,IAAAA,GAAOA,IAAOhI,GAAAA,KAAK,CAAC,CAAE,CAAA,GAC5CoR,QAAWpJ,GAAAA,IAAAA,GAAOhI,KAAK,CAAC,EAAE,GAAGA,KAAK,CAAC,CAAA,CAAE,GAAGgI,IAAAA;EAC5C,IAAA,MAAM82B,GAAM,GAAA,IAAI,CAAC,CAAC,CAAC,EAAED,WAAY,CAAA,IAAI,CAAC,CAAC,CAACl8B,YAAY,CAAC1Z,KAAAA,CAAAA;EACrD,IAAA,MAAM4E,OAAOxJ,IAAKsV,CAAAA,GAAG,CAACyX,QAAWpJ,GAAAA,IAAAA,GAAO82B,MAAMA,GAAM92B,GAAAA,IAAAA,CAAAA;EACpD,IAAA,OAAOna,OAAO2b,KAAQ,GAAA,CAAA;EAExB;EAOe,MAAMu1B,IAAanO,SAAAA,GAAAA,CAAAA;EA2OhC;;;EAGA,KACAC,QAAW,GAAA;;EAGT,QAAA;EAAC,YAAA,GAAA;EAAK,YAAA,GAAA;EAAK,YAAA,IAAA;EAAM,YAAA;WAAK,CAACzqC,OAAO,CAACC,CAAAA,CAAAA,GAAAA;;cAG7B,IAAI,IAAI,CAAC,CAAC,CAAC,EAAEA,CAAE,CAAA,GAAG,CAAC,CAAC,EAAE;kBAEpB,MAAMiZ,GAAAA,GAAM,IAAI,CAAC,CAAC,CAAC,EAAEjZ,CAAAA,CAAE,GAAG,CAAC,CAAC;;kBAG5B,IAAI,CAAC,IAAI,CAACkjC,KAAK,CAACjqB,GAAI,CAAA,IAAI,IAAI,CAAChS,SAAS,KAAKjH,CAAG,EAAA;EAC5C,oBAAA,IAAI,CAACkjC,KAAK,CAACjqB,GAAI,CAAA,GAAG,CAACpM,CAAG8D,EAAAA,CAAAA,GAAAA;0BACpB,MAAM1Q,CAAAA,GAAIyC,MAAM8pB,IAAI,CAAC,IAAID,GAAI1f,CAAAA,CAAAA,CAAEpK,GAAG,CAACkO,CAAAA,CAAAA,CAAAA,CAAAA;EACnC,wBAAA,OAAO1Q,EAAEG,MAAM,KAAK,IAAIH,CAAC,CAAC,EAAE,GAAGA,CAAAA;EACjC,qBAAA;EACF;;EAGA,gBAAA,IAAIgZ,GAAQjZ,KAAAA,CAAAA,IAAK,IAAI,CAAC,CAAC,CAAC,EAAEA,CAAAA,CAAE,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAEA,CAAAA,CAAE,MAAM,CAAC,CAAC,CAACsnB,KAAK,IAAI,IAAI,CAACrgB,SAAS,KAAKjH,CAAG,EAAA;sBACzF,IAAI,CAAC,CAAC,CAAC,EAAEA,EAAE,KAAK,CAAC,CAAC,GAAGiZ,GAAAA;sBACrB,IAAI,CAAC,CAAC,CAAC,EAAEjZ,CAAAA,CAAE,MAAM,CAAC,CAAC,CAACsnB,KAAK,GAAGrO,GAAAA;EAC9B;EAEF;EAEF,SAAA,CAAA;EAEA,QAAA,KAAK,CAACuxB,QAAAA,EAAAA;EAER;EAEA;;;OAIAwB,KAAAA,CAAMhpC,QAAQ,EAAE;UAEd,IAAI,CAAC,IAAI,CAACkoC,aAAa,CAAC9qC,MAAM,EAAE,OAAO,IAAI;EAE3C,kFACA,MAAMu4C,aAAAA,GAAgB,IAAI,CAACnU,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC,IAAI,CAAC0G,aAAa,CAAC,CAAA,CAAE,EAAE,CAAK,CAAA,GAAA,KAAA;EAC1E,QAAA,MAAM0N,MAAS,GAAA,IAAI,CAACC,OAAO,GAAGF,aAAiB,IAAA,IAAI,CAACG,GAAG,CAAC,IAAI,CAAC5N,aAAa,CAAC,CAAE,CAAA,EAAE,CAAOyN,CAAAA,KAAAA,aAAAA,EAChFI,KAAQ,GAAA,IAAI,CAACC,MAAM,GAAGL,aAAiB,IAAA,IAAI,CAAC50C,EAAE,CAAC,IAAI,CAACmnC,aAAa,CAAC,EAAE,EAAE,CAAA,CAAA,KAAOyN,aAC7EM,EAAAA,MAAAA,GAAS,IAAI,CAACC,OAAO,GAAGP,iBAAiB,IAAI,CAACQ,GAAG,CAAC,IAAI,CAACjO,aAAa,CAAC,EAAE,EAAE,CAAA,CAAA,KAAOyN,aAChFS,EAAAA,KAAAA,GAAQ,IAAI,CAACC,MAAM,GAAGV,iBAAiB,IAAI,CAAC10C,EAAE,CAAC,IAAI,CAACinC,aAAa,CAAC,CAAA,CAAE,EAAE,CAAOyN,CAAAA,KAAAA,aAAAA;UAEnF,MAAMW,QAAAA,GAAYP,KAASH,IAAAA,MAAAA,IAAUQ,KAASH,IAAAA,MAAAA;UAE9C,MAAMM,UAAAA,GAAa,CAACz7C,CAAAA,EAAGgE,CAAM,GAAA,CAAA,EAAG,CAACw3C,QAAAA,IAAY,IAAI,CAAC9U,KAAK,GAAG,IAAI,CAACA,KAAK,CAAC1mC,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,MAAO,CAAA,CAAC,EAAE,IAAI,CAAC2zC,QAAQ,GAChG,CAAA,EAAG,IAAI,CAACrN,QAAQ,CAAChoC,MAAM,GAAG,CAAA,GAAI,IAAI,CAACgjC,IAAI,CAACtlC,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG2M,KAAK,CAAC,CAAG,EAAA,EAAIgG,CAAAA,CAAAA,IAAI,CAAC,GAAA,CAAA,GAAO,OAAS,CAAA,CAAA,GAChF,CAAG,EAAA,IAAI,CAAC2uB,IAAI,CAACtlC,CAAAA,EAAGgE,CAAG2S,CAAAA,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAA,CAAM,CAAE,CAAA;UAEpC,MAAM+kC,QAAAA,GAAW,CAAC17C,CAAGgE,EAAAA,CAAAA,GAAAA;EACnB,YAAA,MAAM23C,IAAO,GAAA;kBACX13C,UAAY,EAAA,IAAA;kBACZE,IAAMnE,EAAAA,CAAAA;EACNoM,gBAAAA,KAAAA,EAAOqvC,WAAWz7C,CAAGgE,EAAAA,CAAAA,CAAAA;EACrBA,gBAAAA,CAAAA;EACA43C,gBAAAA,GAAAA,EAAK,IAAI,CAACC,WAAW,IAAI,IAAI,CAACA,WAAW,CAAC,CAAE,CAAA,IAAI,IAAI,CAACA,WAAW,CAAC,CAAA,CAAE,CAAC77C,CAAGgE,EAAAA,CAAAA,CAAAA;EACvEmE,gBAAAA,EAAAA,EAAI,IAAI,CAACm9B,IAAI,CAACtlC,GAAGgE,CAAG2M,CAAAA,CAAAA,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC40B,UAAU,GAAG,CAAA,CAAA,CAAG5uB,IAAI,CAAC,GAAA,CAAA;EACvDmlC,gBAAAA,GAAAA,EAAK,IAAI,CAACD,WAAW,IAAI,IAAI,CAACA,WAAW,CAAC,CAAE,CAAA,IAAI,IAAI,CAACA,WAAW,CAAC,CAAA,CAAE,CAAC77C,CAAGgE,EAAAA,CAAAA,CAAAA;EACvEqlB,gBAAAA,KAAAA,EAAO,IAAI,CAACnJ,MAAM,CAAClgB,CAAGgE,EAAAA,CAAAA,CAAAA;EACtBuE,gBAAAA,CAAAA,EAAG0yC,KAAQh8B,GAAAA,QAAAA,CAAK,IAAI,CAAChZ,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,GAAM,IAAI,CAACiC,EAAE,CAACjG,CAAGgE,EAAAA,CAAAA,CAAAA;EAC5CizC,gBAAAA,EAAAA,EAAI6D,MAAS77B,GAAAA,QAAAA,CAAK,IAAI,CAAC+7B,GAAG,CAACh7C,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,GAAM,IAAI,CAACg3C,GAAG,CAACh7C,CAAGgE,EAAAA,CAAAA,CAAAA;EAChDwE,gBAAAA,CAAAA,EAAG8yC,KAAQr8B,GAAAA,QAAAA,CAAK,IAAI,CAAC9Y,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,GAAM,IAAI,CAACmC,EAAE,CAACnG,CAAGgE,EAAAA,CAAAA,CAAAA;EAC5CkzC,gBAAAA,EAAAA,EAAIiE,MAASl8B,GAAAA,QAAAA,CAAK,IAAI,CAACo8B,GAAG,CAACr7C,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,GAAM,IAAI,CAACq3C,GAAG,CAACr7C,CAAGgE,EAAAA,CAAAA;EAClD,aAAA;cACA23C,IAAKpqC,CAAAA,QAAQ,GAAGoqC,IAAAA,CAAKtyB,KAAK,KAAK,KAAQ,GAAA,CAAA,EAAGsyB,IAAI,CAAC,IAAI,CAACxyC,SAAS,CAAC,CAAC,CAAC,EAAEwyC,IAAAA,CAAKvvC,KAAK,CAAA,CAAE,GAAG,CAAA,EAAGuvC,IAAI,CAAC,IAAI,CAACxyC,SAAS,CAAC,CAAE,CAAA;cAC1GwyC,IAAKxzC,CAAAA,EAAE,GAAGwzC,IAAKtyB,CAAAA,KAAK,KAAK,KAAQ,GAAA,CAAA,EAAGsyB,KAAKxzC,EAAE,CAAC,CAAC,EAAEwzC,IAAI,CAAC,IAAI,CAACxyC,SAAS,CAAC,CAAA,CAAE,GAAGwyC,IAAAA,CAAKxzC,EAAE;cAC/E,OAAOwzC,IAAAA;EACT,SAAA;UAEA,MAAMx3C,MAAAA,GAAO,IAAI,CAAC43C,cAAc,GAAG,IAAI,CAAC3O,aAAa,CAACzoC,GAAG,CAAC+2C,QAAAA,CAAAA;UAC1D,MAAMM,QAAAA,GAAW,IAAI,CAACC,YAAY,GAAG,IAAI,CAACp2C,KAAK,CAAClB,GAAG,CAAC+2C,QAAYv3C,CAAAA,GAAAA,MAAAA;UAEhE,IAAI,IAAI,CAACmtB,KAAK,EAAE;cACd,MAAM4qB,OAAAA,GAAUhoC,cAAO8nC,CAAAA,QAAAA,EAAUh8C,CAAAA,CAAAA,GAAK,IAAI,CAACsxB,KAAK,CAACtxB,CAAAA,CAAEmE,IAAI,CAAA,CAAA;EACvD,YAAA,IAAI,CAACw1C,YAAY,GAAGj+B,iBAAM,CAAC,CAAC,KAAK,EAAE,IAAI,CAACygC,UAAU,CAAC1rC,MAAM,CAAC,CAAA,CAAA,CAAGC,WAAW,EAAA,CAAA,EAAK,IAAI,CAACyrC,UAAU,CAACxrC,KAAK,CAAC,CAAI,CAAA,CAAA,CAAA,CAAC,EACrGiL,CAAAA,MAAM,CAACsgC,OAAAA,CAAAA,CACPrgC,KAAK,CAAC;kBAACqgC,OAAO,CAAC,CAAE,CAAA,KAAKA,OAAO,CAAC,CAAE,CAAA,GAAG,IAAI,CAACE,QAAQ,GAAG7yC,WAAI,CAAA;sBAAC,IAAI,CAAC6yC,QAAQ,GAAG,CAAA;EAAG,oBAAA,IAAI,CAACC;EAAS,iBAAA,CAAA;EAAG,gBAAA,IAAI,CAACD;EAAS,aAAA,CAAA;WAE1G,MAAA;EACH,YAAA,IAAI,CAACzC,YAAY,GAAG,IAAM,IAAI,CAAC0C,QAAQ;EACzC;EAEA,QAAA,MAAMC,WAAWN,QAAS1+B,CAAAA,IAAI,CAACtd,CAAAA,CAAAA,GAAKA,EAAEi3C,EAAE,KAAKl3C,SACvCw8C,CAAAA,EAAAA,QAAAA,GAAWP,SAAS1+B,IAAI,CAACtd,CAAAA,CAAKA,GAAAA,CAAAA,CAAEk3C,EAAE,KAAKn3C,SAAAA,CAAAA;EAE7C,QAAA,MAAM4H,SAAS,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,EAC9Di8B,GAAAA,GAAM,IAAI,CAACrzC,SAAS,GAAG,IAAI,CAACA,SAAS,KAAK,GAAA,GAAM,MAAM,GAAMpJ,GAAAA,SAAAA,EAC5D08C,OAAO,IAAI,CAACtzC,SAAS,GAAG,IAAI,CAACA,SAAS,KAAK,MAAM,IAAO,GAAA,IAAA,GAAOpJ,WAC/D8oB,IAAO,GAAA;EAAC2zB,YAAAA,GAAAA;EAAKC,YAAAA;EAAK,SAAA,CAACj7C,MAAM,CAACxB,CAAAA,CAAAA,GAAKA,CAC/B6C,CAAAA,EAAAA,MAAAA,GAAS,IAAI,CAACsC,OAAO,EACrBmB,UAAa,GAAA,IAAI,CAACqI,WAAW,EAC7BjH,KAAQ,GAAA,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;EAElE;;;;;UAMA,SAASo8B,cAAc5J,IAAI,EAAA;cACzB,MAAM6J,QAAAA,GAAW,IAAI,CAAC,CAAC,CAAC,EAAE7J,IAAAA,CAAK,IAAI,CAAC,CAAC;cACrC,MAAM8J,SAAAA,GAAYD,WAAWx4C,MAAO63C,GAAAA,QAAAA;EAEpC,YAAA,MAAM3jC,eAAeukC,SAClBp7C,CAAAA,MAAM,CAACxB,CAAAA,IAAK,CAAC;EAAC68C,oBAAAA,GAAAA;EAAK98C,oBAAAA,SAAAA;EAAW,oBAAA;EAAM,iBAAA,CAAC4B,QAAQ,CAAC3B,CAAC,CAAC8yC,IAAK,CAAA,CAAA,CAAA;EAExD,YAAA,IAAI,CAACz6B,YAAAA,CAAa/V,MAAM,EAAE,OAAO,EAAE;EAEnC,YAAA,MAAMw6C,eAAe,OAAOzkC,YAAY,CAAC,CAAE,CAAA,CAACy6B,KAAK,KAAK,QAAA;cAEtD,IAAIiK,MAAAA,GAAS,IAAI,CAAC5zC,SAAS,KAAK2pC,IAC5BpvC,GAAAA,iBAAAA,EAAAA,CACC7D,GAAG,CAACG,CAAAA,CAAAA,GAAKA,CAAC,CAAC8yC,IAAAA,CAAK,EAChB5N,MAAM,CAACC,CAAAA,MAAUA,GAAAA,MAAAA,CAAO7iC,MAAM,KAAK,CAAI6iC,GAAAA,MAAM,CAAC,CAAE,CAAA,CAAChhC,IAAI,GAAG64C,UAAAA,CAAY7X,OAAOxgC,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,CAAEmE,CAAAA,IAAI,GAAG,IAAI,CAACihC,KAAK,CACvGnxB,CAAAA,CAAAA,OAAO,CAACoE,YACRvJ,CAAAA,CAAAA,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAAA;kBACR,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE2kC,KAAK,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAAA,CAAK,IAAI,CAAC,CAAC,CAAC/jC,CAAEjK,CAAAA,KAAK,EAAEqJ,CAAAA,CAAErJ,KAAK,CAAA;kBACtE,MAAMm4C,IAAAA,GAAO,QAACN,IAAYG,YAAgB7rC,GAAAA,UAAAA,CAAWlC,EAAElP,GAAG,EAAE,EAAMkP,CAAAA,GAAAA,CAAAA,CAAElP,GAAG;kBACvE,MAAMq9C,IAAAA,GAAO,QAACP,IAAYG,YAAgB7rC,GAAAA,UAAAA,CAAW9C,EAAEtO,GAAG,EAAE,EAAMsO,CAAAA,GAAAA,CAAAA,CAAEtO,GAAG;EACvE,gBAAA,OAAOo9C,IAAOC,GAAAA,IAAAA;EAChB,aAAA,CAAA,CACCv4C,GAAG,CAAC3E,CAAAA,CAAAA,GAAK28C,WAAW19B,QAAKjf,CAAAA,CAAAA,CAAEH,GAAG,CAAA,GAAIi9C,YAAe7rC,GAAAA,UAAAA,CAAWjR,CAAEH,CAAAA,GAAG,EAAE,EAAMG,CAAAA,GAAAA,CAAAA,CAAEH,GAAG,CAAA,GAC/EoP,WAAOoJ,CAAAA,YAAAA,CACJvJ,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAM,IAAI,CAAC,CAAC,CAAC,EAAE2kC,IAAK,CAAA,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAAA,CAAK,IAAI,CAAC,CAAC,CAAC/jC,CAAAA,CAAE5K,IAAI,EAAEgK,CAAEhK,CAAAA,IAAI,IAAI4K,CAAC,CAAC+jC,IAAK,CAAA,GAAG3kC,CAAC,CAAC2kC,IAAK,CAAA,CAAA,CAC9FnuC,GAAG,CAAC3E,CAAAA,CAAKA,GAAAA,CAAC,CAAC8yC,IAAK,CAAA,CAAA,EAAG9yC,CAAAA,CAAAA,GAAK,GAAGA,CAAG,CAAA,CAAA,CAAA;cAErC,IAAI,IAAI,CAACmJ,SAAS,KAAK2pC,IAAAA,CAAKriC,MAAM,CAAC,CAAM,CAAA,IAAA,IAAI,CAACorC,WAAW,EAAE;EACzD,gBAAA,IAAI,IAAI,CAACA,WAAW,CAAC,CAAA,CAAE,EAAEkB,MAASA,GAAAA,MAAAA,CAAO57C,MAAM,CAACy7C,UAAUj4C,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAE87C,GAAG,CAAA,CAAA;EACxE,gBAAA,IAAI,IAAI,CAACD,WAAW,CAAC,CAAA,CAAE,EAAEkB,MAASA,GAAAA,MAAAA,CAAO57C,MAAM,CAACy7C,UAAUj4C,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAE47C,GAAG,CAAA,CAAA;EAC1E;cAEA,OAAOmB,MAAAA;EACT;EAEA,QAAA,MAAMI,KAAQT,GAAAA,aAAAA,CAAcr4C,IAAI,CAAC,IAAI,CAAE,CAAA,GAAA,CAAA;EACvC,QAAA,MAAM+4C,MAASV,GAAAA,aAAAA,CAAcr4C,IAAI,CAAC,IAAI,CAAE,CAAA,IAAA,CAAA;EACxC,QAAA,MAAMg5C,KAAQX,GAAAA,aAAAA,CAAcr4C,IAAI,CAAC,IAAI,CAAE,CAAA,GAAA,CAAA;EACvC,QAAA,MAAMi5C,MAASZ,GAAAA,aAAAA,CAAcr4C,IAAI,CAAC,IAAI,CAAE,CAAA,IAAA,CAAA;UAExC,IAAIk5C,YAAAA,EAAcC,SAASC,SAAWC,EAAAA,SAAAA;UACtC,IAAI,IAAI,CAAC/F,QAAQ,EAAE;EAEjB,YAAA,MAAMgG,WAAc3B,GAAAA,QAAAA,CAASx6C,MAAM,CAACxB,CAAAA,CAAK,GAAA;EAAC,oBAAA,MAAA;EAAQ,oBAAA;mBAAM,CAAC2B,QAAQ,CAAC3B,CAAAA,CAAEqpB,KAAK,CAAA,CAAA;EAEzE,YAAA,MAAMu0B,WAAcl6C,GAAAA,iBAAAA,EAAAA,CACjB7D,GAAG,CAACG,CAAAA,CAAKA,GAAAA,CAAAA,CAAEoM,KAAK,CAAA,CAChB6H,OAAO,CAAC0pC,WAAAA,CAAAA,CACRzhC,MAAM,CAAC,CAAC1b,GAAKR,EAAAA,CAAAA,GAAAA;EACZ,gBAAA,IAAI,CAACQ,GAAG,CAACR,CAAAA,CAAEH,GAAG,CAAC,EAAEW,GAAG,CAACR,CAAAA,CAAEH,GAAG,CAAC,GAAG,CAAA;EAC9BW,gBAAAA,GAAG,CAACR,CAAAA,CAAEH,GAAG,CAAC,IAAI4W,WAAAA,CAAIzW,CAAEiJ,CAAAA,MAAM,EAAEwjB,CAAAA,EAAMA,GAAAA,EAAE,CAAC+vB,GAAI,CAAA,CAAA;kBACzC,OAAOh8C,GAAAA;EACT,aAAA,EAAG,EAAC,CAAA;cAENw7C,QAASltC,CAAAA,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAAA;EAChB,gBAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAChF,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAACA,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC4F,CAAAA,CAAE5K,IAAI,EAAEgK,EAAEhK,IAAI,CAAA;EACxF,gBAAA,MAAM05C,EAAK9uC,GAAAA,CAAC,CAAC,IAAI,CAAC5F,SAAS,CAAC,EAAE20C,EAAAA,GAAK3vC,CAAC,CAAC,IAAI,CAAChF,SAAS,CAAC;EACpD,gBAAA,IAAI00C,EAAKC,GAAAA,EAAAA,KAAO,CAAG,EAAA,OAAOD,EAAKC,GAAAA,EAAAA;EAC/B,gBAAA,IAAI/uC,EAAE3C,KAAK,KAAK+B,CAAE/B,CAAAA,KAAK,EAAE,OAAOwxC,WAAW,CAACzvC,CAAAA,CAAE/B,KAAK,CAAC,GAAGwxC,WAAW,CAAC7uC,CAAAA,CAAE3C,KAAK,CAAC;EAC3E,gBAAA,OAAO+B,CAAC,CAACquC,GAAAA,CAAI,GAAGztC,CAAC,CAACytC,GAAI,CAAA;EACxB,aAAA,CAAA;cAEAe,YAAe34C,GAAAA,KAAAA,CAAM8pB,IAAI,CAAC,IAAID,GAAAA,CAAIutB,QAASr3C,CAAAA,GAAG,CAAC3E,CAAAA,CAAKA,GAAAA,CAAAA,CAAEuR,QAAQ,CAAA,CAAA,CAAA;cAC9DmsC,SAAY94C,GAAAA,KAAAA,CAAM8pB,IAAI,CAAC,IAAID,GAAAA,CAAIutB,QAASr3C,CAAAA,GAAG,CAAC3E,CAAAA,CAAKA,GAAAA,CAAAA,CAAEmI,EAAE,CAAA,CAAA,CAAA;EAErDs1C,YAAAA,SAAAA,GAAY/5C,oBACT7D,GAAG,CAACG,CAAAA,CAAAA,GAAKA,EAAEuR,QAAQ,CAAA,CACnB0C,OAAO,CAAC+nC,UACRr3C,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAEiJ,MAAM,CAAA;cAEpBw0C,SAAUx7C,CAAAA,OAAO,CAAC2qC,CAAAA,CAAAA,GAAAA;EAChB,gBAAA,MAAM4G,GAAM5uC,GAAAA,KAAAA,CAAM8pB,IAAI,CAAC,IAAID,GAAAA,CAAIme,CAAEjoC,CAAAA,GAAG,CAAC3E,CAAAA,CAAKA,GAAAA,CAAAA,CAAEmI,EAAE,CAAA,CAAA,CAAA;EAC9C,gBAAA,IAAIqrC,GAAIlxC,CAAAA,MAAM,GAAGo7C,SAAAA,CAAUp7C,MAAM,EAAE;sBACjCo7C,SAAUz7C,CAAAA,OAAO,CAACC,CAAAA,CAAAA,GAAAA;EAChB,wBAAA,IAAI,CAACsxC,GAAAA,CAAI7xC,QAAQ,CAACO,CAAI,CAAA,EAAA;8BACpB,MAAMlC,CAAAA,GAAIg8C,QAASx6C,CAAAA,MAAM,CAACxB,CAAAA,CAAKA,GAAAA,CAAAA,CAAEmI,EAAE,KAAKjG,CAAE,CAAA,CAAC,CAAE,CAAA;8BAC7C,IAAIlC,CAAAA,CAAEqpB,KAAK,KAAK,MAAQ,EAAA;EACtB,gCAAA,MAAMjd,QAAQqvC,UAAWz7C,CAAAA,CAAAA,CAAEmE,IAAI,EAAEnE,EAAEgE,CAAC,CAAA;EACpC,gCAAA,MAAM+5C,WAAc,GAAA;sCAClB95C,UAAY,EAAA,IAAA;EACZE,oCAAAA,IAAAA,EAAMnE,EAAEmE,IAAI;sCACZoN,QAAUvR,EAAAA,CAAAA,CAAEqpB,KAAK,KAAK,KAAQ,GAAA,CAAA,EAAGujB,CAAC,CAAC,CAAE,CAAA,CAAC,IAAI,CAACzjC,SAAS,CAAC,CAAC,CAAC,EAAEiD,KAAAA,CAAAA,CAAO,GAAG,CAAA,EAAGwgC,CAAC,CAAC,CAAE,CAAA,CAAC,IAAI,CAACzjC,SAAS,CAAC,CAAE,CAAA;EAC5FiD,oCAAAA,KAAAA;EACAjE,oCAAAA,EAAAA,EAAInI,EAAEmI,EAAE;sCACRqrC,GAAKtxC,EAAAA,CAAAA;EACLmnB,oCAAAA,KAAAA,EAAOrpB,EAAEqpB,KAAK;EACd,oCAAA,CAAC,IAAI,CAAClgB,SAAS,GAAGyjC,CAAC,CAAC,CAAA,CAAE,CAAC,IAAI,CAACzjC,SAAS,CAAC;EACtC,oCAAA,CAACqzC,MAAM;EACT,iCAAA;EACAr4C,gCAAAA,MAAAA,CAAKuJ,IAAI,CAACqwC,WAAAA,CAAAA;EACZ;EACF;EACF,qBAAA,CAAA;EACF;EACF,aAAA,CAAA;EAEA,YAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC50C,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;kBAClChF,MAAK2K,CAAAA,IAAI,CAAC,CAACC,CAAAA,EAAGZ,IAAM,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAChF,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC4F,CAAE5K,CAAAA,IAAI,EAAEgK,CAAAA,CAAEhK,IAAI,CAAA,CAAA;eAE9D,MAAA;EACHA,gBAAAA,MAAAA,CAAK2K,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAMY,CAAC,CAAC,IAAI,CAAC5F,SAAS,CAAC,GAAGgF,CAAC,CAAC,IAAI,CAAChF,SAAS,CAAC,CAAA;EAC3D;cAEA,MAAMsG,KAAAA,GAAQ,IAAI,CAACuuC,WAAW;EAE9B,YAAA,IAAIvuC,KAAiB7K,YAAAA,KAAAA,EAAO84C,SAAU5uC,CAAAA,IAAI,CAAC,CAACC,CAAAA,EAAGZ,CAAMsB,GAAAA,KAAAA,CAAM/N,OAAO,CAACqN,CAAKU,CAAAA,GAAAA,KAAAA,CAAM/N,OAAO,CAACyM,CAAAA,CAAAA,CAAAA;EACjF,iBAAA,IAAIsB,KAAUuqC,KAAAA,gBAAAA,CAAQC,cAAc,EAAEyD,SAAU5uC,CAAAA,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAMY,CAAEwnC,CAAAA,aAAa,CAACpoC,CAAAA,CAAAA,CAAAA;cAEpFsvC,SAAYzD,GAAAA,gBAAAA,CAAQiE,KAAK,EACtBl1C,CAAAA,IAAI,CAAC20C,SACL5/B,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAACogC,YAAY,EACxBzuC,KAAK,CAACA,KAAiB7K,YAAAA,KAAAA,GAAQo1C,gBAAQC,CAAAA,cAAc,GAAGxqC,KACxD3K,CAAAA,CAAAA,KAAK,CAAC,CAACsH,KAAOvM,EAAAA,GAAAA,GAAAA;kBACb,MAAMG,CAAAA,GAAIoM,MAAM5K,MAAM,CAACorC,CAAAA,CAAKA,GAAAA,CAAAA,CAAEzkC,EAAE,KAAKtI,GAAAA,CAAAA;kBACrC,OAAOG,CAAAA,CAAEsC,MAAM,GAAGtC,CAAC,CAAC,CAAE,CAAA,CAACw8C,IAAI,GAAG,CAAA;eAC7BiB,CAAAA,CAAAA,SAAAA,CAAAA;EAEL,YAAA,MAAMU,eAAe,IAAI,CAACh1C,SAAS,KAAK,MAAMg0C,KAAQE,GAAAA,KAAAA;cAEtDG,OAAU,GAAA;EACR,gBAAA,CAAC,IAAI,CAACr0C,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAACA,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG+K,eAAOiqC,YAAgBA,CAAAA,GAAAA,YAAAA;EAC1E,gBAAA,CAAC3B,MAAM;EAACjzC,oBAAAA,WAAAA,CAAIk0C,SAAU94C,CAAAA,GAAG,CAACioC,CAAAA,CAAKrjC,GAAAA,WAAAA,CAAIqjC,CAAEjoC,CAAAA,GAAG,CAACiS,CAAAA,CAAKA,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA;EAAMkC,oBAAAA,WAAAA,CAAI2kC,SAAU94C,CAAAA,GAAG,CAACioC,CAAAA,CAAK9zB,GAAAA,WAAAA,CAAI8zB,CAAEjoC,CAAAA,GAAG,CAACiS,CAAAA,CAAKA,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA,CAAA,CAAA;EAAK;EACzG,aAAA;WAGG,MAAA;EAEH,YAAA,MAAMrF,QAAW,GAAA,IAAI,CAACpI,SAAS,IAAI,GAAA;EAEnC,YAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAACA,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE;kBAClC6yC,QAASltC,CAAAA,IAAI,CAAC,CAACC,CAAAA,EAAGZ,IAAM,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAChF,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC4F,CAAE5K,CAAAA,IAAI,EAAEgK,CAAAA,CAAEhK,IAAI,CAAA,CAAA;eAElE,MAAA;kBACH63C,QAASltC,CAAAA,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAMY,CAAC,CAACwC,QAAS,CAAA,GAAGpD,CAAC,CAACoD,QAAS,CAAA,CAAA;EACnD;cAEAisC,OAAU,GAAA;EACRj1C,gBAAAA,CAAAA,EAAG,CAAC0yC,KAAAA,IAAS,IAAI,CAAC9xC,SAAS,KAAK,GAAO,IAAA,IAAI,CAACi1C,MAAM,GAAGjB,KAAAA,GAAQjpC,cAAOipC,CAAAA,KAAAA,CAAAA;EACpElG,gBAAAA,EAAAA,EAAI,CAAC6D,MAAAA,IAAU,IAAI,CAAC3xC,SAAS,KAAK,GAAO,IAAA,IAAI,CAACk1C,OAAO,GAAGjB,MAAAA,GAASlpC,cAAOkpC,CAAAA,MAAAA,CAAAA;EACxE50C,gBAAAA,CAAAA,EAAG,CAAC8yC,KAAAA,IAAS,IAAI,CAACnyC,SAAS,KAAK,GAAO,IAAA,IAAI,CAACm1C,MAAM,GAAGjB,KAAAA,GAAQnpC,cAAOmpC,CAAAA,KAAAA,CAAAA;EACpEnG,gBAAAA,EAAAA,EAAI,CAACiE,MAAAA,IAAU,IAAI,CAAChyC,SAAS,KAAK,GAAO,IAAA,IAAI,CAACo1C,OAAO,GAAGjB,MAAAA,GAASppC,cAAOopC,CAAAA,MAAAA;EAC1E,aAAA;EACF;EAEA;;;;UAKA,SAASkB,iBAAiB1L,IAAI,EAAA;cAE5B,MAAM/nC,KAAAA,GAAQ,IAAI,CAAC,CAAC,CAAC,EAAE+nC,IAAAA,CAAK,IAAI,CAAC,CAAC,GAAG,MAAS,GAAA,IAAI,CAAC3pC,SAAS,KAAK2pC,IAAAA,IAAQ,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAAA,CAAK,IAAI,CAAC,CAAC,GAAG,OAAU,GAAA,QAAA;cAE1G,MAAMl3B,MAAAA,GAAS,IAAI,CAAC,CAAC,CAAC,EAAEk3B,IAAAA,CAAK,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAK,CAAA,MAAM,CAAC,CAAC,CAACniC,KAAK,EAAK6sC,GAAAA,OAAO,CAAC1K,IAAAA,CAAK,EAChF2L,OAAAA,GAAU,IAAI,CAAC,CAAC,CAAC,EAAE3L,IAAK,CAAA,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,EAAEA,KAAK,OAAO,CAAC,CAAC,CAACniC,KAAK,EAAA,GAAK6sC,OAAO,CAAC,CAAG1K,EAAAA,IAAAA,CAAK,CAAC,CAAC,CAAC;EAE/F,YAAA,IAAI/nC,UAAU,OAAS,EAAA;EACrB,gBAAA,IAAI6Q,MAAUA,IAAAA,MAAM,CAAC,CAAA,CAAE,KAAK,MAAK,EAAGA,MAAM,CAAC,EAAE,GAAG4hC,OAAO,CAAC1K,IAAAA,CAAK,CAAC,CAAE,CAAA;EAChE,gBAAA,IAAIl3B,MAAUA,IAAAA,MAAM,CAAC,CAAA,CAAE,KAAK,MAAK,EAAGA,MAAM,CAAC,EAAE,GAAG4hC,OAAO,CAAC1K,IAAAA,CAAK,CAAC,CAAE,CAAA;EAEhE,gBAAA,IAAI2L,WAAWA,OAAO,CAAC,EAAE,KAAK,QAAQA,OAAO,CAAC,EAAE,GAAGjB,OAAO,CAAC,CAAG1K,EAAAA,IAAAA,CAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAAA;EACzE,gBAAA,IAAI2L,WAAWA,OAAO,CAAC,EAAE,KAAK,QAAQA,OAAO,CAAC,EAAE,GAAGjB,OAAO,CAAC,CAAG1K,EAAAA,IAAAA,CAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAAA;EAC3E;cAEA,OAAO;EAACl3B,gBAAAA,MAAAA;EAAQ7Q,gBAAAA,KAAAA;EAAO0zC,gBAAAA,OAAAA;EAAS1zC,gBAAAA;EAAM,aAAA;EAExC;UAEA,MAAM,CAAC2zC,WAAa9F,EAAAA,MAAAA,EAAQ+F,YAAcC,EAAAA,OAAAA,CAAQ,GAAGJ,gBAAiBn6C,CAAAA,IAAI,CAAC,IAAI,CAAE,CAAA,GAAA,CAAA;UACjF,MAAM,CAACw6C,WAAalG,EAAAA,MAAAA,EAAQmG,YAAcC,EAAAA,OAAAA,CAAQ,GAAGP,gBAAiBn6C,CAAAA,IAAI,CAAC,IAAI,CAAE,CAAA,GAAA,CAAA;UAEjF,MAAM26C,SAAAA,GAAY,CAAClM,IAAM1nC,EAAAA,QAAAA,GAAAA;cACvB,MAAM6zC,SAAAA,GAAY,IAAI,CAAC,CAAC,CAAC,EAAEnM,IAAAA,CAAK,MAAM,CAAC,CAAC,CAAC/nC,KAAK;EAC9C,YAAA,IAAIk0C,cAAc,MAAQ,EAAA;EACxB,gBAAA,IAAI,IAAI,CAAC91C,SAAS,KAAK2pC,MAAM,OAAO1nC,QAAAA;kBACpC,MAAMnC,MAAAA,GAAS+yC,SAASr3C,GAAG,CAAC3E,CAAAA,CAAKA,GAAAA,CAAC,CAAC8yC,IAAK,CAAA,CAAA;EACxC,gBAAA,OAAO9kB,iBAAU/kB,CAAAA,MAAAA,CAAAA,GAAUi2C,YAAKj2C,CAAAA,MAAAA,CAAAA,GAAU,IAAI,KAAQ,GAAA,QAAA;EACxD;EACA,YAAA,OAAOg2C,SAAa7zC,IAAAA,QAAAA;EACtB,SAAA;UAEA,MAAM+zC,YAAAA,GAAe,IAAI,CAACC,aAAa,GAAGJ,SAAU,CAAA,GAAA,EAAKrG,QAAQ/J,WAAW,EAAA;UAC5E,MAAMyQ,aAAAA,GAAgB,IAAI,CAACC,cAAc,GAAGN,SAAU,CAAA,IAAA,EAAMD,SAASnQ,WAAW,EAAA;UAChF,MAAM2Q,YAAAA,GAAe,IAAI,CAACC,aAAa,GAAGR,SAAU,CAAA,GAAA,EAAKpG,QAAQhK,WAAW,EAAA;UAC5E,MAAM6Q,aAAAA,GAAgB,IAAI,CAACC,cAAc,GAAGV,SAAU,CAAA,IAAA,EAAMJ,SAAShQ,WAAW,EAAA;UAEhF4O,OAAU,GAAA;cAACj1C,CAAGm2C,EAAAA,WAAAA;EAAazH,YAAAA,EAAAA,EAAI0H,YAAgBD,IAAAA,WAAAA;cAAal2C,CAAGq2C,EAAAA,WAAAA;EAAa3H,YAAAA,EAAAA,EAAI4H,YAAgBD,IAAAA;EAAW,SAAA;EAC3Gz9C,QAAAA,MAAAA,CAAO2H,IAAI,CAACy0C,OACTv7C,CAAAA,CAAAA,OAAO,CAAC6wC,CAAAA,IAAAA,GAAAA;EACP,YAAA,IAAI,IAAI,CAAC,CAAC,CAAC,EAAEA,KAAK,WAAW,CAAC,CAAC,KAAK,SAAS0K,OAAO,CAAC1K,KAAK,CAACnxC,QAAQ,CAAC,CAAI,CAAA,EAAA;kBACtE,IAAI4H,WAAAA,CAAIi0C,OAAO,CAAC1K,IAAK,CAAA,CAAA,GAAI,CAAG0K,EAAAA,OAAO,CAAC1K,IAAAA,CAAK,CAAC,CAAA,CAAE,GAAGh6B,WAAAA,CAAI3U,OAAKQ,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,CAAC,CAAC8yC,IAAK,CAAA,CAAA,CAAEtxC,MAAM,CAACxB,CAAAA,CAAAA,GAAK,CAAC;EAAC68C,wBAAAA,GAAAA;EAAK98C,wBAAAA,SAAAA;EAAW,wBAAA;EAAM,qBAAA,CAAC4B,QAAQ,CAAC3B,CAAAA,CAAAA,CAAAA,CAAAA;EACnHw9C,qBAAAA,OAAO,CAAC1K,IAAK,CAAA,CAAC,EAAE,GAAGvpC,WAAAA,CAAIyyC,SAASr3C,GAAG,CAAC3E,CAAAA,CAAKA,GAAAA,CAAC,CAAC8yC,IAAK,CAAA,CAAA,CAAEtxC,MAAM,CAACxB,CAAAA,IAAK,CAAC;EAAC68C,wBAAAA,GAAAA;EAAK98C,wBAAAA,SAAAA;EAAW,wBAAA;EAAM,qBAAA,CAAC4B,QAAQ,CAAC3B,CAAAA,CAAAA,CAAAA,CAAAA;EACvG;EACF,SAAA,CAAA;UAEF6oB,IAAK5mB,CAAAA,OAAO,CAACu6C,CAAAA,GAAAA,GAAAA;cACX,IAAI,IAAI,CAAC,CAAC,CAAC,EAAEA,GAAI,CAAA,MAAM,CAAC,CAAC,CAAC5gC,MAAM,EAAE;kBAChC,MAAM5b,CAAAA,GAAI,IAAI,CAAC,CAAC,CAAC,EAAEw8C,GAAAA,CAAI,MAAM,CAAC,CAAC,CAAC5gC,MAAM;EACtC,gBAAA,IAAI,IAAI,CAACzS,SAAS,KAAK,GAAA,EAAKnJ,EAAE6T,OAAO,EAAA;kBACrC2pC,OAAO,CAAChB,IAAI,GAAGx8C,CAAAA;EACjB,aAAA,MACK,IAAIw8C,GAAO,IAAA,IAAI,CAACmD,SAAS,KAAK,MAAQ,EAAA;kBACzC,MAAMxxC,CAAAA,GAAI,IAAI,CAACwxC,SAAS;EACxB,gBAAA,IAAInC,OAAO,CAAChB,GAAAA,CAAI,IAAIgB,OAAO,CAAChB,GAAI,CAAA,CAAC,CAAE,CAAA,GAAGruC,GAAGqvC,OAAO,CAAChB,GAAI,CAAA,CAAC,EAAE,GAAGruC,CAAAA;EACtD,qBAAA,IAAIqvC,OAAO,CAAChB,GAAAA,CAAI,IAAIgB,OAAO,CAAChB,GAAI,CAAA,CAAC,CAAE,CAAA,GAAGruC,GAAGqvC,OAAO,CAAChB,GAAI,CAAA,CAAC,EAAE,GAAGruC,CAAAA;EAClE;EACF,SAAA,CAAA;UAEA,IAAI5F,CAAAA,GAAImT,iBAAM,CAAC,CAAC,KAAK,EAAEk9B,MAAAA,CAAAA,CAAQ,CAAC,EAAA,CAAGh9B,MAAM,CAAC4hC,OAAQj1C,CAAAA,CAAC,EAAEsT,KAAK,CAACA,aAAM,CAAA,CAAA,EAAGnU,KAAQ,GAAA,CAAA,EAAGA,KAAS81C,IAAAA,OAAQj1C,CAAAA,CAAC,CAACjG,MAAM,GAAG,CAAA,KACvG20C,EAAKv7B,GAAAA,iBAAM,CAAC,CAAC,KAAK,EAAEkjC,OAAS,CAAA,CAAA,CAAC,EAAGhjC,CAAAA,MAAM,CAAC4hC,OAAAA,CAAQvG,EAAE,CAAA,CAAEp7B,KAAK,CAACA,aAAM,CAAA,CAAA,EAAGnU,KAAQ,GAAA,CAAA,EAAGA,KAAS81C,IAAAA,OAAQvG,CAAAA,EAAE,CAAC30C,MAAM,GAAG,CAAA,CAC3GkG,CAAAA,CAAAA,EAAAA,CAAAA,GAAIkT,iBAAM,CAAC,CAAC,KAAK,EAAEi9B,MAAQ,CAAA,CAAA,CAAC,EAAG/8B,CAAAA,MAAM,CAAC4hC,OAAAA,CAAQh1C,CAAC,CAACqL,OAAO,EAAA,CAAA,CAAIgI,KAAK,CAACA,aAAAA,CAAM,CAAGlU,EAAAA,MAAAA,GAAS,CAAGA,EAAAA,MAAAA,IAAU61C,OAAAA,CAAQh1C,CAAC,CAAClG,MAAM,GAAG,CAAA,CAAA,CAAA,CAAA,EACnH40C,KAAKx7B,iBAAM,CAAC,CAAC,KAAK,EAAEqjC,OAAAA,CAAAA,CAAS,CAAC,EAAA,CAAGnjC,MAAM,CAAC4hC,OAAQtG,CAAAA,EAAE,CAACrjC,OAAO,EAAIgI,CAAAA,CAAAA,KAAK,CAACA,aAAAA,CAAM,CAAGlU,EAAAA,MAAAA,GAAS,CAAGA,EAAAA,MAAAA,IAAU61C,OAAAA,CAAQtG,EAAE,CAAC50C,MAAM,GAAG,CAAA,CAAA,CAAA,CAAA;UAE3H,MAAMuV,SAAAA,GAAYnU,iBACf7D,EAAAA,CAAAA,GAAG,CAACG,CAAAA,IAAKA,CAAEqpB,CAAAA,KAAK,CAChBpV,CAAAA,OAAO,CAAC9P,MAAAA,CAAAA,CACR2K,IAAI,CAAC,CAACC,CAAGZ,EAAAA,CAAAA,GAAM,IAAI,CAACyxC,UAAU,CAAC7wC,CAAElP,CAAAA,GAAG,EAAEsO,CAAAA,CAAEtO,GAAG,CAAA,CAAA;EAE9C,QAAA,MAAMy3C,WAAW,IAAI,CAACnuC,SAAS,KAAK,MAAMwvC,MAASC,GAAAA,MAAAA;EACnD,QAAA,IAAItB,aAAa,OAAS,EAAA;cAExB,MAAMuI,YAAAA,GAAen8C,iBAClB7D,EAAAA,CAAAA,GAAG,CAACG,CAAAA,IAAKA,CAAEqpB,CAAAA,KAAK,CAChBpV,CAAAA,OAAO,CAAC+nC,QAAAA,CAAAA;cAEX6D,YAAa59C,CAAAA,OAAO,CAACjC,CAAAA,CAAAA,GAAAA;kBACnB,IAAI;EAAC,oBAAA,KAAA;EAAO,oBAAA;EAAM,iBAAA,CAAC2B,QAAQ,CAAC3B,CAAEH,CAAAA,GAAG,CAAG,EAAA;sBAClCk5C,cAAe,CAAA,IAAI,CAAC5vC,SAAS,KAAK,GAAA,GAAMZ,IAAIC,CAAGrE,EAAAA,MAAAA,EAAM,IAAI,CAACgF,SAAS,CAAA;EACrE;EACA,gBAAA,IAAI,IAAI,CAAC22C,OAAO,CAAC9/C,CAAEH,CAAAA,GAAG,CAAC,EAAE;EACvB,oBAAA,MAAM6lB,GAAM,GAAA,IAAI,CAACo6B,OAAO,CAAC9/C,CAAAA,CAAEH,GAAG,CAAC,CAACwE,IAAI,CAAC,IAAI,CAAE,CAAA;EAACF,wBAAAA,IAAAA,EAAMnE,EAAEiJ,MAAM;EAAEV,wBAAAA,CAAAA;EAAGC,wBAAAA,CAAAA;0BAAGmwC,MAAQwG,EAAAA,YAAAA;0BAAcvG,MAAQ2G,EAAAA,YAAAA;EAAc19C,wBAAAA,MAAAA,EAAQ,IAAI,CAACqB,YAAY,CAAClD,CAAAA,CAAEH,GAAG;EAAC,qBAAA,CAAA;sBAC9I0I,CAAImd,GAAAA,GAAG,CAAC,CAAE,CAAA;sBACVld,CAAIkd,GAAAA,GAAG,CAAC,CAAE,CAAA;EACV,oBAAA,MAAMq6B,IAAO,GAAA,IAAI,CAACD,OAAO,CAAC9/C,CAAAA,CAAEH,GAAG,CAAC,CAACwE,IAAI,CAAC,IAAI,CAAE,CAAA;EAACF,wBAAAA,IAAAA,EAAMnE,EAAEiJ,MAAM;0BAAEV,CAAG0uC,EAAAA,EAAAA;0BAAIzuC,CAAG0uC,EAAAA,EAAAA;0BAAIyB,MAAQ0G,EAAAA,aAAAA;0BAAezG,MAAQ6G,EAAAA,aAAAA;0BAAexI,EAAI,EAAA,IAAA;0BAAMC,EAAI,EAAA,IAAA;EAAMr1C,wBAAAA,MAAAA,EAAQ,IAAI,CAACqB,YAAY,CAAClD,CAAAA,CAAEH,GAAG;EAAC,qBAAA,CAAA;sBAC7Ko3C,EAAK8I,GAAAA,IAAI,CAAC,CAAE,CAAA;sBACZ7I,EAAK6I,GAAAA,IAAI,CAAC,CAAE,CAAA;EACd;EACF,aAAA,CAAA;EAEF;UAEA,MAAMC,OAAAA,GAAUz3C,EAAEqT,MAAM,EAAA;UACxB,MAAMqkC,QAAAA,GAAWhJ,GAAGr7B,MAAM,EAAA;UAC1B,MAAMskC,OAAAA,GAAU13C,EAAEoT,MAAM,EAAA;UACxB,MAAMukC,QAAAA,GAAWjJ,GAAGt7B,MAAM,EAAA;EAE1B,QAAA,MAAMwkC,aAAgB,GAAA;cACpB93B,SAAW,EAAA;kBAAC,cAAgB,EAAA;EAAC,aAAA;cAC7BG,QAAU,EAAA,CAAA;EACV3a,YAAAA,MAAAA,EAAQ,EAAE;cACV0b,KAAO,EAAA,KAAA;cACPF,QAAU,EAAA;EACZ,SAAA;EAEA,QAAA,MAAM+2B,kBAAkB/D,QAAW,GAAA;cAACn4C,IAAMi5C,EAAAA;WAAUgD,GAAAA,aAAAA;EACpD,QAAA,MAAME,kBAAkB/D,QAAW,GAAA;cAACp4C,IAAMm5C,EAAAA;WAAU8C,GAAAA,aAAAA;UACpD,MAAMG,KAAAA,GAAQ,IAAI,CAACp3C,SAAS,KAAK,GAAO,IAAA,IAAI,CAACjD,MAAM,GAAG,IAAI,CAACs6C,eAAe,IAAI,IAAI,CAACt6C,MAAM,GAAG,IAAI,CAACu6C,QAAQ;UACzG,MAAMC,KAAAA,GAAQ,IAAI,CAACv3C,SAAS,KAAK,GAAO,IAAA,IAAI,CAAC/C,OAAO,GAAG,IAAI,CAACo6C,eAAe,IAAI,IAAI,CAACp6C,OAAO,GAAG,IAAI,CAACu6C,QAAQ;EAE3G,QAAA,MAAMC,EAAK,GAAA;cACTz8C,IAAMk5C,EAAAA,KAAAA;cACN76C,MAAQ,EAAA,IAAI,CAACC,OAAO;EACpBsmB,YAAAA,QAAAA,EAAU,IAAI,CAAC83B,QAAQ,GAAG,MAAS,GAAA,SAAA;EACnCz3B,YAAAA,YAAAA,EAAc5gB,CAAE4K,CAAAA,OAAO,GAAG5K,CAAAA,CAAE4K,OAAO,EAAK,GAAA;EAC1C,SAAA;EACA,QAAA,IAAI,CAACmtC,KAAO,EAAA;EACVK,YAAAA,EAAAA,CAAGt4B,SAAS,GAAG;kBAAC/c,MAAQ,EAAA;EAAa,aAAA;EACrCq1C,YAAAA,EAAAA,CAAGt3B,QAAQ,GAAG,CAAA;EACds3B,YAAAA,EAAAA,CAAG39C,WAAW,GAAG;EACf6O,gBAAAA,WAAAA,EAAa,CAAC9R,CAAGgE,EAAAA,CAAAA,GAAAA;EACf,oBAAA,MAAM,EAAC0D,KAAK,EAAEc,CAAC,EAAC,GAAGxI,EAAE8R,WAAW;EAChC,oBAAA,MAAMnK,MAAS,GAAA,IAAI,CAACvB,OAAO,GAAG,CAAA;sBAC9B,MAAMmC,CAAAA,GAAIvE,CAAI,GAAA,CAAC2D,MAAS,GAAA,CAAA;sBACxB,OAAO;EAACY,wBAAAA,CAAAA;EAAGC,wBAAAA,CAAAA;EAAGd,wBAAAA,KAAAA;EAAOC,wBAAAA;EAAM,qBAAA;EAC7B,iBAAA;kBACAyG,WAAa,EAAA;sBACXgF,OAAS,EAAA,CAAA;sBACTnI,MAAQ,EAAA;EACV,iBAAA;kBACAyd,aAAe,EAAA;EACjB,aAAA;EACF;UAEA,MAAMo4B,SAAAA,GAAYr3C,SAAK,oBAAsB,EAAA;cAAC1D,KAAO,EAAA;kBAACqC,OAAS,EAAA;EAAC,aAAA;cAAGvF,MAAQ,EAAA,IAAI,CAACsC;EAAO,SAAA,CAAA;EAEvF;;;;EAIC;UAGD,MAAMmjB,SAAAA,GAAY9kB,UAAWa,CAAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAACnB,YAAY,EAAE,OAAS,EAAA,KAAA,CAAA;EACpE,QAAA,MAAM69C,mBAAmBz4B,SAAUzW,CAAAA,KAAK,KAAK9R,SACzC,GAAA,OAAOuoB,UAAUzW,KAAK,KAAK,aAAayW,SAAUzW,CAAAA,KAAK,GAAG9M,QAASujB,CAAAA,SAAAA,CAAUzW,KAAK,CAClF,GAAA,IAAI,CAACizB,UAAU;UACnB,MAAMkc,SAAAA,GAAYhF,SAASr3C,GAAG,CAAC3E,CAAAA,CAAK+gD,GAAAA,gBAAAA,CAAiB/gD,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAGxC,CAAAA,CAAAA,MAAM,CAACxB,CAAAA,CAAAA,GAAK,OAAOA,CAAM,KAAA,QAAA,IAAYA,CAAG2E,CAAAA,CAAAA,GAAG,CAACqtB,MAAAA,CAAAA;;;UAI/G,IAAIivB,OAAAA,GAAUhyC,YAAO+sC,QAASr3C,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAEi3C,EAAE,CAAA,CAAA;EAC3CgK,QAAAA,OAAAA,GAAUrC,OAAY,KAAA,OAAA,IAAWqC,OAAQn+B,CAAAA,KAAK,CAACzc,CAAAA,CAAAA,GAAK26C,SAAUr/C,CAAAA,QAAQ,CAAC,CAAA,EAAG0E,CAAG,CAAA,CAAA,CAAA,CAAA,GAAK,EAAE,GAAG,IAAA;UACvF,IAAI66C,MAAAA,GAASjyC,YAAO+sC,QAASr3C,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAEuI,CAAC,CAAA,CAAA;EACzC24C,QAAAA,MAAAA,GAAStI,MAAW,KAAA,OAAA,IAAWsI,MAAOp+B,CAAAA,KAAK,CAACzc,CAAAA,CAAAA,GAAK26C,SAAUr/C,CAAAA,QAAQ,CAAC,CAAA,EAAG0E,CAAG,CAAA,CAAA,CAAA,CAAA,GAAK,EAAE,GAAG,IAAA;UACpF,IAAI86C,OAAAA,GAAUlyC,YAAO+sC,QAASr3C,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAEk3C,EAAE,CAAA,CAAA;EAC3CiK,QAAAA,OAAAA,GAAUpC,OAAY,KAAA,OAAA,IAAWoC,OAAQr+B,CAAAA,KAAK,CAACzc,CAAAA,CAAAA,GAAK26C,SAAUr/C,CAAAA,QAAQ,CAAC,CAAA,EAAG0E,CAAG,CAAA,CAAA,CAAA,CAAA,GAAK,EAAE,GAAG,IAAA;UACvF,IAAI+6C,MAAAA,GAASnyC,YAAO+sC,QAASr3C,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAEwI,CAAC,CAAA,CAAA;EACzC44C,QAAAA,MAAAA,GAASzI,MAAW,KAAA,OAAA,IAAWyI,MAAOt+B,CAAAA,KAAK,CAACzc,CAAAA,CAAAA,GAAK26C,SAAUr/C,CAAAA,QAAQ,CAAC,CAAA,EAAG0E,CAAG,CAAA,CAAA,CAAA,CAAA,GAAK,EAAE,GAAG,IAAA;EAEpF,QAAA,IAAIq6C,KAAO,EAAA;EACT,YAAA,IAAI,CAACW,MAAM,CACRzlC,MAAM,CAACskC,OACPv4C,CAAAA,CAAAA,MAAM,CAACA,MAAAA,CAAAA,CACPghB,OAAO,CAACjhB,KAAQ,GAAA,CAAA,CAAA,CAChBmU,KAAK,CAAC;EAAC9b,gBAAAA,SAAAA;EAAWA,gBAAAA;eAAU,CAC5BqF,CAAAA,MAAM,CAAC07C,SAAUp7C,CAAAA,IAAI,IACrB+W,KAAK,CAAC2kC,MACN15C,CAAAA,CAAAA,KAAK,CAACA,KAAAA,CAAAA,CACN7F,MAAM,CAAC++C,EAAAA,CAAAA,CACP/+C,MAAM,CAAC,IAAI,CAACy/C,QAAQ,CACpBv2C,CAAAA,KAAK,CAACo0C,YAAAA,CAAAA,CACNl6C,MAAM,EAAA;EACX;EAEA,QAAA,IAAIs8C,OAAU,GAAA,IAAI,CAACF,MAAM,CAACv4B,WAAW,EAAA;EACrC,QAAA,IAAI04B,MAASD,GAAAA,OAAAA,CAAQ75C,KAAK,GAAG65C,OAAQ75C,CAAAA,KAAK,GAAG,IAAI,CAAC25C,MAAM,CAACjuC,OAAO,EAAKrT,GAAAA,SAAAA;EAErE,QAAA,IAAIw8C,QAAU,EAAA;cACZ,IAAI,CAACkF,OAAO,CACT7lC,MAAM,CAACukC,UACPx4C,MAAM,CAACA,MACPkU,CAAAA,CAAAA,KAAK,CAAC;EAAC9b,gBAAAA,SAAAA;EAAWA,gBAAAA;eAAU,CAC5BqF,CAAAA,MAAM,CAAC07C,SAAAA,CAAUp7C,IAAI,EAAA,CAAA,CACrB+W,KAAK,CAAC0kC,OACNz5C,CAAAA,CAAAA,KAAK,CAACA,KAAAA,CAAAA,CACN7F,MAAM,CAAC++C,IACP/+C,MAAM,CAACy+C,eACPz+C,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAAC6/C,SAAS,CACrB32C,CAAAA,KAAK,CAACs0C,aAAAA,CAAAA,CACNp6C,MAAM,EAAA;EACX;EAEA,QAAA,IAAI08C,QAAW,GAAA,IAAI,CAACF,OAAO,CAAC34B,WAAW,EAAA;EACvC,QAAA,IAAI84B,OAAUD,GAAAA,QAAAA,CAASj6C,KAAK,GAAGi6C,QAASj6C,CAAAA,KAAK,GAAG,IAAI,CAAC+5C,OAAO,CAACruC,OAAO,EAAKrT,GAAAA,SAAAA;EACzE,QAAA,MAAM8hD,EAAK,GAAA;cACT19C,IAAMg5C,EAAAA,KAAAA;cACN36C,MAAQ,EAAA,IAAI,CAACC,OAAO;EACpBsmB,YAAAA,QAAAA,EAAU,IAAI,CAAC+4B,QAAQ,GAAG,MAAS,GAAA,SAAA;EACnC14B,YAAAA,YAAAA,EAAc7gB,CAAE6K,CAAAA,OAAO,GAAG7K,CAAAA,CAAE6K,OAAO,EAAK,GAAA;EAC1C,SAAA;EACA,QAAA,IAAI,CAACstC,KAAO,EAAA;EACVmB,YAAAA,EAAAA,CAAGv5B,SAAS,GAAG;kBAAC/c,MAAQ,EAAA;EAAa,aAAA;EACrCs2C,YAAAA,EAAAA,CAAGv4B,QAAQ,GAAG,CAAA;EACdu4B,YAAAA,EAAAA,CAAG5+C,WAAW,GAAG;EACf6O,gBAAAA,WAAAA,EAAa,CAAC9R,CAAGgE,EAAAA,CAAAA,GAAAA;EACf,oBAAA,MAAM,EAAC2D,MAAM,EAAEa,CAAC,EAAC,GAAGxI,EAAE8R,WAAW;EACjC,oBAAA,MAAMpK,KAAQ,GAAA,IAAI,CAACxB,MAAM,GAAG,CAAA;sBAC5B,MAAMqC,CAAAA,GAAIvE,CAAI,GAAA,CAAC0D,KAAQ,GAAA,CAAA;sBACvB,OAAO;EAACa,wBAAAA,CAAAA;EAAGC,wBAAAA,CAAAA;EAAGd,wBAAAA,KAAAA;EAAOC,wBAAAA;EAAM,qBAAA;EAC7B,iBAAA;kBACAyG,WAAa,EAAA;sBACXgF,OAAS,EAAA,CAAA;sBACTnI,MAAQ,EAAA,CAAA;sBACRsH,UAAYvS,EAAAA,CAAAA,IAAKA,CAAEmI,CAAAA,EAAE,KAAK+4C,MAAM,CAAC,CAAE,CAAA,GAAG,OAAU,GAAA;EAClD,iBAAA;kBACAx4B,aAAe,EAAA;EACjB,aAAA;EACF;EAEA,QAAA,IAAIq5B,SAAYhiD,GAAAA,SAAAA;EAEhB,QAAA,IAAIwgD,KAAO,EAAA;EACT,YAAA,IAAI,CAACyB,MAAM,CACRpmC,MAAM,CAACokC,OACPr4C,CAAAA,CAAAA,MAAM,CAACA,MAAAA,CAAAA,CACPghB,OAAO,CAAChhB,MAAS,GAAA,CAAA,CAAA,CACjBkU,KAAK,CAAC;EAAC9b,gBAAAA,SAAAA;EAAWgiD,gBAAAA;eAAU,CAC5B38C,CAAAA,MAAM,CAAC07C,SAAUp7C,CAAAA,IAAI,IACrB+W,KAAK,CAACykC,MACNx5C,CAAAA,CAAAA,KAAK,CAACA,KAAAA,CAAAA,CACN7F,MAAM,CAACggD,EAAAA,CAAAA,CACPhgD,MAAM,CAAC,IAAI,CAACogD,QAAQ,CACpBl3C,CAAAA,KAAK,CAACw0C,YAAAA,CAAAA,CACNt6C,MAAM,EAAA;EACX;UAEA,IAAIi9C,YAAAA,EAAcC,cAAc,EAAE;EAClC,QAAA,MAAMC,cAAiB,GAAA,IAAI,CAACC,WAAW,IAAI,CAAC9F,QAAAA;EAC5C,QAAA,IAAI6F,cAAgB,EAAA;EAElB,YAAA,MAAMv0C,SAAY1J,GAAAA,MAAAA,CAAK3C,MAAM,CAACxB,CAAAA,CAAAA,GAAAA;EAC5B,gBAAA,IAAIA,CAAEqpB,CAAAA,KAAK,KAAK,MAAA,EAAQ,OAAO,KAAA;EAC/B,gBAAA,OAAO,OAAO,IAAI,CAACg5B,WAAW,KAAK,UAAa,GAAA,IAAI,CAACA,WAAW,CAACriD,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAI,GAAA,IAAA;EAClF,aAAA,CAAA;cAEA,MAAMgT,QAAAA,GAAWtT,iBACd7D,EAAAA,CAAAA,GAAG,CAACG,CAAAA,IAAKA,CAAEmI,CAAAA,EAAE,CACb8L,CAAAA,OAAO,CAACpG,SAAAA,CAAAA;cAEX,IAAImJ,QAAAA,CAAS1U,MAAM,EAAE;kBAEnB,MAAMggD,UAAAA,GAAa9+C,UAAWa,CAAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAACnB,YAAY,EAAE,OAAS,EAAA,MAAA,CAAA;EACrEg2C,gBAAAA,aAAAA,CAAcr3C,MAAM,CAACygD,UAAAA,CAAAA;kBACrB,MAAMC,eAAAA,GAAkBrJ,cAAc9qC,WAAW,EAAA;kBACjD,MAAMo0C,iBAAAA,GAAoBD,gBAAgBtvC,SAAS,KAAKlT,YAAYwiD,eAAgBtvC,CAAAA,SAAS,GAAGkmC,WAAAA,CAAYlmC,SAAS,EAAA;kBACrH,MAAMwvC,gBAAAA,GAAmBF,gBAAgBpvC,QAAQ,KAAKpT,YAAYwiD,eAAgBpvC,CAAAA,QAAQ,GAAGgmC,WAAAA,CAAYhmC,QAAQ,EAAA;kBACjH,MAAMuvC,kBAAAA,GAAqBH,gBAAgBvxB,UAAU,KAAKjxB,YAAYwiD,eAAgBvxB,CAAAA,UAAU,GAAGmoB,WAAAA,CAAYnoB,UAAU,EAAA;kBACzH,MAAM2xB,kBAAAA,GAAqBJ,gBAAgB99B,UAAU,KAAK1kB,YAAYwiD,eAAgB99B,CAAAA,UAAU,GAAG00B,WAAAA,CAAY10B,UAAU,EAAA;kBACzH,MAAMm+B,eAAAA,GAAkBL,gBAAgBnvC,OAAO,KAAKrT,YAAYwiD,eAAgBnvC,CAAAA,OAAO,GAAG+lC,WAAAA,CAAY/lC,OAAO,EAAA;EAC7G,gBAAA,MAAMyvC,gBAAgBP,UAAWzwC,CAAAA,KAAK,IAAI,IAAI,CAACizB,UAAU;EAEzD,gBAAA,MAAMge,YAAY9iD,CAAAA,CAAAA,GAAAA;EAChB,oBAAA,IAAIu/C,YAAiB,KAAA,KAAA,IAASv/C,CAAM,KAAA,CAAA,EAAGA,CAAIggD,GAAAA,OAAO,CAAC,CAAA,CAAE,GAAG,CAAA,GAAI,IAAI,CAACgC,MAAM,CAAC7jC,QAAQ,CAACvC,MAAM,EAAE,CAAC,CAAE,CAAA,GAAG,IAAI,CAAComC,MAAM,CAAC7jC,QAAQ,CAACvC,MAAM,EAAE,CAAC,CAAE,CAAA;sBAC/H,OAAO,IAAI,CAAComC,MAAM,CAACxjC,YAAY,CAACna,IAAI,CAAC,IAAI,CAAC29C,MAAM,CAAEhiD,CAAAA,CAAAA,CAAAA;EACpD,iBAAA;EAEA,gBAAA,MAAM+iD,YAAY/iD,CAAAA,CAAAA,GAAAA;EAChB,oBAAA,IAAIm/C,YAAiB,KAAA,KAAA,IAASn/C,CAAM,KAAA,CAAA,EAAGA,CAAIkgD,GAAAA,OAAO,CAAC,CAAA,CAAE,GAAG,CAAA,GAAI,IAAI,CAACmB,MAAM,CAACljC,QAAQ,CAACvC,MAAM,EAAE,CAAC,CAAE,CAAA,GAAG,IAAI,CAACylC,MAAM,CAACljC,QAAQ,CAACvC,MAAM,EAAE,CAAC,CAAE,CAAA;sBAC/H,OAAO,IAAI,CAACylC,MAAM,CAAC7iC,YAAY,CAACna,IAAI,CAAC,IAAI,CAACg9C,MAAM,CAAErhD,CAAAA,CAAAA,CAAAA;EACpD,iBAAA;kBAEAmiD,WAAcnrC,GAAAA,QAAAA,CACXrS,GAAG,CAACyH,CAAAA,KAAAA,GAAAA;sBAEH,IAAIpM,CAAAA,GAAIoM,MAAMnD,MAAM,CAACmD,MAAMnD,MAAM,CAAC3G,MAAM,GAAG,CAAE,CAAA;sBAC7C,IAAI0B,CAAAA;EACJ,oBAAA,MAAOhE,CAAEiE,CAAAA,UAAU,IAAIjE,CAAAA,CAAEmE,IAAI,CAAE;EAC7BnE,wBAAAA,CAAAA,GAAIA,EAAEmE,IAAI;EACVH,wBAAAA,CAAAA,GAAIhE,EAAEgE,CAAC;EACT;EACA,oBAAA,MAAM6N,QAAQ,OAAOgxC,aAAAA,KAAkB,UAAaA,GAAAA,aAAAA,CAAc7iD,GAAGgE,CAAK6+C,CAAAA,GAAAA,aAAAA;EAE1E,oBAAA,MAAM5vC,YAAY,OAAOuvC,iBAAAA,KAAsB,UAAaA,GAAAA,iBAAAA,CAAkBxiD,GAAGgE,CAAKw+C,CAAAA,GAAAA,iBAAAA;EACtF,oBAAA,MAAMrvC,WAAW,OAAOsvC,gBAAAA,KAAqB,UAAaA,GAAAA,gBAAAA,CAAiBziD,GAAGgE,CAAKy+C,CAAAA,GAAAA,gBAAAA;EACnF,oBAAA,MAAMzxB,aAAa,OAAO0xB,kBAAAA,KAAuB,UAAaA,GAAAA,kBAAAA,CAAmB1iD,GAAGgE,CAAK0+C,CAAAA,GAAAA,kBAAAA;EACzF,oBAAA,IAAIj+B,aAAa,OAAOk+B,kBAAAA,KAAuB,UAAaA,GAAAA,kBAAAA,CAAmB3iD,GAAGgE,CAAK2+C,CAAAA,GAAAA,kBAAAA;EACvF,oBAAA,IAAIl+B,sBAAsB7f,KAAO6f,EAAAA,UAAAA,GAAaA,UAAW9f,CAAAA,GAAG,CAAC/B,CAAAA,CAAAA,GAAK,CAAC,CAAC,EAAEA,CAAE,CAAA,CAAC,CAAC,CAAA,CAAE+T,IAAI,CAAC,IAAA,CAAA;EACjF,oBAAA,MAAMqsC,eAAe,OAAOJ,eAAAA,KAAoB,UAAaA,GAAAA,eAAAA,CAAgB5iD,GAAGgE,CAAK4+C,CAAAA,GAAAA,eAAAA;sBAErF,MAAM76B,UAAAA,GAAawD,cAAU1Z,KAAO,EAAA;0BAClC,WAAasB,EAAAA,QAAAA;0BACb,aAAesR,EAAAA,UAAAA;0BACf,aAAeuM,EAAAA;EACjB,qBAAA,CAAA;EAEA,oBAAA,MAAMiyB,SAAS72C,KAAMnD,CAAAA,MAAM,CAACtE,GAAG,CAAC3E,CAAAA,CAAK,GAAA;EAAC8iD,4BAAAA,SAAAA,CAAU9iD,EAAEuI,CAAC,CAAA;EAAGw6C,4BAAAA,SAAAA,CAAU/iD,EAAEwI,CAAC;EAAE,yBAAA,CAAA;sBACrE,MAAM06C,MAAAA,GAASpqC,WAAI1M,CAAAA,KAAAA,CAAMnD,MAAM,CAACtE,GAAG,CAAC3E,CAAAA,CAAAA,GAAK8iD,SAAU9iD,CAAAA,CAAAA,CAAEuI,CAAC,CAAA,CAAA,CAAA;EACtD,oBAAA,MAAM46C,MAAS/2C,GAAAA,KAAAA,CAAMnD,MAAM,CAACwd,IAAI,CAACzmB,CAAAA,CAAAA,GAAK8iD,SAAU9iD,CAAAA,CAAAA,CAAEuI,CAAC,CAAA,KAAM26C,QAAQ16C,CAAC;sBAClE,OAAO;EACLL,wBAAAA,EAAAA,EAAIiE,MAAMvM,GAAG;EACbkoB,wBAAAA,UAAAA,EAAYA,aAAai7B,YAAe,GAAA,CAAA;EACxCv3B,wBAAAA,WAAAA,EAAa1D,aAAai7B,YAAe,GAAA,CAAA;0BACzCl+C,KAAOq+C,EAAAA,MAAAA;EACPJ,wBAAAA,SAAAA,EAAWA,SAAUI,CAAAA,MAAAA,CAAAA;0BACrB/vC,OAAS4vC,EAAAA,YAAAA;EACT7vC,wBAAAA,QAAAA;EACAF,wBAAAA,SAAAA;0BACAmwC,IAAMF,EAAAA,MAAAA;EACNG,wBAAAA,MAAAA,EAAQvqC,YAAI1M,KAAMnD,CAAAA,MAAM,EAAEjJ,CAAAA,CAAAA,GAAKA,EAAEuI,CAAC,CAAA;EAClC06C,wBAAAA;EACF,qBAAA;EAEF,iBAAA,CAAA,CACCn0C,IAAI,CAAC,CAACC,CAAAA,EAAGZ,CAAM+xC,GAAAA,OAAO,CAAC,CAAA,CAAE,GAAGA,OAAO,CAAC,CAAA,CAAE,GAAGnxC,CAAAA,CAAEjK,KAAK,GAAGqJ,CAAErJ,CAAAA,KAAK,GAAGqJ,CAAAA,CAAErJ,KAAK,GAAGiK,CAAEjK,CAAAA,KAAK,CAC9EtD,CAAAA,MAAM,CAAC,CAACxB,GAAGgE,CAAGU,EAAAA,GAAAA,GAAAA;sBACb,MAAM,EAACyO,QAAQ,EAAEhL,EAAE,EAAE4f,UAAU,EAAEq7B,IAAI,EAAEL,SAAS,EAAC,GAAG/iD,CAAAA;sBACpD,MAAMsjD,WAAAA,GAAc5+C,GACjBlD,CAAAA,MAAM,CAAC0M,CAAAA,IACNA,CAAE/F,CAAAA,EAAE,KAAKA,EAAAA,IAAM+F,CAAE+0C,CAAAA,MAAM,CAAC3lC,IAAI,CAACzK,CAAAA,CAAAA,GAC3B,CAACA,CAAC,CAAC,CAAA,CAAE,GAAGuwC,IAAAA,IAASvwC,CAAC,CAAC,EAAE,KAAKuwC,IAAAA,IAAQl1C,CAAEk1C,CAAAA,IAAI,KAAKA,IAAI,KACjDvwC,CAAC,CAAC,CAAE,CAAA,IAAKuwC,IAAOr7B,GAAAA,UAAAA,IAChBlV,CAAC,CAAC,CAAA,CAAE,IAAKkwC,SAAAA,GAAY5vC,QAAW,GAAA,IAAA,IAChCN,CAAC,CAAC,CAAA,CAAE,IAAKkwC,SAAAA,GAAY5vC,QAAW,GAAA,IAAA,CAAA,CAAA;sBAGtC,OAAOmwC,WAAAA,CAAYhhD,MAAM,KAAK,CAAA;EAEhC,iBAAA,CAAA;EAEA,gBAAA,MAAM8gD,OAAOtqC,WAAIqpC,CAAAA,WAAAA,EAAaniD,CAAAA,CAAAA,GAAKA,EAAEojD,IAAI,CAAA;EACzClB,gBAAAA,YAAAA,GAAeppC,YAAIqpC,WAAYx9C,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAE+nB,UAAU,CAAA,CAAA;EACpD,gBAAA,MAAM0D,WAAc23B,GAAAA,IAAAA,KAAS,IAAI,CAACpB,MAAM,CAACtjC,SAAS,CAACra,IAAI,CAAC,IAAI,CAAC29C,MAAM,CAAG,EAAA,CAAC,CAAE,CAAA,GACrElpC,WAAIqpC,CAAAA,WAAAA,CAAY3gD,MAAM,CAACxB,CAAAA,CAAKA,GAAAA,CAAAA,CAAEojD,IAAI,KAAKA,IAAOpjD,CAAAA,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEyrB,WAAW,CAChE,GAAA,CAAA;EACJ,gBAAA,IAAIA,WAAa,EAAA;EACf,oBAAA,MAAM83B,aAAah6C,WAAI,CAAA;EAACkiB,wBAAAA,WAAAA;0BAAa/jB,KAAQ,GAAA;EAAE,qBAAA,CAAA;EAC/Cq6C,oBAAAA,SAAAA,GAAYr6C,QAAQ67C,UAAa,GAAA,IAAI,CAACxlC,OAAO,CAACuC,KAAK;EACrD;EACJ;EACF;EAEA,QAAA,IAAIigC,SAASwB,SAAW,EAAA;EACtB,YAAA,IAAI,CAACC,MAAM,CACRpmC,MAAM,CAACokC,OACPr4C,CAAAA,CAAAA,MAAM,CAACA,MAAAA,CAAAA,CACPghB,OAAO,CAAChhB,MAAS,GAAA,CAAA,CAAA,CACjBkU,KAAK,CAAC;EAAC9b,gBAAAA,SAAAA;EAAWgiD,gBAAAA;eAAU,CAC5B38C,CAAAA,MAAM,CAAC07C,SAAUp7C,CAAAA,IAAI,IACrB+W,KAAK,CAACykC,MACNx5C,CAAAA,CAAAA,KAAK,CAACA,KAAAA,CAAAA,CACN7F,MAAM,CAACggD,EAAAA,CAAAA,CACPhgD,MAAM,CAAC,IAAI,CAACogD,QAAQ,CACpBl3C,CAAAA,KAAK,CAACw0C,YAAAA,CAAAA,CACNt6C,MAAM,EAAA;EACX;EAEA,QAAA,IAAIq3C,QAAU,EAAA;cACZ,IAAI,CAACkH,OAAO,CACT5nC,MAAM,CAACqkC,UACPt4C,MAAM,CAACA,MACPkU,CAAAA,CAAAA,KAAK,CAAC;EAAC9b,gBAAAA,SAAAA;EAAWgiD,gBAAAA;EAAU,aAAA,CAAA,CAC5B38C,MAAM,CAAC07C,SAAUp7C,CAAAA,IAAI,EACrB+W,CAAAA,CAAAA,KAAK,CAACwkC,OAAAA,CAAAA,CACNv5C,KAAK,CAACA,KACN7F,CAAAA,CAAAA,MAAM,CAACggD,EAAAA,CAAAA,CACPv4B,QAAQ,CAAC,CACTznB,CAAAA,CAAAA,MAAM,CAACw+C,eAAAA,CAAAA,CACPx+C,MAAM,CAAC,IAAI,CAAC4hD,SAAS,CAAA,CACrB14C,KAAK,CAAC00C,eACNx6C,MAAM,EAAA;EACX;EAEA,QAAA,MAAMy+C,UAAa,GAAA,IAAI,CAAC1B,MAAM,CAACtjC,SAAS,EAAA;EACxC,QAAA,MAAMilC,WAAc,GAAA,IAAI,CAACH,OAAO,CAAC9kC,SAAS,EAAA;EAE1C,QAAA,MAAMklC,QAAW,GAAA,IAAI,CAACJ,OAAO,CAAC16B,WAAW,EAAA;UACzC,MAAM+6B,QAAAA,GAAWvH,QAAWsH,GAAAA,QAAAA,CAASj8C,MAAM,GAAG,IAAI,CAAC67C,OAAO,CAACpwC,OAAO,EAAK,GAAA,CAAA;EAEvE,QAAA,IAAI0wC,cAAchrC,WAAI,CAAA;EAAC0oC,YAAAA,MAAAA;EAAQkC,YAAAA,UAAU,CAAC,CAAE,CAAA;EAAEC,YAAAA,WAAW,CAAC,CAAE;EAAC,SAAA,CAAA;EAE7D,QAAA,IAAIpD,KAAO,EAAA;EACT,YAAA,IAAI,CAACyB,MAAM,CACRnmC,KAAK,CAAC;EAACioC,gBAAAA,WAAAA;EAAa/jD,gBAAAA;EAAU,aAAA,CAAA,CAC9BkF,MAAM,EAAA;EACX;EAEA,QAAA,MAAM8+C,SAAYrD,GAAAA,KAAAA,GAAQ,IAAI,CAACW,MAAM,CAACp+C,WAAW,EAAA,CAAGmL,WAAW,CAAC+E,QAAQ,EAAA,GAAK,CAAI,GAAA,CAAA;EAEjF,QAAA,IAAI6wC,eAAelrC,WAAI,CAAA;EAAC8oC,YAAAA,OAAAA;cAASl6C,KAAQg8C,GAAAA,UAAU,CAAC,CAAE,CAAA;cAAEh8C,KAAQi8C,GAAAA,WAAW,CAAC,CAAE;EAAC,SAAA,CAAA;EAC/E,QAAA,MAAMM,OAAU,GAAA,IAAI,CAACjC,MAAM,CAACl5B,WAAW,EAAA;EACvC,QAAA,MAAMo7B,OAAUD,GAAAA,OAAAA,CAAQt8C,MAAM,IAAI+4C,KAAAA,GAAQ,IAAI,CAACsB,MAAM,CAAC5uC,OAAO,EAAA,GAAK,CAAA,CAAA;EAElE,QAAA,IAAI,CAAC2M,QAAQ,CAACS,IAAI,IAAIsjC,WAAAA;EACtB,QAAA,IAAI,CAAC/jC,QAAQ,CAACO,KAAK,IAAI0jC,YAAAA;EACvB,QAAA,IAAI,CAACjkC,QAAQ,CAACQ,MAAM,IAAI2jC,OAAAA;EACxB,QAAA,IAAI,CAACnkC,QAAQ,CAACM,GAAG,IAAIwjC,QAAWE,GAAAA,SAAAA;EAEhC,QAAA,KAAK,CAAC7V,KAAMhpC,CAAAA,QAAAA,CAAAA;UAEZ,MAAMi/C,gBAAAA,GAAmB,IAAI,CAACpmC,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;UAC/D,MAAM8jC,cAAAA,GAAiB,IAAI,CAACrmC,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM;EAC7D,QAAA,IAAI8jC,MAAS,GAAA;EAACR,YAAAA,QAAAA;cAAUl8C,MAAUu8C,IAAAA,OAAUH,GAAAA,SAAAA,GAAYK,cAAa;EAAG,SAAA;EAExE,QAAA,IAAI1D,KAAO,EAAA;EACT,YAAA,IAAI,CAACW,MAAM,CACRzlC,MAAM,CAACskC,SACPv4C,MAAM,CAACA,MACPghB,CAAAA,CAAAA,OAAO,CAACjhB,KAAQ,GAAA,CAAA,CAAA,CAChBmU,KAAK,CAACwoC,MAAAA,CAAAA,CACNj/C,MAAM,CAAC07C,SAAAA,CAAUp7C,IAAI,EAAA,CAAA,CACrB+W,KAAK,CAAC2kC,MAAAA,CAAAA,CACN15C,KAAK,CAACA,KAAAA,CAAAA,CACN7F,MAAM,CAAC++C,EAAAA,CAAAA,CACP/+C,MAAM,CAAC,IAAI,CAACy/C,QAAQ,EACpBv2C,KAAK,CAACo0C,cACNl6C,MAAM,EAAA;EACX;EAEAs8C,QAAAA,OAAAA,GAAU,IAAI,CAACF,MAAM,CAACv4B,WAAW,EAAA;UACjC04B,MAASD,GAAAA,OAAAA,CAAQ75C,KAAK,GAAG65C,OAAQ75C,CAAAA,KAAK,GAAG,IAAI,CAAC25C,MAAM,CAACjuC,OAAO,EAAKrT,GAAAA,SAAAA;EACjE+jD,QAAAA,WAAAA,GAAchrC,WAAI,CAAA;EAAC0oC,YAAAA,MAAAA;EAAQkC,YAAAA,UAAU,CAAC,CAAE,CAAA;EAAEC,YAAAA,WAAW,CAAC,CAAE;EAAC,SAAA,CAAA;EAEzD,QAAA,IAAIpH,QAAU,EAAA;cACZ,IAAI,CAACkF,OAAO,CACT5/C,MAAM,CAAC++C,EACPhlC,CAAAA,CAAAA,MAAM,CAACukC,QAAAA,CAAAA,CACP13B,QAAQ,CAAC,CACT9gB,CAAAA,CAAAA,MAAM,CAACA,MACPkU,CAAAA,CAAAA,KAAK,CAACwoC,MAAAA,CAAAA,CACNj/C,MAAM,CAAC07C,SAAUp7C,CAAAA,IAAI,EACrBgC,CAAAA,CAAAA,KAAK,CAACA,KAAAA,GAAQoR,WAAI,CAAA;EAAC,gBAAA,CAAA;kBAAGkrC,YAAepC,GAAAA;EAAQ,aAAA,CAAA,CAAA,CAC7Cp4B,KAAK,CAAC,KACN3nB,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAAC6/C,SAAS,CAAA,CACrB7/C,MAAM,CAACy+C,eAAAA,CAAAA,CACPv1C,KAAK,CAACs0C,eACNp6C,MAAM,EAAA;EACX;EAEA08C,QAAAA,QAAAA,GAAW,IAAI,CAACF,OAAO,CAAC34B,WAAW,EAAA;UACnC84B,OAAUD,GAAAA,QAAAA,CAASj6C,KAAK,GAAGi6C,QAASj6C,CAAAA,KAAK,GAAG,IAAI,CAAC+5C,OAAO,CAACruC,OAAO,EAAKrT,GAAAA,SAAAA;EACrEikD,QAAAA,YAAAA,GAAelrC,WAAI,CAAA;EAAC,YAAA,CAAA;EAAG8oC,YAAAA,OAAAA;cAASl6C,KAAQg8C,GAAAA,UAAU,CAAC,CAAE,CAAA;cAAEh8C,KAAQi8C,GAAAA,WAAW,CAAC,CAAE;EAAC,SAAA,CAAA;EAC9E,QAAA,MAAMW,MAAS,GAAA;EAACR,YAAAA,WAAAA;cAAap8C,KAASs8C,IAAAA,eAAeG,gBAAe;EAAG,SAAA;UAEvE,MAAM5zB,SAAAA,GAAY9mB,SAAK,0BAA4B,EAAA;EAAC5G,YAAAA,MAAAA;EAAQyD,YAAAA;EAAU,SAAA,CAAA;UAEtE,MAAMmrB,SAAAA,GAAY,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,GAAGwjC,QAAAA,GAAWE,SAAU,CAAA,CAAC,CAAC;UAC/F,MAAMQ,WAAAA,GAAc,CAAC,UAAU,EAAE,IAAI,CAACxmC,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,GAAG0jC,SAAAA,CAAU,CAAC,CAAC;UAEtF,MAAMS,MAAAA,GAASjE,KAAS92C,IAAAA,QAAAA,CAAK,sBAAwB,EAAA;EAAC5G,YAAAA,MAAAA;EAAQyD,YAAAA,UAAAA;cAAYP,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cAAGjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;EAAC,SAAA,CAAA;UACjH,MAAMgzB,OAAAA,GAAUnI,QAAY7yC,IAAAA,QAAAA,CAAK,uBAAyB,EAAA;EAAC5G,YAAAA,MAAAA;EAAQyD,YAAAA,UAAAA;cAAYP,KAAO,EAAA;kBAAC0rB,SAAW8yB,EAAAA;EAAW,aAAA;cAAG/9C,MAAQ,EAAA;kBAACirB,SAAW8yB,EAAAA;EAAW;EAAC,SAAA,CAAA;EAEhJ,QAAA,MAAMG,MAASZ,GAAAA,WAAAA,GAActC,MAASsC,GAAAA,WAAAA,GAActC,MAAS,GAAA,CAAA;UAC7D,MAAM9mB,UAAAA,GAAa,CAAC,UAAU,EAAE,IAAI,CAAC3c,OAAO,CAACyC,IAAI,GAAGkkC,OAAO,EAAE,EAAE,IAAI,CAAC3mC,OAAO,CAACsC,GAAG,GAAG0jC,SAAU,CAAA,CAAC,CAAC;UAC9F,MAAMY,MAAAA,GAASjE,KAASj3C,IAAAA,QAAAA,CAAK,sBAAwB,EAAA;EAAC5G,YAAAA,MAAAA;EAAQyD,YAAAA,UAAAA;cAAYP,KAAO,EAAA;kBAAC0rB,SAAWiJ,EAAAA;EAAU,aAAA;cAAGl0B,MAAQ,EAAA;kBAACirB,SAAWiJ,EAAAA;EAAU;EAAC,SAAA,CAAA;UAEzI,MAAMkqB,WAAAA,GAAc,CAAC,WAAW,EAAE,IAAI,CAAC7mC,OAAO,CAACuC,KAAK,CAAC,EAAE,EAAE,IAAI,CAACvC,OAAO,CAACsC,GAAG,GAAG0jC,SAAAA,CAAU,CAAC,CAAC;UACxF,MAAMc,OAAAA,GAAUtI,QAAY9yC,IAAAA,QAAAA,CAAK,uBAAyB,EAAA;EAAC5G,YAAAA,MAAAA;EAAQyD,YAAAA,UAAAA;cAAYP,KAAO,EAAA;kBAAC0rB,SAAWmzB,EAAAA;EAAW,aAAA;cAAGp+C,MAAQ,EAAA;kBAACirB,SAAWmzB,EAAAA;EAAW;EAAC,SAAA,CAAA;UAEhJ,IAAI,CAACE,MAAM,CACRlpC,MAAM,CAACokC,OACPr4C,CAAAA,CAAAA,MAAM,CAACA,MAAUk8C,IAAAA,WAAWE,SAAYK,GAAAA,cAAa,GACrDz7B,OAAO,CAAChhB,SAAS,CACjBkU,CAAAA,CAAAA,KAAK,CAACyoC,MAAAA,CAAAA,CACNl/C,MAAM,CAACm7C,QAAQiE,MAAO9+C,CAAAA,IAAI,KAAK3F,SAC/B0c,CAAAA,CAAAA,KAAK,CAACykC,MACNx5C,CAAAA,CAAAA,KAAK,CAACA,KACN7F,CAAAA,CAAAA,MAAM,CAACggD,EACPhgD,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAACogD,QAAQ,CACpBl3C,CAAAA,KAAK,CAACw0C,YAAAA,CAAAA,CACNt6C,MAAM,EAAA;EAET,QAAA,IAAIq3C,QAAU,EAAA;EACZ,YAAA,IAAI,CAACyI,OAAO,CACTnpC,MAAM,CAACqkC,QAAAA,CAAAA,CACPt4C,MAAM,CAACA,MAAAA,IAAUu8C,OAAUH,GAAAA,SAAAA,GAAYK,cAAa,CACpDvoC,CAAAA,CAAAA,KAAK,CAACyoC,MACNl/C,CAAAA,CAAAA,MAAM,CAACq/C,OAAQ/+C,CAAAA,IAAI,IACnB+W,KAAK,CAACwkC,SACNv5C,KAAK,CAACA,OACN7F,MAAM,CAACggD,IACPhgD,MAAM,CAACw+C,iBACPx+C,MAAM,CAAC,IAAI,CAAC4hD,SAAS,EACrB14C,KAAK,CAAC00C,eACNx6C,MAAM,EAAA;EACX;EAEA,QAAA,IAAI,CAAC+/C,MAAM,GAAGz8C,CAAAA,GAAI,CAACvI,CAAGuI,EAAAA,CAAAA,GAAAA;EACpB,YAAA,IAAIA,MAAM,IAAM,EAAA;EACd,gBAAA,IAAIk3C,aAAkB,KAAA,KAAA,IAASz/C,CAAM,KAAA,CAAA,EAAGA,CAAIigD,GAAAA,QAAQ,CAAC,CAAA,CAAE,GAAG,CAAA,GAAI,IAAI,CAAC8E,OAAO,CAAC5mC,QAAQ,CAACvC,MAAM,EAAE,CAAC,CAAE,CAAA,GAAG,IAAI,CAACmpC,OAAO,CAAC5mC,QAAQ,CAACvC,MAAM,EAAE,CAAC,CAAE,CAAA;kBACnI,OAAO,IAAI,CAACmpC,OAAO,CAACvmC,YAAY,CAACna,IAAI,CAAC,IAAI,CAAC0gD,OAAO,CAAE/kD,CAAAA,CAAAA,CAAAA;eAEjD,MAAA;EACH,gBAAA,IAAIu/C,YAAiB,KAAA,KAAA,IAASv/C,CAAM,KAAA,CAAA,EAAGA,CAAIggD,GAAAA,OAAO,CAAC,CAAA,CAAE,GAAG,CAAA,GAAI,IAAI,CAAC8E,MAAM,CAAC3mC,QAAQ,CAACvC,MAAM,EAAE,CAAC,CAAE,CAAA,GAAG,IAAI,CAACkpC,MAAM,CAAC3mC,QAAQ,CAACvC,MAAM,EAAE,CAAC,CAAE,CAAA;kBAC/H,OAAO,IAAI,CAACkpC,MAAM,CAACtmC,YAAY,CAACna,IAAI,CAAC,IAAI,CAACygD,MAAM,CAAE9kD,CAAAA,CAAAA,CAAAA;EACpD;EACF,SAAA;UAEAqkD,MAAS,GAAA;EAAC,YAAA,IAAI,CAACS,MAAM,CAACh8B,WAAW,EAAA,CAAGtgB,CAAC,GAAGq7C,QAAAA;cAAUl8C,MAAUu8C,IAAAA,OAAUH,GAAAA,SAAAA,GAAYK,cAAa;EAAG,SAAA;UAElG,IAAI,CAACa,MAAM,CACRrpC,MAAM,CAACskC,OACPv4C,CAAAA,CAAAA,MAAM,CAACA,MACPghB,CAAAA,CAAAA,OAAO,CAACjhB,KAAQ,GAAA,CAAA,CAAA,CAChBmU,KAAK,CAACwoC,MAAAA,CAAAA,CACNj/C,MAAM,CAACs7C,KAAAA,GAAQiE,MAAOj/C,CAAAA,IAAI,EAAK3F,GAAAA,SAAAA,CAAAA,CAC/B0c,KAAK,CAAC2kC,MAAAA,CAAAA,CACN15C,KAAK,CAAC48C,MAAM,CAACA,MAAOhiD,CAAAA,MAAM,GAAG,CAAA,CAAE,CAC/BT,CAAAA,MAAM,CAAC++C,EACP/+C,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAACy/C,QAAQ,CACpBv2C,CAAAA,KAAK,CAACo0C,YAAAA,CAAAA,CACNl6C,MAAM,EAAA;EAET,QAAA,IAAIs3C,QAAU,EAAA;EACZ,YAAA,IAAI,CAAC2I,OAAO,CACTrjD,MAAM,CAAC++C,EAAAA,CAAAA,CACPhlC,MAAM,CAAC2gC,QAAW4D,GAAAA,QAAAA,GAAWD,OAC7Bz3B,CAAAA,CAAAA,QAAQ,CAAC,CAAA,CAAA,CACT9gB,MAAM,CAACA,MACPkU,CAAAA,CAAAA,KAAK,CAACwoC,MAAAA,CAAAA,CACNj/C,MAAM,CAACy/C,OAAQn/C,CAAAA,IAAI,EACnBgC,CAAAA,CAAAA,KAAK,CAACA,KAAAA,GAAQoR,WAAI,CAAA;EAAC,gBAAA,CAAA;kBAAGkrC,YAAepC,GAAAA;EAAQ,aAAA,CAAA,CAAA,CAC7Cp4B,KAAK,CAAC,KACN3nB,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAAC6/C,SAAS,CAAA,CACrB7/C,MAAM,CAACy+C,eAAAA,CAAAA,CACPv1C,KAAK,CAACs0C,eACNp6C,MAAM,EAAA;EACX;EAEA,QAAA,IAAIkgD,iBAAiB,EAAC;EACtB,QAAA,IAAIhD,WAAa,EAAA;EAEfz+C,YAAAA,iBAAAA,EAAAA,CACG7D,GAAG,CAACG,CAAAA,CAAAA,GAAKA,EAAEqjD,MAAM,CAAA,CACjBpvC,OAAO,CAACkuC,aACRlgD,OAAO,CAAC,CAAC,EAACgH,MAAM,EAAC,GAAA;kBAEhB,MAAMm8C,WAAAA,GAActsC,YAAI7P,MAAOtE,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAEmT,QAAQ,CAAA,CAAA;kBAClD,MAAMkyC,QAAAA,GAAWxpC,aAAMwoC,CAAAA,MAAM,CAAC,CAAA,CAAE,EAAEA,MAAM,CAAC,CAAA,CAAE,EAAEe,WAAAA,CAAAA,CAAavxC,OAAO,EAAA;kBACjE,MAAMyxC,SAAAA,GAAY,CAACjB,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAE,CAAD,IAAK,CAAA;EAE5C,uBACA,SAASkB,YAAAA,CAAavlD,CAAC,EAAEgE,CAAC,EAAEU,GAAG,EAAA;EAC7B,oBAAA,IAAI,CAAC1E,CAAAA,CAAEwlD,QAAQ,EAAExlD,EAAEwlD,QAAQ,GAAG,IAAI,CAACP,MAAM,CAACzmC,YAAY,CAACxe,EAAE8E,KAAK,CAAA;EAC9D,oBAAA,IAAId,CAAG,EAAA;EACL,wBAAA,MAAM6hB,IAAOnhB,GAAAA,GAAG,CAACV,CAAAA,GAAI,CAAE,CAAA;EACvB,wBAAA,MAAM,EAACmP,QAAQ,EAAEC,OAAO,EAAC,GAAGpT,CAAAA;EAC5B,wBAAA,MAAMwI,CAAIxI,GAAAA,CAAAA,CAAEylD,IAAI,IAAIzlD,EAAEwlD,QAAQ;EAC9B,wBAAA,MAAME,KAAQ7/B,GAAAA,IAAAA,CAAK4/B,IAAI,IAAI5/B,KAAK2/B,QAAQ;EACxC,wBAAA,IAAIh9C,CAAI2K,GAAAA,QAAAA,GAAW,CAAIC,GAAAA,OAAAA,GAAUsyC,KAAO,EAAA;EACtC,4BAAA,MAAMD,OAAOJ,QAAS5+B,CAAAA,IAAI,CAACtK,CAAAA,IAAKA,CAAIupC,GAAAA,KAAAA,CAAAA;8BACpC,MAAMC,MAAAA,GAAS3lD,CAAEwlD,CAAAA,QAAQ,GAAGC,IAAAA;EAC5B,4BAAA,IAAIE,SAASL,SAAW,EAAA;EACtBz/B,gCAAAA,IAAAA,CAAK4/B,IAAI,GAAGA,IAAAA;EACZ,gCAAA,IAAIzhD,CAAGuhD,EAAAA,YAAAA,CAAa1/B,IAAM7hB,EAAAA,CAAAA,GAAI,CAAGU,EAAAA,GAAAA,CAAAA;EACnC;EACF;EACF;EACF;EAEAuE,gBAAAA,MAAAA,CAAOhH,OAAO,CAACsjD,YAAalhD,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAA;EAEvC,aAAA,CAAA;EAEF8gD,YAAAA,cAAAA,GAAiBhD,WAAYjmC,CAAAA,MAAM,CAAC,CAAC1b,GAAKR,EAAAA,CAAAA,GAAAA;kBACxC,IAAIA,CAAAA,CAAEylD,IAAI,EAAEjlD,GAAG,CAACR,EAAEmI,EAAE,CAAC,GAAGnI,CAAAA,CAAEylD,IAAI;kBAC9B,OAAOjlD,GAAAA;EACT,aAAA,EAAG,EAAC,CAAA;EAEN;EAEA,QAAA,IAAI,CAAColD,MAAM,GAAGp9C,CAAAA,GAAI,CAACxI,CAAGwI,EAAAA,CAAAA,GAAAA;EACpB,YAAA,IAAIA,MAAM,IAAM,EAAA;EACd,gBAAA,IAAI62C,aAAkB,KAAA,KAAA,IAASr/C,CAAM,KAAA,CAAA,EAAGA,CAAImgD,GAAAA,QAAQ,CAAC,CAAA,CAAE,GAAG,CAAA,GAAI,IAAI,CAAC+E,OAAO,CAAC7nC,gBAAgB,CAACzB,MAAM,EAAE,CAAC,CAAE,CAAA,GAAG,IAAI,CAACspC,OAAO,CAAC/mC,QAAQ,CAACvC,MAAM,EAAE,CAAC,CAAE,CAAA;EAC3I,gBAAA,OAAO,IAAI,CAACspC,OAAO,CAAC1mC,YAAY,CAACna,IAAI,CAAC,IAAI,CAAC6gD,OAAO,CAAA,CAAEllD,CAAK6jD,CAAAA,GAAAA,QAAAA;eAEtD,MAAA;EACH,gBAAA,IAAI1E,YAAiB,KAAA,KAAA,IAASn/C,CAAM,KAAA,CAAA,EAAGA,CAAIkgD,GAAAA,OAAO,CAAC,CAAA,CAAE,GAAG,CAAA,GAAI,IAAI,CAAC+E,MAAM,CAAC5nC,gBAAgB,CAACzB,MAAM,EAAE,CAAC,CAAE,CAAA,GAAG,IAAI,CAACqpC,MAAM,CAAC9mC,QAAQ,CAACvC,MAAM,EAAE,CAAC,CAAE,CAAA;EACvI,gBAAA,OAAO,IAAI,CAACqpC,MAAM,CAACzmC,YAAY,CAACna,IAAI,CAAC,IAAI,CAAC4gD,MAAM,CAAA,CAAEjlD,CAAK6jD,CAAAA,GAAAA,QAAAA;EACzD;EACF,SAAA;EAEA,QAAA,IAAI/sC,IAAW,EACZ3S,CAAAA,IAAI,CAAC;cAAC;EAAG,SAAA,CAAA,CACTiB,MAAM,CAACmrB,SAAU7qB,CAAAA,IAAI,IACrB6C,CAAC,CAAC+7C,MAAM,CAAC,EAAE,GAAIA,CAAAA,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,EAAE,IAAI,CACxC58C,CAAAA,CAAAA,KAAK,CAAC48C,MAAM,CAAC,CAAE,CAAA,GAAGA,MAAM,CAAC,CAAA,CAAE,CAC3B97C,CAAAA,CAAC,CAAC,IAAI,CAACuV,OAAO,CAACsC,GAAG,GAAG0jC,SAAYM,GAAAA,MAAM,CAAC,CAAE,CAAA,GAAG,CAACA,MAAM,CAAC,CAAA,CAAE,GAAGA,MAAM,CAAC,CAAE,CAAD,IAAK,CAAA,CAAA,CACvE18C,MAAM,CAAC08C,MAAM,CAAC,CAAA,CAAE,GAAGA,MAAM,CAAC,CAAE,CAAA,CAAA,CAC5BxiD,MAAM,CAAC,IAAI,CAACgkD,iBAAiB,EAC7B5gD,MAAM,EAAA;UAET,MAAM6gD,eAAAA,GAAkB3D,YAAY3gD,MAAM,CAACxB,CAAAA,CAAKA,GAAAA,CAAAA,CAAEylD,IAAI,KAAK1lD,SAAAA,CAAAA;UAC3D,IAAI+lD,eAAAA,CAAgBxjD,MAAM,EAAE;cAE1B,MAAMyjD,cAAAA,GAAiBt8C,SAAK,0BAA4B,EAAA;EAAC5G,gBAAAA,MAAAA;EAAQyD,gBAAAA,UAAAA;kBAAYP,KAAO,EAAA;EAAC0rB,oBAAAA;EAAS,iBAAA;kBAAGjrB,MAAQ,EAAA;EAACirB,oBAAAA;EAAS;EAAC,aAAA,CAAA,CAAG/rB,IAAI,EAAA;EAC3H,YAAA,MAAMvB,OAAO2hD,eAAgBnhD,CAAAA,GAAG,CAAC3E,CAAAA,IAAMoC,UAAO,CAAA;EAACmG,oBAAAA,CAAAA,EAAG,IAAI,CAACu8C,MAAM,CAACtmC,YAAY,CAACna,IAAI,CAAC,IAAI,CAACygD,MAAM,CAAA,CAAE9kD,EAAEqjD,MAAM,CAAA;EAAG76C,oBAAAA,CAAAA,EAAGxI,EAAEwlD;mBAAWxlD,EAAAA,CAAAA,CAAAA,CAAAA,CACrHmB,MAAM,CAAC2kD,eAAAA,CAAgBnhD,GAAG,CAAC3E,CAAAA,IAAMoC,UAAO,CAAA;EAACmG,oBAAAA,CAAAA,EAAG,IAAI,CAACu8C,MAAM,CAACtmC,YAAY,CAACna,IAAI,CAAC,IAAI,CAACygD,MAAM,CAAE9kD,CAAAA,CAAAA,CAAEqjD,MAAM,CAAIrjD,GAAAA,CAAAA,CAAEoT,OAAO,GAAG,CAAA;EAAG5K,oBAAAA,CAAAA,EAAGxI,CAAEylD,CAAAA,IAAI,IAAIzlD,CAAAA,CAAEwlD;mBAAWxlD,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;EAE/I,YAAA,IAAI8W,IAAW,EACZjV,CAAAA,MAAM,CAAC;EACNsC,gBAAAA,IAAAA;kBACAoH,MAAQvL,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEiT,SAAS;kBACxB1K,CAAGvI,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEuI,CAAC;kBACXC,CAAGxI,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEwI;eAEX3G,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAACmkD,qBAAqB,CACjC5gD,CAAAA,MAAM,CAAC2gD,cAAAA,CAAAA,CACP9gD,MAAM,EAAA;EAEX;UAEA,MAAMghD,mBAAAA,GAAsBx8C,SAAK,2BAA6B,EAAA;EAAC5G,YAAAA,MAAAA;EAAQyD,YAAAA,UAAAA;cAAYP,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cAAGjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;EAAC,SAAA,CAAA,CAAG/rB,IAAI,EAAA;UACjI,MAAMwgD,UAAAA,GAAaz8C,SAAK,sBAAwB,EAAA;EAAC5G,YAAAA,MAAAA;EAAQyD,YAAAA,UAAAA;cAAYP,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cAAGjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;EAAC,SAAA,CAAA,CAAG/rB,IAAI,EAAA;UACnH,MAAMygD,oBAAAA,GAAuB18C,SAAK,iCAAmC,EAAA;EAAC5G,YAAAA,MAAAA;EAAQyD,YAAAA,UAAAA;cAAYP,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cAAGjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;EAAC,SAAA,CAAA,CAAG/rB,IAAI,EAAA;UAExItE,MAAO2H,CAAAA,IAAI,CAAC,IAAI,CAACq9C,oBAAoB,CAAEnkD,CAAAA,OAAO,CAACokD,CAAAA,KAAAA,GAAAA;cAE7C,MAAMj6C,KAAAA,GAAQi6C,KAAU,KAAA,OAAA,GAAUF,oBAAuBF,GAAAA,mBAAAA;EAEzD,YAAA,MAAMK,iBAAiB,IAAI,CAACC,YAAY,CAAC/kD,MAAM,CAACxB,CAAAA,CAAAA,GAAK,KAACqmD,KAAU,UAAU,CAACrmD,CAAAA,CAAEqmD,KAAK,IAAKrmD,CAAAA,CAAEqmD,KAAK,KAAKA,KAAAA,CAAAA;EACnG,YAAA,MAAMG,mBAAmBF,cAAe3hD,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAEqpB,KAAK,CAAA;cACxDi9B,cAAerkD,CAAAA,OAAO,CAACwkD,CAAAA,UAAAA,GAAAA;kBACrB,IAAI3vC,MAAM,CAAC2vC,UAAAA,CAAWp9B,KAAK,CAAC,GACzBxnB,MAAM,CAAC4kD,UACP5kD,CAAAA,CAAAA,MAAM,CAAC;EACN0G,oBAAAA,CAAAA,EAAGvI,CAAAA,CAAAA,GAAKA,CAAEi3C,CAAAA,EAAE,GAAG1uC,CAAAA,CAAEvI,CAAEi3C,CAAAA,EAAE,EAAE,IAAA,CAAA,GAAQ1uC,CAAEvI,CAAAA,CAAAA,CAAEuI,CAAC,CAAA;sBACpCiM,EAAI,EAAA,IAAI,CAACrL,SAAS,KAAK,MAAMnJ,CAAAA,CAAAA,GAAKA,CAAEi3C,CAAAA,EAAE,GAAG1uC,CAAAA,CAAEvI,EAAEi3C,EAAE,EAAE,IAAQ1uC,CAAAA,GAAAA,CAAAA,CAAEvI,CAAEuI,CAAAA,CAAC,IAAIA,CAAEi1C,CAAAA,OAAAA,CAAQj1C,CAAC,CAAC,CAAE,CAAA,CAAA;EAChFkM,oBAAAA,EAAAA,EAAI,IAAI,CAACtL,SAAS,KAAK,GAAM,GAAA,IAAA,GAAOnJ,CAAAA,CAAKA,GAAAA,CAAAA,CAAEi3C,EAAE,GAAG1uC,EAAEvI,CAAEi3C,CAAAA,EAAE,EAAE,IAAQ1uC,CAAAA,GAAAA,CAAAA,CAAEvI,EAAEuI,CAAC,CAAA;EACrEC,oBAAAA,CAAAA,EAAGxI,CAAAA,CAAAA,GAAKA,CAAEk3C,CAAAA,EAAE,GAAG1uC,CAAAA,CAAExI,CAAEk3C,CAAAA,EAAE,EAAE,IAAA,CAAA,GAAQ1uC,CAAExI,CAAAA,CAAAA,CAAEwI,CAAC,CAAA;sBACpCkM,EAAI,EAAA,IAAI,CAACvL,SAAS,KAAK,GAAA,GAAMnJ,CAAAA,CAAKA,GAAAA,CAAAA,CAAEk3C,EAAE,GAAG1uC,CAAExI,CAAAA,CAAAA,CAAEk3C,EAAE,EAAE,IAAA,CAAA,GAAQ1uC,CAAExI,CAAAA,CAAAA,CAAEwI,CAAC,CAAA,GAAIA,EAAEg1C,OAAQh1C,CAAAA,CAAC,CAAC,CAAA,CAAE,CAAI2jB,GAAAA,OAAAA;EACpFxX,oBAAAA,EAAAA,EAAI,IAAI,CAACxL,SAAS,KAAK,GAAM,GAAA,IAAA,GAAOnJ,CAAAA,CAAKA,GAAAA,CAAAA,CAAEk3C,EAAE,GAAG1uC,CAAAA,CAAExI,EAAEk3C,EAAE,EAAE,QAAQ1uC,CAAExI,CAAAA,CAAAA,CAAEwI,CAAC,CAAI2jB,GAAAA;mBAE1E/mB,CAAAA,CAAAA,MAAM,CAACgH,KAAAA,CAAAA,CACPnH,MAAM,EAAA;EACX,aAAA,CAAA;EAEA,YAAA,MAAMyhD,eAAkB,GAAA,IAAI,CAACN,oBAAoB,CAACC,KAAM,CAAA,CAAC7kD,MAAM,CAACxB,CAAAA,CAAAA,GAAK,CAACwmD,gBAAAA,CAAiB7kD,QAAQ,CAAC3B,CAAAA,CAAAA,CAAAA;cAEhG0mD,eAAgBzkD,CAAAA,OAAO,CAAConB,CAAAA,KAAAA,GAAAA;kBACtB,IAAIvS,MAAM,CAACuS,KAAAA,CAAM,EACdllB,CAAAA,IAAI,CAAC,EAAE,CACPiB,CAAAA,MAAM,CAACgH,KAAAA,CAAAA,CACPnH,MAAM,EAAA;EACX,aAAA,CAAA;EAEA,YAAA,IAAI,CAACmhD,oBAAoB,CAACC,KAAAA,CAAM,GAAGG,gBAAAA;EAErC,SAAA,CAAA;UAEA,IAAIr6B,OAAAA,GAAU,IAAI,CAAC24B,MAAM,CAACx8B,SAAS,EAAE,CAAC,cAAe,CAAA;EACrD,QAAA,IAAI6D,SAASA,OAAW,IAAA,CAAA;EAExB,QAAA,MAAM5a,QAAW,GAAA,IAAI,CAACpI,SAAS,IAAI,GAAA;EAEnC,QAAA,MAAMlG,WAAc,GAAA;cAClBsO,QAAU,EAAA,IAAI,CAACpI,SAAS;cACxBvF,QAAU,EAAA,IAAI,CAACC,SAAS;cACxBgO,KAAO7R,EAAAA,CAAAA,CAAK,GAAA,IAAI,CAAC8kC,UAAU,CAAC9kC,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAA;cACvCoB,MAAQ8gD,EAAAA,UAAAA;EACR39C,YAAAA,CAAAA,EAAGvI,CAAAA,CAAAA,GAAKA,CAAEi3C,CAAAA,EAAE,KAAKl3C,SAAAA,GAAYwI,CAAEvI,CAAAA,CAAAA,CAAEi3C,EAAE,EAAE,IAAQ1uC,CAAAA,GAAAA,CAAAA,CAAEvI,EAAEuI,CAAC,CAAA;EAClDiM,YAAAA,EAAAA,EAAIjD,QAAa,KAAA,GAAA,GAAMvR,CAAAA,CAAAA,GAAKA,CAAEi3C,CAAAA,EAAE,GAAG1uC,CAAAA,CAAEvI,CAAEi3C,CAAAA,EAAE,EAAE,IAAA,CAAA,GAAQ1uC,EAAEvI,CAAEuI,CAAAA,CAAC,CAAIA,GAAAA,CAAAA,CAAE,OAAO,IAAI,CAACo3C,SAAS,KAAK,QAAA,GAAW,IAAI,CAACA,SAAS,GAAGnC,OAAQj1C,CAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;EAChIkM,YAAAA,EAAAA,EAAIlD,QAAa,KAAA,GAAA,GAAM,IAAOvR,GAAAA,CAAAA,IAAKA,CAAEi3C,CAAAA,EAAE,GAAG1uC,CAAAA,CAAEvI,EAAEi3C,EAAE,EAAE,IAAQ1uC,CAAAA,GAAAA,CAAAA,CAAEvI,EAAEuI,CAAC,CAAA;EAC/DC,YAAAA,CAAAA,EAAGxI,CAAAA,CAAAA,GAAKA,CAAEk3C,CAAAA,EAAE,KAAKn3C,SAAAA,GAAYyI,CAAExI,CAAAA,CAAAA,CAAEk3C,EAAE,EAAE,IAAQ1uC,CAAAA,GAAAA,CAAAA,CAAExI,EAAEwI,CAAC,CAAA;EAClDkM,YAAAA,EAAAA,EAAInD,QAAa,KAAA,GAAA,GAAMvR,CAAAA,CAAAA,GAAKA,CAAEk3C,CAAAA,EAAE,GAAG1uC,CAAAA,CAAExI,CAAEk3C,CAAAA,EAAE,EAAE,IAAA,CAAA,GAAQ1uC,EAAExI,CAAEwI,CAAAA,CAAC,CAAIA,GAAAA,CAAAA,CAAE,OAAO,IAAI,CAACm3C,SAAS,KAAK,QAAW,GAAA,IAAI,CAACA,SAAS,GAAGnC,OAAAA,CAAQh1C,CAAC,CAAC,EAAE,CAAI2jB,GAAAA,OAAAA;EACpIxX,YAAAA,EAAAA,EAAIpD,aAAa,GAAM,GAAA,IAAA,GAAOvR,CAAAA,CAAAA,GAAKA,EAAEk3C,EAAE,GAAG1uC,CAAExI,CAAAA,CAAAA,CAAEk3C,EAAE,EAAE,IAAA,CAAA,GAAQ1uC,CAAExI,CAAAA,CAAAA,CAAEwI,CAAC,CAAI2jB,GAAAA;EACrE,SAAA;EAEA,QAAA,MAAMrjB,SAAS1H,MAAO2H,CAAAA,IAAI,CAAC,IAAI,CAACxG,GAAG,CAAA;UACnCsV,SAAU5V,CAAAA,OAAO,CAACjC,CAAAA,CAAAA,GAAAA;EAEhB,YAAA,MAAM2mD,gBAAmBvlD,GAAAA,MAAAA,CAAOgB,MAAM,CAAC,EAAIa,EAAAA,WAAAA,CAAAA;cAC3C,IAAI,IAAI,CAAC00C,QAAQ,IAAI;EAAC,gBAAA,MAAA;EAAQ,gBAAA;EAAM,aAAA,CAACh2C,QAAQ,CAAC3B,CAAEH,CAAAA,GAAG,CAAG,EAAA;kBACpD,MAAMkL,KAAAA,GAAQyxC,GAAQ,KAAA,GAAA,GAAMj0C,CAAIC,GAAAA,CAAAA;EAChCm+C,gBAAAA,gBAAgB,CAAC,CAAA,EAAGnK,GAAK,CAAA,CAAA,CAAC,GAAGmK,gBAAgB,CAAC,CAAA,EAAGnK,GAAI,CAAA,CAAC,CAAC,CAAC,GAAGx8C,CAAAA,CAAAA,GAAAA;EACzD,oBAAA,MAAM4mD,SAAYlJ,GAAAA,SAAAA,CAAUh8C,OAAO,CAAC1B,CAAEmI,CAAAA,EAAE,CAClC0+C,EAAAA,aAAAA,GAAgBtJ,YAAa77C,CAAAA,OAAO,CAAC1B,CAAAA,CAAEuR,QAAQ,CAAA;EACrD,oBAAA,MAAMu1C,aAAa9mD,CAAC,CAACw8C,GAAI,CAAA,GAAG,IAAI,CAAI,GAAA,CAAA;EACpC,oBAAA,OAAOoK,aAAa,CAAI77C,GAAAA,KAAAA,CAAM0yC,SAAS,CAACmJ,SAAAA,CAAU,CAACC,aAAc,CAAA,CAACC,WAAW,CAAI/7C,GAAAA,KAAAA,CAAMyyC,OAAO,CAAChB,GAAAA,CAAI,CAACA,GAAQ,KAAA,GAAA,GAAM,IAAI,CAAE,CAAA,CAAA;EAC1H,iBAAA;EAAUmK,gBAAAA,gBAAgB,CAAC,CAAGnK,EAAAA,GAAAA,CAAI,CAAC,CAAC,CAAC,GAAGx8C,CAAAA,CAAAA,GAAAA;EACtC,oBAAA,MAAM4mD,SAAYlJ,GAAAA,SAAAA,CAAUh8C,OAAO,CAAC1B,CAAEmI,CAAAA,EAAE,CAClC0+C,EAAAA,aAAAA,GAAgBtJ,YAAa77C,CAAAA,OAAO,CAAC1B,CAAAA,CAAEuR,QAAQ,CAAA;EAC/C,oBAAA,MAAMu1C,aAAa9mD,CAAC,CAACw8C,GAAI,CAAA,GAAG,IAAI,CAAI,GAAA,CAAA;EAC1C,oBAAA,OAAOoK,aAAa,CAAI77C,GAAAA,KAAAA,CAAM0yC,SAAS,CAACmJ,SAAAA,CAAU,CAACC,aAAc,CAAA,CAACC,WAAW,CAAI/7C,GAAAA,KAAAA,CAAMyyC,OAAO,CAAChB,GAAAA,CAAI,CAACA,GAAQ,KAAA,GAAA,GAAM,IAAI,CAAE,CAAA,CAAA;EAC1H,iBAAA;EACF;EAEA,YAAA,MAAMv8C,CAAI,GAAA,IAAI6W,MAAM,CAAC9W,EAAEH,GAAG,CAAC,EAAGgC,CAAAA,MAAM,CAAC8kD,gBAAAA,CAAAA,CAAkBxiD,IAAI,CAACnE,EAAEiJ,MAAM,CAAA;cAEpE,IAAIjJ,CAAAA,CAAEH,GAAG,KAAK,KAAO,EAAA;kBAEnB,IAAIwlB,KAAAA;EACJ,gBAAA,MAAMta,QAAQ,IAAI,CAAC5B,SAAS,KAAK,MAAMZ,CAAIC,GAAAA,CAAAA;EAC3C,gBAAA,MAAMu+C,YAAY,IAAI,CAAC59C,SAAS,KAAK,MAAMyvC,MAASD,GAAAA,MAAAA;EACpD,gBAAA,MAAMM,OAAO,IAAI,CAAC9vC,SAAS,KAAK,MAAM62C,OAAUE,GAAAA,OAAAA;EAChD,gBAAA,MAAMrkC,QAAQ,IAAI,CAAC1S,SAAS,KAAK,MAAMm7C,MAASD,GAAAA,MAAAA;EAChD,gBAAA,IAAI0C,SAAc,KAAA,OAAA,IAAW9N,IAAK32C,CAAAA,MAAM,KAAK,CAAG,EAAA;EAC9C,oBAAA,MAAM0kD,eAAepiD,KAAM8pB,CAAAA,IAAI,CAAC,IAAID,GAAAA,CAAIzuB,EAAEiJ,MAAM,CAACtE,GAAG,CAAC3E,CAAAA,IAAK+K,KAAM/K,CAAAA,CAAC,CAAC,IAAI,CAACmJ,SAAS,CAAC,CAAA,CAAA,CAAA,CAAA;EACjF69C,oBAAAA,YAAAA,CAAazpC,OAAO,CAAC1B,KAAK,CAAC,CAAE,CAAA,GAAGmrC,YAAY,CAAC,CAAE,CAAA,GAAGnrC,KAAK,CAAC,CAAE,CAAA,CAAA;EAC1DmrC,oBAAAA,YAAAA,CAAat5C,IAAI,CAACmO,KAAK,CAAC,EAAE,GAAGA,KAAK,CAAC,CAAA,CAAE,GAAGmrC,YAAY,CAACA,YAAa1kD,CAAAA,MAAM,GAAG,CAAE,CAAA,CAAA;EAC7E+iB,oBAAAA,KAAAA,GAAQ2hC,aAAa9qC,MAAM,CAAC,CAACC,CAAAA,EAAGnc,GAAGgE,CAAGU,EAAAA,GAAAA,GAAAA;EACpC,wBAAA,IAAIV,CAAG,EAAA;8BACL,MAAMoY,IAAAA,GAAOlc,KAAKsV,GAAG,CAACxV,IAAI0E,GAAG,CAACV,IAAI,CAAE,CAAA,CAAA;8BACpC,IAAIoY,IAAAA,GAAOD,GAAGA,CAAIC,GAAAA,IAAAA;EACpB;0BACA,OAAOD,CAAAA;uBACNE,EAAAA,QAAAA,CAAAA;EACL,iBAAA,MACK,IAAI48B,IAAAA,CAAK32C,MAAM,GAAG,GAAG+iB,KAAQta,GAAAA,KAAAA,CAAMkuC,IAAI,CAAC,CAAE,CAAA,CAAA,GAAIluC,KAAMkuC,CAAAA,IAAI,CAAC,CAAE,CAAA,CAAA;uBAC3D5zB,KAAQxJ,GAAAA,KAAK,CAACA,KAAMvZ,CAAAA,MAAM,GAAG,CAAE,CAAA,GAAGuZ,KAAK,CAAC,CAAE,CAAA;kBAC/C,IAAI,IAAI,CAACorC,aAAa,GAAG5hC,OAAOA,KAAS,IAAA,IAAI,CAAC4hC,aAAa;EAE3D,gBAAA,IAAIC,UAAU7hC,KAAS,IAAA,CAAA;kBAEvB,MAAM8hC,MAAAA,GAASzjD,oBACZ7D,GAAG,CAACG,CAAAA,CAAKA,GAAAA,CAAC,CAAC,IAAI,CAACmJ,SAAS,CAAC,CAC1BtJ,CAAAA,GAAG,CAACG,CAAAA,CAAKA,GAAAA,CAAAA,CAAEoM,KAAK,CAChB6H,CAAAA,OAAO,CAACjU,CAAAA,CAAEiJ,MAAM,CAAA;EAEnB,gBAAA,MAAMuqC,GAAM/sC,GAAAA,aAAAA,CAAM0gD,MAAOxiD,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,CAAEiJ,CAAAA,MAAM,CAACtE,GAAG,CAACxC,CAAAA,CAAAA,GAAKA,EAAEtC,GAAG,CAAA,CAAA,CAAA;EACzD,gBAAA,MAAM6tC,SAAY9oC,GAAAA,KAAAA,CAAM8pB,IAAI,CAAC,IAAID,GAAI+kB,CAAAA,GAAAA,CAAAA,CAAAA;kBAErC,IAAI16B,WAAAA,CAAIquC,MAAOxiD,CAAAA,GAAG,CAAC3E,CAAAA,CAAKA,GAAAA,CAAAA,CAAEiJ,MAAM,CAAC3G,MAAM,CAAA,CAAA,KAAO,CAAG,EAAA;EAC/CrC,oBAAAA,CAAC,CAAC,IAAI,CAACkJ,SAAS,CAAC,CAAC,CAACnJ,CAAAA,EAAGgE,CAAMf,GAAAA,WAAW,CAAC,IAAI,CAACkG,SAAS,CAAC,CAACnJ,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA;mBAExD,MAAA;EAEHkjD,oBAAAA,OAAAA,GAAU,CAACA,OAAU,GAAA,IAAI,CAACE,WAAW,GAAG1Z,SAAAA,CAAUprC,MAAM,GAAG,CAAA,IAAKorC,UAAUprC,MAAM;sBAEhF,MAAMwb,MAAAA,GAASuH,KAAQ,GAAA,CAAA,GAAI6hC,OAAU,GAAA,CAAA;EAErC,oBAAA,MAAMtd,IAAOluB,GAAAA,iBAAAA,CAAOC,WAAW,EAAA,CAC5BC,MAAM,CAAC;EAAC,wBAAA,CAAA;EAAG8xB,wBAAAA,SAAAA,CAAUprC,MAAM,GAAG;EAAE,qBAAA,CAAA,CAChCuZ,KAAK,CAAC;0BAAC,CAACiC,MAAAA;EAAQA,wBAAAA;EAAO,qBAAA,CAAA;sBAE1B7d,CAAC,CAAC,IAAI,CAACkJ,SAAS,CAAC,CAAC,CAACnJ,CAAGgE,EAAAA,CAAAA,GAAMf,WAAW,CAAC,IAAI,CAACkG,SAAS,CAAC,CAACnJ,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK4lC,KAAK8D,SAAUhsC,CAAAA,OAAO,CAAC1B,CAAAA,CAAEoM,KAAK,CAAA,CAAA,CAAA;EAEhG;EAEAnM,gBAAAA,CAAAA,CAAEyH,KAAK,CAACw/C,OAAAA,CAAAA;EACRjnD,gBAAAA,CAAAA,CAAE0H,MAAM,CAACu/C,OAAAA,CAAAA;EAEX,aAAA,MACK,IAAIlnD,CAAAA,CAAEH,GAAG,KAAK,MAAQ,EAAA;kBAEzBI,CAAE2D,CAAAA,QAAQ,CAAC8D,KAAQ,GAAA,GAAA,CAAA;kBAEnB,IAAI,IAAI,CAACm0C,WAAW,EAAE;EACpB,oBAAA,MAAMwL,UAAajmD,GAAAA,MAAAA,CAAOgB,MAAM,CAAC,EAAIa,EAAAA,WAAAA,CAAAA;EACrC,oBAAA,MAAMsO,QAAW,GAAA,IAAI,CAACpI,SAAS,IAAI,GAAA;sBACnC,MAAMtJ,GAAAA,GAAM0R,QAAa,KAAA,GAAA,GAAM,GAAM,GAAA,GAAA;sBACrC,MAAM+1C,aAAAA,GAAgB/1C,QAAa,KAAA,GAAA,GAAM/I,CAAID,GAAAA,CAAAA;sBAC7C8+C,UAAU,CAAC,GAAGxnD,GAAI,CAAA,CAAC,CAAC,CAAC,GAAGG,CAAAA,CAAKsnD,GAAAA,aAAAA,CAAc,IAAI,CAACzL,WAAW,CAAC,CAAE,CAAA,GAAG77C,EAAE87C,GAAG,GAAG97C,CAAC,CAACH,GAAI,CAAA,CAAA;sBAC/EwnD,UAAU,CAAC,GAAGxnD,GAAI,CAAA,CAAC,CAAC,CAAC,GAAGG,CAAAA,CAAKsnD,GAAAA,aAAAA,CAAc,IAAI,CAACzL,WAAW,CAAC,CAAE,CAAA,GAAG77C,EAAE47C,GAAG,GAAG57C,CAAC,CAACH,GAAI,CAAA,CAAA;sBAE/E,MAAM0U,IAAAA,GAAO,IAAIuC,IAAW,EAAA,CAAGjV,MAAM,CAACwlD,UAAYljD,CAAAA,CAAAA,IAAI,CAACnE,CAAAA,CAAEiJ,MAAM,CAAA;sBAC/D,MAAMs+C,gBAAAA,GAAmBnmD,MAAOgB,CAAAA,MAAM,CAAC,IAAI,CAACc,YAAY,EAAE,IAAI,CAACskD,iBAAiB,CAAA;EAEhFjzC,oBAAAA,IAAAA,CACG1S,MAAM,CAACO,UAAAA,CAAOoB,WAAWa,IAAI,CAAC,IAAI,CAAEkjD,CAAAA,gBAAAA,EAAkB,SAAS,MAAS/jD,CAAAA,EAAAA,UAAAA,CAAWa,IAAI,CAAC,IAAI,EAAEkjD,gBAAkB,EAAA,OAAA,EAAS,UACzHtiD,MAAM,EAAA;EAET,oBAAA,IAAI,CAAConB,OAAO,CAAC3e,IAAI,CAAC6G,IAAAA,CAAAA;EACpB;EAEAtU,gBAAAA,CAAAA,CAAE4B,MAAM,CAAC;sBACP0P,QAAUtO,EAAAA,WAAAA,CAAYsO,QAAQ,IAAI,GAAA;sBAClCM,KAAOuwC,EAAAA,cAAAA,GAAiB,CAACpiD,CAAGgE,EAAAA,CAAAA,GAAAA;EAC1B,wBAAA,MAAMw6B,UAAU,OAAO,IAAI,CAAC6jB,WAAW,KAAK,UAAa,GAAA,IAAI,CAACA,WAAW,CAACriD,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAI,GAAA,IAAA;0BACzF,IAAI,CAACw6B,SAAS,OAAO,KAAA;0BACrB,MAAM3wB,SAAAA,GAAYs0C,WAAY17B,CAAAA,IAAI,CAACvY,CAAAA,IAAKA,CAAE/F,CAAAA,EAAE,KAAKnI,CAAAA,CAAEmI,EAAE,CAAA;EACrD,wBAAA,IAAI0F,SAAW,EAAA;EACb,4BAAA,MAAMma,IAAOna,GAAAA,SAAAA,CAAU43C,IAAI,IAAI53C,UAAU23C,QAAQ;8BACjD,MAAMiC,SAAAA,GAAYtF,YAAY3gD,MAAM,CAAC0M,CAAAA,CAAKA,GAAAA,CAAAA,CAAEu3C,IAAI,KAAKz9B,IAAAA,CAAAA;EACrD,4BAAA,IAAIy/B,SAAUnlD,CAAAA,MAAM,GAAG,CAAA,EAAG,OAAOmlD,SAAS,CAAC,CAAE,CAAA,CAACt/C,EAAE,KAAKnI,CAAEmI,CAAAA,EAAE,GAAG,KACxD,GAAA,CAAC,CAAC,EAAEsZ,uBAAiBgmC,CAAAA,SAAAA,CAAUnlD,MAAM,EAAE,IAAI,CAACG,OAAO,CAAE,CAAA,CAAC,EAAE,IAAI,CAACO,UAAU,CAAC,MAAS,CAAA,CAAA,CAAA;EACrF,4BAAA,OAAO,IAAI,CAAC8hC,UAAU,CAAC9kC,CAAGgE,EAAAA,CAAAA,CAAAA;EAC5B;0BACA,OAAO,KAAA;uBACL,GAAA,KAAA;sBACJ8N,WAAaswC,EAAAA,cAAAA,GAAiB,CAACpiD,CAAAA,EAAGgE,CAAG/D,EAAAA,CAAAA,GAAAA;EACnC,wBAAA,MAAM,CAACynD,MAAQC,EAAAA,MAAAA,CAAO,GAAG1nD,CAAE8T,CAAAA,MAAM,CAAC,CAAE,CAAA;EACpC,wBAAA,MAAM,CAAC6zC,KAAAA,EAAOC,KAAM,CAAA,GAAG5nD,CAAE8T,CAAAA,MAAM,CAAC9T,CAAAA,CAAE8T,MAAM,CAACzR,MAAM,GAAG,CAAE,CAAA;EACpD,wBAAA,MAAMqF,MAAS,GAAA,IAAI,CAACvB,OAAO,GAAG,CAAA;EAC9B,wBAAA,MAAM+W,GAAMgoC,GAAAA,cAAc,CAACnlD,CAAAA,CAAEmI,EAAE,CAAC,GAAG0/C,KAAAA,GAAQ1C,cAAc,CAACnlD,CAAEmI,CAAAA,EAAE,CAAC,GAAG,CAAA;0BAClE,OAAO;EACLI,4BAAAA,CAAAA,EAAGq/C,KAAQF,GAAAA,MAAAA;8BACXl/C,CAAGq/C,EAAAA,KAAAA,GAAQF,MAAShgD,GAAAA,MAAAA,GAAS,CAAIwV,GAAAA,GAAAA;8BACjCzV,KAAOw6C,EAAAA,YAAAA;EACPv6C,4BAAAA;EACF,yBAAA;uBACE,GAAA;EACN,iBAAA,CAAA;EAEF;EAEA,YAAA,MAAMmgD,WAAch/C,GAAAA,MAAAA,CAAOtH,MAAM,CAACC,CAAAA,CAAKA,GAAAA,CAAAA,CAAEE,QAAQ,CAAC,CAAC,CAAC,EAAE3B,CAAEH,CAAAA,GAAG,EAAE,CACvDkoD,CAAAA,EAAAA,YAAAA,GAAej/C,MAAOtH,CAAAA,MAAM,CAACC,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAEE,QAAQ,CAAC,GAAA,CAAA,CAAA,EAC9CqmD,WAAcl/C,GAAAA,MAAAA,CAAOtH,MAAM,CAACC,CAAAA,CAAKA,GAAAA,CAAAA,CAAEE,QAAQ,CAAC,QAAA,CAAA,CAAA;EAClD,YAAA,IAAK,IAAIF,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIsmD,aAAazlD,MAAM,EAAEb,CAAKxB,EAAAA,CAAAA,CAAAA,CAAE0C,EAAE,CAAColD,YAAY,CAACtmD,CAAAA,CAAE,EAAE,CAACzB,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,QAAU,IAAI,CAACjC,GAAG,CAACwlD,YAAY,CAACtmD,CAAAA,CAAE,CAAC,CAACzB,EAAEmE,IAAI,EAAEnE,CAAEgE,CAAAA,CAAC,EAAEuE,CAAG/D,EAAAA,KAAAA,CAAAA,CAAAA;EAClI,YAAA,IAAK,IAAI/C,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIumD,YAAY1lD,MAAM,EAAEb,CAAKxB,EAAAA,CAAAA,CAAAA,CAAE0C,EAAE,CAACqlD,WAAW,CAACvmD,CAAAA,CAAE,EAAE,CAACzB,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,QAAU,IAAI,CAACjC,GAAG,CAACylD,WAAW,CAACvmD,CAAAA,CAAE,CAAC,CAACzB,EAAEmE,IAAI,EAAEnE,CAAEgE,CAAAA,CAAC,EAAEuE,CAAG/D,EAAAA,KAAAA,CAAAA,CAAAA;EAC/H,YAAA,IAAK,IAAI/C,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIqmD,YAAYxlD,MAAM,EAAEb,CAAKxB,EAAAA,CAAAA,CAAAA,CAAE0C,EAAE,CAACmlD,WAAW,CAACrmD,CAAAA,CAAE,EAAE,CAACzB,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,QAAU,IAAI,CAACjC,GAAG,CAACulD,WAAW,CAACrmD,CAAAA,CAAE,CAAC,CAACzB,EAAEmE,IAAI,EAAEnE,CAAEgE,CAAAA,CAAC,EAAEuE,CAAG/D,EAAAA,KAAAA,CAAAA,CAAAA;EAE/H,YAAA,MAAM89C,UAAa9+C,GAAAA,UAAAA,CAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACnB,YAAY,EAAE,OAASlD,EAAAA,CAAAA,CAAEH,GAAG,CAAA;cAC1E,IAAI,IAAI,CAACqD,YAAY,CAACU,QAAQ,KAAK7D,SAAAA,EAAW,OAAOuiD,UAAAA,CAAW1+C,QAAQ;cACxE3D,CAAE4B,CAAAA,MAAM,CAACygD,UAAAA,CAAAA,CAAYr9C,MAAM,EAAA;EAE3B,YAAA,IAAI,CAAConB,OAAO,CAAC3e,IAAI,CAACzN,CAAAA,CAAAA;cAElB,IAAID,CAAAA,CAAEH,GAAG,KAAK,MAAQ,EAAA;EACpB,gBAAA,MAAMooD,UAAU,IAAInxC,MAAa,EAAA,CAC9B3S,IAAI,CAAC,IAAI,CAAC+jD,YAAY,GAAGloD,CAAEiJ,CAAAA,MAAM,GAAG,EAAE,EACtCpH,MAAM,CAACoB,WACPpB,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAACsmD,iBAAiB,CAAA,CAC7BhgD,EAAE,CAACnI,CAAAA,CAAK,GAAA,CAAA,EAAGA,EAAEmI,EAAE,CAAC,CAAC,EAAEnI,CAAAA,CAAEuR,QAAQ,CAAE,CAAA,CAAA;EAElC,gBAAA,IAAK,IAAI9P,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIsmD,aAAazlD,MAAM,EAAEb,CAAKwmD,EAAAA,CAAAA,OAAAA,CAAQtlD,EAAE,CAAColD,YAAY,CAACtmD,CAAAA,CAAE,EAAE,CAACzB,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,QAAU,IAAI,CAACjC,GAAG,CAACwlD,YAAY,CAACtmD,CAAAA,CAAE,CAAC,CAACzB,EAAEmE,IAAI,EAAEnE,CAAEgE,CAAAA,CAAC,EAAEuE,CAAG/D,EAAAA,KAAAA,CAAAA,CAAAA;EACxI,gBAAA,IAAK,IAAI/C,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIumD,YAAY1lD,MAAM,EAAEb,CAAKwmD,EAAAA,CAAAA,OAAAA,CAAQtlD,EAAE,CAACqlD,WAAW,CAACvmD,CAAAA,CAAE,EAAE,CAACzB,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,QAAU,IAAI,CAACjC,GAAG,CAACylD,WAAW,CAACvmD,CAAAA,CAAE,CAAC,CAACzB,EAAEmE,IAAI,EAAEnE,CAAEgE,CAAAA,CAAC,EAAEuE,CAAG/D,EAAAA,KAAAA,CAAAA,CAAAA;EACrI,gBAAA,IAAK,IAAI/C,CAAAA,GAAI,CAAGA,EAAAA,CAAAA,GAAIqmD,YAAYxlD,MAAM,EAAEb,CAAKwmD,EAAAA,CAAAA,OAAAA,CAAQtlD,EAAE,CAACmlD,WAAW,CAACrmD,CAAAA,CAAE,EAAE,CAACzB,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,QAAU,IAAI,CAACjC,GAAG,CAACulD,WAAW,CAACrmD,CAAAA,CAAE,CAAC,CAACzB,EAAEmE,IAAI,EAAEnE,CAAEgE,CAAAA,CAAC,EAAEuE,CAAG/D,EAAAA,KAAAA,CAAAA,CAAAA;EAErIyjD,gBAAAA,OAAAA,CAAQhjD,MAAM,EAAA;EACd,gBAAA,IAAI,CAAConB,OAAO,CAAC3e,IAAI,CAACu6C,OAAAA,CAAAA;EACpB;EAEF,SAAA,CAAA;EAEA,QAAA,MAAMG,aAAavwC,SAAUlT,CAAAA,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAEH,GAAG,CAAA;UAC3C,IAAIuoD,UAAAA,CAAWzmD,QAAQ,CAAC,MAAS,CAAA,EAAA;EAC/B,YAAA,IAAI,IAAI,CAACk6C,WAAW,EAAEuM,UAAAA,CAAW16C,IAAI,CAAC,MAAA,CAAA;EACtC,YAAA,IAAI,IAAI,CAACw6C,YAAY,EAAEE,UAAAA,CAAW16C,IAAI,CAAC,QAAA,CAAA;EACzC;EACA,QAAA,MAAM26C,UAAa,GAAA,IAAI,CAACC,eAAe,CAAC9mD,MAAM,CAACxB,CAAAA,CAAK,GAAA,CAACooD,UAAWzmD,CAAAA,QAAQ,CAAC3B,CAAAA,CAAAA,CAAAA;UAEzEqoD,UAAWpmD,CAAAA,OAAO,CAAConB,CAAAA,KAAAA,GAAAA;cACjB,IAAIvS,MAAM,CAACuS,KAAAA,CAAM,EACdxnB,CAAAA,MAAM,CAACoB,WAAAA,CAAAA,CACPkB,IAAI,CAAC,EAAE,CAAA,CACPc,MAAM,EAAA;EACX,SAAA,CAAA;UAEA,IAAI,CAACqjD,eAAe,GAAGF,UAAAA;EAEvB,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;;;OAQAG,WAAAA,CAAYzmD,CAAC,EAAE;UACb,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACikD,YAAY,GAAGzkD,CAAa8C,YAAAA,KAAAA,GAAQ9C,CAAI,GAAA;EAACA,YAAAA;EAAE,SAAA,EAAE,IAAG,IAAK,IAAI,CAACykD,YAAY;EACxG;EAEA;;;;;OAMAiC,WAAAA,CAAY1mD,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC25C,YAAY,GAAGn6C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACm6C,YAAY;EAC7E;EAEA;;;;;QAMAwM,gBAAAA,CAAiB3mD,CAAC,EAAE;EAClB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACujD,iBAAiB,GAAGzjD,UAAAA,CAAO,IAAI,CAACyjD,iBAAiB,EAAE/jD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC+jD,iBAAiB;EACvH;EAEA;;;;;OAMA6C,UAAAA,CAAW5mD,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC8kD,WAAW,GAAGtlD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACslD,WAAW;EAC3E;EAEA;;;;;OAMAuB,QAAAA,CAAS7mD,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACq9C,SAAS,GAAG79C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC69C,SAAS;EACvE;EAEA;;;;;QAMAxI,MAAAA,CAAOr1C,CAAC,EAAE;UACR,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,CAACR,CAAG,EAAA,IAAI,CAACg+C,OAAO,GAAG,EAAC;EACnB,iBAAA,IAAIh+C,CAAM,KAAA,IAAA,EAAM,IAAI,CAACg+C,OAAO,GAAG1G,cAAAA;EAC/B,iBAAA;kBACH,IAAI,CAAC0G,OAAO,GAAG19C,UAAAA,CAAO,EAAI,EAAA,IAAI,CAAC09C,OAAO,EAAEh+C,CAAAA,CAAAA;EACxC,gBAAA,IAAK,IAAIjC,GAAAA,IAAO,IAAI,CAACigD,OAAO,CAAE;EAC5B,oBAAA,IAAI,IAAI,CAACA,OAAO,CAACjgD,IAAI,KAAK,IAAA,EAAM,IAAI,CAACigD,OAAO,CAACjgD,GAAAA,CAAI,GAAGu5C,cAAc,CAACv5C,GAAI,CAAA;EACzE;EACF;EACA,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACigD,OAAO;EACrB;EAEA;;;;;;;;;;;;;QAcA8I,UAAAA,CAAW9mD,CAAC,EAAE;EACZ,QAAA,IAAIO,SAAUC,CAAAA,MAAM,IAAIR,CAAAA,YAAa8C,KAAO,EAAA;cAC1C,IAAI,CAACi3C,WAAW,GAAG,EAAE;cACrB,MAAMgN,KAAAA,GAAQ/mD,CAAC,CAAC,CAAE,CAAA;cAClB,IAAI,CAAC+5C,WAAW,CAAC,CAAE,CAAA,GAAG,OAAOgN,KAAAA,KAAU,UAAc,IAAA,CAACA,KAAQA,GAAAA,KAAAA,GAAQpgD,QAASogD,CAAAA,KAAAA,CAAAA;cAC/E,MAAMC,KAAAA,GAAQhnD,CAAC,CAAC,CAAE,CAAA;cAClB,IAAI,CAAC+5C,WAAW,CAAC,CAAE,CAAA,GAAG,OAAOiN,KAAAA,KAAU,UAAc,IAAA,CAACA,KAAQA,GAAAA,KAAAA,GAAQrgD,QAASqgD,CAAAA,KAAAA,CAAAA;EAE/E,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACjN,WAAW;EAC9B;EAEA;;;;;QAMA0L,gBAAAA,CAAiBzlD,CAAC,EAAE;EAClB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACklD,iBAAiB,GAAGplD,UAAAA,CAAO,IAAI,CAAColD,iBAAiB,EAAE1lD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC0lD,iBAAiB;EACvH;EAEA;;;;;OAMAj2C,QAAAA,CAASzP,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6G,SAAS,GAAGrH,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACqH,SAAS;EACvE;EAEA;;;;;OAMA4/C,cAAAA,CAAejnD,CAAC,EAAE;EAChB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACk+C,eAAe,GAAG1+C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC0+C,eAAe;EACnF;EAEA;;;;;OAMAwI,YAAAA,CAAalnD,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2kD,aAAa,GAAGnlD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmlD,aAAa;EAC/E;EAEA;;;;;QAMAgC,oBAAAA,CAAqBnnD,CAAC,EAAE;EACtB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0jD,qBAAqB,GAAG5jD,UAAAA,CAAO,IAAI,CAAC4jD,qBAAqB,EAAElkD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkkD,qBAAqB;EACnI;EAEA;;;;;OAMAzL,aAAAA,CAAcz4C,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACk4C,cAAc,GAAG,OAAO14C,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC04C,cAAc;EACzH;EAEA;;;;;OAMA0O,UAAAA,CAAWpnD,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+/C,WAAW,GAAGvgD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACugD,WAAW;EAC3E;EAEA;;;;;OAMA8G,gBAAAA,CAAiBrnD,CAAC,EAAE;EAClB,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC6lD,iBAAiB,GAAG/lD,UAAAA,CAAO,IAAI,CAAC+lD,iBAAiB,EAAErmD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACqmD,iBAAiB;EACvH;EAEA;;;;;OAMAiB,WAAAA,CAAYtnD,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4lD,YAAY,GAAGpmD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAComD,YAAY;EAC7E;EAEA;;;;;OAMAmB,SAAAA,CAAUvnD,CAAC,EAAE;EACX,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACs9C,UAAU,GAAG99C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC89C,UAAU;EACzE;EAEA;;;;;OAMAl2C,IAAAA,CAAK5H,CAAC,EAAE;UACN,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACgvB,KAAK,GAAG,OAAOxvB,CAAAA,KAAM,cAAc,CAACA,CAAAA,GAAIA,IAAI2G,QAAS3G,CAAAA,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACwvB,KAAK;EAC7G;EAEA;;;;;OAMAg4B,OAAAA,CAAQxnD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC85C,QAAQ,GAAGt6C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACs6C,QAAQ;EACrE;EAEA;;;;;OAMAmN,OAAAA,CAAQznD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+5C,QAAQ,GAAGv6C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACu6C,QAAQ;EACrE;EAEA;;;;;OAMAmN,SAAAA,CAAU1nD,CAAC,EAAE;EACX,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC65C,UAAU,GAAGr6C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACq6C,UAAU;EACzE;EAEA;;;;;OAMAsN,OAAAA,CAAQ3nD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACq1C,QAAQ,GAAG71C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC61C,QAAQ;EACrE;EAEA;;;;;OAMA+R,WAAAA,CAAY5nD,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC47C,YAAY,GAAG,OAAOp8C,MAAM,UAAaA,GAAAA,CAAAA,GAAIk4C,gBAAO,CAAC,CAAC,WAAW,EAAEl4C,CAAE2O,CAAAA,MAAM,CAAC,CAAA,CAAA,CAAGC,WAAW,EAAA,GAAK5O,EAAE6O,KAAK,CAAC,CAAI,CAAA,CAAA,CAAA,CAAC,EAAE,IAAG,IAAK,IAAI,CAACutC,YAAY;EACzK;EAEA;;;;;OAMAyL,UAAAA,CAAW7nD,CAAC,EAAE;UACZ,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,OAAOR,CAAAA,KAAM,QAAU,EAAA,IAAI,CAACk8C,WAAW,GAAGl8C,CAAAA,KAAM,WAAc83C,GAAAA,mBAAAA,GAAsB93C,CAAM,KAAA,YAAA,GAAeo4C,oBAAuBF,GAAAA,gBAAO,CAAC,CAAC,UAAU,EAAEl4C,CAAE2O,CAAAA,MAAM,CAAC,CAAA,CAAA,CAAGC,WAAW,EAAA,GAAK5O,CAAE6O,CAAAA,KAAK,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC;mBAC7L,IAAI,CAACqtC,WAAW,GAAGl8C,CAAAA;EACxB,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACk8C,WAAW;EAC9B;EAEA;;;;;OAMAz1C,CAAAA,CAAEzG,CAAC,EAAE;UACH,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,OAAOR,CAAM,KAAA,UAAA,EAAY,IAAI,CAACmE,EAAE,GAAGnE,CAAAA;EAClC,iBAAA;kBACH,IAAI,CAACmE,EAAE,GAAGwC,QAAS3G,CAAAA,CAAAA,CAAAA;kBACnB,IAAI,CAAC8nD,KAAK,GAAG9nD,CAAAA;EACf;EACA,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACmE,EAAE;EACrB;EAEA;;;;;QAMAgxC,EAAAA,CAAGn1C,CAAC,EAAE;UACJ,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,OAAOR,CAAM,KAAA,UAAA,EAAY,IAAI,CAACk5C,GAAG,GAAGl5C,CAAAA;EACnC,iBAAA;kBACH,IAAI,CAACk5C,GAAG,GAAGvyC,QAAS3G,CAAAA,CAAAA,CAAAA;kBACpB,IAAI,CAAC+nD,MAAM,GAAG/nD,CAAAA;EAChB;EACA,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACk5C,GAAG;EACtB;EAEA;;;;;OAMA8O,OAAAA,CAAQhoD,CAAC,EAAE;EACT,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2/C,QAAQ,GAAG7/C,UAAAA,CAAO,IAAI,CAAC6/C,QAAQ,EAAEngD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmgD,QAAQ;EAC5F;EAEA;;;;;OAMA8H,OAAAA,CAAQjoD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACm+C,QAAQ,GAAG3+C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC2+C,QAAQ;EACrE;EAEA;;;;;OAMAuJ,QAAAA,CAASloD,CAAC,EAAE;EACV,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACmhD,SAAS,GAAGrhD,UAAAA,CAAO,IAAI,CAACqhD,SAAS,EAAE3hD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC2hD,SAAS;EAC/F;EAEA;;;;;OAMAzD,OAAAA,CAAQl+C,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACw/C,QAAQ,GAAGhgD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACggD,QAAQ;EACrE;EAEA;;;;;QAMA7B,QAAAA,CAASn+C,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2nD,SAAS,GAAGnoD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmoD,SAAS;EACvE;EAEA;;;;;OAMAC,KAAAA,CAAMpoD,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC87C,MAAM,GAAGt8C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACs8C,MAAM;EACjE;EAEA;;;;;QAMA+L,MAAAA,CAAOroD,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+7C,OAAO,GAAGv8C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACu8C,OAAO;EACnE;EAEA;;;;;OAMA71C,CAAAA,CAAE1G,CAAC,EAAE;UACH,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,OAAOR,CAAM,KAAA,UAAA,EAAY,IAAI,CAACqE,EAAE,GAAGrE,CAAAA;EAClC,iBAAA;kBACH,IAAI,CAACqE,EAAE,GAAGsC,QAAS3G,CAAAA,CAAAA,CAAAA;kBACnB,IAAI,CAACsoD,KAAK,GAAGtoD,CAAAA;EACf;EACA,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACqE,EAAE;EACrB;EAEA;;;;;QAMA+wC,EAAAA,CAAGp1C,CAAC,EAAE;UACJ,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,OAAOR,CAAM,KAAA,UAAA,EAAY,IAAI,CAACu5C,GAAG,GAAGv5C,CAAAA;EACnC,iBAAA;kBACH,IAAI,CAACu5C,GAAG,GAAG5yC,QAAS3G,CAAAA,CAAAA,CAAAA;kBACpB,IAAI,CAACuoD,MAAM,GAAGvoD,CAAAA;EAChB;EACA,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACu5C,GAAG;EACtB;EAEA;;;;;;;OAQAiP,OAAAA,CAAQxoD,CAAC,EAAE;UACT,IAAIO,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAIR,CAAAA,CAAE8Z,MAAM,EAAE9Z,CAAE8Z,CAAAA,MAAM,GAAG9Z,CAAAA,CAAE8Z,MAAM,CAACjL,KAAK,EAAA,CAAGkD,OAAO,EAAA;EACjD,YAAA,IAAI,CAACytC,QAAQ,GAAGl/C,WAAO,IAAI,CAACk/C,QAAQ,EAAEx/C,CAAAA,CAAAA;EACtC,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACw/C,QAAQ;EACtB;EAEA;;;;;OAMAiJ,OAAAA,CAAQzoD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACq+C,QAAQ,GAAG7+C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC6+C,QAAQ;EACrE;EAEA;;;;;OAMA6J,QAAAA,CAAS1oD,CAAC,EAAE;UACV,IAAIO,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAIR,CAAAA,CAAE8Z,MAAM,EAAE9Z,CAAE8Z,CAAAA,MAAM,GAAG9Z,CAAAA,CAAE8Z,MAAM,CAACjL,KAAK,EAAA,CAAGkD,OAAO,EAAA;EACjD,YAAA,IAAI,CAAC6tC,SAAS,GAAGt/C,WAAO,IAAI,CAACs/C,SAAS,EAAE5/C,CAAAA,CAAAA;EACxC,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAAC4/C,SAAS;EACvB;EAEA;;;;;OAMAxB,OAAAA,CAAQp+C,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACu+C,QAAQ,GAAG/+C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC++C,QAAQ;EACrE;EAEA;;;;;QAMAV,QAAAA,CAASr+C,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACmoD,SAAS,GAAG3oD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC2oD,SAAS;EACvE;EAEA;;;;;OAMAC,KAAAA,CAAM5oD,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACg8C,MAAM,GAAGx8C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACw8C,MAAM;EACjE;EAEA;;;;;QAMAqM,MAAAA,CAAO7oD,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACi8C,OAAO,GAAGz8C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACy8C,OAAO;EACnE;EAxyDA;;;;EAIA,KACAp7C,WAAc,EAAA;UAEZ,KAAK,EAAA;UACL,IAAI,CAAC84C,YAAY,GAAG,KAAA;UACpB,IAAI,CAACsK,YAAY,GAAG,EAAE;UACtB,IAAI,CAACV,iBAAiB,GAAG;cACvBjiD,QAAU,EAAA,CAAA;cACV8H,IAAM,EAAA;EACR,SAAA;UACA,IAAI,CAAC07C,WAAW,GAAG,CAAA;EACnB,QAAA,IAAI,CAACtH,OAAO,GAAG19C,UAAO,CAAA,IAAIg3C,cAAgB,EAAA;cAAClkC,GAAK,EAAA,KAAA;cAAOW,IAAM,EAAA;EAAK,SAAA,CAAA;UAClE,IAAI,CAAC2xC,iBAAiB,GAAG;EACvB97C,YAAAA,IAAAA,EAAM,CAAC1L,CAAGgE,EAAAA,CAAAA,GAAAA;kBACR,MAAM6O,CAAAA,GAAI,OAAO,IAAI,CAAC3P,YAAY,CAAC2S,IAAI,CAACtK,MAAM,KAAK,UAAA,GAC/C,IAAI,CAACrI,YAAY,CAAC2S,IAAI,CAACtK,MAAM,CAACvL,CAAGgE,EAAAA,CAAAA,CAAAA,GACjC,IAAI,CAACd,YAAY,CAAC2S,IAAI,CAACtK,MAAM;kBACjC,OAAOsH,CAAAA;EACT,aAAA;EACArB,YAAAA,WAAAA,EAAazM,QAAS,CAAA,GAAA;EACxB,SAAA;UACA,IAAI,CAACy7C,eAAe,GAAG,GAAA;UACvB,IAAI,CAACyG,aAAa,GAAG,CAAA;UACrB,IAAI,CAACjB,qBAAqB,GAAG;cAC3B7zC,eAAiB,EAAA;EACnB,SAAA;UACA,IAAI,CAACqoC,cAAc,GAAGz1C,QAAS,CAAA,MAAA,CAAA;UAC/B,IAAI,CAACojD,iBAAiB,GAAG;cACvBz8C,IAAM,EAAA,CAAC1L,GAAGgE,CAAM6yC,GAAAA,iBAAAA,CAAY,IAAI,CAAC/wC,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA;EACxCwJ,YAAAA,CAAAA,EAAGzI,QAAS,CAAA,CAAA;EACd,SAAA;UACA,IAAI,CAACmjD,YAAY,GAAG,KAAA;UACpB,IAAI,CAAC9B,oBAAoB,GAAG;EAACwE,YAAAA,IAAAA,EAAM,EAAE;EAAEC,YAAAA,KAAAA,EAAO;EAAE,SAAA;UAChD,IAAI,CAACvC,eAAe,GAAG,EAAE;UACzB,IAAI,CAACpoC,MAAM,GAAGnb,QAAS,CAAA,QAAA,CAAA;EACvB,QAAA,IAAI,CAAC7B,YAAY,GAAGd,WAAO,IAAI,CAACc,YAAY,EAAE;cAC5CoQ,IAAM,EAAA;EACJzB,gBAAAA,KAAAA,EAAO,CAAC7R,CAAAA,EAAGgE,CAAM,GAAA,IAAI,CAAC2zC,QAAQ,GAAG,IAAI,CAAC7S,UAAU,CAAC9kC,CAAAA,EAAGgE,CAAK,CAAA,GAAA,KAAA;kBACzD8N,WAAa,EAAA,CAAC9R,GAAGgE,CAAGuJ,EAAAA,GAAAA,GAAAA;EAClB,oBAAA,IAAIC,CAAIuH,GAAAA,gBAAAA,CAAYxH,GAAIwG,CAAAA,MAAM,EAAE;0BAAC1F,KAAOwN,EAAAA,aAAAA,CAAM,GAAC,EAAI,EAAI,EAAA,CAAA;EAAE,qBAAA,CAAA;EACzD,oBAAA,IAAI,CAACrO,CAAAA,IAAKA,CAAE7F,CAAAA,MAAM,GAAG,EAAM6F,IAAAA,CAAAA,CAAE9F,KAAK,GAAG,EAAI8F,EAAAA,CAAAA,GAAIuH,gBAAYxH,CAAAA,GAAAA,CAAIwG,MAAM,EAAE;0BAAC1F,KAAOwN,EAAAA,aAAAA,CAAM,GAAC,EAAI,EAAI,EAAA,CAAA;EAAE,qBAAA,CAAA;sBAC9F,IAAI,CAACrO,GAAG,OAAO,IAAA;sBACf,MAAMjF,CAAAA,GAAIgB,YAAIgE,GAAIwG,CAAAA,MAAM,EAAE/T,CAAAA,CAAAA,GAAKA,CAAC,CAAC,CAAE,CAAA,CAAA;EACnC,oBAAA,MAAMwI,IAAIsQ,WAAIvL,CAAAA,GAAAA,CAAIwG,MAAM,CAACvS,MAAM,CAACxB,CAAAA,CAAAA,GAAKA,CAAC,CAAC,EAAE,KAAKuI,CAAAA,CAAAA,EAAIvI,CAAAA,CAAKA,GAAAA,CAAC,CAAC,CAAE,CAAA,CAAA;sBAC3D,OAAO;EACLqO,wBAAAA,KAAAA,EAAOb,EAAEa,KAAK;EACd3G,wBAAAA,KAAAA,EAAO8F,EAAE9F,KAAK;EACdC,wBAAAA,MAAAA,EAAQ6F,EAAE7F,MAAM;EAChBY,wBAAAA,CAAAA,EAAGiF,EAAEwH,EAAE,GAAGxH,CAAE9F,CAAAA,KAAK,GAAG,CAAIa,GAAAA,CAAAA;EACxBC,wBAAAA,CAAAA,EAAGgF,EAAEyH,EAAE,GAAGzH,CAAE7F,CAAAA,MAAM,GAAG,CAAIa,GAAAA;EAC3B,qBAAA;EACF,iBAAA;kBACA4F,WAAa,EAAA;sBACXmqB,OAAS,EAAA,CAAA;sBACT7O,UAAY,EAAA,IAAA;sBACZtW,OAAS,EAAA;EACX;EACF,aAAA;EACA/B,YAAAA,SAAAA,EAAW,CAACrR,CAAGgE,EAAAA,CAAAA,GAAAA;EACb,gBAAA,IAAI8mD,YAAe,GAAA,EAAA;EACnB,gBAAA,IAAI9qD,CAAEgJ,CAAAA,MAAM,EAAE8hD,YAAAA,GAAe,GAAG,IAAI,CAAChmB,UAAU,CAAC9kC,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAG,CAAA,CAAA;EACzD,qBAAA;EACH8mD,oBAAAA,YAAAA,GAAe,GAAG,IAAI,CAAChmB,UAAU,CAAC9kC,GAAGgE,CAAI,CAAA,CAAA,CAAA;EACzC,oBAAA,IAAI,IAAI,CAACiC,EAAE,CAACjG,CAAAA,EAAGgE,OAAOjE,SAAW+qD,EAAAA,YAAAA,IAAgB,CAAC,KAAK,EAAE,IAAI,CAAC7kD,EAAE,CAACjG,GAAGgE,CAAI,CAAA,CAAA,CAAA;EACxE,oBAAA,IAAI,IAAI,CAACmC,EAAE,CAACnG,CAAAA,EAAGgE,OAAOjE,SAAW+qD,EAAAA,YAAAA,IAAgB,CAAC,KAAK,EAAE,IAAI,CAAC3kD,EAAE,CAACnG,GAAGgE,CAAI,CAAA,CAAA,CAAA;EACxE,oBAAA,IAAI,IAAI,CAACg3C,GAAG,CAACh7C,CAAAA,EAAGgE,OAAOjE,SAAW+qD,EAAAA,YAAAA,IAAgB,CAAC,MAAM,EAAE,IAAI,CAAC9P,GAAG,CAACh7C,GAAGgE,CAAI,CAAA,CAAA,CAAA;EAC3E,oBAAA,IAAI,IAAI,CAACq3C,GAAG,CAACr7C,CAAAA,EAAGgE,OAAOjE,SAAW+qD,EAAAA,YAAAA,IAAgB,CAAC,MAAM,EAAE,IAAI,CAACzP,GAAG,CAACr7C,GAAGgE,CAAI,CAAA,CAAA,CAAA;EAC7E;kBACA,OAAO,CAAA,EAAG8mD,YAAa,CAAA,CAAC,CAAC;EAC3B,aAAA;cACA51C,GAAK,EAAA;EACHpD,gBAAAA,WAAAA,CAAAA,CAAY9R,CAAC,EAAEgE,CAAC,EAAE/D,CAAC,EAAA;EAEjB,oBAAA,MAAMmT,OAAU,GAAA,CAAA;EAEhB,oBAAA,MAAM1L,QAAQ,IAAI,CAACyB,SAAS,KAAK,MAAM,OAAU,GAAA,QAAA;EACjD,oBAAA,MAAMxB,SAAS,IAAI,CAACwB,SAAS,KAAK,MAAM,QAAW,GAAA,OAAA;sBAEnD,MAAMsxC,KAAAA,GAAQ,IAAI,CAACtxC,SAAS,CAACsH,MAAM,CAAC,CAAO,CAAA,KAAA,GAAA,GAAM,GAAM,GAAA,GAAA;EACvD,oBAAA,MAAMmqB,SAAS6f,KAAU,KAAA,GAAA;EACzB,oBAAA,MAAMC,WAAc,GAAA,IAAI,CAACvxC,SAAS,CAAC4T,OAAO,CAAC,IAAI,CAAC5T,SAAS,CAACsH,MAAM,CAAC,CAAIgqC,CAAAA,EAAAA,KAAAA,CAAAA;EACrE,oBAAA,MAAM5+B,KAAQ,GAAA,IAAI,CAAC,CAAC,CAAC,EAAE6+B,WAAY,CAAA,IAAI,CAAC,CAAC,CAACv8B,QAAQ,CAACtC,KAAK,EAAA;sBACxD,MAAMwJ,KAAAA,GAAQnlB,IAAKsV,CAAAA,GAAG,CAACqG,KAAK,CAAC,CAAE,CAAA,GAAGA,KAAK,CAAC,CAAE,CAAA,CAAA;sBAC1C,MAAMoR,QAAAA,GAAW,IAAI,CAAC,CAAC,CAAC,EAAEytB,WAAa,CAAA,CAAA,CAAC,CAAC16C,CAAAA,EAAGgE,CAAK,CAAA,GAAA,CAAA;EAEjD,oBAAA,IAAIw0C,QAAQn0C,IAAI,CAAC,IAAI,CAAA,CAAErE,GAAGgE,CAAI,CAAA,EAAA;0BAC5B,OAAO;EACL,4BAAA,CAAC0D,KAAM,GAAE2d,KAAQplB,GAAAA,CAAC,CAACyH,KAAM,CAAA;EACzB,4BAAA,CAACC,MAAO,GAAE1H,CAAC,CAAC0H,MAAO,CAAA;8BACnBY,CAAGqyB,EAAAA,MAAAA,GAAS,CAAC36B,CAAAA,CAAEyH,KAAK,GAAG,CAAIulB,GAAAA,QAAAA,GAAW,CAAC5H,KAAAA,GAAQplB,CAAEyH,CAAAA,KAAK,GAAG0L,OAAAA;EACzD5K,4BAAAA,CAAAA,EAAGoyB,MAAS3N,GAAAA,QAAAA,GAAWhtB,CAAE0H,CAAAA,MAAM,GAAGyL,OAAAA,GAAU,CAACiS,KAAAA,GAAQ,CAACplB,CAAAA,CAAE0H,MAAM,GAAG,CAAI,GAAA;EACvE,yBAAA;EACF;sBACA,OAAO;EACL,wBAAA,CAACD,KAAM,GAAEzH,CAAC,CAACyH,KAAM,CAAA;EACjB,wBAAA,CAACC,MAAO,GAAE1H,CAAC,CAAC0H,MAAO,CAAA;EACnBY,wBAAAA,CAAAA,EAAGqyB,SAAS,CAAC36B,CAAAA,CAAEyH,KAAK,GAAG,CAAA,GAAIulB,WAAW,IAAI,CAAC0qB,QAAQ,GAAGvkC,OAAAA,GAAUnT,EAAEyH,KAAK,GAAG0L,UAAUnT,CAAEyH,CAAAA,KAAK,GAAG,EAAC0L;EAC/F5K,wBAAAA,CAAAA,EAAGoyB,SAAS3N,QAAW,GAAA,IAAI,CAAC0qB,QAAQ,GAAGvkC,OAAUA,GAAAA,OAAAA,GAAU,CAACnT,CAAAA,CAAE0H,MAAM,GAAGyL,OAAAA,GAAU,CAACnT,CAAE0H,CAAAA,MAAM,GAAG,CAAIyL,GAAAA;EACnG,qBAAA;EAEF,iBAAA;kBACAhF,WAAa,EAAA;sBACXkqB,OAAS,EAAA,EAAA;sBACTC,OAAS,EAAA,CAAA;sBACT7O,UAAY,EAAA,IAAA;sBACZzW,SAAUjT,CAAAA,CAAAA,CAAC,EAAEgE,CAAC,EAAA;0BACZ,OAAOw0C,OAAAA,CAAQn0C,IAAI,CAAC,IAAI,EAAErE,CAAGgE,EAAAA,CAAAA,CAAAA,GACzB,IAAI,CAAC6hD,iBAAiB,CAACn6C,IAAI,KAAK,gBAC9Bme,mBAAcC,CAAAA,IAAI,GAClB5W,mBAAc,CAAA,IAAI,CAAC2yC,iBAAiB,CAACn6C,IAAI,CAC3CwH,GAAAA,mBAAAA,CAAc,OAAO,IAAI,CAAChQ,YAAY,CAACwI,IAAI,KAAK,UAAa,GAAA,IAAI,CAACxI,YAAY,CAACwI,IAAI,CAAC1L,CAAAA,EAAGgE,KAAK,IAAI,CAACd,YAAY,CAACwI,IAAI,CAAA;EACxH,qBAAA;sBACA8sB,UAAWx4B,CAAAA,CAAAA,CAAC,EAAEgE,CAAC,EAAA;0BACb,OAAOw0C,OAAAA,CAAQn0C,IAAI,CAAC,IAAI,EAAErE,CAAGgE,EAAAA,CAAAA,CAAAA,GACzB,IAAI,CAAC6hD,iBAAiB,CAACn6C,IAAI,KAAK,aAAA,GAC9Bme,mBAAcC,CAAAA,IAAI,GAClB5W,mBAAAA,CAAc,IAAI,CAAC2yC,iBAAiB,CAACn6C,IAAI,CAC3C,GAAA,aAAA;EACN,qBAAA;sBACA+sB,eAAgBz4B,CAAAA,CAAAA,CAAC,EAAEgE,CAAC,EAAA;EAClB,wBAAA,OAAOw0C,QAAQn0C,IAAI,CAAC,IAAI,CAAErE,CAAAA,CAAAA,EAAGgE,KAAK,GAAM,GAAA,CAAA;EAC1C,qBAAA;sBACAoP,OAAS,EAAA,CAAA;sBACTb,UAAWvS,CAAAA,CAAAA,CAAC,EAAEgE,CAAC,EAAA;0BACb,MAAMy2C,KAAAA,GAAQ,IAAI,CAACtxC,SAAS,CAACsH,MAAM,CAAC,CAAO,CAAA,KAAA,GAAA,GAAM,GAAM,GAAA,GAAA;EACvD,wBAAA,MAAMmqB,SAAS6f,KAAU,KAAA,GAAA;EACzB,wBAAA,MAAMC,WAAc,GAAA,IAAI,CAACvxC,SAAS,CAAC4T,OAAO,CAAC,IAAI,CAAC5T,SAAS,CAACsH,MAAM,CAAC,CAAIgqC,CAAAA,EAAAA,KAAAA,CAAAA;0BACrE,MAAMxtB,QAAAA,GAAW,IAAI,CAAC,CAAC,CAAC,EAAEytB,WAAa,CAAA,CAAA,CAAC,CAAC16C,CAAAA,EAAGgE,CAAK,CAAA,GAAA,CAAA;EACjD,wBAAA,MAAM+mD,MAASnwB,GAAAA,MAAAA,GACX,QACA4d,GAAAA,OAAAA,CAAQn0C,IAAI,CAAC,IAAI,CAAErE,CAAAA,CAAAA,EAAGgE,CACpBipB,CAAAA,GAAAA,QAAAA,GAAW,KAAQ,GAAA,OAAA,GACnBA,WAAW,OAAU,GAAA,KAAA;EAC3B,wBAAA,OAAOtD,YAAQohC,MAAW,KAAA,OAAA,GAAU,QAAQA,MAAW,KAAA,KAAA,GAAQ,UAAUA,MAASA,GAAAA,MAAAA;EACpF,qBAAA;sBACAp4C,aAAc3S,CAAAA,CAAAA,CAAC,EAAEgE,CAAC,EAAA;0BAChB,MAAMy2C,KAAAA,GAAQ,IAAI,CAACtxC,SAAS,CAACsH,MAAM,CAAC,CAAO,CAAA,KAAA,GAAA,GAAM,GAAM,GAAA,GAAA;EACvD,wBAAA,MAAMmqB,SAAS6f,KAAU,KAAA,GAAA;EACzB,wBAAA,MAAMC,WAAc,GAAA,IAAI,CAACvxC,SAAS,CAAC4T,OAAO,CAAC,IAAI,CAAC5T,SAAS,CAACsH,MAAM,CAAC,CAAIgqC,CAAAA,EAAAA,KAAAA,CAAAA;0BACrE,MAAMxtB,QAAAA,GAAW,IAAI,CAAC,CAAC,CAAC,EAAEytB,WAAa,CAAA,CAAA,CAAC,CAAC16C,CAAAA,EAAGgE,CAAK,CAAA,GAAA,CAAA;EACjD,wBAAA,OAAO42B,MACH4d,GAAAA,OAAAA,CAAQn0C,IAAI,CAAC,IAAI,CAAA,CAAErE,CAAGgE,EAAAA,CAAAA,CAAAA,GACpBipB,QAAW,GAAA,KAAA,GAAQ,QACnBA,GAAAA,QAAAA,GAAW,WAAW,KACxB,GAAA,QAAA;EACN;EACF;EACF,aAAA;cACAvX,MAAQ,EAAA;kBACNlI,CAAGksC,EAAAA,WAAAA,CAAYr1C,IAAI,CAAC,IAAI;EAC1B,aAAA;cACAwR,IAAM,EAAA;EACJvF,gBAAAA,KAAAA,EAAO,IAAM,IAAI,CAACnH,SAAS,GAAG,CAAC,QAAQ,EAAE,IAAI,CAACA,SAAS,CAACsH,MAAM,CAAC,CAAGC,CAAAA,CAAAA,WAAW,IAAI,GAAG,QAAA;EACpFhF,gBAAAA,IAAAA,EAAM3G,QAAS,CAAA,MAAA,CAAA;kBACfqJ,WAAa,EAAA;EACX6E,oBAAAA,SAAAA,EAAW,CAACjT,CAAGgE,EAAAA,CAAAA,GAAAA;0BACb,MAAM6O,CAAAA,GAAI,OAAO,IAAI,CAAC3P,YAAY,CAAC2S,IAAI,CAACtK,MAAM,KAAK,UAAA,GAC/C,IAAI,CAACrI,YAAY,CAAC2S,IAAI,CAACtK,MAAM,CAACvL,CAAGgE,EAAAA,CAAAA,CAAAA,GACjC,IAAI,CAACd,YAAY,CAAC2S,IAAI,CAACtK,MAAM;EACjC,wBAAA,OAAOy/C,kBAAan4C,CAAAA,CAAAA,CAAAA;EACtB,qBAAA;sBACA6W,UAAY,EAAA,KAAA;sBACZtW,OAAS,EAAA,CAAA;sBACTb,UAAY,EAAA,OAAA;sBACZI,aAAe,EAAA;EACjB,iBAAA;EACAL,gBAAAA,WAAAA,EAAavN,QAAS,CAAA,CAAA;EACxB,aAAA;cACA6Q,IAAM,EAAA;EACJjO,gBAAAA,MAAAA,EAAQ3H,CAAAA,CAAK05C,GAAAA,WAAAA,CAAYr1C,IAAI,CAAC,IAAI,EAAErE,CAAK,CAAA,GAAA,CAAA;EACzC0H,gBAAAA,KAAAA,EAAO1H,CAAAA,CAAK05C,GAAAA,WAAAA,CAAYr1C,IAAI,CAAC,IAAI,EAAErE,CAAK,CAAA,GAAA;EAC1C;EACF,SAAA,CAAA;UACA,IAAI,CAACirD,WAAW,GAAG;EAAC,YAAA,MAAA;EAAQ,YAAA,MAAA;EAAQ,YAAA,KAAA;EAAO,YAAA,KAAA;EAAO,YAAA,MAAA;EAAQ,YAAA,MAAA;EAAQ,YAAA;EAAS,SAAA;EAC3E,QAAA,IAAI,CAACrL,UAAU,GAAG,CAAC7wC,CAAGZ,EAAAA,CAAAA,GAAM,IAAI,CAAC88C,WAAW,CAACvpD,OAAO,CAACqN,CAAK,CAAA,GAAA,IAAI,CAACk8C,WAAW,CAACvpD,OAAO,CAACyM,CAAAA,CAAAA;UACnF,IAAI,CAACiuC,QAAQ,GAAG,EAAA;UAChB,IAAI,CAACC,QAAQ,GAAG,CAAA;UAChB,IAAI,CAACF,UAAU,GAAG,MAAA;UAClB,IAAI,CAAC+B,YAAY,GAAG/D,oBAAAA;UACpB,IAAI,CAAC6D,WAAW,GAAG9D,oBAAAA;EACnB,QAAA,IAAI,CAAC/S,eAAe,GAAG/kC,WAAO,IAAI,CAAC+kC,eAAe,EAAE;cAClDxK,QAAU,EAAA,IAAA;EACVE,YAAAA,QAAAA,EAAU,IAAM,IAAI,CAACqe,MAAM,IAAI,IAAI,CAACK,MAAM,IAAI,IAAI,CAACR,OAAO,IAAI,IAAI,CAACK,OAAO,GAAG,CAAI,GAAA;EACnF,SAAA,CAAA;UAEA,IAAI,CAACn1C,EAAE,GAAGwC,QAAS,CAAA,GAAA,CAAA;EACnB,QAAA,IAAI,CAACq8C,MAAM,GAAG,IAAI/6B,UAAAA,EAAAA,CAAa1B,KAAK,CAAC,KAAA,CAAA;UACrC,IAAI,CAAC25B,MAAM,GAAG,IAAIj4B,aAAa1B,KAAK,CAAC,KAAOI,CAAAA,CAAAA,QAAQ,CAAC,CAAA,CAAA;UACrD,IAAI,CAACw5B,QAAQ,GAAG;cACd15B,UAAY,EAAA;EACVhd,gBAAAA,MAAAA,EAAQvL,CAAAA,CAAAA,GAAAA;EACN,oBAAA,IAAI,IAAI,CAACmJ,SAAS,IAAI,IAAI,CAACA,SAAS,CAACsH,MAAM,CAAC,CAAO,CAAA,KAAA,GAAA,EAAK,OAAO,aAAA;EAC/D,oBAAA,MAAMoL,KAAQ,GAAA,IAAI,CAACipC,MAAM,CAACjpC,KAAK,EAAA;;EAE/B,oBAAA,OAAOA,KAAK,CAAC,CAAA,CAAE,KAAK,IAAI,CAACipC,MAAM,CAACtmC,YAAY,CAACna,IAAI,CAAC,IAAI,CAACygD,MAAM,EAAE9kD,CAAEmI,CAAAA,EAAE,IAAI,aAAgB,GAAA,MAAA;EACzF;EACF;EACF,SAAA;UACA,IAAI,CAACs4C,QAAQ,GAAG,GAAA;UAEhB,IAAI,CAACzF,GAAG,GAAGvyC,QAAS,CAAA,IAAA,CAAA;EACpB,QAAA,IAAI,CAACs8C,OAAO,GAAG,IAAI76B,OAAAA,EAAAA,CAAU7B,KAAK,CAAC,OAAA,CAAA;UACnC,IAAI,CAACm7B,OAAO,GAAG,IAAIt5B,UAAU7B,KAAK,CAAC,OAASI,CAAAA,CAAAA,QAAQ,CAAC,CAAA,CAAA;UACrD,IAAI,CAACg7B,SAAS,GAAG;cACfrwC,OAAS,EAAA;EACX,SAAA;UAEA,IAAI,CAACjN,EAAE,GAAGsC,QAAS,CAAA,GAAA,CAAA;EACnB,QAAA,IAAI,CAACw8C,MAAM,GAAG,IAAIj7B,QAAAA,EAAAA,CAAW3B,KAAK,CAAC,OAAA,CAAA;UACnC,IAAI,CAACg5B,MAAM,GAAG,IAAIr3B,WAAW3B,KAAK,CAAC,OAASI,CAAAA,CAAAA,QAAQ,CAAC,CAAA,CAAA;UACrD,IAAI,CAAC64B,QAAQ,GAAG;cACd/4B,UAAY,EAAA;EACVhd,gBAAAA,MAAAA,EAAQvL,CAAAA,CAAAA,GAAAA;EACN,oBAAA,IAAI,IAAI,CAACmJ,SAAS,IAAI,IAAI,CAACA,SAAS,CAACsH,MAAM,CAAC,CAAO,CAAA,KAAA,GAAA,EAAK,OAAO,aAAA;EAC/D,oBAAA,MAAMoL,KAAQ,GAAA,IAAI,CAACopC,MAAM,CAACppC,KAAK,EAAA;;sBAE/B,OAAOA,KAAK,CAACA,KAAMvZ,CAAAA,MAAM,GAAG,CAAE,CAAA,KAAK,IAAI,CAAC2iD,MAAM,CAACzmC,YAAY,CAACna,IAAI,CAAC,IAAI,CAAC4gD,MAAM,CAAEjlD,CAAAA,CAAAA,CAAEmI,EAAE,CAAA,GAAI,aAAgB,GAAA,MAAA;EACxG;EACF;EACF,SAAA;UACA,IAAI,CAACw4C,QAAQ,GAAG,GAAA;UAEhB,IAAI,CAACtF,GAAG,GAAG5yC,QAAS,CAAA,IAAA,CAAA;EACpB,QAAA,IAAI,CAACy8C,OAAO,GAAG,IAAIj7B,SAAAA,EAAAA,CAAY5B,KAAK,CAAC,KAAA,CAAA;UACrC,IAAI,CAACo5B,OAAO,GAAG,IAAIz3B,WAAW3B,KAAK,CAAC,KAAOI,CAAAA,CAAAA,QAAQ,CAAC,CAAA,CAAA;UACpD,IAAI,CAACi5B,SAAS,GAAG,EAAC;EAEpB;EAmkDF;;ECn6De,MAAMwJ,QAAiBtQ,SAAAA,IAAAA,CAAAA;EAEpC;;;;EAIA,KACAz3C,WAAc,EAAA;UAEZ,KAAK,EAAA;UACL,IAAI,CAACw8C,SAAS,GAAG,CAAA;UACjB,IAAI,CAACx2C,SAAS,GAAG,GAAA;UACjB,IAAI,CAAC+W,MAAM,GAAGnb,QAAS,CAAA,MAAA,CAAA;UACvB,IAAI,CAACwD,CAAC,CAAC,GAAA,CAAA;EAET;EAEF;;ECjBe,MAAM4iD,QAAiBvQ,SAAAA,IAAAA,CAAAA;EAEpC;;;;EAIA,KACAz3C,WAAc,EAAA;UAEZ,KAAK,EAAA;UACL,IAAI,CAACw8C,SAAS,GAAG,CAAA;UACjB,IAAI,CAACx2C,SAAS,GAAG,GAAA;UACjB,MAAMiiD,aAAAA,GAAgB,IAAI,CAACtlB,OAAO;EAClC,QAAA,IAAI,CAACA,OAAO,GAAG,CAACjkC,MAAQ6C,EAAAA,GAAAA,GAAAA;EACtB,YAAA,MAAM2mD,YAAY3mD,GAAIC,CAAAA,GAAG,CAAC,IAAI,CAAC2lC,QAAQ,CAAC,IAAI,CAACvF,YAAY,CAAC,CAAC1gC,IAAI,CAAC,IAAI,CAAGyK,CAAAA,CAAAA,IAAI,GAAG6H,IAAI,EAAA;cAClF,MAAM20C,MAAAA,GAAS,IAAI,CAACle,aAAa,CAACzoC,GAAG,CAAC,IAAI,CAAC2lC,QAAQ,CAAC,IAAI,CAACvF,YAAY,CAAC,CAAC1gC,IAAI,CAAC,IAAI,CAAA,CAAA,CAAGyK,IAAI,EAAA,CAAG6H,IAAI,EAAA;cAC9F,IAAI00C,SAAAA,KAAcC,QAAQ,OAAO,KAAA;EACjC,YAAA,OAAOF,aAAc/mD,CAAAA,IAAI,CAAC,IAAI,EAAExC,MAAQ6C,EAAAA,GAAAA,CAAAA;EAC1C,SAAA;UACA,IAAI,CAACwb,MAAM,GAAGnb,QAAS,CAAA,KAAA,CAAA;UACvB,IAAI,CAACwD,CAAC,CAAC,GAAA,CAAA;EAET;EAEF;;ECxBe,MAAMgjD,UAAmB3Q,SAAAA,IAAAA,CAAAA;EAEtC;;;;EAIA,KACAz3C,WAAc,EAAA;UAEZ,KAAK,EAAA;UACL,IAAI,CAACgG,SAAS,GAAG,GAAA;UACjB,IAAI,CAAC+W,MAAM,GAAGnb,QAAS,CAAA,KAAA,CAAA;UACvB,IAAI,CAACwD,CAAC,CAAC,GAAA,CAAA;EAEP,QAAA,IAAI,CAAC0jC,cAAc,GAAG7pC,WAAO,IAAI,CAAC6pC,cAAc,EAAE;EAChDziB,YAAAA,KAAAA,EAAO,CAACxpB,CAAGgE,EAAAA,CAAAA,GAAAA;kBACT,IAAI,CAAChE,GAAG,OAAO,EAAA;EACf,gBAAA,MAAOA,CAAEiE,CAAAA,UAAU,IAAIjE,CAAAA,CAAEmE,IAAI,CAAE;EAC7BnE,oBAAAA,CAAAA,GAAIA,EAAEmE,IAAI;EACVH,oBAAAA,CAAAA,GAAIhE,EAAEgE,CAAC;EACT;kBACA,IAAI,IAAI,CAAC+J,MAAM,EAAE,OAAO,IAAI,CAACA,MAAM,CAAC/N,CAAGgE,EAAAA,CAAAA,CAAAA;EACvC,gBAAA,MAAMkK,CAAI,GAAA,IAAI,CAACo3B,IAAI,CAACtlC,CAAAA,EAAGgE,CAAG2M,CAAAA,CAAAA,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC40B,UAAU,CAAA;EAClD,gBAAA,OAAOr3B,CAAC,CAACA,CAAE5L,CAAAA,MAAM,GAAG,CAAE,CAAA;EACxB;EACF,SAAA,CAAA;EAEF;EAEF;;ECRe,MAAMkpD,SAAkB5Q,SAAAA,IAAAA,CAAAA;EAErC;;;;EAIA,KACAz3C,WAAc,EAAA;UAEZ,KAAK,EAAA;UACL,IAAI,CAACgG,SAAS,GAAG,GAAA;UACjB,IAAI,CAAC+W,MAAM,GAAGnb,QAAS,CAAA,MAAA,CAAA;UACvB,IAAI,CAACwD,CAAC,CAAC,GAAA,CAAA;UACP,IAAI,CAAC2uC,EAAE,CAACl3C,CAAAA,IAAK,IAAI,CAACmG,EAAE,CAACnG,CAAAA,CAAAA,CAAAA;UAErB,IAAI,CAACsqD,OAAO,CAAC;EACX7pC,YAAAA,UAAAA,EAAY4J,CAAAA,GAAAA,GAAAA;kBACV,MAAMlmB,IAAAA,GAAO,IAAI,CAAC43C,cAAc;kBAChC,MAAM0P,IAAAA,GAAOtnD,IAAI,CAAC,CAAA,CAAE,CAACoE,CAAC,YAAYyuC,OAAO7yC,IAAI,CAAC,EAAE,CAACoE,CAAC,CAACo+B,OAAO,EAAA,GAAKxiC,IAAI,CAAC,CAAA,CAAE,CAACoE,CAAC;kBACxE,MAAMmjD,SAAAA,GAAYvnD,KAAK3C,MAAM,CAACxB,CAAAA,CAAK,GAACA,CAAAA,CAAEuI,CAAAA,CAAC,YAAYyuC,IAAOh3C,GAAAA,CAAAA,CAAEuI,CAAC,CAACo+B,OAAO,KAAK3mC,CAAEuI,CAAAA,CAAC,MAAMkjD,IAAAA,CAAAA;kBACnF,MAAMzrD,CAAAA,GAAI0rD,UAAUjlC,IAAI,CAACzmB,CAAAA,CAAKA,GAAAA,CAAAA,CAAEwI,CAAC,KAAK6hB,GAAAA,CAAAA;kBACtC,OAAOrqB,CAAAA,GAAI,IAAI,CAAC8kC,UAAU,CAAC9kC,CAAGA,EAAAA,CAAAA,CAAEgE,CAAC,CAAI,GAAA,EAAA;EACvC;EACF,SAAA,CAAA;UACA,IAAI,CAACwmD,QAAQ,CAAC;EACZ/pC,YAAAA,UAAAA,EAAY4J,CAAAA,GAAAA,GAAAA;kBACV,MAAMlmB,IAAAA,GAAO,IAAI,CAAC43C,cAAc;EAChC,gBAAA,MAAM4P,IAAOxnD,GAAAA,IAAI,CAACA,IAAAA,CAAK7B,MAAM,GAAG,CAAE,CAAA,CAACiG,CAAC,YAAYyuC,IAAO7yC,GAAAA,IAAI,CAACA,IAAAA,CAAK7B,MAAM,GAAG,CAAE,CAAA,CAACiG,CAAC,CAACo+B,OAAO,EAAA,GAAKxiC,IAAI,CAACA,IAAK7B,CAAAA,MAAM,GAAG,CAAA,CAAE,CAACiG,CAAC;kBAClH,MAAMqjD,OAAAA,GAAUznD,KAAK3C,MAAM,CAACxB,CAAAA,CAAK,GAACA,CAAAA,CAAEuI,CAAAA,CAAC,YAAYyuC,IAAOh3C,GAAAA,CAAAA,CAAEuI,CAAC,CAACo+B,OAAO,KAAK3mC,CAAEuI,CAAAA,CAAC,MAAMojD,IAAAA,CAAAA;kBACjF,MAAM3rD,CAAAA,GAAI4rD,QAAQnlC,IAAI,CAACzmB,CAAAA,CAAKA,GAAAA,CAAAA,CAAEwI,CAAC,KAAK6hB,GAAAA,CAAAA;kBACpC,OAAOrqB,CAAAA,GAAI,IAAI,CAAC8kC,UAAU,CAAC9kC,CAAGA,EAAAA,CAAAA,CAAEgE,CAAC,CAAI,GAAA,EAAA;EACvC;EACF,SAAA,CAAA;EACA,QAAA,IAAI,CAAC0mD,KAAK,CAAC,CAAC37C,GAAGZ,CAAM,GAAA,IAAI,CAAChI,EAAE,CAACgI,CAAAA,CAAAA,GAAK,IAAI,CAAChI,EAAE,CAAC4I,CAAAA,CAAAA,CAAAA;EAC1C,QAAA,IAAI,CAAC47C,MAAM,CAAC,CAAC57C,GAAGZ,CAAM,GAAA,IAAI,CAAChI,EAAE,CAACgI,CAAAA,CAAAA,GAAK,IAAI,CAAChI,EAAE,CAAC4I,CAAAA,CAAAA,CAAAA;EAC7C;EAEF;;EC3De,MAAM88C,GAAYpf,SAAAA,GAAAA,CAAAA;EAkC/B;;;OAIAyB,KAAAA,CAAMhpC,QAAQ,EAAE;EAEd,QAAA,KAAK,CAACgpC,KAAMhpC,CAAAA,QAAAA,CAAAA;EAEZ,QAAA,MAAMyC,MAAS,GAAA,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,EAC9D7Y,KAAAA,GAAQ,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;EAElE,QAAA,MAAMwrC,cAAcviD,WAAI,CAAA;EAAC7B,YAAAA,KAAAA;EAAOC,YAAAA;WAAO,CAAI,GAAA,CAAA;EAE3C,QAAA,MAAMokD,OAAU,GAAA,IAAI,CAACC,QAAQ,GAAG,IAAI,CAACC,IAAI,CACtCC,QAAQ,CAAC,IAAI,CAACC,SAAS,IAAI,IAAI,CAACC,SAAS,GAAGN,WAC5Ch9C,CAAAA,CAAAA,IAAI,CAAC,IAAI,CAACD,KAAK,CAAA,CACf/J,KAAK,CAAC,IAAI,CAACkoB,MAAM,CAAE,CAAA,IAAI,CAACogB,aAAa,CAAA;UAExC2e,OAAQ9pD,CAAAA,OAAO,CAAC,CAACjC,CAAGgE,EAAAA,CAAAA,GAAAA;EAClBhE,YAAAA,CAAAA,CAAEiE,UAAU,GAAG,IAAA;EACfjE,YAAAA,CAAAA,CAAEgE,CAAC,GAAGA,CAAAA;EACR,SAAA,CAAA;UAEA,MAAMqoD,OAAAA,GAAUC,YACbC,WAAW,CAAC,IAAI,CAACC,YAAY,CAC7BV,CAAAA,WAAW,CAACA,WAAAA,CAAAA;UAEf,MAAMr6B,SAAAA,GAAY,CAAC,UAAU,EAAE/pB,QAAQ,CAAI,GAAA,IAAI,CAACqW,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE7Y,MAAS,GAAA,CAAA,GAAI,IAAI,CAACoW,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC;EACjG,QAAA,IAAI,CAACgM,OAAO,CAAC3e,IAAI,CAAC,IAAI8M,IACnBrW,EAAAA,CAAAA,IAAI,CAAC4nD,OAAAA,CAAAA,CACL/rD,CAAC,CAACqsD,OAAAA,CAAAA,CACFjnD,MAAM,CAACqE,SAAK,cAAgB,EAAA;cAC3B5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;cACpBY,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cACjBjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;WACjB/rB,CAAAA,CAAAA,IAAI,EACN7D,CAAAA,CAAAA,MAAM,CAAC;cACNsG,EAAInI,EAAAA,CAAAA,IAAK,IAAI,CAACslC,IAAI,CAACtlC,CAAAA,CAAAA,CAAG2W,IAAI,CAAC,GAAA,CAAA;cAC3BpO,CAAG,EAAA,CAAA;cACHC,CAAG,EAAA;EACL,SAAA,CAAA,CACCqJ,KAAK,CAAC,IAAI,CAACizB,UAAU,CAAA,CACrBjjC,MAAM,CAAC2B,UAAAA,CAAWa,IAAI,CAAC,IAAI,EAAE,IAAI,CAACnB,YAAY,EAAE,OAAA,EAAS,SACzD+B,MAAM,EAAA,CAAA;EAET,QAAA,OAAO,IAAI;EACb;EAEA;;;;OAKAsnD,WAAAA,CAAYzqD,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACkqD,YAAY,GAAG1qD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC0qD,YAAY;EAC7E;EAEA;;;;;;OAOAN,QAAAA,CAASpqD,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC6pD,SAAS,GAAGrqD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACqqD,SAAS;EACvE;EAEA;;;;;;;;OASAM,QAAAA,CAAS3qD,CAAC,EAAE;EACV,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC8pD,SAAS,GAAGtqD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACsqD,SAAS;EACvE;EAEA;;;;OAKAt9C,IAAAA,CAAKhN,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuM,KAAK,GAAG/M,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+M,KAAK;EAC/D;EAEA;;;;OAKA/J,KAAAA,CAAMhD,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0qB,MAAM,GAAG,OAAOlrB,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkrB,MAAM;EACzG;EAjIA;;;;EAIA,KACA7pB,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,MAAMioD,aAAAA,GAAgB,IAAI,CAACtlB,OAAO;EAClC,QAAA,IAAI,CAACA,OAAO,GAAG,CAACjkC,MAAQ6C,EAAAA,GAAAA,GAAAA;cACtB,IAAIA,GAAAA,CAAIpC,MAAM,KAAK,IAAI,CAAC8qC,aAAa,CAAC9qC,MAAM,EAAE,OAAO,KAAA;EACrD,YAAA,OAAO8oD,aAAc/mD,CAAAA,IAAI,CAAC,IAAI,EAAExC,MAAQ6C,EAAAA,GAAAA,CAAAA;EAC1C,SAAA;EACA,QAAA,IAAI,CAAC2gC,WAAW,GAAG,CAACt2B,GAAGZ,CAAM,GAAA,IAAI,CAAC6e,MAAM,CAAC7e,CAAAA,CAAAA,GAAK,IAAI,CAAC6e,MAAM,CAACje,CAAAA,CAAAA;EAE1D,QAAA,IAAI,CAAC7L,YAAY,GAAGd,WAAO,IAAI,CAACc,YAAY,EAAE;EAC5CmO,YAAAA,SAAAA,EAAW,CAACrR,CAAAA,EAAGgE,CAAO,GAAA,IAAI,CAACgoD,QAAQ,GAAG,CAAG,EAAA,EAAE,IAAI,CAACA,QAAQ,CAAChoD,CAAAA,CAAE,CAACkV,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC4rB,UAAU,CAAC9kC,CAAAA,EAAGgE,GAAG,EAAE,EAAE,IAAI,CAACgpB,MAAM,CAAChtB,CAAAA,EAAGgE,CAAG,CAAA,CAAA,CAAC,CAAC,GAAG,EAAA;cACvHwW,IAAM,EAAA;kBACJpM,WAAa,EAAA;sBACXsb,UAAY,EAAA;EACd;EACF;EACF,SAAA,CAAA;UACA,IAAI,CAAC8iC,YAAY,GAAG,CAAA;EACpB,QAAA,IAAI,CAACnnB,WAAW,GAAG,CAACt2B,GAAGZ,CAAM,GAAA,IAAI,CAAC6e,MAAM,CAAC7e,CAAAA,CAAAA,GAAK,IAAI,CAAC6e,MAAM,CAACje,CAAAA,CAAAA;UAC1D,IAAI,CAACq9C,SAAS,GAAG,CAAA;UACjB,IAAI,CAACH,IAAI,GAAGS,SAAAA,EAAAA;EACZ,QAAA,IAAI,CAAC79C,KAAK,GAAG,CAACE,GAAGZ,CAAM,GAAA,IAAI,CAAC6e,MAAM,CAAC7e,CAAAA,CAAAA,GAAK,IAAI,CAAC6e,MAAM,CAACje,CAAAA,CAAAA;UACpD,IAAI,CAACie,MAAM,GAAGvkB,QAAS,CAAA,OAAA,CAAA;EACzB;EAoGF;;ECzIe,MAAMkkD,KAAcd,SAAAA,GAAAA,CAAAA;EAEjC;;;;EAIA,KACA1oD,WAAc,EAAA;UAEZ,KAAK,EAAA;EAEL,QAAA,IAAI,CAACqpD,YAAY,GAAG,IAAMjjD,WAAI,CAAA;EAC5B,gBAAA,IAAI,CAACrD,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;EACpD,gBAAA,IAAI,CAACla,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC;eAChD,CAAI,GAAA,CAAA;UACL,IAAI,CAAC6rC,SAAS,GAAG,CAAA;EAEnB;EAEF;;AC3BA,qBAAe;EACb,IAAA;UACEQ,OAAS,EAAA;EAAC,YAAA,SAAA;EAAW,YAAA;EAAW,SAAA;UAChCr+C,IAAM,EAAA;EACR,KAAA;EACA,IAAA;UACEq+C,OAAS,EAAA;EAAC,YAAA;EAAkB,SAAA;UAC5Br+C,IAAM,EAAA;EACR,KAAA;EACA,IAAA;UACEq+C,OAAS,EAAA;EAAC,YAAA;EAAmB,SAAA;UAC7Br+C,IAAM,EAAA;EACR,KAAA;EACA,IAAA;UACEq+C,OAAS,EAAA;EAAC,YAAA;EAAe,SAAA;UACzBr+C,IAAM,EAAA;EACR,KAAA;EACA,IAAA;UACEq+C,OAAS,EAAA;EAAC,YAAA,cAAA;EAAgB,YAAA;EAAa,SAAA;UACvCr+C,IAAM,EAAA;EACR;GACD;;ECdD,MAAMs+C,QAAQzrD,MAAOgB,CAAAA,MAAM,CAAC,EAAC,EAAG0qD,sBAAWC,0BAAiBC,EAAAA,iCAAAA,CAAAA;EAgB5D;;;;MAKA,SAASC,gBAAgB3kD,GAAG,EAAA;EAC1B,IAAA,MAAMyG,CAAIm+C,GAAAA,YAAAA,CAAazmC,IAAI,CAACzmB,CAAAA,CAAKA,GAAAA,CAAAA,CAAE4sD,OAAO,CAACtvC,IAAI,CAACuF,CAAAA,CAAKva,GAAAA,GAAAA,CAAI3G,QAAQ,CAACkhB,CAAAA,CAAAA,CAAAA,CAAAA;MAClE,OAAO9T,CAAAA,GAAIA,CAAER,CAAAA,IAAI,GAAG,KAAA;EACtB;EAEA;;;;;;EAMA,GACA,SAAS4+C,YAAAA,CAAaC,IAAI,EAAEvtD,GAAG,EAAA;EAC7B,IAAA,MAAMqC,CAAIrC,GAAAA,GAAAA,IAAOutD,IAAKC,CAAAA,OAAO,CAACxtD,GAAI,CAAA,GAAGA,GAAMuB,GAAAA,MAAAA,CAAO2H,IAAI,CAACqkD,IAAAA,CAAKC,OAAO,CAAC,CAAC,CAAE,CAAA;EACvE,IAAA,OAAOjpD,uBAAQgpD,IAAMlrD,EAAAA,CAAAA,CAAAA;EACvB;EAOe,MAAMorD,MAAe7gB,SAAAA,GAAAA,CAAAA;EA4ElC;;;EAGA,KACApD,YAAa5X,CAAAA,SAAAA,GAAY6X,oBAAc,CAAA,IAAI,CAAC3B,UAAU,CAACjiC,IAAI,EAAG,CAAA,EAAE9B,QAAW,GAAA,CAAC,EAAE;EAE5E,QAAA,IAAI2pD,WAAW,EAAE;UACjB,IAAI,IAAI,CAACC,MAAM,EAAE;EAEfD,YAAAA,QAAAA,GAAW,IAAI,CAACE,QAAQ,CACrBv5C,MAAM,CAAC,IAAI,CAAC6zB,aAAa,CAACG,eAAe,EACzCn9B,CAAAA,CAAAA,KAAK,CAAC,IAAI,CAAC2iD,WAAW,CAAC3iD,KAAK,EAAM,IAAA,IAAI7K,IAAK+3B,CAAAA,EAAE,CAAD,GAAKxG,UAAUvvB,CAAC,CAAA,CAC5Da,SAAS,CAAC0uB,UAAUliB,KAAK,CAAC,IAAI,CAACm+C,WAAW,CAAC3qD,SAAS,EAAA,CAAA,CAAA,EAAA;cAGvD,IAAI,CAAC4qD,UAAU,CAACrnD,UAAU,EAAA,CAAG1C,QAAQ,CAACA,QAAAA,CAAAA,CAAUoC,IAAI,CAAC,WAAayrB,EAAAA,SAAAA,CAAAA;EAEpE;UAEA,MAAM9rB,MAAAA,GAAS,IAAI,CAACgoD,UAAU,CAAC/nD,SAAS,CAAC,0BAAA,CAAA,CACtCzB,IAAI,CAACopD,QAAU,EAAA,CAAC,CAAChlD,CAAGC,EAAAA,CAAAA,EAAGiL,CAAE,CAAA,GAAK,CAAGlL,EAAAA,CAAAA,CAAE,CAAC,EAAEC,CAAAA,CAAE,CAAC,EAAEiL,CAAG,CAAA,CAAA,CAAA;UAEjD9N,MAAOqC,CAAAA,IAAI,EAAG1B,CAAAA,UAAU,EAAG1C,CAAAA,QAAQ,CAACA,QAAAA,CAAAA,CACjCoC,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA,CAAGiC,MAAM,EAAA;EAE5B,QAAA,MAAM8C,KAAQwiD,GAAAA,QAAAA,CAASxiD,KAAK,GAAG0mB,UAAUvvB,CAAC;UAE1C,MAAM0rD,SAAAA,GAAYjoD,OAAOI,KAAK,EAAA,CAAGV,MAAM,CAAC,OAAA,CAAA,CACrCW,IAAI,CAAC,OAAS,EAAA,oBAAA,CAAA;UAEjB4nD,SACG5nD,CAAAA,IAAI,CAAC,SAAA,EAAW,CAChBM,CAAAA,CAAAA,UAAU,EAAG1C,CAAAA,QAAQ,CAACA,QAAAA,CAAAA,CACtBoC,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA;UAEnBL,MAAOc,CAAAA,KAAK,CAACmnD,SAAAA,CAAAA,CACV5nD,IAAI,CAAC,OAAS+E,EAAAA,KAAAA,CAAAA,CACd/E,IAAI,CAAC,QAAU+E,EAAAA,KAAAA,CAAAA,CACf/E,IAAI,CAAC,cAAc,CAAC,CAACuC,CAAGC,EAAAA,CAAAA,EAAGiL,CAAE,CAAA,GAAK,IAAI,CAACo6C,QAAQ,CAC7C9wC,OAAO,CAAC,KAAO,EAAA;EAAC,gBAAA,GAAA;EAAK,gBAAA,GAAA;EAAK,gBAAA;eAAI,CAAC7c,IAAAA,CAAKE,MAAM,EAAA,GAAK,CAAI,GAAA,CAAA,CAAE,CACrD2c,CAAAA,OAAO,CAAC,KAAA,EAAOtJ,CACfsJ,CAAAA,CAAAA,OAAO,CAAC,KAAA,EAAOxU,CACfwU,CAAAA,CAAAA,OAAO,CAAC,KAAA,EAAOvU,CACjBxC,CAAAA,CAAAA,CAAAA,IAAI,CAAC,GAAA,EAAK,CAAC,CAACuC,CAAE,CAAA,GAAKA,CAAIwC,GAAAA,KAAAA,GAAQwiD,QAASxqD,CAAAA,SAAS,CAAC,CAAE,CAAA,GAAGgI,KAAQ0mB,GAAAA,SAAAA,CAAUlpB,CAAC,GAAGkpB,SAAUvvB,CAAAA,CAAC,CACxF8D,CAAAA,IAAI,CAAC,GAAA,EAAK,CAAC,GAAGwC,CAAE,CAAA,GAAKA,CAAIuC,GAAAA,KAAAA,GAAQwiD,QAASxqD,CAAAA,SAAS,CAAC,CAAA,CAAE,GAAGgI,KAAAA,GAAQ0mB,SAAUjpB,CAAAA,CAAC,GAAGipB,SAAAA,CAAUvvB,CAAC,CAAA;EAE/F;EAEA;;;OAIAgsC,KAAAA,CAAMhpC,QAAQ,EAAE;EAEd,QAAA,KAAK,CAACgpC,KAAMhpC,CAAAA,QAAAA,CAAAA;EAEZ,QAAA,MAAMyC,MAAS,GAAA,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,EAC9D7Y,KAAAA,GAAQ,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;UAElE,IAAI,CAACqnB,UAAU,GAAG,IAAI,CAACxiC,OAAO,CAACS,SAAS,CAAC,mBAAqBzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;UACtE,IAAI,CAACwjC,UAAU,GAAG,IAAI,CAACA,UAAU,CAAC5hC,KAAK,EAAA,CAAGV,MAAM,CAAC,KAC9CW,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS,eACdA,CAAAA,CAAAA,IAAI,CAAC,SAAA,EAAW,CAChBA,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS0B,KACd1B,CAAAA,CAAAA,IAAI,CAAC,QAAA,EAAU2B,MACf3B,CAAAA,CAAAA,IAAI,CAAC,GAAK,EAAA,IAAI,CAAC+X,OAAO,CAACyC,IAAI,CAC3Bxa,CAAAA,IAAI,CAAC,GAAA,EAAK,IAAI,CAAC+X,OAAO,CAACsC,GAAG,CAAA,CAC1B/a,KAAK,CAAC,kBAAoB,EAAA,IAAI,CAACwoD,MAAM,IAAI,aAAA,CAAA,CACzCrnD,KAAK,CAAC,IAAI,CAACkhC,UAAU,CAAA;EACxB,QAAA,IAAI,CAACA,UAAU,CAACrhC,UAAU,CAAC,IAAI,CAACqI,WAAW,CACxC3I,CAAAA,IAAI,CAAC,SAAW,EAAA,CAAA,CAAA,CAChBA,IAAI,CAAC,SAAS0B,KACd1B,CAAAA,CAAAA,IAAI,CAAC,QAAA,EAAU2B,QACf3B,IAAI,CAAC,GAAK,EAAA,IAAI,CAAC+X,OAAO,CAACyC,IAAI,CAAA,CAC3Bxa,IAAI,CAAC,GAAA,EAAK,IAAI,CAAC+X,OAAO,CAACsC,GAAG,CAAA;UAE7B,MAAM0tC,KAAAA,GAAQ,IAAI,CAACpmB,UAAU,CAAC/hC,SAAS,CAAC,0BAA4BzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;UAC5E4pD,KAAMhoD,CAAAA,KAAK,EAAGV,CAAAA,MAAM,CAAC,MAAA,CAAA,CAClBW,IAAI,CAAC,OAAS,EAAA,qBAAA,CAAA,CACdS,KAAK,CAACsnD,KACN/nD,CAAAA,CAAAA,IAAI,CAAC,OAAS0B,EAAAA,KAAAA,CAAAA,CACd1B,IAAI,CAAC,QAAU2B,EAAAA,MAAAA,CAAAA,CACf3B,IAAI,CAAC,MAAQ,EAAA,IAAI,CAAC8nD,MAAM,IAAI,aAAA,CAAA;UAE/B,IAAI,CAACH,UAAU,GAAG,IAAI,CAAChmB,UAAU,CAAC/hC,SAAS,CAAC,2BAA6BzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;UACjF,IAAI,CAACwpD,UAAU,GAAG,IAAI,CAACA,UAAU,CAAC5nD,KAAK,EAAGV,CAAAA,MAAM,CAAC,GAC9CW,CAAAA,CAAAA,IAAI,CAAC,OAAS,EAAA,yBAAA,CAAA,CACdS,KAAK,CAAC,IAAI,CAACknD,UAAU,CAAA;UAExB,IAAI,CAAC/lB,UAAU,GAAG,IAAI,CAACD,UAAU,CAAC/hC,SAAS,CAAC,2BAA6BzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;UACjF,IAAI,CAACyjC,UAAU,GAAG,IAAI,CAACA,UAAU,CAAC7hC,KAAK,EAAGV,CAAAA,MAAM,CAAC,GAC9CW,CAAAA,CAAAA,IAAI,CAAC,OAAS,EAAA,yBAAA,CAAA,CACdS,KAAK,CAAC,IAAI,CAACmhC,UAAU,CAAA;UAExB,IAAIomB,SAAAA,GAAY,IAAI,CAACpmB,UAAU,CAAChiC,SAAS,CAAC,uBAAyBzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;UAC3E6pD,SAAYA,GAAAA,SAAAA,CAAUjoD,KAAK,EAAA,CAAGV,MAAM,CAAC,GAClCW,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS,qBACdS,CAAAA,CAAAA,KAAK,CAACunD,SAAAA,CAAAA;EAET,QAAA,MAAMC,YAAY,IAAI,CAACC,UAAU,GAAG,IAAI,CAACC,SAAS,GAC9ChB,YAAAA,CAAa,IAAI,CAACgB,SAAS,EAAE,IAAI,CAACC,YAAY,CAC9C,GAAA;cAAC3qD,IAAM,EAAA,mBAAA;EAAqB4qD,YAAAA,QAAAA,EAAU;EAAE,SAAA;EAE5C,QAAA,IAAI,IAAI,CAACC,eAAe,EAAEL,UAAUI,QAAQ,GAAGJ,SAAUI,CAAAA,QAAQ,CAAC7sD,MAAM,CAAC,IAAI,CAAC8sD,eAAe,CAAA;EAE7F,QAAA,MAAMh6C,IAAO,GAAA,IAAI,CAAC9D,KAAK,GAAGq8C,KAAAA,CAAM0B,OAAO,EAAA,CACpCC,UAAU,CAAC,IAAI,CAACd,WAAW,CAAA;EAE9B,QAAA,MAAMe,SAAY,GAAA,IAAI,CAACrhB,aAAa,CACjC5rC,MAAM,CAAC,CAACxB,CAAAA,EAAGgE,IAAM,IAAI,CAAC0qD,MAAM,CAAC1uD,GAAGgE,CAAcY,CAAAA,YAAAA,KAAAA,CAAAA;UAEjD,MAAM+pD,QAAAA,GAAW,IAAI,CAACvhB,aAAa,CAChC5rC,MAAM,CAAC,CAACxB,CAAAA,EAAGgE,CAAM,GAAA,EAAE,IAAI,CAAC0qD,MAAM,CAAC1uD,CAAGgE,EAAAA,CAAAA,CAAAA,YAAcY,KAAI,CACpDsX,CAAAA,CAAAA,MAAM,CAAC,CAAC1b,GAAKR,EAAAA,CAAAA,GAAAA;EACZQ,YAAAA,GAAG,CAAC,IAAI,CAACsF,GAAG,CAAC9F,GAAG,GAAGA,CAAAA;cACnB,OAAOQ,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;EAEN,QAAA,MAAMouD,WAAWX,SAAUI,CAAAA,QAAQ,CAACnyC,MAAM,CAAC,CAACxX,GAAKN,EAAAA,OAAAA,GAAAA;EAC/C,YAAA,MAAM+D,EAAK,GAAA,IAAI,CAAC0mD,WAAW,CAACzqD,OAAAA,CAAAA;EAC5BM,YAAAA,GAAAA,CAAIgJ,IAAI,CAAC;kBACPzJ,UAAY,EAAA,IAAA;kBACZE,IAAMwqD,EAAAA,QAAQ,CAACxmD,EAAG,CAAA;EAClB/D,gBAAAA,OAAAA;EACA+D,gBAAAA;EACF,aAAA,CAAA;cACA,OAAOzD,GAAAA;EACT,SAAA,EAAG,EAAE,CAAA;EAEL,QAAA,MAAM8I,IAAIkO,iBAAM,CAAC,CAAC,KAAK,EAAE,IAAI,CAACozC,eAAe,CAACr+C,MAAM,CAAC,CAAA,CAAA,CAAGC,WAAW,EAAK,CAAA,EAAA,IAAI,CAACo+C,eAAe,CAACn+C,KAAK,CAAC,IAAI,CAAC,EAAA,CACrGiL,MAAM,CAAC1H,eAAOu6C,SAAW,EAAA,CAACzuD,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAAC+qD,UAAU,CAAC/uD,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACtD6X,KAAK,CAAC;EAAC,YAAA,IAAI,CAACmzC,aAAa;EAAE,YAAA,IAAI,CAACC;EAAc,SAAA,CAAA;EAEjD,QAAA,IAAI,CAAC,IAAI,CAACC,QAAQ,EAAE;EAElB,YAAA,MAAMC,OAAU,GAAA,IAAI,CAACC,UAAU,GAAGjC,YAAAA,CAAa,IAAI,CAACiC,UAAU,EAAE,IAAI,CAACC,OAAO,CAAIpB,GAAAA,SAAAA;cAEhF,IAAI,CAACqB,aAAa,GAAG;kBACnB7rD,IAAM,EAAA,mBAAA;EACN4qD,gBAAAA,QAAAA,EAAU,IAAI,CAACkB,UAAU,GAAGJ,OAAAA,CAAQd,QAAQ,CAAC7sD,MAAM,CAAC,IAAI,CAAC+tD,UAAU,CAAA,GAAIJ,OAAQd,CAAAA,QAAQ,CAAC19C,KAAK;EAC/F,aAAA;EACA,YAAA,IAAI,CAAC2+C,aAAa,CAACjB,QAAQ,GAAG,IAAI,CAACiB,aAAa,CAACjB,QAAQ,CAACnyC,MAAM,CAAC,CAACxX,GAAK1E,EAAAA,CAAAA,GAAAA;kBAErE,IAAIA,CAAAA,CAAEwvD,QAAQ,EAAE;EAEd,oBAAA,MAAMC,OAAU,GAAA;EACdhsD,wBAAAA,IAAAA,EAAMzD,EAAEyD,IAAI;EACZ0E,wBAAAA,EAAAA,EAAInI,EAAEmI,EAAE;0BACRqnD,QAAU,EAAA;8BACRE,WAAa1vD,EAAAA,CAAAA,CAAEwvD,QAAQ,CAACE,WAAW;8BACnCjsD,IAAMzD,EAAAA,CAAAA,CAAEwvD,QAAQ,CAAC/rD;EACnB;EACF,qBAAA;EAEA,oBAAA,IAAIzD,CAAEwvD,CAAAA,QAAQ,CAAC/rD,IAAI,KAAK,cAAA,IAAkBzD,CAAEwvD,CAAAA,QAAQ,CAACE,WAAW,CAACptD,MAAM,GAAG,CAAG,EAAA;EAE3E,wBAAA,MAAM0R,KAAQ,GAAA,EAAE,EACV27C,SAAAA,GAAY,EAAE;EAEpB3vD,wBAAAA,CAAAA,CAAEwvD,QAAQ,CAACE,WAAW,CAACztD,OAAO,CAAC4Q,CAAAA,CAAAA,GAAAA;8BAC7B48C,OAAQD,CAAAA,QAAQ,CAACE,WAAW,GAAG;EAAC78C,gCAAAA;EAAE,6BAAA;EAClCmB,4BAAAA,KAAAA,CAAMtG,IAAI,CAAC4G,IAAKC,CAAAA,IAAI,CAACk7C,OAAAA,CAAAA,CAAAA;EACvB,yBAAA,CAAA;0BAEAA,OAAQD,CAAAA,QAAQ,CAACE,WAAW,GAAG;8BAAC1vD,CAAEwvD,CAAAA,QAAQ,CAACE,WAAW,CAAC17C,MAAMtS,OAAO,CAACoX,YAAI9E,KAAQ,CAAA,CAAA;EAAC,yBAAA;0BAClF,MAAMoY,MAAAA,GAAS9X,IAAKs7C,CAAAA,QAAQ,CAACH,OAAAA,CAAAA;EAE7BzvD,wBAAAA,CAAAA,CAAEwvD,QAAQ,CAACE,WAAW,CAACztD,OAAO,CAAC4Q,CAAAA,CAAAA,GAAAA;8BAC7B48C,OAAQD,CAAAA,QAAQ,CAACE,WAAW,GAAG;EAAC78C,gCAAAA;EAAE,6BAAA;EAClC88C,4BAAAA,SAAAA,CAAUjiD,IAAI,CAACpE,kBAAAA,CAAcgL,IAAKs7C,CAAAA,QAAQ,CAACH,OAAUrjC,CAAAA,EAAAA,MAAAA,CAAAA,CAAAA;EACvD,yBAAA,CAAA;EAEA,wBAAA,MAAMyjC,aAAat3C,gBAASvE,CAAAA,KAAAA,CAAMkI,MAAM,CAAC,CAACxX,KAAK0X,IAAMpY,EAAAA,CAAAA,GAAAA;EACnD,4BAAA,IAAIoY,MAAM1X,GAAIgJ,CAAAA,IAAI,CAACsG,KAAK,CAAChQ,EAAE,GAAGoY,IAAAA,CAAAA;8BAC9B,OAAO1X,GAAAA;EACT,yBAAA,EAAG,EAAE,CAAG,EAAA,GAAA,CAAA;EAER+qD,wBAAAA,OAAAA,CAAQD,QAAQ,CAACE,WAAW,GAAG1vD,CAAEwvD,CAAAA,QAAQ,CAACE,WAAW,CAACluD,MAAM,CAAC,CAACqR,CAAG7O,EAAAA,CAAAA,GAAAA;8BAC/D,MAAMoY,IAAAA,GAAOuzC,SAAS,CAAC3rD,CAAE,CAAA;EACzB,4BAAA,OAAOoY,SAAS,CAAKpI,IAAAA,KAAK,CAAChQ,CAAAA,CAAE,GAAGoY,IAAQyzC,IAAAA,UAAAA;EAC1C,yBAAA,CAAA;EAEF;EAEAnrD,oBAAAA,GAAAA,CAAIgJ,IAAI,CAAC+hD,OAAAA,CAAAA;EAEX;kBACA,OAAO/qD,GAAAA;EAET,aAAA,EAAG,EAAE,CAAA;cAEL,IAAI,CAAC,IAAI,CAAC4qD,aAAa,CAACjB,QAAQ,CAAC/rD,MAAM,IAAImsD,SAAUnsD,CAAAA,MAAM,EAAE;EAE3D,gBAAA,MAAM2L,MAAS,GAAA;EAAC,oBAAA;EAAClO,wBAAAA,SAAAA;EAAWA,wBAAAA;EAAU,qBAAA;EAAE,oBAAA;EAACA,wBAAAA,SAAAA;EAAWA,wBAAAA;EAAU;EAAC,iBAAA;kBAC/D0uD,SAAUxsD,CAAAA,OAAO,CAAC,CAACjC,CAAGgE,EAAAA,CAAAA,GAAAA;sBAEpB,MAAM8rD,KAAAA,GAAQ,IAAI,CAACpC,WAAW,CAAC,IAAI,CAACgB,MAAM,CAAC1uD,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA;sBAC9C,IAAIiK,MAAM,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,KAAK,MAAU6hD,IAAAA,KAAK,CAAC,CAAA,CAAE,GAAG7hD,MAAM,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,EAAEA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,GAAG6hD,KAAK,CAAC,CAAE,CAAA;sBAC/E,IAAI7hD,MAAM,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,KAAK,MAAU6hD,IAAAA,KAAK,CAAC,CAAA,CAAE,GAAG7hD,MAAM,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,EAAEA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,GAAG6hD,KAAK,CAAC,CAAE,CAAA;sBAC/E,IAAI7hD,MAAM,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,KAAK,MAAU6hD,IAAAA,KAAK,CAAC,CAAA,CAAE,GAAG7hD,MAAM,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,EAAEA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,GAAG6hD,KAAK,CAAC,CAAE,CAAA;sBAC/E,IAAI7hD,MAAM,CAAC,CAAA,CAAE,CAAC,CAAA,CAAE,KAAK,MAAU6hD,IAAAA,KAAK,CAAC,CAAA,CAAE,GAAG7hD,MAAM,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,EAAEA,MAAM,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,GAAG6hD,KAAK,CAAC,CAAE,CAAA;EAEjF,iBAAA,CAAA;kBAEA,IAAI,CAACR,aAAa,GAAG;sBACnB7rD,IAAM,EAAA,mBAAA;sBACN4qD,QAAU,EAAA;EAAC,wBAAA;8BACT5qD,IAAM,EAAA,SAAA;8BACN+rD,QAAU,EAAA;kCACR/rD,IAAM,EAAA,YAAA;kCACNisD,WAAazhD,EAAAA,MAAAA,CAAOtJ,GAAG,CAACwJ,CAAAA,CAAAA,GAAK,IAAI,CAACu/C,WAAW,CAAC9yB,MAAM,CAACzsB,CAAAA,CAAAA;EACvD;EACF;EAAE;EACJ,iBAAA;kBACA,MAAMwa,OAAAA,GAAU7P,WAAI21C,CAAAA,SAAAA,EAAW,CAACzuD,CAAAA,EAAGgE,CAAMwJ,GAAAA,CAAAA,CAAE,IAAI,CAACuhD,UAAU,CAAC/uD,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA;EAC9D,gBAAA,IAAI,CAAC+rD,kBAAkB,CAAC1vC,GAAG,IAAIsI,OAAAA;EAC/B,gBAAA,IAAI,CAAConC,kBAAkB,CAACzvC,KAAK,IAAIqI,OAAAA;EACjC,gBAAA,IAAI,CAAConC,kBAAkB,CAACxvC,MAAM,IAAIoI,OAAAA;EAClC,gBAAA,IAAI,CAAConC,kBAAkB,CAACvvC,IAAI,IAAImI,OAAAA;EAElC;EAEA,YAAA,IAAI,CAACof,aAAa,CACf7zB,MAAM,CAAC;EAAC,gBAAA;EAAC,oBAAA,CAAA;EAAG,oBAAA;EAAE,iBAAA;EAAE,gBAAA;EAACxM,oBAAAA,KAAAA;EAAOC,oBAAAA;EAAO;EAAC,aAAA,CAAA,CAChCqgC,WAAW,CAAC;EAAC,gBAAA,CAAA;EAAG,gBAAA,IAAI,CAACC;EAAS,aAAA,CAAA,CAC9BC,eAAe,CAAC;EAAC,gBAAA;EAAC,oBAAA,CAAA;EAAG,oBAAA;EAAE,iBAAA;EAAE,gBAAA;EAACxgC,oBAAAA,KAAAA;EAAOC,oBAAAA;EAAO;EAAC,aAAA,CAAA;cAE5C,IAAI,CAACunD,QAAQ,GAAG,IAAA;EAElB;EAEA,QAAA,IAAI,CAACxB,WAAW,GAAG,IAAI,CAACA,WAAW,CAChCsC,SAAS,CACR,IAAI,CAACV,aAAa,CAACjB,QAAQ,CAAC/rD,MAAM,GAAG;EAAC,YAAA;kBAAC,IAAI,CAACytD,kBAAkB,CAACvvC,IAAI;kBAAE,IAAI,CAACuvC,kBAAkB,CAAC1vC;EAAI,aAAA;EAAE,YAAA;EAAC3Y,gBAAAA,KAAAA,GAAQ,IAAI,CAACqoD,kBAAkB,CAACzvC,KAAK;EAAE3Y,gBAAAA,MAAAA,GAAS,IAAI,CAACooD,kBAAkB,CAACxvC;EAAO;WAAC,GAAG;EAAC,YAAA;EAAC,gBAAA,CAAA;EAAG,gBAAA;EAAE,aAAA;EAAE,YAAA;EAAC7Y,gBAAAA,KAAAA;EAAOC,gBAAAA;EAAO;WAAC,EAChN,IAAI,CAAC2nD,aAAa,CAACjB,QAAQ,CAAC/rD,MAAM,GAAG,IAAI,CAACgtD,aAAa,GAAG;cAAC7rD,IAAM,EAAA;EAAQ,SAAA,CAAA;EAG7E,QAAA,IAAI,CAAC4oB,OAAO,CAAC3e,IAAI,CAAC,IAAI8M,OACnBrW,IAAI,CAACyqD,UACL5uD,CAAC,CAACA,CAAAA,CAAKsU,GAAAA,IAAAA,CAAKtU,EAAEoE,OAAO,CAAA,CAAA,CACrBgB,MAAM,CAAC4oD,SAAAA,CAAUtoD,IAAI,EAAA,CAAA,CACrB6C,CAAC,CAAC,CAAA,CAAA,CAAGC,CAAC,CAAC,CAAA,CAAA,CACP3G,MAAM,CAAC2B,UAAAA,CAAWa,IAAI,CAAC,IAAI,EAAE,IAAI,CAACnB,YAAY,EAAE,OAAA,EAAS,SACzD+B,MAAM,EAAA,CAAA;UAET,IAAIgrD,UAAAA,GAAa,IAAI,CAACroB,UAAU,CAAChiC,SAAS,CAAC,sBAAwBzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;UAC3E8rD,UAAaA,GAAAA,UAAAA,CAAWlqD,KAAK,EAAA,CAAGV,MAAM,CAAC,GACpCW,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS,oBACdS,CAAAA,CAAAA,KAAK,CAACwpD,UAAAA,CAAAA;EAET,QAAA,MAAMC,UAAU,IAAIx6C,MAAAA,EAAAA,CACjB7T,MAAM,CAAC2B,UAAAA,CAAWa,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAACnB,YAAY,EAAE,SAAS,QACzDiB,CAAAA,CAAAA,CAAAA,IAAI,CAACsqD,SACLjhD,CAAAA,CAAAA,CAAC,CAAC,CAACxN,GAAGgE,CAAMwJ,GAAAA,CAAAA,CAAE,IAAI,CAACuhD,UAAU,CAAC/uD,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACjCoB,MAAM,CAAC6qD,WAAWvqD,IAAI,EAAA,CAAA,CACtBoJ,IAAI,CAAC,CAACC,GAAGZ,CAAM,GAAA,IAAI,CAAC4gD,UAAU,CAAC5gD,CAAK,CAAA,GAAA,IAAI,CAAC4gD,UAAU,CAAChgD,IACpDxG,CAAC,CAAC,CAACvI,CAAAA,EAAGgE,IAAM,IAAI,CAAC0pD,WAAW,CAAC,IAAI,CAACgB,MAAM,CAAC1uD,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG,CAAC,CAAE,CAAA,CAAA,CAClDwE,CAAC,CAAC,CAACxI,GAAGgE,CAAM,GAAA,IAAI,CAAC0pD,WAAW,CAAC,IAAI,CAACgB,MAAM,CAAC1uD,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG,CAAC,CAAE,CAAA,CAAA;EAErD,QAAA,MAAM8E,SAAS1H,MAAO2H,CAAAA,IAAI,CAAC,IAAI,CAACxG,GAAG,CAAA;EACnC,QAAA,MAAMulD,WAAch/C,GAAAA,MAAAA,CAAOtH,MAAM,CAACC,CAAAA,CAAAA,GAAKA,CAAEE,CAAAA,QAAQ,CAAC,SAAA,CAAA,CAAA,EAC5ComD,YAAej/C,GAAAA,MAAAA,CAAOtH,MAAM,CAACC,CAAAA,CAAAA,GAAK,CAACA,CAAAA,CAAEE,QAAQ,CAAC,GAC9CqmD,CAAAA,CAAAA,EAAAA,WAAAA,GAAcl/C,MAAOtH,CAAAA,MAAM,CAACC,CAAAA,CAAKA,GAAAA,CAAAA,CAAEE,QAAQ,CAAC,QAAA,CAAA,CAAA;UAClD,IAAK,IAAIF,IAAI,CAAGA,EAAAA,CAAAA,GAAIsmD,aAAazlD,MAAM,EAAEb,CAAKyuD,EAAAA,CAAAA,OAAAA,CAAQvtD,EAAE,CAAColD,YAAY,CAACtmD,CAAAA,CAAE,EAAE,IAAI,CAACc,GAAG,CAACwlD,YAAY,CAACtmD,CAAAA,CAAE,CAAC,CAAA;UACnG,IAAK,IAAIA,IAAI,CAAGA,EAAAA,CAAAA,GAAIumD,YAAY1lD,MAAM,EAAEb,CAAKyuD,EAAAA,CAAAA,OAAAA,CAAQvtD,EAAE,CAACqlD,WAAW,CAACvmD,CAAAA,CAAE,EAAE,IAAI,CAACc,GAAG,CAACylD,WAAW,CAACvmD,CAAAA,CAAE,CAAC,CAAA;UAChG,IAAK,IAAIA,IAAI,CAAGA,EAAAA,CAAAA,GAAIqmD,YAAYxlD,MAAM,EAAEb,CAAKyuD,EAAAA,CAAAA,OAAAA,CAAQvtD,EAAE,CAACmlD,WAAW,CAACrmD,CAAAA,CAAE,EAAE,IAAI,CAACc,GAAG,CAACulD,WAAW,CAACrmD,CAAAA,CAAE,CAAC,CAAA;EAEhG,QAAA,IAAI,CAAC4qB,OAAO,CAAC3e,IAAI,CAACwiD,QAAQjrD,MAAM,EAAA,CAAA;EAEhC,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;;;OAQAkrD,SAAAA,CAAUruD,CAAC,EAAE;UACX,IAAIO,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,CAAC4sD,QAAQ,GAAG,KAAA;cAChB,IAAI,OAAOptD,MAAM,UAAY,EAAA,OAAO,IAAI,CAACytD,UAAU,GAAGztD,CAAAA,EAAG,IAAI;EAC7D,YAAA,IAAI,EAAEA,CAAa8C,YAAAA,KAAI,GAAI9C,CAAI,GAAA;EAACA,gBAAAA;EAAE,aAAA;EAClC,YAAA,OAAO,IAAI,CAACytD,UAAU,GAAGvvD,CAAAA,CAAAA,GAAK8B,CAAEH,CAAAA,QAAQ,CAAC3B,CAAAA,CAAEmI,EAAE,CAAA,EAAG,IAAI;EACtD;UACA,OAAO,IAAI,CAAConD,UAAU;EACxB;EAEA;;;;;;;OAQAa,MAAAA,CAAOtuD,CAAC,EAAE;UACR,IAAIO,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,CAAC+sD,OAAO,GAAGvtD,CAAAA;cACf,IAAI,CAACotD,QAAQ,GAAG,KAAA;EAChB,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACG,OAAO;EACrB;EAEA;;;;;;;;EAQA,KACAgB,SAAUvuD,CAAAA,CAAC,EAAEc,CAAC,EAAE;UACd,IAAIP,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,OAAOR,MAAM,QAAU,EAAA;EACzB,gBAAA,MAAM+jB,IAAO,GAAA,IAAI,CAACuqB,MAAM,CAAC3pB,IAAI,CAACypB,CAAAA,CAAKA,GAAAA,CAAC,CAAC,CAAA,CAAE,KAAK,WAAA,CAAA;EAC5C,gBAAA,MAAMlwC,CAAI,GAAA;sBAACswD,SAAKjsD,CAAAA,IAAI,CAAC,IAAI,CAAA;EAAGvC,oBAAAA,CAAAA;EAAGc,oBAAAA,CAAAA;EAAG,oBAAA;EAAY,iBAAA;EAC9C,gBAAA,IAAIijB,IAAM,EAAA,IAAI,CAACuqB,MAAM,CAAC,IAAI,CAACA,MAAM,CAAC1uC,OAAO,CAACmkB,IAAAA,CAAAA,CAAM,GAAG7lB,CAAAA;EAC9C,qBAAA,IAAI,CAACowC,MAAM,CAAC1iC,IAAI,CAAC1N,CAAAA,CAAAA;eAEnB,MAAA;kBACH,IAAI,CAACovD,UAAU,GAAGttD,CAAAA;EACpB;cACA,IAAI,CAACotD,QAAQ,GAAG,KAAA;EAChB,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACE,UAAU;EACxB;EAEA;;;;;OAMArB,KAAAA,CAAMjsD,CAAC,EAAE;EACP,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACwrD,MAAM,GAAGhsD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACgsD,MAAM;EACjE;EAEA;;;;;OAMAgC,KAAAA,CAAMhuD,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACosD,MAAM,GAAG,OAAO5sD,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC4sD,MAAM;EACzG;EAEA;;;;;OAMA6B,SAAAA,CAAUzuD,CAAC,EAAE;EACX,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACysD,UAAU,GAAG,OAAOjtD,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACitD,UAAU;EACjH;EAEA;;;;;OAMAyB,YAAAA,CAAa1uD,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2sD,aAAa,GAAGntD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmtD,aAAa;EAC/E;EAEA;;;;;OAMAwB,YAAAA,CAAa3uD,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC0sD,aAAa,GAAGltD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACktD,aAAa;EAC/E;EAEA;;;;;OAMAR,UAAAA,CAAW1sD,CAAC,EAAE;UACZ,IAAIO,SAAAA,CAAUC,MAAM,IAAIR,CAAAA,KAAM,eAAe,IAAI,CAAC4uD,KAAK,CAAC,KAAA,CAAA;EACxD,QAAA,OAAOruD,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACorD,WAAW,GAAG,OAAO5rD,CAAAA,KAAM,QAAW+qD,GAAAA,KAAK,CAAC/qD,CAAAA,CAAE,GAAG+qD,KAAK,CAAC/qD,CAAAA,CAAE,EAAK+qD,GAAAA,KAAAA,CAAM8D,WAAW,EAAA,GAAK7uD,CAAG,EAAA,IAAI,IAAI,IAAI,CAAC4rD,WAAW;EACjJ;EAEA;;;;;OAMAkD,iBAAAA,CAAkB9uD,CAAC,EAAE;EACnB,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACytD,kBAAkB,GAAG56B,cAAAA,CAAWrzB,IAAI,IAAG,IAAK,IAAI,CAACiuD,kBAAkB;EACrG;EAEA;;;;;OAMAc,gBAAAA,CAAiB/uD,CAAC,EAAE;UAClB,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,CAACorD,WAAW,CAACziD,MAAM,CAACnJ,CAAAA,CAAAA;cACxB,IAAI,CAAC4uD,KAAK,CAAC,KAAA,CAAA;cACX,IAAI,CAACxB,QAAQ,GAAG,KAAA;EAChB,YAAA,OAAO,IAAI;WAER,MAAA;cACH,OAAO,IAAI,CAAC4B,iBAAiB;EAC/B;EACF;EAEA;;;;;OAMAJ,KAAAA,CAAM5uD,CAAC,EAAE;UACP,IAAIO,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,CAACkrD,MAAM,GAAG1rD,CAAAA;EACd,YAAA,MAAM4vC,WAAcub,GAAAA,eAAAA,CAAgB,IAAI,CAACY,QAAQ,CAAA;cACjD,IAAI/rD,CAAAA,IAAK,IAAI,CAACooC,YAAY,KAAK,EAAI,EAAA,IAAI,CAACA,YAAY,GAAGwH,WAAAA;mBAClD,IAAI,CAAC5vC,CAAK,IAAA,IAAI,CAACooC,YAAY,KAAKwH,WAAa,EAAA,IAAI,CAACxH,YAAY,GAAG,EAAA;EACtE,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACsjB,MAAM;EACpB;EAEA;;;;;OAMAuD,OAAAA,CAAQjvD,CAAC,EAAE;UACT,IAAIO,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,CAACurD,QAAQ,GAAG/rD,CAAAA;cAChB,IAAI,IAAI,CAAC0rD,MAAM,EAAE,IAAI,CAACtjB,YAAY,GAAG+iB,eAAgBnrD,CAAAA,CAAAA,CAAAA;cACrD,IAAI,IAAI,CAAC6rD,UAAU,EAAE,IAAI,CAACtkB,YAAY,CAAChlC,IAAI,CAAC,IAAI,CAAA,EAAA;EAChD,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACwpD,QAAQ;EACtB;EAEA;;;;;;;;EAQA,KACAmD,QAASlvD,CAAAA,CAAC,EAAEc,CAAC,EAAE;UACb,IAAIP,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,OAAOR,MAAM,QAAU,EAAA;EACzB,gBAAA,MAAM+jB,IAAO,GAAA,IAAI,CAACuqB,MAAM,CAAC3pB,IAAI,CAACypB,CAAAA,CAAKA,GAAAA,CAAC,CAAC,CAAA,CAAE,KAAK,UAAA,CAAA;EAC5C,gBAAA,MAAMlwC,CAAI,GAAA;sBAACswD,SAAKjsD,CAAAA,IAAI,CAAC,IAAI,CAAA;EAAGvC,oBAAAA,CAAAA;EAAGc,oBAAAA,CAAAA;EAAG,oBAAA;EAAW,iBAAA;EAC7C,gBAAA,IAAIijB,IAAM,EAAA,IAAI,CAACuqB,MAAM,CAAC,IAAI,CAACA,MAAM,CAAC1uC,OAAO,CAACmkB,IAAAA,CAAAA,CAAM,GAAG7lB,CAAAA;EAC9C,qBAAA,IAAI,CAACowC,MAAM,CAAC1iC,IAAI,CAAC1N,CAAAA,CAAAA;eAEnB,MAAA;kBACH,IAAI,CAACmuD,SAAS,GAAGrsD,CAAAA;EACnB;cACA,IAAI,CAACotD,QAAQ,GAAG,KAAA;EAChB,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACf,SAAS;EACvB;EAEA;;;;;OAMA8C,YAAAA,CAAanvD,CAAC,EAAE;UACd,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAAC4uD,aAAa,GAAG,OAAOpvD,CAAAA,KAAM,aAAaA,CAAIiD,GAAAA,QAAAA,CAASjD,IAAU,IAAI,IAAI,IAAI,CAACovD,aAAa;EAC7H;EAEA;;;;;OAMAC,cAAAA,CAAervD,CAAC,EAAE;UAChB,IAAIO,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,CAAC4sD,QAAQ,GAAG,KAAA;cAChB,IAAI,OAAOptD,MAAM,UAAY,EAAA,OAAO,IAAI,CAACwsD,eAAe,GAAGxsD,CAAAA,EAAG,IAAI;EAClE,YAAA,IAAI,EAAEA,CAAa8C,YAAAA,KAAI,GAAI9C,CAAI,GAAA;EAACA,gBAAAA;EAAE,aAAA;EAClC,YAAA,OAAO,IAAI,CAACwsD,eAAe,GAAGtuD,CAAAA,CAAAA,GAAK8B,CAAEH,CAAAA,QAAQ,CAAC3B,CAAAA,CAAEmI,EAAE,CAAA,EAAG,IAAI;EAC3D;UACA,OAAO,IAAI,CAACmmD,eAAe;EAC7B;EAEA;;;;;;;OAQA8C,WAAAA,CAAYtvD,CAAC,EAAE;UACb,IAAIO,SAAAA,CAAUC,MAAM,EAAE;cACpB,IAAI,CAAC8rD,YAAY,GAAGtsD,CAAAA;cACpB,IAAI,CAACotD,QAAQ,GAAG,KAAA;EAChB,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACd,YAAY;EAC1B;EAEA;;;;;OAMAiD,UAAAA,CAAWvvD,CAAC,EAAE;UACZ,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACusD,WAAW,GAAG,OAAO/sD,CAAAA,KAAM,aAAaA,CAAI2G,GAAAA,QAAAA,CAAS3G,IAAU,IAAI,IAAI,IAAI,CAAC+sD,WAAW;EACzH;EA/lBA;;;;EAIA,KACA1rD,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACisD,UAAU,GAAG,KAAA;UAClB,IAAI,CAACthB,cAAc,GAAG,KAAA;UACtB,IAAI,CAACggB,MAAM,GAAG,SAAA;UAEd,IAAI,CAACY,MAAM,GAAGjmD,QAAS,CAAA,OAAA,CAAA;UACvB,IAAI,CAACsmD,UAAU,GAAGhqD,QAAS,CAAA,CAAA,CAAA;UAC3B,IAAI,CAACkqD,aAAa,GAAG,EAAA;UACrB,IAAI,CAACD,aAAa,GAAG,CAAA;UACrB,IAAI,CAACF,eAAe,GAAG,QAAA;EAEvB,QAAA,IAAI,CAACpB,WAAW,GAAGb,KAAAA,CAAM8D,WAAW,EAAA;UACpC,IAAI,CAACZ,kBAAkB,GAAG56B,cAAW,CAAA,EAAA,CAAA;UAErC,IAAI,CAACjV,MAAM,GAAGnb,QAAS,CAAA,QAAA,CAAA;EACvB,QAAA,IAAI,CAAC7B,YAAY,GAAGd,WAAO,IAAI,CAACc,YAAY,EAAE;EAC5CmO,YAAAA,SAAAA,EAAW,CAACrR,CAAGgE,EAAAA,CAAAA,GAAM,CAAG,EAAA,IAAI,CAAC8gC,UAAU,CAAC9kC,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG,EAAE,EAAE,IAAI,CAAC+qD,UAAU,CAAC/uD,GAAGgE,CAAI,CAAA,CAAA,CAAA;cACzE2N,YAAc,EAAA,CAAA;cACd6I,IAAM,EAAA;EACJnJ,gBAAAA,SAAAA,EAAW,CAACrR,CAAGgE,EAAAA,CAAAA,GAAAA;EACb,oBAAA,MAAMstD,eAAkB,GAAA,IAAI,CAACriC,WAAW,GAAG,CAAC,EAAE,EAAE,IAAI,CAACA,WAAW,CAACjvB,CAAAA,EAAGgE,IAAI,GAAG,EAAA;sBAC3E,OAAO,CAAA,EAAG,IAAI,CAAC8gC,UAAU,CAAC9kC,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,EAAKstD,eAAgB,CAAA,CAAC,CAAC;EACtD,iBAAA;EACA5lD,gBAAAA,IAAAA,EAAM,CAAC1L,CAAGgE,EAAAA,CAAAA,GAAAA;EACR,oBAAA,IAAI,IAAI,CAACirB,WAAW,IAAI,CAAC,IAAI,CAACi/B,UAAU,CAACG,QAAQ,CAAC1sD,QAAQ,CAAC3B,CAAI,CAAA,EAAA;EAC7D,wBAAA,MAAM6S,CAAI,GAAA,IAAI,CAACoc,WAAW,CAACjvB,CAAAA,CAAAA;0BAC3B,IAAI6S,CAAAA,KAAM9S,SAAa8S,IAAAA,CAAAA,KAAM,IAAM,EAAA;EACjC,4BAAA,IAAI,IAAI,CAAC6xB,gBAAgB,CAACzV,WAAW,EAAE;EACrC,gCAAA,OAAO,IAAI,CAACyV,gBAAgB,CAACzV,WAAW,CAACpc,CAAAA,CAAAA;+BAEtC,MAAA;EACH,gCAAA,IAAIC,KAAQ,GAAA,IAAI,CAAC4xB,gBAAgB,CAAC5xB,KAAK,EAAA;kCACvC,IAAIA,KAAAA,YAAiBlO,OAAOkO,KAAQA,GAAAA,KAAK,CAACA,KAAMxQ,CAAAA,MAAM,GAAG,CAAE,CAAA;kCAC3D,OAAOwQ,KAAAA;EACT;EACF;EACF;EACA,oBAAA,OAAO,IAAI,CAACo+C,aAAa,CAAClxD,CAAGgE,EAAAA,CAAAA,CAAAA;EAC/B,iBAAA;kBACArB,EAAI,EAAA;EACF,oBAAA,YAAA,EAAc,CAAC3C,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,KAAU,GAAA,CAAC,IAAI,CAAC0pD,UAAU,CAACG,QAAQ,CAAC1sD,QAAQ,CAAC3B,CAAK,CAAA,GAAA,IAAI,CAACuC,GAAG,CAACk0C,UAAU,CAACpyC,IAAI,CAAC,IAAI,CAAErE,CAAAA,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,KAAS,CAAA,GAAA,IAAA;EAC3H,oBAAA,iBAAA,EAAmB,CAACxE,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,KAAU,GAAA,CAAC,IAAI,CAAC0pD,UAAU,CAACG,QAAQ,CAAC1sD,QAAQ,CAAC3B,CAAK,CAAA,GAAA,IAAI,CAACuC,GAAG,CAAC,iBAAA,CAAkB,CAAC8B,IAAI,CAAC,IAAI,CAAErE,CAAAA,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,KAAS,CAAA,GAAA,IAAA;EACxI,oBAAA,YAAA,EAAc,CAACxE,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,KAAU,GAAA,CAAC,IAAI,CAAC0pD,UAAU,CAACG,QAAQ,CAAC1sD,QAAQ,CAAC3B,CAAK,CAAA,GAAA,IAAI,CAACuC,GAAG,CAACm0C,UAAU,CAACryC,IAAI,CAAC,IAAI,CAAErE,CAAAA,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,EAAG/D,KAAS,CAAA,GAAA;EAC7H,iBAAA;EACA+G,gBAAAA,MAAAA,EAAQ,CAACvL,CAAGgE,EAAAA,CAAAA,GAAAA;sBACV,MAAM6O,CAAAA,GAAI,OAAO,IAAI,CAAC3P,YAAY,CAACsX,IAAI,CAAC9O,IAAI,KAAK,UAAA,GAAa,IAAI,CAACxI,YAAY,CAACsX,IAAI,CAAC9O,IAAI,CAAC1L,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,IAAI,CAACd,YAAY,CAACsX,IAAI,CAAC9O,IAAI;sBAC7H,OAAOoH,aAAAA,CAAMD,GAAGE,MAAM,EAAA;EACxB,iBAAA;kBACAT,WAAa,EAAA;EACf;EACF,SAAA,CAAA;UAEA,IAAI,CAACk7C,MAAM,GAAG,IAAA;UACd,IAAI,CAACC,QAAQ,GAAG8D,WAAAA,EAAAA;UAChB,IAAI,CAACR,OAAO,CAAC,iFAAA,CAAA;UAEb,IAAI,CAAC5C,SAAS,GAAG,KAAA;UACjB,IAAI,CAAC+C,aAAa,GAAGnsD,QAAS,CAAA,SAAA,CAAA;EAC9B,QAAA,IAAI,CAACupD,eAAe,GAAGtuD,CAAAA,IAAK,CAAC;EAAC,gBAAA;eAAM,CAAC2B,QAAQ,CAAC3B,CAAAA,CAAEmI,EAAE,CAAA;UAClD,IAAI,CAAC0mD,WAAW,GAAGpmD,QAAS,CAAA,IAAA,CAAA;UAE5B,IAAI,CAAC8/B,KAAK,GAAG,IAAA;UACb,IAAI,CAAC2mB,QAAQ,GAAG,KAAA;EAElB;EAyhBF;;ECxoBe,MAAMsC,QAAiB5W,SAAAA,IAAAA,CAAAA;EAEpC;;;;EAIA,KACAz3C,WAAc,EAAA;UAEZ,KAAK,EAAA;UACL,IAAI,CAACgG,SAAS,GAAG,GAAA;UACjB,IAAI,CAAC+W,MAAM,GAAGnb,QAAS,CAAA,MAAA,CAAA;UACvB,IAAI,CAACwD,CAAC,CAAC,GAAA,CAAA;EAET;EAEF;;EC3BA,MAAMkpD,SAAAA,GAAY,CAAC1iD,CAAGZ,EAAAA,CAAAA,GAAM,EAAE,CAAChN,MAAM,CAAI4N,GAAAA,CAAAA,CAAEpK,GAAG,CAAC3E,CAAAA,CAAKmO,GAAAA,CAAAA,CAAExJ,GAAG,CAAClD,CAAAA,IAAK,EAAE,CAACN,MAAM,CAACnB,CAAGyB,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;EAE5E;;;EAGC,IACc,iBAAA,GAAA;MAEb,MAAM0C,MAAAA,GAAO,IAAI,CAACipC,aAAa;MAC/B,MAAMskB,SAAAA,GAAY,CAAC,IAAI,CAACC,QAAQ,IAAI1iD,YAAO9K,MAAKQ,CAAAA,GAAG,CAAC,IAAI,CAACitD,IAAI,CAAC,CAAA,EAAG9iD,IAAI,CAAC,IAAI,CAAC+iD,QAAQ,CAAA;MACnF,MAAMC,YAAAA,GAAe,CAAC,IAAI,CAACC,WAAW,IAAI9iD,YAAO9K,MAAKQ,CAAAA,GAAG,CAAC,IAAI,CAACqtD,OAAO,CAAC,CAAA,EAAGljD,IAAI,CAAC,IAAI,CAACmjD,WAAW,CAAA;MAE/F,IAAI,CAACP,UAAUpvD,MAAM,IAAI,CAACwvD,YAAaxvD,CAAAA,MAAM,EAAE,OAAO,IAAI;MAE1D,MAAMuV,SAAAA,GAAY45C,UAAUC,SAAWI,EAAAA,YAAAA,CAAAA,CACpCntD,GAAG,CAAC,CAAC,CAACutD,QAAAA,EAAUC,WAAY,CAAA,GAAA;EAC3B,QAAA,MAAM16C,OAAU,GAAA;cACd26C,iBAAmB,EAAA,IAAA;cACnBnuD,UAAY,EAAA,IAAA;cACZouD,MAAQF,EAAAA,WAAAA;cACR5nC,GAAK2nC,EAAAA;EACP,SAAA;EACA,QAAA,MAAMtL,YAAYziD,MACf4a,CAAAA,SAAS,CAAC,CAAC/e,CAAAA,EAAGgE,IAAM,IAAI,CAAC4tD,IAAI,CAAC5xD,CAAAA,EAAGgE,OAAOkuD,QAAY,IAAA,IAAI,CAACF,OAAO,CAAChyD,GAAGgE,CAAOmuD,CAAAA,KAAAA,WAAAA,CAAAA;EAC9E,QAAA,IAAIvL,aAAa,CAAG,EAAA;EAClBnvC,YAAAA,OAAAA,CAAQzT,CAAC,GAAG4iD,SAAAA;EACZnvC,YAAAA,OAAAA,CAAQtT,IAAI,GAAGA,MAAI,CAACyiD,SAAU,CAAA;WAE3B,MAAA;EACHnvC,YAAAA,OAAAA,CAAQtT,IAAI,GAAG;kBAAComB,GAAK2nC,EAAAA,QAAAA;kBAAUG,MAAQF,EAAAA;EAAW,aAAA;EACpD;UACA,OAAO16C,OAAAA;EACT,KAAA,CAAA;MAEF,OAAO;EAACi6C,QAAAA,SAAAA;EAAWI,QAAAA,YAAAA;EAAcj6C,QAAAA;EAAS,KAAA;EAE5C;;EC9BA,MAAMy6C,iBAAoB,GAAA;MACxBjqC,KAAO,EAAA,OAAA;MACPC,SAAW,EAAA;UACT/c,MAAQ,EAAA;EACV,KAAA;MACAkd,QAAU,EAAA,CAAA;MACVrV,OAAS,EAAA,CAAA;MACTkQ,YAAc,EAAA,CAAA;MACdE,YAAc,EAAA,CAAA;MACdzY,KAAO,EAAA,MAAA;MACPue,QAAU,EAAA;EACZ,CAAA;EAOe,MAAMipC,MAAe9lB,SAAAA,GAAAA,CAAAA;EAmClC;;;;OAKAyB,KAAAA,CAAMhpC,QAAQ,EAAE;EAEd,QAAA,MAAM,EAACwsD,SAAS,EAAEI,YAAY,EAAEj6C,SAAS,EAAC,GAAG6jC,QAAAA,CAASr3C,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAAC+oC,aAAa,CAAA;UAEnF,IAAI,CAACskB,UAAUpvD,MAAM,IAAI,CAACwvD,YAAaxvD,CAAAA,MAAM,EAAE,OAAO,IAAI;EAE1D,QAAA,MAAMqF,SAAS,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,EAC9D1d,MAAAA,GAAS,IAAI,CAACsC,OAAO,EACrBmB,UAAAA,GAAa,IAAI,CAACqI,WAAW,EAC7BjH,KAAQ,GAAA,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;EAElE,QAAA,MAAMklB,MAAS,GAAA;cAACp9B,OAAS,EAAA;EAAC,SAAA;EAC1B,QAAA,MAAMo2B,OAAU,GAAA;cAACp2B,OAAS,EAAA;EAAC,SAAA;EAE3B,QAAA,MAAMoqD,cAAiB9qD,GAAAA,KAAAA,GAAQoqD,YAAaxvD,CAAAA,MAAM,GAAG,GAAA;EAErD,QAAA,MAAMmwD,UAAa,GAAA,CAAC1xB,IAAM2xB,EAAAA,IAAAA,GAASjpD,QAAK,CAAA,CAAC,gBAAgB,EAAEs3B,IAAM,CAAA,CAAA,EAAE3/B,MAAOgB,CAAAA,MAAM,CAAC;EAACS,gBAAAA,MAAAA;EAAQyD,gBAAAA;EAAU,aAAA,EAAGosD,OAAOhtD,IAAI,EAAA;EAElH,QAAA,IAAI,CAACitD,QAAQ,CACVvtD,MAAM,CAACqtD,WAAW,KAAO,EAAA;cAAC1sD,KAAOy/B,EAAAA,MAAAA;cAAQh/B,MAAQg/B,EAAAA;EAAM,SAAA,CAAA,CAAA,CACvD5pB,MAAM,CAAC81C,SAAAA,CAAAA,CACP/pD,MAAM,CAACA,MAAAA,GAAS,IAAI,CAACoW,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,GAAG,IAAI,CAACR,QAAQ,CAACQ,MAAM,GAAG,IAAI,CAACR,QAAQ,CAACM,GAAG,CAAA,CACjGsI,OAAO,CAACjhB,KAAAA,GAAQ,GAChBA,KAAK,CAACA,OACN7F,MAAM,CAAC,IAAI,CAAC+wD,UAAU,EACtB3tD,MAAM,EAAA;EAET,QAAA,MAAM4tD,aAAa,IAAI,CAACF,QAAQ,CAAC7pC,WAAW,GAAGphB,KAAK;EACpD,QAAA,IAAI,CAACqY,QAAQ,CAACS,IAAI,IAAIqyC,UAAAA;UACtB,IAAIC,eAAAA,GAAkB,CAAC,aAAa,EAAE,IAAI,CAAC/0C,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC;UACzD,MAAM0yC,eAAAA,GAAkB3xD,MAAOgB,CAAAA,MAAM,CAAC;cAACqvB,SAAWqhC,EAAAA;WAAkBttB,EAAAA,MAAAA,CAAAA;EAEpE,QAAA,IAAI,CAACwtB,WAAW,CACb5tD,MAAM,CAACqtD,WAAW,QAAU,EAAA;cAAC1sD,KAAOgtD,EAAAA,eAAAA;cAAiBvsD,MAAQusD,EAAAA;EAAe,SAAA,CAAA,CAAA,CAC5En3C,MAAM,CAACk2C,YACPj2C,CAAAA,CAAAA,KAAK,CAAC;cAAC,IAAI,CAACkC,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACT,QAAQ,CAACS,IAAI;cAAE9Y,KAAQ,GAAA,IAAI,CAACqW,OAAO,CAACuC,KAAK,GAAG,IAAI,CAACP,QAAQ,CAACO;EAAM,SAAA,CAAA,CAChG3Y,MAAM,CAACA,MAAAA,CAAAA,CACPghB,OAAO,CAAChhB,MAAAA,GAAS,GACjBD,KAAK,CAACA,OACNghB,aAAa,CAAC8pC,gBACd3wD,MAAM,CAAC,IAAI,CAACoxD,aAAa,EACzBhuD,MAAM,EAAA;EAET,QAAA,MAAMiuD,gBAAgB,IAAI,CAACF,WAAW,CAAClqC,WAAW,GAAGnhB,MAAM;EAC3D,QAAA,IAAI,CAACoY,QAAQ,CAACM,GAAG,IAAI6yC,aAAAA;EAErB,QAAA,KAAK,CAAChlB,KAAMhpC,CAAAA,QAAAA,CAAAA;EAEZ,QAAA,MAAMiuD,eAAe,CAAC,UAAU,EAAE,IAAI,CAACp1C,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC;UAC3EyyC,eAAkB,GAAA,CAAC,aAAa,EAAE,IAAI,CAAC/0C,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC;UACrD,MAAM+yC,gBAAAA,GAAmBhyD,MAAOgB,CAAAA,MAAM,CAAC;cAACqvB,SAAWqhC,EAAAA;WAAkBt0B,EAAAA,OAAAA,CAAAA;EAErE,QAAA,IAAI,CAACm0B,QAAQ,CACVvtD,MAAM,CAACqtD,WAAW,KAAO,EAAA;cAACjsD,MAAQpF,EAAAA,MAAAA,CAAOgB,MAAM,CAAC;kBAACqvB,SAAW0hC,EAAAA;eAAe30B,EAAAA,OAAAA;WAC3E72B,CAAAA,CAAAA,CAAAA,MAAM,CAACA,MAAAA,GAAS,IAAI,CAACoW,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,GAAG,IAAI,CAACR,QAAQ,CAACQ,MAAM,CAAA,CAC7EoI,OAAO,CAACkqC,UACRh3C,CAAAA,CAAAA,KAAK,CAAC;EAACq3C,YAAAA,aAAAA,GAAgB,IAAI,CAACF,WAAW,CAAC5/C,OAAO,EAAA;EAAIrT,YAAAA;EAAU,SAAA,CAAA,CAC7DkF,MAAM,EAAA;EAET,QAAA,IAAI,CAAC+tD,WAAW,CACb5tD,MAAM,CAACqtD,WAAW,QAAU,EAAA;cAACjsD,MAAQ4sD,EAAAA;EAAgB,SAAA,CAAA,CAAA,CACrDv3C,KAAK,CAAC;EAAC,YAAA,IAAI,CAACkC,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACT,QAAQ,CAACS,IAAI,GAAG,IAAI,CAACmyC,QAAQ,CAACv/C,OAAO,EAAA;cAAI1L,KAAQ,GAAA,IAAI,CAACqW,OAAO,CAACuC,KAAK,GAAG,IAAI,CAACP,QAAQ,CAACO;WAAM,CAC1HqI,CAAAA,OAAO,CAACuqC,aAAAA,CAAAA,CACRjuD,MAAM,EAAA;UAET,MAAMouD,QAAAA,GAAW,IAAI,CAACV,QAAQ,CAACn0C,YAAY,CAACna,IAAI,CAAC,IAAI,CAACsuD,QAAQ,CAAA;UAC9D,MAAMW,WAAAA,GAAc,IAAI,CAACN,WAAW,CAACx0C,YAAY,CAACna,IAAI,CAAC,IAAI,CAAC2uD,WAAW,CAAA;EACvE,QAAA,MAAMO,aAAa7B,SAAUpvD,CAAAA,MAAM,GAAG,CAClC+wD,GAAAA,QAAAA,CAAS3B,SAAS,CAAC,CAAA,CAAE,IAAI2B,QAAS3B,CAAAA,SAAS,CAAC,CAAE,CAAA,CAAA,GAC9C,IAAI,CAACiB,QAAQ,CAAChrD,MAAM,EAAA;EACxB,QAAA,MAAM6rD,YAAY1B,YAAaxvD,CAAAA,MAAM,GAAG,CACpCgxD,GAAAA,WAAAA,CAAYxB,YAAY,CAAC,CAAA,CAAE,IAAIwB,WAAYxB,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAA,GAC1D,IAAI,CAACkB,WAAW,CAACtrD,KAAK,EAAA;UAE1B,MAAM+pB,SAAAA,GAAY,CAAC,aAAa,EAAE,IAAI,CAAC1T,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC;UACrD,MAAMjG,UAAAA,GAAa5W,UAAWa,CAAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAACnB,YAAY,EAAE,OAAS,EAAA,MAAA,CAAA;EAErE,QAAA,IAAI,CAACmpB,OAAO,CAAC3e,IAAI,CAAC,IAAIkI,IACnBzR,EAAAA,CAAAA,IAAI,CAAC0T,SAAAA,CAAAA,CACLzS,MAAM,CAACqE,SAAK,uBAAyB,EAAA;cACpC5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;cACpBY,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cACjBjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;WACjB/rB,CAAAA,CAAAA,IAAI,EACN7D,CAAAA,CAAAA,MAAM,CAAC;cACN8F,MAAQ4rD,EAAAA,UAAAA,GAAa,IAAI,CAACE,YAAY;cACtC/rD,KAAO8rD,EAAAA,SAAAA,GAAY,IAAI,CAACC,YAAY;EACpClrD,YAAAA,CAAAA,EAAGvI,CAAAA,CAAKszD,GAAAA,WAAAA,CAAYtzD,CAAEqyD,CAAAA,MAAM,IAAImB,SAAY,GAAA,CAAA;EAC5ChrD,YAAAA,CAAAA,EAAGxI,CAAAA,CAAKqzD,GAAAA,QAAAA,CAASrzD,CAAEuqB,CAAAA,GAAG,IAAIgpC,UAAa,GAAA;WAExC1xD,CAAAA,CAAAA,MAAM,CAACuY,UAAAA,CAAAA,CACPnV,MAAM,EAAA,CAAA;EAET,QAAA,OAAO,IAAI;EAEb;EAEA;;;;OAKAyuD,WAAAA,CAAY5xD,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACmxD,YAAY,GAAG3xD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC2xD,YAAY;EAC7E;EAEA;;;;;;;;OASApB,MAAAA,CAAOvwD,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0vD,OAAO,GAAG,OAAOlwD,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkwD,OAAO;EAC3G;EAEA;;;;;OAMA2B,YAAAA,CAAa7xD,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2wD,aAAa,GAAG7wD,UAAAA,CAAO,IAAI,CAAC6wD,aAAa,EAAEnxD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmxD,aAAa;EAC3G;EAEA;;;;OAKAW,UAAAA,CAAW9xD,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACyvD,WAAW,GAAGjwD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACiwD,WAAW;EAC3E;EAEA;;;;;;;;OASA8B,UAAAA,CAAW/xD,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2vD,WAAW,GAAGnwD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmwD,WAAW;EAC3E;EAEA;;;;;;;;OASA1nC,GAAAA,CAAIzoB,CAAC,EAAE;EACL,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACsvD,IAAI,GAAG,OAAO9vD,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC8vD,IAAI;EACrG;EAEA;;;;;OAMAkC,SAAAA,CAAUhyD,CAAC,EAAE;EACX,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACswD,UAAU,GAAGxwD,UAAAA,CAAO,IAAI,CAACwwD,UAAU,EAAE9wD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC8wD,UAAU;EAClG;EAEA;;;;OAKAmB,OAAAA,CAAQjyD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACqvD,QAAQ,GAAG7vD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC6vD,QAAQ;EACrE;EAEA;;;;;;;;OASAqC,OAAAA,CAAQlyD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuvD,QAAQ,GAAG/vD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+vD,QAAQ;EACrE;EAxOA;;;;EAIA,KACA1uD,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACswD,YAAY,GAAG,CAAA;UAEpB,IAAI,CAACzB,OAAO,GAAGvpD,QAAS,CAAA,QAAA,CAAA;UACxB,IAAI,CAACuqD,WAAW,GAAG,IAAIv1C,IAAAA,EAAAA;UACvB,IAAI,CAACw1C,aAAa,GAAG7wD,UAAO,CAAA;cAAC6U,MAAQ,EAAA;WAAQq7C,EAAAA,iBAAAA,CAAAA;EAC7C,QAAA,IAAI,CAACL,WAAW,GAAG,CAACljD,CAAGZ,EAAAA,CAAAA,GAAM,CAAGY,EAAAA,CAAAA,CAAAA,CAAG,CAACwnC,aAAa,CAAC,CAAA,EAAGpoC,CAAG,CAAA,CAAA,CAAA;UAExD,IAAI,CAACJ,MAAM,GAAG,CAAC/N,CAAAA,EAAGgE,IAAM,CAAGiwD,EAAAA,OAAAA,CAAQ5vD,IAAI,CAAC,IAAI,CAAA,CAAE,OAAOrE,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG,GAAG,EAAEiwD,OAAQ5vD,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,QAAUrE,EAAAA,CAAAA,EAAGgE,CAAI,CAAA,CAAA,CAAA;EAEpG,QAAA,MAAMkwD,qBAAwB,GAAA,IAAI,CAAC3xD,GAAG,CAAC,iBAAkB,CAAA;UACzD,IAAI,CAACA,GAAG,CAAC,iBAAA,CAAkB,GAAG,CAACvC,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,GAAAA;cACtC0vD,qBAAsBl0D,CAAAA,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;EAC/B,YAAA,MAAM+lB,MAAM0pC,OAAQ5vD,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,OAAOrE,CAAGgE,EAAAA,CAAAA,CAAAA;EACzC,YAAA,MAAMquD,SAAS4B,OAAQ5vD,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,UAAUrE,CAAGgE,EAAAA,CAAAA,CAAAA;cAC/C,IAAI,CAACyN,KAAK,CAAC,CAACT,GAAGmjD,EAAOF,GAAAA,OAAAA,CAAQ5vD,IAAI,CAAC,IAAI,CAAA,CAAE,OAAO2M,CAAGmjD,EAAAA,EAAAA,CAAAA,KAAQ5pC,OAAO0pC,OAAQ5vD,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,QAAU2M,EAAAA,CAAAA,EAAGmjD,EAAQ9B,CAAAA,KAAAA,MAAAA,CAAAA;EAC5G,SAAA;UAEA,IAAI,CAACT,IAAI,GAAGnpD,QAAS,CAAA,KAAA,CAAA;UACrB,IAAI,CAACkqD,QAAQ,GAAG,IAAIl1C,IAAAA,EAAAA;UACpB,IAAI,CAACm1C,UAAU,GAAGxwD,UAAO,CAAA;cAAC6U,MAAQ,EAAA;WAASq7C,EAAAA,iBAAAA,CAAAA;EAC3C,QAAA,IAAI,CAACT,QAAQ,GAAG,CAAC9iD,CAAGZ,EAAAA,CAAAA,GAAM,CAAGY,EAAAA,CAAAA,CAAAA,CAAG,CAACwnC,aAAa,CAAC,CAAA,EAAGpoC,CAAG,CAAA,CAAA,CAAA;EAEvD;EA2MF;;ECxPA;;;EAGC,IACD,SAASimD,SAAAA,CAAUp0D,CAAC,EAAEgE,CAAC,EAAA;MACrB,OAAO,CAAA,EAAG,IAAI,CAAC8B,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA,IAAM,IAAI,CAACqwD,YAAY,CAAC9qD,WAAI,CAAA;AAAC,QAAA,IAAI,CAACg8B,UAAU;AAAE,QAAA,IAAI,CAAC8uB,YAAY,CAAC/xD,MAAM,GAAG;KAAE,CAAE,CAAA,CAACtC,GAAGgE,CAAI,CAAA,CAAA,CAAA;EAC7G;EAOe,MAAMswD,OAAgB7nB,SAAAA,GAAAA,CAAAA;EAsLnC;;;OAIAyB,KAAAA,CAAMhpC,QAAQ,EAAE;EAEd,QAAA,KAAK,CAACgpC,KAAMhpC,CAAAA,QAAAA,CAAAA;UAEZ,MAAMtB,QAAAA,GAAW,IAAI,CAACC,SAAS,EACzB8D,MAAS,GAAA,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,EAC9DkR,SAAAA,GAAY,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC,EAClE3Y,KAAAA,GAAQ,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;UAElE,MAAMnc,IAAAA,GAAO,IAAI,CAACipC,aAAa,CAAClxB,MAAM,CAAC,CAAC1b,GAAAA,EAAKR,CAAGgE,EAAAA,CAAAA,GAAAA;EAC9CxD,YAAAA,GAAG,CAAC,IAAI,CAACsF,GAAG,CAAC9F,CAAAA,EAAGgE,GAAG,GAAGhE,CAAAA;cACtB,OAAOQ,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;UAEJ,IAAI+zD,KAAAA,GAAQ,IAAI,CAACC,MAAM,CAACt4C,MAAM,CAAC,CAAC1b,GAAAA,EAAKR,CAAGgE,EAAAA,CAAAA,GAAAA;cACtCxD,GAAG,CAAC4zD,UAAU/vD,IAAI,CAAC,IAAI,CAAErE,CAAAA,CAAAA,EAAGgE,GAAG,GAAGhE,CAAAA;cAClC,OAAOQ,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;EAEJ+zD,QAAAA,KAAAA,GAAQ3vD,MAAM8pB,IAAI,CAAC,IAAID,GAAIrtB,CAAAA,MAAAA,CAAO2H,IAAI,CAAC5E,IAAAA,CAAAA,CAAMhD,MAAM,CAACC,OAAO2H,IAAI,CAACwrD,UAAU5vD,GAAG,CAAC,CAACwD,EAAInE,EAAAA,CAAAA,GAAAA;cACjF,MAAMhE,CAAAA,GAAImE,IAAI,CAACgE,EAAAA,CAAG,EACZgU,CAAIo4C,GAAAA,KAAK,CAACpsD,EAAG,CAAA;cAEnB,IAAIgU,CAAAA,KAAMpc,WAAW,OAAO,KAAA;cAE5B,OAAO;kBACLkE,UAAY,EAAA,IAAA;EACZE,gBAAAA,IAAAA,EAAMnE,CAAKmc,IAAAA,CAAAA;EACXnY,gBAAAA,CAAAA;EAAGmE,gBAAAA,EAAAA;EACHssD,gBAAAA,EAAAA,EAAIz0D,MAAMD,SAAa,IAAA,CAAC4gB,KAAM,CAAA,IAAI,CAAC1a,EAAE,CAACjG,CAAM,CAAA,CAAA,GAAA,IAAI,CAACiG,EAAE,CAACjG,KAAK,IAAI,CAACiG,EAAE,CAACkW,CAAAA,CAAAA;EACjEu4C,gBAAAA,EAAAA,EAAI10D,MAAMD,SAAa,IAAA,CAAC4gB,KAAM,CAAA,IAAI,CAACxa,EAAE,CAACnG,CAAM,CAAA,CAAA,GAAA,IAAI,CAACmG,EAAE,CAACnG,KAAK,IAAI,CAACmG,EAAE,CAACgW,CAAAA,CAAAA;kBACjEzW,IAAMyW,EAAAA,CAAAA;kBACN3O,CAAG,EAAA,IAAI,CAAC8jB,KAAK,GAAGtxB,CAAAA,KAAMD,aAAa,IAAI,CAACuxB,KAAK,CAACtxB,CAAOD,CAAAA,KAAAA,SAAAA,GAAY,IAAI,CAACuxB,KAAK,CAACtxB,CAAAA,CAAAA,GAAK,IAAI,CAACsxB,KAAK,CAACnV,CAAAA,CAAAA,GAAK,IAAI,CAACkgC,QAAQ;EAC9GhzB,gBAAAA,KAAAA,EAAOrpB,MAAMD,SAAa,IAAA,IAAI,CAACmgB,MAAM,CAAClgB,CAAOD,CAAAA,KAAAA,SAAAA,GAAY,IAAI,CAACmgB,MAAM,CAAClgB,CAAAA,CAAAA,GAAK,IAAI,CAACkgB,MAAM,CAAC/D,CAAAA;EACxF,aAAA;WAEC3a,CAAAA,CAAAA,MAAM,CAAC2a,CAAAA,CAAKA,GAAAA,CAAAA,CAAAA;UAEf,MAAMw4C,UAAAA,GAAa,IAAI,CAACC,WAAW,GAAGL,KAAMr4C,CAAAA,MAAM,CAAC,CAAC1b,GAAKR,EAAAA,CAAAA,GAAAA;EACvDQ,YAAAA,GAAG,CAACR,CAAAA,CAAEmI,EAAE,CAAC,GAAGnI,CAAAA;cACZ,OAAOQ,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;EAEJ,QAAA,MAAMq0D,cAAcN,KAAM5vD,CAAAA,GAAG,CAACwX,CAAAA,CAAAA,GAAKA,EAAEzW,IAAI,CAAA;EACzC,QAAA,MAAMovD,QAAQ,IAAI,CAACC,MAAM,CAACpwD,GAAG,CAACuJ,CAAAA,CAAAA,GAAAA;cAC5B,MAAM8mD,aAAAA,GAAgB,OAAO9mD,CAAAA,CAAE+mD,MAAM;cACrC,OAAO;kBACLvrD,IAAM,EAAA,IAAI,CAACwrD,SAAS,CAAChnD,CAAAA,CAAAA;EACrB+mD,gBAAAA,MAAAA,EAAQD,aAAkB,KAAA,QAAA,GACtBT,KAAK,CAACM,WAAYnzD,CAAAA,OAAO,CAAC,IAAI,CAAC8yD,MAAM,CAACtmD,CAAAA,CAAE+mD,MAAM,CAAC,CAAA,CAAE,GACjDD,aAAAA,KAAkB,QAChBL,GAAAA,UAAU,CAACzmD,CAAAA,CAAE+mD,MAAM,CAAC,GACpBN,UAAU,CAACzmD,CAAAA,CAAE+mD,MAAM,CAAC9sD,EAAE,CAAC;EAC7BgtD,gBAAAA,MAAAA,EAAQH,aAAkB,KAAA,QAAA,GACtBT,KAAK,CAACM,WAAYnzD,CAAAA,OAAO,CAAC,IAAI,CAAC8yD,MAAM,CAACtmD,CAAAA,CAAEinD,MAAM,CAAC,CAAA,CAAE,GACjDH,aAAAA,KAAkB,QAChBL,GAAAA,UAAU,CAACzmD,CAAAA,CAAEinD,MAAM,CAAC,GACpBR,UAAU,CAACzmD,CAAAA,CAAEinD,MAAM,CAAChtD,EAAE;EAC9B,aAAA;EACF,SAAA,CAAA;EAEA,QAAA,IAAI,CAACitD,WAAW,GAAGN,MAAM54C,MAAM,CAAC,CAAC1b,GAAKR,EAAAA,CAAAA,GAAAA;EACpC,YAAA,IAAI,CAACQ,GAAG,CAACR,CAAEi1D,CAAAA,MAAM,CAAC9sD,EAAE,CAAC,EAAE3H,GAAG,CAACR,CAAEi1D,CAAAA,MAAM,CAAC9sD,EAAE,CAAC,GAAG,EAAE;cAC5C3H,GAAG,CAACR,CAAEi1D,CAAAA,MAAM,CAAC9sD,EAAE,CAAC,CAACuF,IAAI,CAAC1N,CAAAA,CAAEm1D,MAAM,CAAA;EAC9B,YAAA,IAAI,CAAC30D,GAAG,CAACR,CAAEm1D,CAAAA,MAAM,CAAChtD,EAAE,CAAC,EAAE3H,GAAG,CAACR,CAAEm1D,CAAAA,MAAM,CAAChtD,EAAE,CAAC,GAAG,EAAE;cAC5C3H,GAAG,CAACR,CAAEm1D,CAAAA,MAAM,CAAChtD,EAAE,CAAC,CAACuF,IAAI,CAAC1N,CAAAA,CAAEi1D,MAAM,CAAA;cAC9B,OAAOz0D,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;EAEJ,QAAA,MAAM60D,aAAgBd,GAAAA,KAAAA,CAAMj3C,IAAI,CAACnB,CAAAA,CAAAA,GAAKA,CAAEs4C,CAAAA,EAAE,KAAK10D,SAAAA,IAAaoc,CAAEu4C,CAAAA,EAAE,KAAK30D,SAAAA,CAAAA;EAErE,QAAA,IAAIs1D,aAAe,EAAA;EAEjB,YAAA,MAAMC,YAAe55C,GAAAA,iBAAAA,CAAOC,WAAW,EAAA,CACpCC,MAAM,CAAC1H,cAAAA,CAAO4gD,KAAO90D,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAE0J,IAAI,CAAA,CAAA,CAChCmS,KAAK,CAAC;EAAC,gBAAA,GAAA;EAAK,gBAAA;EAAI,aAAA,CAAA;EAEnB,YAAA,MAAM05C,aAAaC,uBAChBC,EAAAA,CAAAA,KAAK,CAAC,MAAA,EAAQC,kBAAUZ,KACtB3sD,CAAAA,CAAAA,EAAE,CAACnI,CAAAA,IAAKA,CAAEmI,CAAAA,EAAE,CACZ8T,CAAAA,QAAQ,CAAC,CACT05C,CAAAA,CAAAA,QAAQ,CAAC31D,CAAAA,IAAKs1D,YAAat1D,CAAAA,CAAAA,CAAE0J,IAAI,CAAA,CAAA,CACjCksD,UAAU,CAAC,CAAA,CAAA,CAAA,CAEbH,KAAK,CAAC,UAAUI,qBAAgBF,EAAAA,CAAAA,QAAQ,CAAC,KACzCG,IAAI,EAAA;EAEP,YAAA,MAAMF,UAAa,GAAA,GAAA;EACnB,YAAA,MAAMG,QAAW,GAAA,KAAA;EACjB,YAAA,MAAMC,aAAa,CAAI91D,GAAAA,IAAAA,CAAK4a,GAAG,CAACi7C,UAAU,CAAIH,GAAAA,UAAAA,CAAAA;EAC9CL,YAAAA,UAAAA,CAAWU,aAAa,CAAC,CAAA,CAAA;EACzBV,YAAAA,UAAAA,CAAWQ,QAAQ,CAACA,QAAAA,CAAAA;EACpBR,YAAAA,UAAAA,CAAWS,UAAU,CAACA,UAAAA,CAAAA;EACtBT,YAAAA,UAAAA,CAAWS,UAAU,CAAC,CAAA,CAAA;EAEtBT,YAAAA,UAAAA,CAAWhB,KAAK,CAACA,KAAAA,CAAAA;cACjBgB,UAAWh0C,CAAAA,IAAI,CAACq0C,UAAAA,CAAAA,CAAYE,IAAI,EAAA;EAEhC,YAAA,MAAMI,aAAgB3B,GAAAA,KAAAA,CAAM5vD,GAAG,CAACwX,CAAAA,CAAK,GAAA;EAACA,oBAAAA,CAAAA,CAAEg6C,EAAE;EAAEh6C,oBAAAA,CAAAA,CAAEi6C;EAAG,iBAAA,CAAA;EACjD,YAAA,IAAI/nD,KAAQ,GAAA,CAAA,EAAG2G,EAAK,GAAA,CAAA,EAAGC,EAAK,GAAA,CAAA;cAC5B,IAAIihD,aAAAA,CAAc5zD,MAAM,KAAK,CAAG,EAAA;kBAC9B+L,KAAQ,GAAA,GAAA;EACV,aAAA,MACK,IAAI6nD,aAAAA,CAAc5zD,MAAM,GAAG,CAAG,EAAA;EACjC,gBAAA,MAAM+zD,OAAOC,qBAAYJ,CAAAA,aAAAA,CAAAA;EACzB,gBAAA,MAAMK,IAAOz/C,GAAAA,SAAkB,CAACu/C,IAAM,EAAA;sBAACG,OAAS,EAAA;EAAI,iBAAA,CAAA;EACpDnoD,gBAAAA,KAAAA,GAAQkoD,KAAKloD,KAAK;EAClB2G,gBAAAA,EAAAA,GAAKuhD,KAAKvhD,EAAE;EACZC,gBAAAA,EAAAA,GAAKshD,KAAKthD,EAAE;EACd;cAEAs/C,KAAMtyD,CAAAA,OAAO,CAACka,CAAAA,CAAAA,GAAAA;kBACZ,MAAMvF,CAAAA,GAAIE,SAAkB,CAAC;EAACqF,oBAAAA,CAAAA,CAAEg6C,EAAE;EAAEh6C,oBAAAA,CAAAA,CAAEi6C;mBAAG,EAAE,MAAMl2D,IAAAA,CAAK+3B,EAAE,GAAG,GAAA,GAAM5pB,KAAI,CAAI,EAAA;EAAC2G,oBAAAA,EAAAA;EAAIC,oBAAAA;EAAG,iBAAA,CAAA;EACjFkH,gBAAAA,CAAAA,CAAEs4C,EAAE,GAAG79C,CAAC,CAAC,CAAE,CAAA;EACXuF,gBAAAA,CAAAA,CAAEu4C,EAAE,GAAG99C,CAAC,CAAC,CAAE,CAAA;EACb,aAAA,CAAA;EAEF;EAEA,QAAA,MAAM6/C,UAAUviD,cAAOqgD,CAAAA,KAAAA,CAAM5vD,GAAG,CAACwX,CAAAA,IAAKA,CAAEs4C,CAAAA,EAAE,CACpCiC,CAAAA,EAAAA,OAAAA,GAAUxiD,eAAOqgD,KAAM5vD,CAAAA,GAAG,CAACwX,CAAAA,CAAAA,GAAKA,EAAEu4C,EAAE,CAAA,CAAA;UAE1C,MAAMnsD,CAAAA,GAAImT,kBAAOC,WAAW,EAAA,CAAGC,MAAM,CAAC66C,OAAAA,CAAAA,CAAS56C,KAAK,CAAC;EAAC,YAAA,CAAA;EAAGnU,YAAAA;WAAM,CACzDc,EAAAA,CAAAA,GAAIkT,kBAAOC,WAAW,EAAA,CAAGC,MAAM,CAAC86C,OAAAA,CAAAA,CAAS76C,KAAK,CAAC;EAAC,YAAA,CAAA;EAAGlU,YAAAA;EAAO,SAAA,CAAA;UAEhE,MAAMgvD,SAAAA,GAAY,CAACF,OAAO,CAAC,EAAE,GAAGA,OAAO,CAAC,CAAA,CAAE,KAAKC,OAAO,CAAC,CAAE,CAAA,GAAGA,OAAO,CAAC,EAAE,CAAD,IAAM,CACrEE,EAAAA,WAAAA,GAAclvD,KAAQC,GAAAA,MAAAA;EAE5B,QAAA,IAAIgvD,YAAYC,WAAa,EAAA;cAC3B,MAAM5lD,CAAAA,GAAIrJ,SAASivD,WAAcD,GAAAA,SAAAA;EACjCnuD,YAAAA,CAAAA,CAAEqT,KAAK,CAAC;kBAAElU,CAAAA,MAAAA,GAASqJ,CAAAA,IAAK,CAAA;EAAGrJ,gBAAAA,MAAAA,GAAS,CAACA,MAASqJ,GAAAA,CAAAA,IAAK;EAAE,aAAA,CAAA;WAElD,MAAA;cACH,MAAMyE,CAAAA,GAAI/N,QAAQivD,SAAYC,GAAAA,WAAAA;EAC9BruD,YAAAA,CAAAA,CAAEsT,KAAK,CAAC;kBAAEnU,CAAAA,KAAAA,GAAQ+N,CAAAA,IAAK,CAAA;EAAG/N,gBAAAA,KAAAA,GAAQ,CAACA,KAAQ+N,GAAAA,CAAAA,IAAK;EAAE,aAAA,CAAA;EACpD;UAEA8+C,KAAMtyD,CAAAA,OAAO,CAACka,CAAAA,CAAAA,GAAAA;EACZA,YAAAA,CAAAA,CAAE5T,CAAC,GAAGA,CAAE4T,CAAAA,CAAAA,CAAEs4C,EAAE,CAAA;EACZt4C,YAAAA,CAAAA,CAAE3T,CAAC,GAAGA,CAAE2T,CAAAA,CAAAA,CAAEu4C,EAAE,CAAA;EACd,SAAA,CAAA;UAEA,MAAMxY,OAAAA,GAAUhoC,eAAOqgD,KAAM5vD,CAAAA,GAAG,CAACwX,CAAAA,CAAAA,GAAKA,EAAE3O,CAAC,CAAA,CAAA;EACzC,QAAA,IAAIqpD,IAAO,GAAA,IAAI,CAACza,QAAQ,IAAItjC,WAAI,CAAA;EAAC,YAAA,CAAA;EAAGvP,YAAAA,WAAAA,CAClC9C,cAAM8tD,KACH5vD,CAAAA,GAAG,CAACmyD,CAAAA,KAAMvC,KACR5vD,CAAAA,GAAG,CAACoyD,CAAAA,KAAMD,EAAOC,KAAAA,EAAAA,GAAK,IAAOjgD,GAAAA,SAAoB,CAAC;EAACggD,wBAAAA,EAAAA,CAAGvuD,CAAC;EAAEuuD,wBAAAA,EAAAA,CAAGtuD;uBAAE,EAAE;EAACuuD,wBAAAA,EAAAA,CAAGxuD,CAAC;EAAEwuD,wBAAAA,EAAAA,CAAGvuD;uBAAE,CAG/E,CAAA,CAAA,CAAA,CAAA,GAAA;EAAE,SAAA,CAAA;EAEN,QAAA,MAAMgF,CAAIkO,GAAAA,iBAAM,CAAC,CAAC,KAAK,EAAE,IAAI,CAACygC,UAAU,CAAC1rC,MAAM,CAAC,CAAGC,CAAAA,CAAAA,WAAW,EAAK,CAAA,EAAA,IAAI,CAACyrC,UAAU,CAACxrC,KAAK,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC,EAAA,CACjFiL,MAAM,CAACsgC,OAASrgC,CAAAA,CAAAA,KAAK,CAAC;cAACqgC,OAAO,CAAC,EAAE,KAAKA,OAAO,CAAC,CAAE,CAAA,GAAG2a,OAAOttD,WAAI,CAAA;kBAACstD,IAAO,GAAA,CAAA;EAAG,gBAAA,IAAI,CAACxa;EAAS,aAAA,CAAA;EAAGwa,YAAAA;EAAK,SAAA,CAAA,EACtG7W,UAAUz3C,CAAEqT,CAAAA,MAAM,EAClBskC,EAAAA,OAAAA,GAAU13C,EAAEoT,MAAM,EAAA;EAExB,QAAA,MAAMo7C,WAAWhX,OAAO,CAAC,CAAE,CAAA,GAAGA,OAAO,CAAC,CAAA,CAAE,EAClCiX,QAAAA,GAAW/W,OAAO,CAAC,CAAA,CAAE,GAAGA,OAAO,CAAC,CAAE,CAAA;UAExCqU,KAAMtyD,CAAAA,OAAO,CAACka,CAAAA,CAAAA,GAAAA;cACZ,MAAMzS,IAAAA,GAAO8D,CAAE2O,CAAAA,CAAAA,CAAE3O,CAAC,CAAA;cAClB,IAAIwyC,OAAO,CAAC,CAAE,CAAA,GAAGz3C,EAAEqyB,MAAM,CAACze,EAAE5T,CAAC,GAAGmB,OAAOs2C,OAAO,CAAC,EAAE,GAAGz3C,CAAAA,CAAEqyB,MAAM,CAACze,CAAAA,CAAE5T,CAAC,GAAGmB,IAAAA,CAAAA;cACnE,IAAIs2C,OAAO,CAAC,CAAE,CAAA,GAAGz3C,EAAEqyB,MAAM,CAACze,EAAE5T,CAAC,GAAGmB,OAAOs2C,OAAO,CAAC,EAAE,GAAGz3C,CAAAA,CAAEqyB,MAAM,CAACze,CAAAA,CAAE5T,CAAC,GAAGmB,IAAAA,CAAAA;cACnE,IAAIw2C,OAAO,CAAC,CAAE,CAAA,GAAG13C,EAAEoyB,MAAM,CAACze,EAAE3T,CAAC,GAAGkB,OAAOw2C,OAAO,CAAC,EAAE,GAAG13C,CAAAA,CAAEoyB,MAAM,CAACze,CAAAA,CAAE3T,CAAC,GAAGkB,IAAAA,CAAAA;cACnE,IAAIw2C,OAAO,CAAC,CAAE,CAAA,GAAG13C,EAAEoyB,MAAM,CAACze,EAAE3T,CAAC,GAAGkB,OAAOw2C,OAAO,CAAC,EAAE,GAAG13C,CAAAA,CAAEoyB,MAAM,CAACze,CAAAA,CAAE3T,CAAC,GAAGkB,IAAAA,CAAAA;EACrE,SAAA,CAAA;EAEA,QAAA,MAAMwtD,WAAWlX,OAAO,CAAC,CAAE,CAAA,GAAGA,OAAO,CAAC,CAAA,CAAE,EAClCmX,QAAAA,GAAWjX,OAAO,CAAC,CAAA,CAAE,GAAGA,OAAO,CAAC,CAAE,CAAA;EAExC2W,QAAAA,IAAAA,IAAQttD,WAAI,CAAA;cAACytD,QAAWE,GAAAA,QAAAA;cAAUD,QAAWE,GAAAA;EAAS,SAAA,CAAA;EACtD3pD,QAAAA,CAAAA,CAAEqO,KAAK,CAAC;cAACqgC,OAAO,CAAC,EAAE,KAAKA,OAAO,CAAC,CAAE,CAAA,GAAG2a,OAAOttD,WAAI,CAAA;kBAACstD,IAAO,GAAA,CAAA;EAAG,gBAAA,IAAI,CAACxa;EAAS,aAAA,CAAA;EAAGwa,YAAAA;EAAK,SAAA,CAAA;EACjFtuD,QAAAA,CAAAA,CAAEqT,MAAM,CAACokC,OAAAA,CAAAA;EACTx3C,QAAAA,CAAAA,CAAEoT,MAAM,CAACskC,OAAAA,CAAAA;EAET,QAAA,MAAMkX,iBAAiB,CAACT,YAAYC,WAAclvD,GAAAA,KAAAA,GAAQC,MAAK,IAAK,CAAA;UACpE4sD,KAAMtyD,CAAAA,OAAO,CAACka,CAAAA,CAAAA,GAAAA;EACZA,YAAAA,CAAAA,CAAE5T,CAAC,GAAGA,CAAE4T,CAAAA,CAAAA,CAAEs4C,EAAE,CAAA;cACZt4C,CAAEs4C,CAAAA,EAAE,GAAGt4C,CAAAA,CAAE5T,CAAC;EACV4T,YAAAA,CAAAA,CAAE3T,CAAC,GAAGA,CAAE2T,CAAAA,CAAAA,CAAEu4C,EAAE,CAAA;cACZv4C,CAAEu4C,CAAAA,EAAE,GAAGv4C,CAAAA,CAAE3T,CAAC;EACV2T,YAAAA,CAAAA,CAAE3O,CAAC,GAAGA,CAAE2O,CAAAA,CAAAA,CAAE3O,CAAC,CAAK4pD,IAAAA,cAAAA;EAChBj7C,YAAAA,CAAAA,CAAEzU,KAAK,GAAGyU,CAAE3O,CAAAA,CAAC,GAAG,CAAA;EAChB2O,YAAAA,CAAAA,CAAExU,MAAM,GAAGwU,CAAE3O,CAAAA,CAAC,GAAG,CAAA;EACnB,SAAA,CAAA;UAEA,IAAI,CAACm6B,UAAU,GAAG,IAAI,CAACxiC,OAAO,CAACS,SAAS,CAAC,oBAAsBzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;UAEvE,IAAI,CAACwjC,UAAU,GAAG,IAAI,CAACA,UAAU,CAAC5hC,KAAK,EAAGV,CAAAA,MAAM,CAAC,KAAA,CAAA,CAC5CW,IAAI,CAAC,OAAA,EAAS,gBACdA,CAAAA,CAAAA,IAAI,CAAC,SAAA,EAAW,CAChBA,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS0B,KACd1B,CAAAA,CAAAA,IAAI,CAAC,QAAA,EAAU2B,QACf3B,IAAI,CAAC,GAAK,EAAA,IAAI,CAAC+X,OAAO,CAACyC,IAAI,CAAA,CAC3Bxa,IAAI,CAAC,GAAK,EAAA,IAAI,CAAC+X,OAAO,CAACsC,GAAG,CAAA,CAC1B/a,KAAK,CAAC,kBAAoB,EAAA,aAAA,CAAA,CAC5BmB,KAAK,CAAC,IAAI,CAACkhC,UAAU,CAAA;EAExB,QAAA,IAAI,CAACA,UAAU,CAACrhC,UAAU,EAAA,CAAG1C,QAAQ,CAACA,QAAAA,CAAAA,CACnCoC,IAAI,CAAC,WAAW,CAChBA,CAAAA,CAAAA,IAAI,CAAC,OAAA,EAAS0B,OACd1B,IAAI,CAAC,QAAU2B,EAAAA,MAAAA,CAAAA,CACf3B,IAAI,CAAC,GAAA,EAAK,IAAI,CAAC+X,OAAO,CAACyC,IAAI,CAC3Bxa,CAAAA,IAAI,CAAC,GAAK,EAAA,IAAI,CAAC+X,OAAO,CAACsC,GAAG,CAAA;UAE7B,MAAMzO,OAAAA,GAAU,IAAI,CAAC+1B,UAAU,CAAC/hC,SAAS,CAAC,6BAA+BzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;UACjFyN,OAAQ7L,CAAAA,KAAK,EAAGV,CAAAA,MAAM,CAAC,MAAA,CAAA,CAClBW,IAAI,CAAC,OAAS,EAAA,wBAAA,CAAA,CAChBS,KAAK,CAACmL,OACJ5L,CAAAA,CAAAA,IAAI,CAAC,OAAS0B,EAAAA,KAAAA,CAAAA,CACd1B,IAAI,CAAC,QAAU2B,EAAAA,MAAAA,CAAAA,CACf3B,IAAI,CAAC,MAAQ,EAAA,aAAA,CAAA,CACbrD,EAAE,CAAC,OAAS,EAAA,IAAA;cACX,IAAI,IAAI,CAAC00D,MAAM,EAAE;kBACf,IAAI,CAACnmD,MAAM,CAAC,KAAA,CAAA;kBACZ,IAAI,CAACmmD,MAAM,GAAGt3D,SAAAA;kBACd,IAAI,CAACqoC,aAAa,CAAC,IAAA,CAAA;EACrB;EACF,SAAA,CAAA;UAEJ,IAAI,CAACR,UAAU,GAAG,IAAI,CAACD,UAAU,CAAC/hC,SAAS,CAAC,4BAA8BzB,CAAAA,CAAAA,IAAI,CAAC;EAAC,YAAA;EAAE,SAAA,CAAA;UAClF,MAAMtB,MAAAA,GAAS,IAAI,CAAC+kC,UAAU,GAAG,IAAI,CAACA,UAAU,CAAC7hC,KAAK,EAAA,CAAGV,MAAM,CAAC,GAAA,CAAA,CAC3DW,IAAI,CAAC,OAAA,EAAS,4BAChBS,KAAK,CAAC,IAAI,CAACmhC,UAAU,CAAA;EAExB,QAAA,MAAM0vB,eAAepjD,cAAO4gD,CAAAA,KAAAA,EAAO90D,CAAAA,CAAAA,GAAKA,EAAE0J,IAAI,CAAA;EAC9C,QAAA,IAAI4tD,YAAY,CAAC,CAAA,CAAE,KAAKA,YAAY,CAAC,EAAE,EAAE;EACvC,YAAA,MAAMC,WAAc77C,GAAAA,iBAAM,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC87C,cAAc,CAAC/mD,MAAM,CAAC,CAAGC,CAAAA,CAAAA,WAAW,EAAK,CAAA,EAAA,IAAI,CAAC8mD,cAAc,CAAC7mD,KAAK,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC,EAAA,CAC7GiL,MAAM,CAAC07C,YACPz7C,CAAAA,CAAAA,KAAK,CAAC;EAAC,gBAAA,IAAI,CAAC47C,YAAY;kBAAEjqD,CAAEqO,CAAAA,KAAK,EAAE,CAAC,CAAE;EAAC,aAAA,CAAA;cAC1Ci5C,KAAM7yD,CAAAA,OAAO,CAAC8E,CAAAA,IAAAA,GAAAA;EACZA,gBAAAA,IAAAA,CAAK2C,IAAI,GAAG6tD,WAAYxwD,CAAAA,IAAAA,CAAK2C,IAAI,CAAA;EACnC,aAAA,CAAA;EACF;UAEA,MAAMguD,UAAAA,GAAal0D,UAAWa,CAAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAACnB,YAAY,EAAE,MAAQ,EAAA,MAAA,CAAA;EACpE,QAAA,OAAOw0D,WAAW/0D,EAAE;UAEpB,IAAI,CAAC0pB,OAAO,CAAC3e,IAAI,CAAC,IAAIoJ,IAAW,EAC9BjV,CAAAA,MAAM,CAAC61D,UACPplD,CAAAA,CAAAA,WAAW,CAACtS,CAAAA,CAAAA,GAAKA,EAAE0J,IAAI,CAAA,CACvB0H,WAAW,CAAC;cACX,cAAgBpR,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAE0J;EACzB,SAAA,CAAA,CACC1J,CAAC,CAACA,CAAAA,IAAK,CAAC,CAAC,EAAEA,CAAEi1D,CAAAA,MAAM,CAAC1sD,CAAC,CAAC,CAAC,EAAEvI,EAAEi1D,MAAM,CAACzsD,CAAC,CAAC,CAAC,EAAExI,CAAAA,CAAEm1D,MAAM,CAAC5sD,CAAC,CAAC,CAAC,EAAEvI,EAAEm1D,MAAM,CAAC3sD,CAAC,CAAA,CAAE,EACjErE,IAAI,CAAC2wD,OACL1vD,MAAM,CAACqE,SAAK,wBAA0B,EAAA;EAAC5G,YAAAA,MAAAA;EAAQe,YAAAA,QAAAA;cAAUmC,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cAAGjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;WAAI/rB,CAAAA,CAAAA,IAAI,IACvGT,MAAM,EAAA,CAAA;EAET,QAAA,MAAMhC,WAAc,GAAA;EAClB4O,YAAAA,KAAAA,EAAO7R,CAAAA,CAAKu0D,GAAAA,KAAAA,CAAMjyD,MAAM,IAAI,IAAI,CAACqrC,WAAW,IAAK,IAAI,CAAC/gC,MAAM,IAAI,IAAI,CAACA,MAAM,CAAC5M,CAAM,CAAA,IAAA,IAAI,CAACqM,OAAO,IAAI,IAAI,CAACA,OAAO,CAACrM,CAAAA,CAAAA,GAAM,IAAI,CAAC8kC,UAAU,CAAC9kC,CAAAA,CAAEmE,IAAI,IAAInE,CAAAA,CAAE0F,IAAI,EAAE1F,CAAAA,CAAEgE,CAAC,CAAI,GAAA,KAAA;EAC9JoB,YAAAA,MAAAA,EAAQqE,SAAK,wBAA0B,EAAA;EAAC5G,gBAAAA,MAAAA;EAAQe,gBAAAA,QAAAA;kBAAUmC,KAAO,EAAA;EAAC0rB,oBAAAA;EAAS,iBAAA;kBAAGjrB,MAAQ,EAAA;EAACirB,oBAAAA;EAAS;EAAC,aAAA,CAAA,CAAG/rB,IAAI;EAC1G,SAAA;EAEAhC,QAAAA,iBAAAA,EAAAA,CAAO7D,GAAG,CAACG,CAAAA,CAAAA,GAAKA,CAAEqpB,CAAAA,KAAK,CAAEpV,CAAAA,OAAO,CAACsgD,KAAAA,CAAAA,CAAOtyD,OAAO,CAACjC,CAAAA,CAAAA,GAAAA;cAC9C,IAAI,CAACqsB,OAAO,CAAC3e,IAAI,CAAC,IAAIoJ,MAAM,CAAC9W,CAAEH,CAAAA,GAAG,CAAC,EAChCgC,CAAAA,MAAM,CAAC2B,UAAWa,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACnB,YAAY,EAAE,OAASlD,EAAAA,CAAAA,CAAEH,GAAG,CAC9DgC,CAAAA,CAAAA,MAAM,CAACoB,WACPpB,CAAAA,CAAAA,MAAM,CAACoB,WAAW,CAACjD,EAAEH,GAAG,CAAC,IAAI,EAAC,CAAA,CAC9BsE,IAAI,CAACnE,CAAAA,CAAEiJ,MAAM,CAAA,CACbhE,MAAM,EAAA,CAAA;EACX,SAAA,CAAA;EAEA,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;QAMAwM,KAAAA,CAAM3P,CAAC,EAAE;UACP,IAAI,CAAC8K,MAAM,GAAG9K,CAAAA;UAEd,IAAI,IAAI,CAAC0yD,MAAM,CAAClyD,MAAM,GAAG,IAAI,CAACqrC,WAAW,EAAE;cACzC,IAAI,CAACthB,OAAO,CAACpqB,OAAO,CAAChC,CAAAA,CAAAA,GAAKA,CAAEwR,CAAAA,KAAK,CAAC3P,CAAAA,CAAAA,CAAAA;cAClC,IAAI,IAAI,CAACgkC,OAAO,EAAE,IAAI,CAACnT,YAAY,CAAClhB,KAAK,CAAC3P,CAAAA,CAAAA;EAC5C;EAEA,QAAA,OAAO,IAAI;EACb;EAEA;;;;;;;;;;;EAWA,KACAgzD,KAAMhzD,CAAAA,CAAC,EAAEc,CAAC,EAAE;UACV,IAAIP,SAAAA,CAAUC,MAAM,EAAE;EACpB2vC,YAAAA,eAAAA,CAAW5tC,IAAI,CAAC,IAAI,CAAA,CAAEvC,GAAGc,CAAG,EAAA,OAAA,CAAA;EAC5B,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACmyD,MAAM;EACpB;EAEA;;;;;OAMA4C,QAAAA,CAAS71D,CAAC,EAAE;EACV,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4yD,SAAS,GAAG,OAAOpzD,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACozD,SAAS;EAC/G;EAEA;;;;;OAMA0C,WAAAA,CAAY91D,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACm1D,YAAY,GAAG31D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC21D,YAAY;EAC7E;EAEA;;;;;OAMAI,aAAAA,CAAc/1D,CAAC,EAAE;EACf,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACk1D,cAAc,GAAG11D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC01D,cAAc;EACjF;EAEA;;;;;OAMAM,WAAAA,CAAYh2D,CAAC,EAAE;EACb,QAAA,IAAI,CAACO,SAAUC,CAAAA,MAAM,EAAE,OAAO,IAAI,CAAC+xD,YAAY;EAC/C,QAAA,IAAI,EAAEvyD,CAAa8C,YAAAA,KAAI,GAAI9C,CAAI,GAAA;EAACA,YAAAA;EAAE,SAAA;EAClC,QAAA,OAAO,IAAI,CAACuyD,YAAY,GAAGvyD,CAAE6C,CAAAA,GAAG,CAACzC,CAAAA,CAAAA,GAAAA;cAC/B,IAAI,OAAOA,CAAM,KAAA,UAAA,EAAY,OAAOA,CAAAA;EAC/B,iBAAA;EACH,gBAAA,IAAI,CAAC,IAAI,CAACkjC,KAAK,CAACljC,EAAE,EAAE;EAClB,oBAAA,IAAI,CAACkjC,KAAK,CAACljC,CAAE,CAAA,GAAG,CAAC6M,CAAG8D,EAAAA,CAAAA,GAAAA;0BAClB,MAAM1Q,CAAAA,GAAIyC,MAAM8pB,IAAI,CAAC,IAAID,GAAI1f,CAAAA,CAAAA,CAAEpK,GAAG,CAACkO,CAAAA,CAAAA,CAAAA,CAAAA;EACnC,wBAAA,OAAO1Q,EAAEG,MAAM,KAAK,IAAIH,CAAC,CAAC,EAAE,GAAGA,CAAAA;EACjC,qBAAA;EACF;EACA,gBAAA,OAAOsG,QAASvG,CAAAA,CAAAA,CAAAA;EAClB;EACF,SAAA,CAAA,EAAI,IAAI;EACV;EAEA;;;;;;;;EAQA,KACAqyD,KAAMzyD,CAAAA,CAAC,EAAEc,CAAC,EAAE;UACV,IAAIP,SAAAA,CAAUC,MAAM,EAAE;EACpB2vC,YAAAA,eAAAA,CAAW5tC,IAAI,CAAC,IAAI,CAAA,CAAEvC,GAAGc,CAAG,EAAA,OAAA,CAAA;EAC5B,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAAC4xD,MAAM;EACpB;EAEA;;;;;OAMA9qD,IAAAA,CAAK5H,CAAC,EAAE;UACN,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACgvB,KAAK,GAAG,OAAOxvB,CAAAA,KAAM,cAAc,CAACA,CAAAA,GAAIA,IAAI2G,QAAS3G,CAAAA,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACwvB,KAAK;EAC7G;EAEA;;;;;OAMAg4B,OAAAA,CAAQxnD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC85C,QAAQ,GAAGt6C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACs6C,QAAQ;EACrE;EAEA;;;;;OAMAmN,OAAAA,CAAQznD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+5C,QAAQ,GAAGv6C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACu6C,QAAQ;EACrE;EAEA;;;;;OAMAmN,SAAAA,CAAU1nD,CAAC,EAAE;EACX,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC65C,UAAU,GAAGr6C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACq6C,UAAU;EACzE;EAEA;;;;;OAMA5zC,CAAAA,CAAEzG,CAAC,EAAE;UACH,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,OAAOR,CAAM,KAAA,UAAA,EAAY,IAAI,CAACmE,EAAE,GAAGnE,CAAAA;EAClC,iBAAA;kBACH,IAAI,CAACmE,EAAE,GAAGwC,QAAS3G,CAAAA,CAAAA,CAAAA;EACnB,gBAAA,IAAI,CAAC,IAAI,CAACsjC,KAAK,CAACtjC,CAAAA,CAAE,EAAE,IAAI,CAACsjC,KAAK,CAACtjC,CAAAA,CAAE,GAAGo9C,YAAAA;EACtC;EACA,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACj5C,EAAE;EACrB;EAEA;;;;;OAMAuC,CAAAA,CAAE1G,CAAC,EAAE;UACH,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,OAAOR,CAAM,KAAA,UAAA,EAAY,IAAI,CAACqE,EAAE,GAAGrE,CAAAA;EAClC,iBAAA;kBACH,IAAI,CAACqE,EAAE,GAAGsC,QAAS3G,CAAAA,CAAAA,CAAAA;EACnB,gBAAA,IAAI,CAAC,IAAI,CAACsjC,KAAK,CAACtjC,CAAAA,CAAE,EAAE,IAAI,CAACsjC,KAAK,CAACtjC,CAAAA,CAAE,GAAGo9C,YAAAA;EACtC;EACA,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAAC/4C,EAAE;EACrB;EAxnBA;;;;EAIA,KACAhD,WAAc,EAAA;UAEZ,KAAK,EAAA;UACL,IAAI,CAAC4xD,MAAM,GAAG,EAAE;UAChB,IAAI,CAACG,SAAS,GAAGnwD,QAAS,CAAA,CAAA,CAAA;UAC1B,IAAI,CAAC0yD,YAAY,GAAG,CAAA;UACpB,IAAI,CAACD,cAAc,GAAG,MAAA;UACtB,IAAI,CAAC1pB,cAAc,GAAG,KAAA;UACtB,IAAI,CAACumB,YAAY,GAAG;cAAC5rD,QAAS,CAAA,IAAA;EAAM,SAAA;UACpC,IAAI,CAAC+rD,MAAM,GAAG,EAAE;UAChB,IAAI,CAACjyD,GAAG,CAAC,aAAA,CAAc,GAAG,CAACvC,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,GAAAA;EAElC,YAAA,IAAI,CAACkmC,aAAa,CAACvmC,IAAI,CAAC,EAAE,EAAEc,MAAM,EAAA;EAElC,YAAA,IAAI,IAAI,CAAC2H,MAAM,IAAI,IAAI,CAAC24B,UAAU,IAAI,IAAI,CAAC+E,QAAQ,CAAChoC,MAAM,GAAG,CAAG,EAAA;EAE9D,gBAAA,MAAM6F,KAAKisD,SAAU/vD,CAAAA,IAAI,CAAC,IAAI,EAAErE,CAAGgE,EAAAA,CAAAA,CAAAA;kBAEnC,IAAI,IAAI,CAACqzD,MAAM,IAAI,IAAI,CAACA,MAAM,KAAKlvD,EAAI,EAAA;sBAErC,IAAI,CAAC+I,MAAM,CAAC,KAAA,CAAA;sBACZ,IAAI,CAAC3O,GAAG,CAACk0C,UAAU,CAACpyC,IAAI,CAAC,IAAI,CAAA,CAAErE,CAAGgE,EAAAA,CAAAA,EAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;sBAExC,IAAI,CAAC6yD,MAAM,GAAGt3D,SAAAA;sBACd,IAAI,CAACqoC,aAAa,CAAC,IAAA,CAAA;mBAGhB,MAAA;sBAEH,IAAI,CAAC32B,KAAK,CAAC,KAAA,CAAA;EAEX,oBAAA,MAAMqjD,KAAQ,GAAA,IAAI,CAACM,WAAW,CAACjtD,EAAAA,CAAG,EAC5BzC,IAAAA,GAAO,IAAI,CAACkvD,WAAW,CAACzsD,EAAG,CAAA;EAEjC,oBAAA,MAAMijC,SAAY,GAAA;EAACjjC,wBAAAA;EAAG,qBAAA;EACtB,oBAAA,IAAI63C,OAAU,GAAA;0BAACt6C,IAAK6C,CAAAA,CAAC,GAAG7C,IAAAA,CAAK8H,CAAC;0BAAE9H,IAAK6C,CAAAA,CAAC,GAAG7C,IAAAA,CAAK8H;EAAE,qBAAA,EAC5C0yC,OAAU,GAAA;0BAACx6C,IAAK8C,CAAAA,CAAC,GAAG9C,IAAAA,CAAK8H,CAAC;0BAAE9H,IAAK8C,CAAAA,CAAC,GAAG9C,IAAAA,CAAK8H;EAAE,qBAAA;sBAEhDsnD,KAAM7yD,CAAAA,OAAO,CAACiM,CAAAA,CAAAA,GAAAA;0BACZk9B,SAAU19B,CAAAA,IAAI,CAACQ,CAAAA,CAAE/F,EAAE,CAAA;EACnB,wBAAA,IAAI+F,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC,GAAGwyC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAG9xC,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC;EAClD,wBAAA,IAAIU,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC,GAAGwyC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAG9xC,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC;EAClD,wBAAA,IAAIU,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC,GAAG0yC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAGhyC,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC;EAClD,wBAAA,IAAIU,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC,GAAG0yC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAGhyC,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC;EACpD,qBAAA,CAAA;EAEA,oBAAA,IAAI,CAAC0D,MAAM,CAAC,CAACF,CAAGzI,EAAAA,CAAAA,GAAAA;EACd,wBAAA,IAAIyI,EAAEikD,MAAM,IAAIjkD,CAAEmkD,CAAAA,MAAM,EAAE,OAAOnkD,CAAAA,CAAEikD,MAAM,CAAC9sD,EAAE,KAAKA,EAAAA,IAAM6I,EAAEmkD,MAAM,CAAChtD,EAAE,KAAKA,EAAAA;+BAClE,OAAOijC,SAAAA,CAAUzpC,QAAQ,CAACyyD,SAAAA,CAAU/vD,IAAI,CAAC,IAAI,EAAE2M,CAAGzI,EAAAA,CAAAA,CAAAA,CAAAA;EACzD,qBAAA,CAAA;sBAEA,IAAI,CAAC8uD,MAAM,GAAGlvD,EAAAA;EACd,oBAAA,MAAM9B,IAAIijC,oBAAc,CAAA,IAAI,CAAC3B,UAAU,CAACjiC,IAAI,EAAA,CAAA;sBAC5Cs6C,OAAUA,GAAAA,OAAAA,CAAQr7C,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,IAAIqG,CAAEnE,CAAAA,CAAC,GAAGmE,CAAAA,CAAEkC,CAAC,CAAA;sBACxC23C,OAAUA,GAAAA,OAAAA,CAAQv7C,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,IAAIqG,CAAEnE,CAAAA,CAAC,GAAGmE,CAAAA,CAAEmC,CAAC,CAAA;sBACxC,IAAI,CAAC4/B,aAAa,CAAC;EAAC,wBAAA;EAAC4X,4BAAAA,OAAO,CAAC,CAAE,CAAA;EAAEE,4BAAAA,OAAO,CAAC,CAAE;EAAC,yBAAA;EAAE,wBAAA;EAACF,4BAAAA,OAAO,CAAC,CAAE,CAAA;EAAEE,4BAAAA,OAAO,CAAC,CAAE;EAAC;EAAC,qBAAA,CAAA;EAEzE;EAEF;EAEF,SAAA;UACA,IAAI,CAAC39C,GAAG,CAAC,cAAA,CAAe,GAAG,CAACvC,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,GAAAA;EAEnC,YAAA,MAAMgvC,GAAM,GAAA,IAAI,CAAC1tC,GAAG,CAAC9F,CAAAA,CAAAA;EACrB,YAAA,IAAImI,EAAK,GAAA,IAAI,CAACm9B,IAAI,CAACtlC,CAAAA,CAAAA;EACnBmI,YAAAA,EAAAA,GAAKA,EAAE,CAACA,EAAG7F,CAAAA,MAAM,GAAG,CAAE,CAAA;EAEtB,YAAA,IAAI,IAAI,CAACsK,MAAM,IAAI,IAAI,CAAC24B,UAAU,IAAI,IAAI,CAAC+E,QAAQ,CAAChoC,MAAM,GAAG,CAAG,EAAA;kBAE9D,IAAI,IAAI,CAAC+0D,MAAM,IAAI,IAAI,CAACA,MAAM,KAAK7jB,GAAK,EAAA;sBAEtC,IAAI,CAACtiC,MAAM,CAAC,KAAA,CAAA;sBAEZ,IAAI,CAACmmD,MAAM,GAAGt3D,SAAAA;sBACd,IAAI,CAACqoC,aAAa,CAAC,IAAA,CAAA;mBAGhB,MAAA;sBAEH,IAAI,CAAC32B,KAAK,CAAC,KAAA,CAAA;sBAEX,MAAM8iD,KAAAA,GAAQ/gB,GAAI7uC,CAAAA,GAAG,CAACwD,CAAAA,KAAM,IAAI,CAACysD,WAAW,CAACzsD,EAAG,CAAA,CAAA;EAEhD,oBAAA,MAAMijC,SAAY,GAAA;EAAC,wBAAA,CAAA,EAAGjjC,EAAI,CAAA;EAAC,qBAAA;EAC3B,oBAAA,IAAI63C,OAAU,GAAA;0BAACuU,KAAK,CAAC,EAAE,CAAChsD,CAAC,GAAGgsD,KAAK,CAAC,CAAE,CAAA,CAAC/mD,CAAC;0BAAE+mD,KAAK,CAAC,EAAE,CAAChsD,CAAC,GAAGgsD,KAAK,CAAC,CAAE,CAAA,CAAC/mD;EAAE,qBAAA,EAC5D0yC,OAAU,GAAA;0BAACqU,KAAK,CAAC,EAAE,CAAC/rD,CAAC,GAAG+rD,KAAK,CAAC,CAAE,CAAA,CAAC/mD,CAAC;0BAAE+mD,KAAK,CAAC,EAAE,CAAC/rD,CAAC,GAAG+rD,KAAK,CAAC,CAAE,CAAA,CAAC/mD;EAAE,qBAAA;sBAEhE+mD,KAAMtyD,CAAAA,OAAO,CAACiM,CAAAA,CAAAA,GAAAA;0BACZk9B,SAAU19B,CAAAA,IAAI,CAACQ,CAAAA,CAAE/F,EAAE,CAAA;EACnB,wBAAA,IAAI+F,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC,GAAGwyC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAG9xC,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC;EAClD,wBAAA,IAAIU,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC,GAAGwyC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAG9xC,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC;EAClD,wBAAA,IAAIU,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC,GAAG0yC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAGhyC,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC;EAClD,wBAAA,IAAIU,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC,GAAG0yC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAGhyC,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC;EACpD,qBAAA,CAAA;EAEA,oBAAA,IAAI,CAAC0D,MAAM,CAAC,CAACF,CAAGzI,EAAAA,CAAAA,GAAAA;0BACd,IAAIyI,CAAAA,CAAEikD,MAAM,IAAIjkD,CAAAA,CAAEmkD,MAAM,EAAE,OAAO/pB,UAAUzpC,QAAQ,CAACqP,EAAEikD,MAAM,CAAC9sD,EAAE,CAAKijC,IAAAA,SAAAA,CAAUzpC,QAAQ,CAACqP,CAAAA,CAAEmkD,MAAM,CAAChtD,EAAE,CAAA;EAC7F,6BAAA;EACH,4BAAA,MAAM4vD,KAAQ,GAAA,IAAI,CAACzyB,IAAI,CAACt0B,CAAGzI,EAAAA,CAAAA,CAAAA;8BAC3B,OAAO6iC,SAAAA,CAAUzpC,QAAQ,CAAC,CAAGo2D,EAAAA,KAAK,CAACA,KAAMz1D,CAAAA,MAAM,GAAG,CAAA,CAAE,CAAE,CAAA,CAAA;EACxD;EACF,qBAAA,CAAA;sBAEA,IAAI,CAAC+0D,MAAM,GAAG7jB,GAAAA;EACd,oBAAA,MAAMntC,IAAIijC,oBAAc,CAAA,IAAI,CAAC3B,UAAU,CAACjiC,IAAI,EAAA,CAAA;sBAC5Cs6C,OAAUA,GAAAA,OAAAA,CAAQr7C,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,IAAIqG,CAAEnE,CAAAA,CAAC,GAAGmE,CAAAA,CAAEkC,CAAC,CAAA;sBACxC23C,OAAUA,GAAAA,OAAAA,CAAQv7C,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,IAAIqG,CAAEnE,CAAAA,CAAC,GAAGmE,CAAAA,CAAEmC,CAAC,CAAA;sBACxC,IAAI,CAAC4/B,aAAa,CAAC;EAAC,wBAAA;EAAC4X,4BAAAA,OAAO,CAAC,CAAE,CAAA;EAAEE,4BAAAA,OAAO,CAAC,CAAE;EAAC,yBAAA;EAAE,wBAAA;EAACF,4BAAAA,OAAO,CAAC,CAAE,CAAA;EAAEE,4BAAAA,OAAO,CAAC,CAAE;EAAC;EAAC,qBAAA,CAAA;EAEzE;kBAEA,IAAI,CAAC39C,GAAG,CAACk0C,UAAU,CAACpyC,IAAI,CAAC,IAAI,CAAA,CAAErE,CAAGgE,EAAAA,CAAAA,EAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;kBACxC,IAAI,CAACjC,GAAG,CAAC,kBAAmB,CAAA,CAAC8B,IAAI,CAAC,IAAI,CAAA,CAAErE,CAAGgE,EAAAA,CAAAA,EAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;EAEnD;EAEF,SAAA;EACA,QAAA,IAAI,CAACjC,GAAG,CAACk0C,UAAU,GAAG,IAAO,EAAA;EAC7B,QAAA,IAAI,CAACl0C,GAAG,CAAC,kBAAA,CAAmB,GAAG,IAAA;cAC7B,IAAI,CAACkP,KAAK,CAAC,KAAA,CAAA;EACb,SAAA;EACA,QAAA,MAAMumD,gBAAmB,GAAA,IAAI,CAACz1D,GAAG,CAAC,iBAAkB,CAAA;UACpD,IAAI,CAACA,GAAG,CAAC,iBAAA,CAAkB,GAAG,CAACvC,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,GAAAA;cACtCwzD,gBAAiBh4D,CAAAA,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;cAC1B,MAAM2D,EAAAA,GAAKisD,UAAU/vD,IAAI,CAAC,IAAI,CAAErE,CAAAA,CAAAA,EAAGgE,CAC7B8wD,CAAAA,EAAAA,KAAAA,GAAQ,IAAI,CAACM,WAAW,CAACjtD,EAAAA,CAAG,IAAI,EAAE,EAClCzC,OAAO,IAAI,CAACkvD,WAAW,CAACzsD,EAAG,CAAA;EAEjC,YAAA,MAAMijC,SAAY,GAAA;EAACjjC,gBAAAA;EAAG,aAAA;EACtB,YAAA,MAAM63C,OAAU,GAAA;kBAACt6C,IAAK6C,CAAAA,CAAC,GAAG7C,IAAAA,CAAK8H,CAAC;kBAAE9H,IAAK6C,CAAAA,CAAC,GAAG7C,IAAAA,CAAK8H;EAAE,aAAA,EAC5C0yC,OAAU,GAAA;kBAACx6C,IAAK8C,CAAAA,CAAC,GAAG9C,IAAAA,CAAK8H,CAAC;kBAAE9H,IAAK8C,CAAAA,CAAC,GAAG9C,IAAAA,CAAK8H;EAAE,aAAA;cAElDsnD,KAAM7yD,CAAAA,OAAO,CAACiM,CAAAA,CAAAA,GAAAA;kBACZk9B,SAAU19B,CAAAA,IAAI,CAACQ,CAAAA,CAAE/F,EAAE,CAAA;EACnB,gBAAA,IAAI+F,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC,GAAGwyC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAG9xC,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC;EAClD,gBAAA,IAAIU,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC,GAAGwyC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAG9xC,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC;EAClD,gBAAA,IAAIU,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC,GAAG0yC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAGhyC,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC;EAClD,gBAAA,IAAIU,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC,GAAG0yC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAGhyC,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC;EACpD,aAAA,CAAA;EAEA,YAAA,IAAI,CAACiE,KAAK,CAAC,CAACT,CAAGzI,EAAAA,CAAAA,GAAAA;EACb,gBAAA,IAAIyI,EAAEikD,MAAM,IAAIjkD,CAAEmkD,CAAAA,MAAM,EAAE,OAAOnkD,CAAAA,CAAEikD,MAAM,CAAC9sD,EAAE,KAAKA,EAAAA,IAAM6I,EAAEmkD,MAAM,CAAChtD,EAAE,KAAKA,EAAAA;EAClE,qBAAA,OAAOijC,SAAUzpC,CAAAA,QAAQ,CAAC,CAAA,EAAG,IAAI,CAAC2jC,IAAI,CAACt0B,CAAAA,EAAGzI,EAAE,CAAC,IAAI,CAACg9B,UAAU,CAAC,CAAE,CAAA,CAAA;EACtE,aAAA,CAAA;EACF,SAAA;UACA,IAAI,CAAC8W,QAAQ,GAAG,CAAA;UAChB,IAAI,CAACF,UAAU,GAAG,MAAA;UAClB,IAAI,CAACj8B,MAAM,GAAGnb,QAAS,CAAA,QAAA,CAAA;EACvB,QAAA,IAAI,CAAC7B,YAAY,GAAGd,WAAO,IAAI,CAACc,YAAY,EAAE;EAC5CmO,YAAAA,SAAAA,EAAW,CAACrR,CAAGgE,EAAAA,CAAAA,GAAAA;EACb,gBAAA,MAAMi0D,SAAY,GAAA,IAAI,CAAC3mC,KAAK,GAAG,CAAC,EAAE,EAAE,IAAI,CAACA,KAAK,CAACtxB,CAAAA,EAAGgE,IAAI,GAAG,EAAA;kBACzD,OAAO,CAAA,EAAG,IAAI,CAAC8gC,UAAU,CAAC9kC,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,EAAKi0D,SAAU,CAAA,CAAC,CAAC;EAChD,aAAA;cACA7pD,WAAa,EAAA;kBACXxK,QAAU,EAAA,CAAA;kBACV20B,OAAS,EAAA,CAAA;kBACT7O,UAAY,EAAA,IAAA;kBACZs5B,YAAc,EAAA,CAAA;kBACdzwC,UAAY,EAAA,QAAA;kBACZI,aAAe,EAAA;EACjB,aAAA;cACA6H,IAAM,EAAA;kBACJ9O,IAAM,EAAA,MAAA;kBACNmG,KAAO,EAAA,KAAA;kBACPtG,MAAQ,EAAA;EACV;EACF,SAAA,CAAA;UACA,IAAI,CAACtF,EAAE,GAAGwC,QAAS,CAAA,GAAA,CAAA;UACnB,IAAI,CAACtC,EAAE,GAAGsC,QAAS,CAAA,GAAA,CAAA;UAEnB,IAAI,CAAC8/B,KAAK,GAAG,IAAA;EAEf;EAwcF;;EC/oBA,MAAM2vB,gBAAmB,GAAA,CAACl4D,CAAG0E,EAAAA,GAAAA,GAAM,EAAE,GAAA;MACnC,IAAI1E,CAAAA,CAAEiJ,MAAM,EAAE;EACZjJ,QAAAA,CAAAA,CAAEiJ,MAAM,CAAChH,OAAO,CAAC+O,CAAAA,CAAAA,GAAAA;EACftM,YAAAA,GAAAA,CAAIgJ,IAAI,CAACsD,CAAAA,CAAAA;EACTknD,YAAAA,gBAAAA,CAAiBlnD,CAAGtM,EAAAA,GAAAA,CAAAA;EACtB,SAAA,CAAA;OAEG,MAAA;EACHA,QAAAA,GAAAA,CAAIgJ,IAAI,CAAC1N,CAAAA,CAAAA;EACX;MACA,OAAO0E,GAAAA;EACT,CAAA;EAOe,MAAMyzD,IAAa1rB,SAAAA,GAAAA,CAAAA;EA4DhC;;;OAIAyB,KAAAA,CAAMhpC,QAAQ,EAAE;EACd,QAAA,KAAK,CAACgpC,KAAMhpC,CAAAA,QAAAA,CAAAA;EAEZ,QAAA,MAAMyC,MAAS,GAAA,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,EAC9D7Y,KAAAA,GAAQ,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;EAElE,QAAA,MAAM83C,QAAWl4D,GAAAA,IAAAA,CAAKqJ,GAAG,CAAC5B,MAAQD,EAAAA,KAAAA,CAAAA;EAClC,QAAA,MAAM+pB,YAAY,CAAC,UAAU,EAAE,CAAC/pB,QAAQ0wD,QAAO,IAAK,EAAE,EAAE,EAAE,CAACzwD,MAAAA,GAASywD,QAAO,IAAK,CAAA,CAAE,CAAC,CAAC;EAEpF,QAAA,IAAIC,UAAa30D,GAAAA,iBAAAA,EAAAA;EACjB,QAAA,IAAK,IAAIM,CAAI,GAAA,CAAA,EAAGA,CAAK,IAAA,IAAI,CAACuhC,UAAU,EAAEvhC,CAAKq0D,EAAAA,CAAAA,UAAAA,CAAWx4D,GAAG,CAAC,IAAI,CAACyqC,QAAQ,CAACtmC,CAAE,CAAA,CAAA;EAC1Eq0D,QAAAA,UAAAA,GAAaA,UAAWpkD,CAAAA,OAAO,CAAC,IAAI,CAACm5B,aAAa,CAAA;EAElD,QAAA,MAAMkrB,QAAW,GAAA,IAAI,CAACC,KAAK,CACxBnlD,OAAO,CAAC,IAAI,CAAColD,cAAc,CAC3B9uD,CAAAA,IAAI,CAAC;EAAC0uD,YAAAA,QAAAA;EAAUA,YAAAA;EAAS,SAAA,CAAA,CACxBK,qBAAU,CAAA;EAAC54D,YAAAA,GAAAA,EAAKw4D,WAAWx4D,GAAG;cAAEoJ,MAAQovD,EAAAA;EAAU,SAAA,EAAGr4D,CAAAA,CAAKA,GAAAA,CAAAA,CAAEiJ,MAAM,CAAA,CAAEwN,GAAG,CAAC,IAAI,CAACiiD,IAAI,EAAE5pD,IAAI,CAAC,IAAI,CAACD,KAAK,GAEnG8pD,WAAW,EAAA;UAEdL,QAASr2D,CAAAA,OAAO,CAAC,CAACjC,CAAGgE,EAAAA,CAAAA,GAAAA;EACnBhE,YAAAA,CAAAA,CAAEiE,UAAU,GAAG,IAAA;EACfjE,YAAAA,CAAAA,CAAEgE,CAAC,GAAGA,CAAAA;cACNhE,CAAEmI,CAAAA,EAAE,GAAGnI,CAAAA,CAAE6C,MAAM,GAAG7C,CAAE6C,CAAAA,MAAM,CAACsB,IAAI,CAACtE,GAAG,GAAG,IAAA;EACtCG,YAAAA,CAAAA,CAAEmE,IAAI,CAACy0D,iBAAiB,GAAG54D,EAAE2H,MAAM,GAAG,IAAI,CAACkxD,YAAY,CAAC74D,CAAEmE,CAAAA,IAAI,EAAEH,CAAK,CAAA,GAAA,CAAA;cACrEhE,CAAEmE,CAAAA,IAAI,CAACiuD,iBAAiB,GAAG,CAACpyD,CAAE2H,CAAAA,MAAM,GAAG,IAAO,GAAA,KAAA;EAChD,SAAA,CAAA;EAEA,QAAA,IAAI,CAAC0kB,OAAO,CAAC3e,IAAI,CACf,IAAIgI,MACDvR,EAAAA,CAAAA,IAAI,CAACm0D,QAAAA,CAAAA,CACLlzD,MAAM,CACLqE,SAAK,eAAiB,EAAA;cACpB5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;cACpBY,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cACjBjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;EACpB,SAAA,CAAA,CAAG/rB,IAAI,EAAA,CAAA,CAER7D,MAAM,CAAC2B,WAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACnB,YAAY,EAAE,OAAA,EAAS,WACzD+B,MAAM,EAAA,CAAA;EAGX,QAAA,OAAO,IAAI;EACb;EAEA;;;;;QAMAwM,KAAAA,CAAM3P,CAAC,EAAE;UACP,IAAI,CAAC8K,MAAM,GAAG9K,CAAAA;UACd,IAAI,CAACuqB,OAAO,CAACpqB,OAAO,CAAChC,CAAAA,CAAAA,GAAKA,CAAEwR,CAAAA,KAAK,CAAC3P,CAAAA,CAAAA,CAAAA;UAElC,IAAI,IAAI,CAACgkC,OAAO,EAAE,IAAI,CAACnT,YAAY,CAAClhB,KAAK,CAAC3P,CAAAA,CAAAA;EAC1C,QAAA,OAAO,IAAI;EACb;EAEA;;;;OAKAg3D,aAAAA,CAAch3D,CAAC,EAAE;EACf,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACk2D,cAAc,GAAG12D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC02D,cAAc;EACjF;EAEA;;;;OAKAO,WAAAA,CAAYj3D,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACu2D,YAAY,GAAG,OAAO/2D,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC+2D,YAAY;EACrH;EAEA;;;;;;;;OASA/pD,IAAAA,CAAKhN,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuM,KAAK,GAAG/M,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+M,KAAK;EAC/D;EAGA;;;;;;;;OASA4H,GAAAA,CAAI3U,CAAC,EAAE;EACL,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACo2D,IAAI,GAAG,OAAO52D,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC42D,IAAI;EACrG;EApKA;;;;EAIA,KACAv1D,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACq1D,cAAc,GAAG,CAAA;UAEtB,MAAMpN,aAAAA,GAAgB,IAAI,CAACtlB,OAAO;EAClC,QAAA,IAAI,CAACA,OAAO,GAAG,CAACjkC,MAAQ6C,EAAAA,GAAAA,GAAAA;cACtB,IAAIA,GAAAA,CAAIpC,MAAM,KAAK,IAAI,CAAC8qC,aAAa,CAAC9qC,MAAM,EAAE,OAAO,KAAA;EACrD,YAAA,OAAO8oD,aAAc/mD,CAAAA,IAAI,CAAC,IAAI,EAAExC,MAAQ6C,EAAAA,GAAAA,CAAAA;EAC1C,SAAA;EAEA,QAAA,IAAI,CAACnC,GAAG,CAACk0C,UAAU,GAAG,IAAO,EAAA;EAE7B,QAAA,MAAMuiB,sBAAyB,GAAA,IAAI,CAACz2D,GAAG,CAAC,kBAAmB,CAAA;UAC3D,IAAI,CAACA,GAAG,CAAC,kBAAA,CAAmB,GAAG,CAACvC,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,GAAAA;cACvCw0D,sBAAuBh5D,CAAAA,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;EAEhC,YAAA,MAAMgvC,GAAM,GAAA,IAAI,CAAClO,IAAI,CAACtlC,CAAGgE,EAAAA,CAAAA,CAAAA;EACzB,YAAA,MAAMi1D,YAAYf,gBAAiBl4D,CAAAA,CAAAA,CAAAA;cAEnC,IAAI,CAACyR,KAAK,CAACT,CAAAA,CAAAA,GAAAA;kBACT,MAAMS,KAAAA,GAAQrQ,MAAO2H,CAAAA,IAAI,CAACiI,CAAAA,CAAAA,CAAGxP,MAAM,CAAC3B,CAAAA,GAAAA,GAAOA,GAAQ,KAAA,OAAA,CAAA,CAASijB,KAAK,CAACjjB,CAAAA,GAAAA,GAAOG,CAAC,CAACH,GAAI,CAAA,IAAIG,CAAC,CAACH,GAAI,CAAA,CAAC8B,QAAQ,CAACqP,CAAC,CAACnR,GAAI,CAAA,CAAA,CAAA;kBAEzG,IAAI4R,KAAAA,EAAOwnD,SAAUvrD,CAAAA,IAAI,CAACsD,CAAAA,CAAAA;uBACrB,IAAIwiC,GAAAA,CAAI7xC,QAAQ,CAACqP,CAAEnR,CAAAA,GAAG,GAAGo5D,SAAUvrD,CAAAA,IAAI,CAAIwqD,GAAAA,gBAAAA,CAAiBlnD,CAAG,EAAA;EAACA,oBAAAA;EAAE,iBAAA,CAAA,CAAA;kBAEvE,OAAOioD,SAAAA,CAAUt3D,QAAQ,CAACqP,CAAAA,CAAAA;EAC5B,aAAA,CAAA;EAEF,SAAA;EACA,QAAA,MAAMkjD,qBAAwB,GAAA,IAAI,CAAC3xD,GAAG,CAAC,iBAAkB,CAAA;UACzD,IAAI,CAACA,GAAG,CAAC,iBAAA,CAAkB,GAAG,CAACvC,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,GAAAA;EACtC,YAAA,IAAIxE,EAAEoyD,iBAAiB,EAAE8B,qBAAsBl0D,CAAAA,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;EACxD,YAAA,IAAI,CAACiN,KAAK,CAACT,CAAAA,CAAAA,GAAKknD,iBAAiBl4D,CAAG,EAAA;EAACA,oBAAAA;EAAE,iBAAA,CAAA,CAAE2B,QAAQ,CAACqP,CAAAA,CAAAA,CAAAA;EACpD,SAAA;UACA,IAAI,CAACunD,KAAK,GAAGW,gBAAAA,EAAAA;UACb,IAAI,CAACL,YAAY,GAAG9zD,QAAS,CAAA,IAAA,CAAA;UAC7B,IAAI,CAACmb,MAAM,GAAGnb,QAAS,CAAA,QAAA,CAAA;EACvB,QAAA,IAAI,CAAC7B,YAAY,GAAGd,WAAO,IAAI,CAACc,YAAY,EAAE;cAC5CwS,MAAQ,EAAA;kBACN7D,KAAO7R,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAE6C,MAAM,IAAI,CAAC7C,CAAAA,CAAEm5D,QAAQ,GAAGn5D,CAAEmI,CAAAA,EAAE,GAAG,KAAA;kBAC7CiG,WAAa,EAAA;sBACXsb,UAAY,EAAA;EACd,iBAAA;kBACAthB,OAASpI,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAE44D;EAClB;EACF,SAAA,CAAA;UACA,IAAI,CAAC/pD,KAAK,GAAG,CAACE,CAAAA,EAAGZ,IAAMA,CAAErJ,CAAAA,KAAK,GAAGiK,CAAAA,CAAEjK,KAAK;UACxC,IAAI,CAAC4zD,IAAI,GAAGjwD,QAAS,CAAA,OAAA,CAAA;EAEvB;EA6GF;;ECjLe,MAAM2wD,SAAkB3sB,SAAAA,GAAAA,CAAAA;EAwBrC;;;;OAKAyB,KAAAA,CAAMhpC,QAAQ,EAAE;EAEd,QAAA,KAAK,CAACgpC,KAAMhpC,CAAAA,QAAAA,CAAAA;EAEZ,QAAA,IAAI,CAAC,IAAI,CAACkoC,aAAa,EAAE,OAAO,IAAI;UAEpC,MAAMjpC,IAAAA,GAAO,IAAI,CAACipC,aAAa,CAACzoC,GAAG,CAAC,CAACR,IAAMH,EAAAA,CAAAA,IAAO;kBAChDC,UAAY,EAAA,IAAA;EACZE,gBAAAA,IAAAA;EACAsuB,gBAAAA,GAAAA,EAAK,IAAI,CAAC5B,WAAW,CAAC9lB,KAAK,KAAK,SAASkU,QAAK,CAAA,IAAI,CAACo6C,IAAI,CAACl1D,IAAMH,EAAAA,CAAAA,CAAAA,CAAAA,GAAM,IAAI,CAACq1D,IAAI,CAACl1D,IAAMH,EAAAA,CAAAA,CAAAA;EACpFA,gBAAAA,CAAAA;EACAmE,gBAAAA,EAAAA,EAAI,IAAI,CAACrC,GAAG,CAAC3B,IAAMH,EAAAA,CAAAA,CAAAA;EACnBuuB,gBAAAA,KAAAA,EAAO,IAAI,CAAC1B,WAAW,CAAC9lB,KAAK,KAAK,SAASkU,QAAK,CAAA,IAAI,CAACq6C,MAAM,CAACn1D,IAAMH,EAAAA,CAAAA,CAAAA,CAAAA,GAAM,IAAI,CAACs1D,MAAM,CAACn1D,IAAMH,EAAAA,CAAAA;eAC5F,CAAA,CAAA,CAAIxC,MAAM,CAACxB,CAAAA,IAAKA,CAAEyyB,CAAAA,GAAG,GAAGzyB,CAAEuyB,CAAAA,KAAK,GAAG,CAAGzjB,CAAAA,CAAAA,IAAI,CAAC,CAACC,CAAAA,EAAGZ,IAAMY,CAAEwjB,CAAAA,KAAK,GAAGpkB,CAAAA,CAAEokB,KAAK,CAAA;UAErE,IAAI8lC,UAAAA;UACJ,IAAI,IAAI,CAAC/tB,QAAQ,CAAChoC,MAAM,GAAG,CAAA,IAAK,IAAI,CAACijC,UAAU,GAAG,CAAG,EAAA;EACnD,YAAA,MAAMg0B,QAAW71D,GAAAA,iBAAAA,EAAAA;cACjB,IAAK,IAAIM,CAAI,GAAA,CAAA,EAAGA,CAAI,GAAA,IAAI,CAACuhC,UAAU,EAAEvhC,CAAKu1D,EAAAA,CAAAA,QAAAA,CAAS15D,GAAG,CAACG,CAAAA,CAAK,GAAA,IAAI,CAACsqC,QAAQ,CAACtmC,CAAAA,CAAE,CAAChE,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAA,CAAA;cACxFq0D,UAAakB,GAAAA,QAAAA,CAAStlD,OAAO,CAAC9P,IAAAA,CAAAA;EAChC,SAAA,MACKk0D,UAAa,GAAA;EAAC,YAAA;kBAACpvD,MAAQ9E,EAAAA;EAAI;EAAE,SAAA;EAElC,QAAA,IAAIq1D,OAAU,GAAA,CAAA;UACdnB,UAAWp2D,CAAAA,OAAO,CAAC2qC,CAAAA,CAAAA,GAAAA;EACjB,YAAA,IAAI6sB,QAAQ,EAAE;EACd7sB,YAAAA,CAAAA,CAAE3jC,MAAM,CAAChH,OAAO,CAACjC,CAAAA,CAAAA,GAAAA;kBACfy5D,KAAQA,GAAAA,KAAAA,CAAM90D,GAAG,CAAC0B,CAAAA,IAAKA,CAAKrG,IAAAA,CAAAA,CAAEuyB,KAAK,GAAG,KAAQlsB,GAAAA,CAAAA,CAAAA;kBAC9C,MAAMrC,CAAAA,GAAIy1D,KAAM/3D,CAAAA,OAAO,CAAC,KAAA,CAAA;EACxB,gBAAA,IAAIsC,IAAI,CAAG,EAAA;EACThE,oBAAAA,CAAAA,CAAE05D,IAAI,GAAGF,OAAUC,GAAAA,KAAAA,CAAMn3D,MAAM;sBAC/Bm3D,KAAM/rD,CAAAA,IAAI,CAAC1N,CAAAA,CAAEyyB,GAAG,CAAA;mBAEb,MAAA;EACHgnC,oBAAAA,KAAK,CAACz1D,CAAAA,CAAE,GAAGhE,CAAAA,CAAEyyB,GAAG;sBAChBzyB,CAAE05D,CAAAA,IAAI,GAAGF,OAAUx1D,GAAAA,CAAAA;EACrB;EACF,aAAA,CAAA;EACAw1D,YAAAA,OAAAA,IAAWC,MAAMn3D,MAAM;EACzB,SAAA,CAAA;EAEA,QAAA,MAAMsuB,UAAa,GAAA;cACjBhV,MAAQ,EAAA;EAACrS,gBAAAA,WAAAA,CAAIpF,IAAMnE,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEuyB,KAAK,CAAK,IAAA,CAAA;EAAGzZ,gBAAAA,WAAAA,CAAI3U,IAAMnE,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAEyyB,GAAG,CAAK,IAAA;EAAE,aAAA;EAClE9qB,YAAAA,MAAAA,EAAQ,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM;EAC7D7Y,YAAAA,KAAAA,EAAO,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC;EACxD,SAAA;EAEA,QAAA,MAAMmR,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC;EAExE,QAAA,IAAI,CAAC+Q,SAAS,CACXvvB,MAAM,CAAC+uB,UACP/uB,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAACgvB,WAAW,CAAA,CACvBzrB,MAAM,CAACqE,SAAK,8BAAgC,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;cAAEY,KAAO,EAAA;kBAACqC,OAAS,EAAA;EAAC;WAAI1C,CAAAA,CAAAA,IAAI,IAC7FT,MAAM,EAAA;EAET,QAAA,IAAI,CAAC00D,KAAK,CACP93D,MAAM,CAAC+uB,UACP/uB,CAAAA,CAAAA,MAAM,CAAC,IAAI,CAACgvB,WAAW,CAAA,CACvBzrB,MAAM,CAACqE,SAAK,yBAA2B,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;cAAEY,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cAAGjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;WAAI/rB,CAAAA,CAAAA,IAAI,IAC5GT,MAAM,EAAA;EAET,QAAA,MAAM20D,OAAU,GAAA,IAAI,CAACxoC,SAAS,CAACrR,QAAQ;EAEvC,QAAA,MAAM64B,MAAS,GAAA,IAAI,CAAC+gB,KAAK,CAACx7C,QAAQ;UAElC,MAAMw6B,MAAAA,GAASkhB,mBACZj+C,MAAM,CAACC,cAAM,CAAG29C,EAAAA,OAAAA,EAAS,IACzBl2C,YAAY,CAAC,IAAI,CAACC,aAAa,EAC/BC,YAAY,CAAC,IAAI,CAACC,aAAa,CAC/Bq2C,CAAAA,UAAU,CAAC;EAAC,YAAA,IAAI,CAAC1zD,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACwC,MAAM,GAAG,IAAI,CAAC6Q,SAAS,CAACtI,WAAW,EAAA,CAAGnhB,MAAM,GAAGiyD,OAAAA;EAAS,YAAA,IAAI,CAAC77C,OAAO,CAACsC,GAAG,GAAGu5C;EAAQ,SAAA,CAAA;UAE9H,MAAMG,SAAAA,GAAYphB,OAAOv6B,SAAS,EAAA;EAElC,QAAA,IAAI,CAACiO,OAAO,CAAC3e,IAAI,CAAC,IAAIkI,IAAAA,EAAAA,CACnBzR,IAAI,CAACA,MACLP,QAAQ,CAAC,IAAI,CAACC,SAAS,CACvB8D,CAAAA,MAAM,CAACoyD,SAAAA,CAAAA,CACPloD,KAAK,CAAC,CAAC7R,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAAC8gC,UAAU,CAAC9kC,CAAAA,CAAEmE,IAAI,EAAEH,CAAAA,CAAAA,CAAAA,CACxCoB,MAAM,CAACqE,SAAK,2BAA6B,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACsC;EAAO,SAAA,CAAA,CAAGO,IAAI,EAAA,CAAA,CACrEgC,KAAK,CAAC1H,CAAAA,CAAAA,GAAAA;cACL,MAAMyV,CAAAA,GAAIvV,IAAKsV,CAAAA,GAAG,CAACojC,MAAAA,CAAO54C,EAAEyyB,GAAG,CAAA,GAAImmB,MAAO54C,CAAAA,CAAAA,CAAEuyB,KAAK,CAAA,CAAA;cACjD,OAAO9c,CAAAA,GAAI,CAAIA,GAAAA,CAAAA,GAAI,CAAIA,GAAAA,CAAAA;EACzB,SAAA,CAAA,CACClN,CAAC,CAACvI,CAAAA,IAAK44C,MAAO54C,CAAAA,CAAAA,CAAEuyB,KAAK,CAAI,GAACqmB,CAAAA,MAAO54C,CAAAA,CAAAA,CAAEyyB,GAAG,CAAImmB,GAAAA,MAAAA,CAAO54C,EAAEuyB,KAAK,CAAA,IAAK,CAC7D/pB,CAAAA,CAAAA,CAAC,CAACxI,CAAAA,CAAAA,GAAK24C,OAAO34C,CAAE05D,CAAAA,IAAI,IAAIK,SAAY,GAAA,CAAA,CAAA,CACpCl4D,MAAM,CAAC2B,UAAAA,CAAWa,IAAI,CAAC,IAAI,EAAE,IAAI,CAACnB,YAAY,EAAE,OAAA,EAAS,SACzD+B,MAAM,EAAA,CAAA;EAET,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;OAMA2rB,UAAAA,CAAW9uB,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACuuB,WAAW,GAAGzuB,UAAAA,CAAO,IAAI,CAACyuB,WAAW,EAAE/uB,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC+uB,WAAW;EACrG;EAEA;;;;;OAMA4B,GAAAA,CAAI3wB,CAAC,EAAE;UACL,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,OAAOR,CAAM,KAAA,UAAA,EAAY,IAAI,CAACu3D,IAAI,GAAGv3D,CAAAA;EACpC,iBAAA;kBACH,IAAI,CAACu3D,IAAI,GAAG5wD,QAAS3G,CAAAA,CAAAA,CAAAA;EACrB,gBAAA,IAAI,CAAC,IAAI,CAACsjC,KAAK,CAACtjC,CAAAA,CAAE,EAAE,IAAI,CAACsjC,KAAK,CAACtjC,CAAAA,CAAE,GAAGgX,WAAAA;EACtC;EACA,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACugD,IAAI;EACvB;EAEA;;;;;OAMA/1C,YAAAA,CAAaxhB,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACihB,aAAa,GAAGzhB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACyhB,aAAa;EAC/E;EAEA;;;;;OAMAC,YAAAA,CAAa1hB,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACmhB,aAAa,GAAG3hB,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC2hB,aAAa;EAC/E;EAEA;;;;;OAMA8O,KAAAA,CAAMzwB,CAAC,EAAE;UACP,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,OAAOR,CAAM,KAAA,UAAA,EAAY,IAAI,CAACw3D,MAAM,GAAGx3D,CAAAA;EACtC,iBAAA;kBACH,IAAI,CAACw3D,MAAM,GAAG7wD,QAAS3G,CAAAA,CAAAA,CAAAA;EACvB,gBAAA,IAAI,CAAC,IAAI,CAACsjC,KAAK,CAACtjC,CAAAA,CAAE,EAAE,IAAI,CAACsjC,KAAK,CAACtjC,CAAAA,CAAE,GAAGyH,WAAAA;EACtC;EACA,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAAC+vD,MAAM;EACzB;EAvLA;;;;EAIA,KACAn2D,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACw2D,KAAK,GAAG,IAAIl8C,OAAO4K,KAAK,CAAC,KAAOpR,CAAAA,CAAAA,MAAM,CAAC,QAAA,CAAA;UAC5C,IAAI,CAAC4Z,WAAW,GAAG;cAAC9lB,KAAO,EAAA;EAAM,SAAA;EACjC,QAAA,IAAI,CAACqmB,SAAS,GAAG,IAAI3T,IAAO4K,EAAAA,CAAAA,KAAK,CAAC,KAAA,CAAA,CAAOI,QAAQ,CAAC,CAAGxR,CAAAA,CAAAA,MAAM,CAAC,QAAA,CAAA;UAC5D,IAAI,CAACwb,GAAG,CAAC,KAAA,CAAA;UACT,IAAI,CAAClP,aAAa,GAAG,IAAA;UACrB,IAAI,CAACE,aAAa,GAAG,IAAA;UACrB,IAAI,CAACvgB,YAAY,GAAGd,UAAAA,CAAO,EAAI,EAAA,IAAI,CAACc,YAAY,EAAE;cAChDmO,SAAW,EAAA,CAACrR,CAAGgE,EAAAA,CAAAA,GAAM,CAAG,EAAA,IAAI,CAAC8gC,UAAU,CAAC9kC,CAAAA,EAAGgE,CAAG,CAAA,CAAA,EAAE,EAAE,IAAI,CAACs1D,MAAM,CAACt5D,CAAAA,EAAGgE,CAAG,CAAA,CAAA,GAAG,EAAE,IAAI,CAACq1D,IAAI,CAACr5D,CAAAA,EAAGgE,CAAG,CAAA,CAAA,CAAC;EAC5F,SAAA,CAAA;UACA,IAAI,CAACuuB,KAAK,CAAC,OAAA,CAAA;EAEb;EAqKF;;EChMA,MAAMynC,KAAAA,GAAM95D,IAAK+3B,CAAAA,EAAE,GAAG,CAAA;EAOP,MAAMgiC,KAAcxtB,SAAAA,GAAAA,CAAAA;EA+BjC;;;OAIAyB,KAAAA,CAAMhpC,QAAQ,EAAE;EACd,QAAA,KAAK,CAACgpC,KAAMhpC,CAAAA,QAAAA,CAAAA;EACZ,QAAA,MAAMyC,MAAS,GAAA,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,EAC9D7Y,KAAAA,GAAQ,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;EAElE,QAAA,MAAM45C,SAAS3wD,WAAI,CAAA;EAAC5B,YAAAA,MAAAA;EAAQD,YAAAA;EAAM,SAAA,CAAA,GAAI,IAAI,IAAI,CAACyyD,aAAa,EACtD1oC,YAAY,CAAC,UAAU,EAAE/pB,KAAAA,GAAQ,EAAE,EAAE,EAAEC,MAAS,GAAA,CAAA,CAAE,CAAC,CAAC;EAE1D,QAAA,MAAMyyD,cAAiB12D,GAAAA,iBAAAA,EAAAA,CAClB7D,GAAG,CAAC,IAAI,CAACw6D,OAAO,CAChBpmD,CAAAA,OAAO,CAAC,IAAI,CAACm5B,aAAa,GACzBktB,eAAkB52D,GAAAA,iBAAAA,EAAAA,CACnB7D,GAAG,CAAC,IAAI,CAACiG,GAAG,CAAA,CACZjG,GAAG,CAAC,IAAI,CAACw6D,OAAO,CAChBpmD,CAAAA,OAAO,CAAC,IAAI,CAACm5B,aAAa,CAAA;UAE/B,MAAMmtB,QAAAA,GAAWzhD,WAAIwhD,CAAAA,eAAAA,CAAgB31D,GAAG,CAACqM,CAAAA,CAAAA,GAAKA,CAAE/H,CAAAA,MAAM,CAACtE,GAAG,CAAC3E,CAAAA,CAAKyW,GAAAA,WAAAA,CAAIzW,CAAEiJ,CAAAA,MAAM,EAAE,CAACV,CAAGvE,EAAAA,CAAAA,GAAM,IAAI,CAACgpB,MAAM,CAACzkB,CAAGvE,EAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAMw2D,IAAI,EAAA,CAAA;EAEjH,QAAA,MAAMC,YAAe71D,GAAAA,KAAAA,CAAM8pB,IAAI,CAAC9pB,MAAM,IAAI,CAAC81D,OAAO,CAAA,CAAE3xD,IAAI,EAAIpE,CAAAA,CAAAA,GAAG,CAAC3E,CAAAA,KAAM;kBACpEmI,EAAInI,EAAAA,CAAAA;kBACJwN,CAAG0sD,EAAAA,MAAAA,IAAWl6D,CAAAA,CAAAA,GAAI,CAAA,IAAK,IAAI,CAAC06D,OAAO;eACrC,CAAA,CAAA;EAEA,QAAA,MAAMC,YAAen3D,GAAAA,UAAAA,CAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACwsB,WAAW,CAAC5tB,WAAW,EAAE,OAAS,EAAA,QAAA,CAAA;EAClF,QAAA,OAAO03D,aAAa9oD,KAAK;EAEzB,QAAA,IAAI6D,SACDvR,IAAI,CAACs2D,cACLr1D,MAAM,CACLqE,SAAK,+BAAiC,EAAA;cACpC5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;cACpBY,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cACjBjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;EACpB,SAAA,CAAA,CAAG/rB,IAAI,EAAA,CAAA,CAER7D,MAAM,CAAC84D,cACP11D,MAAM,EAAA;UAET,MAAM21D,SAAAA,GAAYR,eAAe93D,MAAM;EACvC,QAAA,MAAMu4D,SAAYT,GAAAA,cAAAA,CACfz1D,GAAG,CAAC,CAAC3E,CAAGgE,EAAAA,CAAAA,GAAAA;cACP,MAAM0D,KAAAA,GAAQ,IAAI,CAACyyD,aAAa;EAChC,YAAA,MAAMhnD,WACJ,IAAI,CAACjQ,YAAY,CAACkL,WAAW,CAAC+E,QAAQ,IACpC,IAAI,CAACjQ,YAAY,CAACkL,WAAW,CAAC+E,QAAQ,CAACnT,GAAGgE,CAC5C,CAAA,IAAA,EAAA;EAEF,YAAA,MAAM0gB,aAAavR,QAAW,GAAA,GAAA;EAC9B,YAAA,MAAMxL,SAAS+c,UAAa,GAAA,CAAA;EAC5B,YAAA,MAAMtR,OAAU,GAAA,EAAA,EACV0nD,QAAWC,GAAAA,QAAAA,CAAS,MAAM,GAAMH,GAAAA,SAAAA,GAAY52D,CAAI,GAAA,EAAA,EAAI,EAAM,CAAA,GAAA,CAAA,GAAI,CAC9Dg3D,EAAAA,OAAAA,GAAUhB,QAAMY,SAAY52D,GAAAA,CAAAA;cAElC,IAAIqK,KAAAA,GAAQ,MAAMusD,SAAY52D,GAAAA,CAAAA;EAE9B,YAAA,IAAIuO,UAAa,GAAA,OAAA;EACjB,YAAA,IAAIhK,CAAI6K,GAAAA,OAAAA;cAER,IAAI0nD,QAAAA,KAAa,CAAKA,IAAAA,QAAAA,KAAa,CAAG,EAAA;EACpCvyD,gBAAAA,CAAAA,GAAI,CAACb,KAAQ0L,GAAAA,OAAAA;kBACbb,UAAa,GAAA,KAAA;kBACblE,KAAS,IAAA,GAAA;EACX;EAEA,YAAA,MAAMyD,WAAc,GAAA;EAClBvJ,gBAAAA,CAAAA;EACAC,gBAAAA,CAAAA,EAAG,CAACb,MAAS,GAAA,CAAA;EACbD,gBAAAA,KAAAA;EACAC,gBAAAA;EACF,aAAA;cAEA,OAAO;kBACL1D,UAAY,EAAA,IAAA;EACZE,gBAAAA,IAAAA,EAAMsC,WAAMzG,CAAEiJ,CAAAA,MAAM,EAAE,IAAI,CAACm8B,KAAK,CAAA;EAChCphC,gBAAAA,CAAAA;EACAmE,gBAAAA,EAAAA,EAAInI,EAAEH,GAAG;EACTwO,gBAAAA,KAAAA;EACAkE,gBAAAA,UAAAA;EACAT,gBAAAA,WAAAA;kBACAxD,YAAc,EAAA;sBAAC,CAAC/F,CAAAA;sBAAGZ,MAAS,GAAA;EAAE,iBAAA;kBAC9BY,CAAG2xD,EAAAA,MAAAA,GAASh6D,IAAKg4B,CAAAA,GAAG,CAAC8iC,OAAAA,CAAAA;kBACrBxyD,CAAG0xD,EAAAA,MAAAA,GAASh6D,IAAK83B,CAAAA,GAAG,CAACgjC,OAAAA;EACvB,aAAA;WAEDlsD,CAAAA,CAAAA,IAAI,CAAC,CAACC,CAAAA,EAAGZ,IAAMY,CAAElP,CAAAA,GAAG,GAAGsO,CAAAA,CAAEtO,GAAG,CAAA;UAE/B,IAAI+V,IAAAA,EAAAA,CACDzR,IAAI,CAAC02D,SACL5vD,CAAAA,CAAAA,MAAM,CAACjL,CAAAA,CAAKA,GAAAA,CAAAA,CAAEqO,KAAK,IAAI,CACvB3G,CAAAA,CAAAA,KAAK,CAAC,CAAA,CAAA,CACNC,MAAM,CAAC,CACPY,CAAAA,CAAAA,CAAC,CAACvI,CAAAA,CAAKA,GAAAA,CAAAA,CAAEuI,CAAC,CAAA,CACVC,CAAC,CAACxI,CAAAA,CAAAA,GAAKA,CAAEwI,CAAAA,CAAC,CACVqJ,CAAAA,KAAK,CAAC7R,CAAAA,CAAKA,GAAAA,CAAAA,CAAEmI,EAAE,CAAA,CACf2J,WAAW,CAAC9R,CAAAA,CAAAA,GAAKA,CAAE8R,CAAAA,WAAW,CAC9B1D,CAAAA,WAAW,CAAC,IAAI,CAACyiB,WAAW,CAAC5tB,WAAW,CAACmL,WAAW,CACpDhJ,CAAAA,MAAM,CACLqE,QAAAA,CAAK,qBAAuB,EAAA;cAC1B5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;cACpBY,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cACjBjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;WACjB/rB,CAAAA,CAAAA,IAAI,IAERT,MAAM,EAAA;EAET,QAAA,IAAIuV,IACDrW,EAAAA,CAAAA,IAAI,CAAC02D,SAAAA,CAAAA,CACL76D,CAAC,CAACA,CAAAA,CAAAA,GAAK,CAAC,CAAC,EAAE,CAAA,CAAE,CAAC,EAAE,CAAA,CAAE,CAAC,EAAE,CAACA,CAAAA,CAAEuI,CAAC,CAAC,CAAC,EAAE,CAACvI,CAAEwI,CAAAA,CAAC,CAAE,CAAA,CAAA,CACnCpD,MAAM,CACLqE,SAAK,qBAAuB,EAAA;cAC1B5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;cACpBY,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cACjBjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;EACpB,SAAA,CAAA,CAAG/rB,IAAI,EAER7D,CAAAA,CAAAA,MAAM,CAAC2B,UAAAA,CAAWa,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAACwsB,WAAW,CAAC5tB,WAAW,EAAE,OAAA,EAAS,SACpEgC,MAAM,EAAA;EAET,QAAA,MAAMg2D,SAAYX,GAAAA,eAAAA,CAAgB31D,GAAG,CAACqM,CAAAA,CAAAA,GAAAA;EAEpC,YAAA,MAAMk/B,IAAIl/B,CAAE/H,CAAAA,MAAM,CAACtE,GAAG,CAAC,CAAC3E,CAAGgE,EAAAA,CAAAA,GAAAA;EACzB,gBAAA,MAAMc,KAAQ2R,GAAAA,WAAAA,CAAIzW,CAAEiJ,CAAAA,MAAM,EAAE,CAACV,CAAGvE,EAAAA,CAAAA,GAAM,IAAI,CAACgpB,MAAM,CAACzkB,CAAGvE,EAAAA,CAAAA,CAAAA,CAAAA;EACrD,gBAAA,MAAMwJ,IAAI1I,KAAQy1D,GAAAA,QAAAA,GAAWL,MACvBc,EAAAA,OAAAA,GAAUhB,QAAMY,SAAY52D,GAAAA,CAAAA;kBAClC,OAAO;sBACLuE,CAAGiF,EAAAA,CAAAA,GAAItN,IAAKg4B,CAAAA,GAAG,CAAC8iC,OAAAA,CAAAA;sBAChBxyD,CAAGgF,EAAAA,CAAAA,GAAItN,IAAK83B,CAAAA,GAAG,CAACgjC,OAAAA;EAClB,iBAAA;EACF,aAAA,CAAA;cAEA,MAAMh7D,CAAAA,GAAI,CAAC,EAAE,EAAEkwC,CAAC,CAAC,CAAE,CAAA,CAAC3nC,CAAC,CAAC,CAAC,EAAE2nC,CAAC,CAAC,CAAA,CAAE,CAAC1nC,CAAC,CAAC,CAAC,EAAE0nC,CAAAA,CAChCvrC,GAAG,CAACuJ,CAAAA,CAAAA,GAAK,CAAC,EAAE,EAAEA,CAAE3F,CAAAA,CAAC,CAAC,CAAC,EAAE2F,CAAAA,CAAE1F,CAAC,CAAA,CAAE,CAC1BmO,CAAAA,IAAI,CAAC,GAAA,CAAA,CAAK,GAAG,EAAEu5B,CAAC,CAAC,CAAA,CAAE,CAAC3nC,CAAC,CAAC,CAAC,EAAE2nC,CAAC,CAAC,CAAA,CAAE,CAAC1nC,CAAC,CAAE,CAAA;cAEpC,OAAO;EACL9D,gBAAAA,GAAAA,EAAKsM,CAAE/H,CAAAA,MAAM,CAACtE,GAAG,CAAC3E,CAAAA,CAAKyG,GAAAA,UAAAA,CAAMzG,CAAEiJ,CAAAA,MAAM,EAAE,IAAI,CAACm8B,KAAK,CAAA,CAAA;EACjDj9B,gBAAAA,EAAAA,EAAI6I,EAAEnR,GAAG;kBACTkU,MAAQm8B,EAAAA,CAAAA;EACRlwC,gBAAAA,CAAAA;kBACAiE,UAAY,EAAA,IAAA;EACZE,gBAAAA,IAAAA,EAAMsC,WAAMuK,CAAE/H,CAAAA,MAAM,CAACtE,GAAG,CAAC3E,CAAAA,CAAKyG,GAAAA,UAAAA,CAAMzG,CAAEiJ,CAAAA,MAAM,EAAE,IAAI,CAACm8B,KAAK,CAAI,CAAA,EAAA,IAAI,CAACA,KAAK;EACxE,aAAA;EAEF,SAAA,CAAA;UAEA,MAAM81B,UAAAA,GAAa13D,UAAWa,CAAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAACnB,YAAY,EAAE,OAAS,EAAA,MAAA,CAAA;EACrE,QAAA,MAAM4F,MAAS1H,GAAAA,MAAAA,CAAO2H,IAAI,CAACmyD,WAAWv4D,EAAE,CAAA;UACxCu4D,UAAWv4D,CAAAA,EAAE,GAAG,EAAC;EACjB,QAAA,IAAK,IAAIlB,CAAI,GAAA,CAAA,EAAGA,IAAIqH,MAAOxG,CAAAA,MAAM,EAAEb,CAAK,EAAA,CAAA;cACtC,MAAM+C,KAAAA,GAAQsE,MAAM,CAACrH,CAAE,CAAA;EACvBy5D,YAAAA,UAAAA,CAAWv4D,EAAE,CAAC6B,KAAAA,CAAM,GAAG,CAACxE,CAAAA,EAAGgE,GAAG/D,CAAGwB,EAAAA,CAAAA,GAAAA;kBAC/B,MAAM8G,CAAAA,GAAIvI,CAAE+T,CAAAA,MAAM,CAACpP,GAAG,CAACiS,CAAAA,CAAKA,GAAAA,CAAAA,CAAErO,CAAC,GAAGb,KAAQ,GAAA,CAAA,CAAA;kBAC1C,MAAMc,CAAAA,GAAIxI,CAAE+T,CAAAA,MAAM,CAACpP,GAAG,CAACiS,CAAAA,CAAKA,GAAAA,CAAAA,CAAEpO,CAAC,GAAGb,MAAS,GAAA,CAAA,CAAA;EAC3C,gBAAA,MAAMyB,SAASC,mBAAQ5H,CAAAA,CAAAA,EAAG,IAAI,CAAC0D,OAAO,CAACO,IAAI,EAAA,CAAA;EAC3C,gBAAA,MAAMy1D,KAAQ5yD,GAAAA,CAAAA,CAAE5D,GAAG,CAACiS,CAAAA,CAAAA,GAAK1W,IAAKsV,CAAAA,GAAG,CAACoB,CAAAA,GAAIxN,MAAM,CAAC,CAAE,CAAA,CAAA,CAAA;EAC/C,gBAAA,MAAMgyD,KAAQ5yD,GAAAA,CAAAA,CAAE7D,GAAG,CAACiS,CAAAA,CAAAA,GAAK1W,IAAKsV,CAAAA,GAAG,CAACoB,CAAAA,GAAIxN,MAAM,CAAC,CAAE,CAAA,CAAA,CAAA;kBAC/C,MAAMiyD,KAAAA,GAAQF,KAAMx2D,CAAAA,GAAG,CAAC,CAAC3E,GAAGgE,CAAMhE,GAAAA,CAAAA,GAAIo7D,KAAK,CAACp3D,CAAE,CAAA,CAAA;EAC9C,gBAAA,IAAI,CAACzB,GAAG,CAACiC,MAAM,CAACH,IAAI,CAAC,IAAI,CAAA,CAAErE,EAAE0E,GAAG,CAAC22D,MAAM35D,OAAO,CAAC6H,YAAI8xD,KAAQ,CAAA,CAAA,CAAA,EAAEr3D,GAAG/D,CAAGwB,EAAAA,CAAAA,CAAAA;EACrE,aAAA;EACF;UAEA,IAAI,CAAC4qB,OAAO,CAAC3e,IAAI,CACf,IAAI8M,IAAAA,EAAAA,CACDrW,IAAI,CAAC82D,SAAAA,CAAAA,CACLj7D,CAAC,CAACA,CAAAA,IAAKA,CAAEA,CAAAA,CAAC,EACVoF,MAAM,CACLqE,SAAK,sBAAwB,EAAA;cAC3B5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;cACpBY,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cACjBjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;EACpB,SAAA,CAAA,CAAG/rB,IAAI,EAAA,CAAA,CAER7D,MAAM,CAACq5D,YACPj2D,MAAM,EAAA,CAAA;EAGX,QAAA,OAAO,IAAI;EACb;EAEA;;;;;OAMA2rB,UAAAA,CAAW9uB,CAAC,EAAE;EACZ,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACuuB,WAAW,GAAGzuB,UAAAA,CAAO,IAAI,CAACyuB,WAAW,EAAE/uB,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC+uB,WAAW;EACrG;EAEA;;;;;OAMAyqC,MAAAA,CAAOx5D,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC+3D,OAAO,GAAG,OAAOv4D,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACu4D,OAAO;EAC3G;EAEA;;;;;OAMAkB,YAAAA,CAAaz5D,CAAC,EAAE;EACd,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC63D,aAAa,GAAGr4D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACq4D,aAAa;EAC/E;EAEA;;;;;;;;OASAr1D,KAAAA,CAAMhD,CAAC,EAAE;EACP,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0qB,MAAM,GAAG,OAAOlrB,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkrB,MAAM;EACzG;EA7PA;;;;EAIA,KACA7pB,WAAc,EAAA;UACZ,KAAK,EAAA;UAEL,IAAI,CAAC0tB,WAAW,GAAG;cACjB5tB,WAAa,EAAA;EACXyI,gBAAAA,IAAAA,EAAM3G,QAAS,CAAA,MAAA,CAAA;kBACfqJ,WAAa,EAAA;sBACX6E,SAAW,EAAA,MAAA;sBACXG,OAAS,EAAA,CAAA;EACTb,oBAAAA,UAAAA,EAAY,CAACvS,CAAAA,EAAGgE,CAAGuE,EAAAA,CAAAA,GAAMA,EAAEgK,UAAU;sBACrCI,aAAe,EAAA;EACjB,iBAAA;kBACApH,MAAQ,EAAA,MAAA;EACR+G,gBAAAA,WAAAA,EAAavN,QAAS,CAAA,CAAA;EACxB;EACF,SAAA;UACA,IAAI,CAACoE,SAAS,GAAG,QAAA;UACjB,IAAI,CAACuxD,OAAO,GAAG,CAAA;UACf,IAAI,CAACL,OAAO,GAAG5xD,QAAS,CAAA,QAAA,CAAA;UACxB,IAAI,CAAC0xD,aAAa,GAAG,GAAA;UACrB,IAAI,CAACj6C,MAAM,GAAGnb,QAAS,CAAA,MAAA,CAAA;UACvB,IAAI,CAACioB,MAAM,GAAGvkB,QAAS,CAAA,OAAA,CAAA;EACzB;EAoOF;;ECxQA,MAAMuxD,GAAAA,GAAM95D,IAAK+3B,CAAAA,EAAE,GAAG,CAAA;EAOP,MAAMujC,YAAqB/uB,SAAAA,GAAAA,CAAAA;EA4CxC;;;;OAKAyB,KAAAA,CAAMhpC,QAAQ,EAAE;EAEd,QAAA,MAAM,EAACwsD,SAAS,EAAEI,YAAY,EAAEj6C,SAAS,EAAC,GAAG6jC,QAAAA,CAASr3C,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAAC+oC,aAAa,CAAA;UAEnF,IAAI,CAACskB,UAAUpvD,MAAM,IAAI,CAACwvD,YAAaxvD,CAAAA,MAAM,EAAE,OAAO,IAAI;EAE1D,QAAA,KAAK,CAAC4rC,KAAMhpC,CAAAA,QAAAA,CAAAA;EAEZ,QAAA,MAAMyC,SAAS,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,EAC9D1d,MAAAA,GAAS,IAAI,CAACsC,OAAO,EACrBmB,UAAAA,GAAa,IAAI,CAACqI,WAAW,EAC7BjH,KAAQ,GAAA,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;UAElE,MAAM2G,WAAAA,GAAc,IAAIc,UAAa,GAAA,GAAA;EACrC,QAAA,MAAMmyC,SAAS3wD,WAAI,CAAA;EAAC5B,YAAAA,MAAAA,GAASsf,WAAc,GAAA,CAAA;EAAGvf,YAAAA,KAAAA,GAAQqgB,UAAa,GAAA;WAAE,CAAI,GAAA,CAAA,EACnE0J,SAAY,GAAA,CAAC,UAAU,EAAE/pB,QAAQ,CAAI,GAAA,IAAI,CAACqW,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE7Y,MAAS,GAAA,CAAA,GAAI,IAAI,CAACoW,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC;EAGjG,QAAA,MAAMo7C,cAAiB3J,GAAAA,YAAAA,CAAanhD,KAAK,EAAA,CAAGkD,OAAO,EAAA;UACnD4nD,cAAel+C,CAAAA,OAAO,CAACk+C,cAAAA,CAAejlD,GAAG,EAAA,CAAA;UACzC,MAAM6wB,KAAAA,GAAQo0B,eAAen5D,MAAM;EAEnC,QAAA,MAAMuL,SAAY4tD,GAAAA,cAAAA,CACf92D,GAAG,CAAC,CAAC9E,GAAKmE,EAAAA,CAAAA,GAAAA;cAET,MAAMg3D,OAAAA,GAAUh3D,IAAIqjC,KAAQ2yB,GAAAA,GAAAA;EAC5B,YAAA,MAAM3rD,QAAQnO,IAAKqc,CAAAA,KAAK,CAACy+C,OAAU,GAAA,GAAA,GAAM96D,KAAK+3B,EAAE,CAAA;cAChD,MAAM6iC,QAAAA,GAAW56D,IAAKC,CAAAA,KAAK,CAAEkO,CAAAA,KAAQ,GAAA,EAAC,IAAK,EAAA,GAAK,CAAI,GAAA,CAAA,CAAA;EAEpD,YAAA,MAAMu7B,IAAO,GAAA;EAAC,gBAAA,CAAA;EAAG,gBAAA;EAAI,aAAA,CAACjoC,QAAQ,CAAC0M,KAAS,CAAA,GAAA,OAAc,CAAI,GAAA;EAAC,gBAAA,CAAA;EAAG,gBAAA;EAAE,aAAA,CAAC1M,QAAQ,CAACm5D,QAAY,CAAA,GAAA,IAAc,GAAA,CAAA;EACpG,YAAA,MAAMjxB,IAAO,GAAA;EAAC,gBAAA,EAAA;EAAI,gBAAA;EAAI,aAAA,CAACloC,QAAQ,CAAC0M,KAAS,CAAA,GAAA,MAAe,CAAI,GAAA;EAAC,gBAAA,CAAA;EAAG,gBAAA;EAAE,aAAA,CAAC1M,QAAQ,CAACm5D,QAAY,CAAA,GAAA,GAAe,GAAA,CAAA;cAEvG,OAAO;EACLj7D,gBAAAA,GAAAA;EAAKwO,gBAAAA,KAAAA;EAAOysD,gBAAAA,QAAAA;EAAUE,gBAAAA,OAAAA;EACtBzyD,gBAAAA,CAAAA,EAAG2xD,SAASh6D,IAAK83B,CAAAA,GAAG,CAACgjC,OAAU96D,GAAAA,IAAAA,CAAK+3B,EAAE,CAAI2R,GAAAA,IAAAA;EAC1CphC,gBAAAA,CAAAA,EAAG0xD,SAASh6D,IAAKg4B,CAAAA,GAAG,CAAC8iC,OAAU96D,GAAAA,IAAAA,CAAK+3B,EAAE,CAAI4R,GAAAA;EAC5C,aAAA;EACF,SAAA,CAAA;EAEF;;;UAIA,MAAM6xB,aAAgB,GAAA,IAAI,CAACzI,aAAa,CAACnlD,MAAM,YAAYlJ,KACvDiJ,GAAAA,SAAAA,CAAUrM,MAAM,CAACxB,CAAAA,CAAK,GAAA,IAAI,CAACizD,aAAa,CAACnlD,MAAM,CAACnM,QAAQ,CAAC3B,CAAEH,CAAAA,GAAG,CAC9DgO,CAAAA,GAAAA,SAAAA;UAEJ,IAAI,CAAC8tD,aAAa,CACfx3D,IAAI,CAACu3D,aACLnzD,CAAAA,CAAAA,CAAC,CAACvI,CAAAA,CAAAA,GAAKA,EAAEuI,CAAC,CAAA,CACVC,CAAC,CAACxI,CAAAA,IAAKA,CAAEwI,CAAAA,CAAC,CACV+F,CAAAA,IAAI,CAACvO,CAAAA,IAAKA,CAAEH,CAAAA,GAAG,EACf6H,KAAK,CAACqgB,YACNpgB,MAAM,CAACsf,aACPplB,MAAM,CAAC,IAAI,CAACoxD,aAAa,CAAChwD,WAAW,CAACmL,WAAW,CACjDhJ,CAAAA,MAAM,CACLqE,QAAAA,CAAK,+BAAiC,EAAA;EACpC5G,YAAAA,MAAAA;EAAQyD,YAAAA,UAAAA;cACRP,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cACjBjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;WACjB/rB,CAAAA,CAAAA,IAAI,IAERT,MAAM,EAAA;EAGT,QAAA,MAAMsnD,WAAc,GAAA,IAAI,CAACC,YAAY,CAAC0N,MAAAA,CAAAA;EACtC,QAAA,MAAM0B,YAAY,CAAC1B,SAAS3N,WAAU,IAAKmF,UAAUpvD,MAAM;EAC3D,QAAA,MAAMu5D,cAAchuD,SAAUvL,CAAAA,MAAM,GAAG,CAAA,GAAIuL,SAAS,CAAC,CAAA,CAAE,CAACmtD,OAAO,GAAGntD,SAAS,CAAC,CAAE,CAAA,CAACmtD,OAAO,GAAGhB,GAAAA;EACzF,QAAA,MAAM8B,WAAcpK,GAAAA,SAAAA,CAAU/gD,KAAK,EAAA,CAAGkD,OAAO,EAAA;EAE7C,QAAA,MAAMw4C,UAAUC,SACbJ,EAAAA,CAAAA,QAAQ,CAAC,IAAI,CAACuH,YAAY,GAAGyG,MAC7B3N,CAAAA,CAAAA,WAAW,CAACvsD,CAAAA,CAAAA,GAAKusD,WAAcuP,GAAAA,WAAAA,CAAYp6D,OAAO,CAAC1B,CAAAA,CAAEuqB,GAAG,CAAA,GAAIqxC,YAAY,IAAI,CAACnI,YAAY,GAAG,GAC5F3H,WAAW,CAAC9rD,CAAAA,CAAAA,GAAKusD,cAAc,CAACuP,YAAYp6D,OAAO,CAAC1B,EAAEuqB,GAAG,CAAA,GAAI,CAAA,IAAKqxC,YAAY,IAAI,CAACnI,YAAY,GAAG,GAClGsI,UAAU,CAAC/7D,CAAAA,CAAAA,GAAK6N,SAAS,CAACikD,YAAAA,CAAapwD,OAAO,CAAC1B,CAAAA,CAAEqyD,MAAM,CAAE,CAAA,CAAC2I,OAAO,GAAGa,cAAc,CAClFG,CAAAA,CAAAA,QAAQ,CAACh8D,CAAAA,IAAK6N,SAAS,CAACikD,YAAapwD,CAAAA,OAAO,CAAC1B,CAAEqyD,CAAAA,MAAM,EAAE,CAAC2I,OAAO,GAAGa,WAAc,GAAA,CAAA,CAAA;EAEnF,QAAA,IAAI,CAACxvC,OAAO,CAAC3e,IAAI,CAAC,IAAI8M,IACnBrW,EAAAA,CAAAA,IAAI,CAAC0T,SAAAA,CAAAA,CACL7X,CAAC,CAACqsD,OAAAA,CAAAA,CACFjnD,MAAM,CAACqE,SAAK,4BAA8B,EAAA;EACzC5G,YAAAA,MAAAA;EAAQyD,YAAAA,UAAAA;cACRP,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cACjBjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;WACjB/rB,CAAAA,CAAAA,IAAI,EACN7D,CAAAA,CAAAA,MAAM,CAAC;cACNsG,EAAInI,EAAAA,CAAAA,IAAK,IAAI,CAACslC,IAAI,CAACtlC,CAAAA,CAAAA,CAAG2W,IAAI,CAAC,GAAA,CAAA;cAC3BpO,CAAG,EAAA,CAAA;cACHC,CAAG,EAAA;EACL,SAAA,CAAA,CACC3G,MAAM,CAAC2B,UAAWa,CAAAA,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAACnB,YAAY,EAAE,OAAA,EAAS,SACzD+B,MAAM,EAAA,CAAA;EAET,QAAA,OAAO,IAAI;EAEb;EAEA;;;;OAKAyuD,WAAAA,CAAY5xD,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACmxD,YAAY,GAAG3xD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC2xD,YAAY;EAC7E;EAEA;;;;;;;;OASApB,MAAAA,CAAOvwD,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC0vD,OAAO,GAAG,OAAOlwD,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACkwD,OAAO;EAC3G;EAEA;;;;;OAMA2B,YAAAA,CAAa7xD,CAAC,EAAE;EACd,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC2wD,aAAa,GAAG7wD,UAAAA,CAAO,IAAI,CAAC6wD,aAAa,EAAEnxD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACmxD,aAAa;EAC3G;EAEA;;;;OAKAW,UAAAA,CAAW9xD,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACyvD,WAAW,GAAGjwD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACiwD,WAAW;EAC3E;EAEA;;;;;;;;OASA8B,UAAAA,CAAW/xD,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC2vD,WAAW,GAAGnwD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACmwD,WAAW;EAC3E;EAEA;;;;;;;;OASA1F,WAAAA,CAAYzqD,CAAC,EAAE;EACb,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACkqD,YAAY,GAAG,OAAO1qD,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC0qD,YAAY;EACrH;EAEA;;;;;;;;OASAjiC,GAAAA,CAAIzoB,CAAC,EAAE;EACL,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACsvD,IAAI,GAAG,OAAO9vD,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC8vD,IAAI;EACrG;EAEA;;;;OAKAmC,OAAAA,CAAQjyD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACqvD,QAAQ,GAAG7vD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC6vD,QAAQ;EACrE;EAEA;;;;;;;;OASAqC,OAAAA,CAAQlyD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuvD,QAAQ,GAAG/vD,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+vD,QAAQ;EACrE;EApPA;;;;EAIA,KACA1uD,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACswD,YAAY,GAAG,CAAA;UAEpB,IAAI,CAACzB,OAAO,GAAGvpD,QAAS,CAAA,QAAA,CAAA;UACxB,IAAI,CAACwqD,aAAa,GAAG;cACnBhwD,WAAa,EAAA;kBACXmL,WAAa,EAAA;sBACX6E,SAAW,EAAA,MAAA;sBACXG,OAAS,EAAA,CAAA;EACTb,oBAAAA,UAAAA,EAAYvS,CAAAA,CAAK,GAAA;EAAC,4BAAA,CAAA;EAAG,4BAAA;EAAI,yBAAA,CAAC2B,QAAQ,CAAC3B,CAAEqO,CAAAA,KAAK,IAAI,QAAW,GAAA;EAAC,4BAAA,CAAA;EAAG,4BAAA;EAAE,yBAAA,CAAC1M,QAAQ,CAAC3B,CAAE86D,CAAAA,QAAQ,IAAI,KAAQ,GAAA,OAAA;EAC/FnoD,oBAAAA,aAAAA,EAAe3S,CAAAA,CAAK,GAAA;EAAC,4BAAA,EAAA;EAAI,4BAAA;EAAI,yBAAA,CAAC2B,QAAQ,CAAC3B,CAAEqO,CAAAA,KAAK,IAAI,QAAW,GAAA;EAAC,4BAAA,CAAA;EAAG,4BAAA;EAAE,yBAAA,CAAC1M,QAAQ,CAAC3B,CAAE86D,CAAAA,QAAQ,IAAI,QAAW,GAAA;EACxG;EACF;EACF,SAAA;EACA,QAAA,IAAI,CAAC7I,WAAW,GAAG,CAACljD,CAAGZ,EAAAA,CAAAA,GAAM,CAAGY,EAAAA,CAAAA,CAAAA,CAAG,CAACwnC,aAAa,CAAC,CAAA,EAAGpoC,CAAG,CAAA,CAAA,CAAA;EACxD,QAAA,IAAI,CAACq+C,YAAY,GAAG0N,CAAAA,SAAUA,MAAS,GAAA,CAAA;UAEvC,IAAI,CAACnsD,MAAM,GAAG,CAAC/N,CAAAA,EAAGgE,IAAM,CAAGiwD,EAAAA,OAAAA,CAAQ5vD,IAAI,CAAC,IAAI,CAAA,CAAE,OAAOrE,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG,GAAG,EAAEiwD,OAAQ5vD,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,QAAUrE,EAAAA,CAAAA,EAAGgE,CAAI,CAAA,CAAA,CAAA;EAEpG,QAAA,MAAMkwD,qBAAwB,GAAA,IAAI,CAAC3xD,GAAG,CAAC,iBAAkB,CAAA;UACzD,IAAI,CAACA,GAAG,CAAC,iBAAA,CAAkB,GAAG,CAACvC,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,GAAAA;cACtC0vD,qBAAsBl0D,CAAAA,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;EAC/B,YAAA,MAAM+lB,MAAM0pC,OAAQ5vD,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,OAAOrE,CAAGgE,EAAAA,CAAAA,CAAAA;EACzC,YAAA,MAAMquD,SAAS4B,OAAQ5vD,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,UAAUrE,CAAGgE,EAAAA,CAAAA,CAAAA;cAC/C,IAAI,CAACyN,KAAK,CAAC,CAACT,GAAGmjD,EAAOF,GAAAA,OAAAA,CAAQ5vD,IAAI,CAAC,IAAI,CAAA,CAAE,OAAO2M,CAAGmjD,EAAAA,EAAAA,CAAAA,KAAQ5pC,OAAO0pC,OAAQ5vD,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,QAAU2M,EAAAA,CAAAA,EAAGmjD,EAAQ9B,CAAAA,KAAAA,MAAAA,CAAAA;EAC5G,SAAA;UAEA,IAAI,CAACT,IAAI,GAAGnpD,QAAS,CAAA,KAAA,CAAA;EACrB,QAAA,IAAI,CAACopD,QAAQ,GAAG,CAAC9iD,CAAGZ,EAAAA,CAAAA,GAAM,CAAGY,EAAAA,CAAAA,CAAAA,CAAG,CAACwnC,aAAa,CAAC,CAAA,EAAGpoC,CAAG,CAAA,CAAA,CAAA;UAErD,IAAI,CAACwtD,aAAa,GAAG,IAAI3oD,OAAAA,EAAAA;EAE3B;EA8MF;;ECzPe,MAAMipD,KAAcxvB,SAAAA,GAAAA,CAAAA;EAuFjC;;;OAIAyB,KAAAA,CAAMhpC,QAAQ,EAAE;EAEd,QAAA,KAAK,CAACgpC,KAAMhpC,CAAAA,QAAAA,CAAAA;UAEZ,MAAMf,IAAAA,GAAO,IAAI,CAACipC,aAAa,CAAClxB,MAAM,CAAC,CAAC1b,GAAAA,EAAKR,CAAGgE,EAAAA,CAAAA,GAAAA;EAC9CxD,YAAAA,GAAG,CAAC,IAAI,CAACsF,GAAG,CAAC9F,CAAAA,EAAGgE,GAAG,GAAGhE,CAAAA;cACtB,OAAOQ,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;UAEJ,IAAI+zD,KAAAA,GAAQ,IAAI,CAACC,MAAM;EAEvB,QAAA,IAAI,CAAC,IAAI,CAACA,MAAM,CAAClyD,MAAM,IAAI,IAAI,CAACyyD,MAAM,CAACzyD,MAAM,EAAE;EAC7C,YAAA,MAAM45D,UAAUt3D,KAAM8pB,CAAAA,IAAI,CAAC,IAAID,IAAI,IAAI,CAACsmC,MAAM,CAAC74C,MAAM,CAAC,CAACs3B,KAAKzsC,IAASysC,GAAAA,GAAAA,CAAIryC,MAAM,CAAC;EAAC4F,oBAAAA,IAAAA,CAAKkuD,MAAM;EAAEluD,oBAAAA,IAAAA,CAAKouD;EAAO,iBAAA,CAAA,EAAG,EAAE,CAAA,CAAA,CAAA;cAC/GZ,KAAQ2H,GAAAA,OAAAA,CAAQv3D,GAAG,CAACe,CAAAA,OAAQ,OAAOA,IAAAA,KAAS,WAAWA,IAAO,GAAA;sBAACyC,EAAIzC,EAAAA;EAAI,iBAAA,CAAA;EACzE;EAEA6uD,QAAAA,KAAAA,GAAQA,KAAMr4C,CAAAA,MAAM,CAAC,CAAC1b,KAAKR,CAAGgE,EAAAA,CAAAA,GAAAA;cAC5BxD,GAAG,CAAC,IAAI,CAAC6zD,YAAY,GAAG,IAAI,CAACA,YAAY,CAAC,IAAI,CAAC9uB,UAAU,CAAC,CAACvlC,GAAGgE,CAAK,CAAA,GAAA,IAAI,CAAC8B,GAAG,CAAC9F,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG,GAAGhE,CAAAA;cACrF,OAAOQ,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;EAEJ+zD,QAAAA,KAAAA,GAAQ3vD,MAAM8pB,IAAI,CAAC,IAAID,GAAIrtB,CAAAA,MAAAA,CAAO2H,IAAI,CAAC5E,IAAAA,CAAAA,CAAMhD,MAAM,CAACC,OAAO2H,IAAI,CAACwrD,UAAU5vD,GAAG,CAAC,CAACwD,EAAInE,EAAAA,CAAAA,GAAAA;cAEjF,MAAMhE,CAAAA,GAAImE,IAAI,CAACgE,EAAAA,CAAG,EACZgU,CAAIo4C,GAAAA,KAAK,CAACpsD,EAAG,CAAA;cAEnB,IAAIgU,CAAAA,KAAMpc,WAAW,OAAO,KAAA;cAE5B,OAAO;kBACLkE,UAAY,EAAA,IAAA;EACZE,gBAAAA,IAAAA,EAAMnE,CAAKmc,IAAAA,CAAAA;EACXnY,gBAAAA,CAAAA;EAAGmE,gBAAAA,EAAAA;kBACHzC,IAAMyW,EAAAA,CAAAA;EACNkN,gBAAAA,KAAAA,EAAOrpB,MAAMD,SAAa,IAAA,IAAI,CAACmgB,MAAM,CAAClgB,CAAOD,CAAAA,KAAAA,SAAAA,GAAY,IAAI,CAACmgB,MAAM,CAAClgB,CAAAA,CAAAA,GAAK,IAAI,CAACkgB,MAAM,CAAC/D,CAAAA;EACxF,aAAA;WAEC3a,CAAAA,CAAAA,MAAM,CAAC2a,CAAAA,CAAKA,GAAAA,CAAAA,CAAAA;UAEf,MAAMw4C,UAAAA,GAAa,IAAI,CAACC,WAAW,GAAGL,KAAMr4C,CAAAA,MAAM,CAAC,CAAC1b,GAAKR,EAAAA,CAAAA,GAAAA;EACvDQ,YAAAA,GAAG,CAACR,CAAAA,CAAEmI,EAAE,CAAC,GAAGnI,CAAAA;cACZ,OAAOQ,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;EAEJ,QAAA,MAAMs0D,QAAQ,IAAI,CAACC,MAAM,CAACpwD,GAAG,CAACoC,CAAAA,IAAAA,GAAAA;EAC5B,YAAA,MAAMo1D,KAAQ,GAAA;EAAC,gBAAA,QAAA;EAAU,gBAAA;EAAS,aAAA;EAClC,YAAA,MAAMC,IAAOD,GAAAA,KAAAA,CAAMjgD,MAAM,CAAC,CAACmgD,MAAQF,EAAAA,KAAAA,GAAAA;kBACjCE,MAAM,CAACF,KAAM,CAAA,GAAG,OAAOp1D,IAAI,CAACo1D,KAAAA,CAAM,KAAK,QAAA,GAAW5H,KAAK,CAACxtD,IAAI,CAACo1D,KAAM,CAAA,CAAC,GAAGxH,UAAU,CAAC5tD,IAAI,CAACo1D,KAAAA,CAAM,CAACh0D,EAAE,IAAIpB,IAAI,CAACo1D,KAAAA,CAAM,CAAC;kBAChH,OAAOE,MAAAA;EACT,aAAA,EAAG,EAAC,CAAA;EACJD,YAAAA,IAAAA,CAAK1yD,IAAI,GAAG,IAAI,CAACwrD,SAAS,CAACnuD,IAAAA,CAAAA;cAC3B,OAAOq1D,IAAAA;EACT,SAAA,CAAA;EAEA,QAAA,MAAME,OAAUxH,GAAAA,KAAAA,CAAM54C,MAAM,CAAC,CAACvX,GAAKoC,EAAAA,IAAAA,GAAAA;cACjC,IAAI,CAACpC,GAAG,CAACoC,IAAAA,CAAKkuD,MAAM,CAAC9sD,EAAE,CAAC,EAAE;EACxBxD,gBAAAA,GAAG,CAACoC,IAAKkuD,CAAAA,MAAM,CAAC9sD,EAAE,CAAC,GAAG,EAAE;EAC1B;cACAxD,GAAG,CAACoC,KAAKkuD,MAAM,CAAC9sD,EAAE,CAAC,CAACuF,IAAI,CAAC3G,IAAAA,CAAAA;cACzB,IAAI,CAACpC,GAAG,CAACoC,IAAAA,CAAKouD,MAAM,CAAChtD,EAAE,CAAC,EAAE;EACxBxD,gBAAAA,GAAG,CAACoC,IAAKouD,CAAAA,MAAM,CAAChtD,EAAE,CAAC,GAAG,EAAE;EAC1B;cACAxD,GAAG,CAACoC,KAAKouD,MAAM,CAAChtD,EAAE,CAAC,CAACuF,IAAI,CAAC3G,IAAAA,CAAAA;cACzB,OAAOpC,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;UAEJ,MAAMf,QAAAA,GAAW,IAAI,CAACC,SAAS,EACzB8D,MAAS,GAAA,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,EAC9DkR,SAAAA,GAAY,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC,EAClE3Y,KAAAA,GAAQ,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;EAElE,QAAA,MAAMi8C,KAAQ,GAAA,EAAE,EACVrC,MAAAA,GAAS3wD,WAAI,CAAA;EAAC5B,YAAAA,MAAAA;EAAQD,YAAAA;WAAM,CAAI,GAAA,CAAA,EAChC80D,YAAYtC,MAAS,GAAA,CAAA;UAE3B,MAAMuC,WAAAA,GAAcD,SACdE,EAAAA,aAAAA,GAAgBF,SAAY,GAAA,CAAA;EAElC,QAAA,MAAMpwC,SAASuoC,UAAU,CAAC,IAAI,CAACgI,OAAO,CAAC;UAEvCvwC,MAAO7jB,CAAAA,CAAC,GAAGb,KAAQ,GAAA,CAAA;UACnB0kB,MAAO5jB,CAAAA,CAAC,GAAGb,MAAS,GAAA,CAAA;EACpBykB,QAAAA,MAAAA,CAAO5e,CAAC,GAAG,IAAI,CAAC6uC,QAAQ,GAAGvjC,WAAI,CAAA;EAAC,YAAA,IAAI,CAACujC,QAAQ;cAAEogB,WAAc,GAAA;EAAI,SAAA,CAAA,GAAI,IAAI,CAACrgB,QAAQ,GAAG7yC,WAAI,CAAA;EAAC,YAAA,IAAI,CAAC6yC,QAAQ;cAAEqgB,WAAc,GAAA;EAAI,SAAA,CAAA,GAAIA,WAAc,GAAA,GAAA;EAE7I,QAAA,MAAMG,OAAU,GAAA;EAACxwC,YAAAA;EAAO,SAAA,EAClBywC,YAAY,EAAE;UAEpBP,OAAO,CAAC,IAAI,CAACK,OAAO,CAAC,CAAC16D,OAAO,CAACm6D,CAAAA,IAAAA,GAAAA;EAC5B,YAAA,MAAM12D,IAAO02D,GAAAA,IAAAA,CAAKnH,MAAM,CAAC9sD,EAAE,KAAK,IAAI,CAACw0D,OAAO,GAAGP,IAAAA,CAAKjH,MAAM,GAAGiH,KAAKnH,MAAM;EACxEvvD,YAAAA,IAAAA,CAAK62D,KAAK,GAAGD,OAAO,CAAC52D,IAAKyC,CAAAA,EAAE,CAAC,CAAC3G,MAAM,CAACuF,CAAAA,IAAAA,GAAQA,IAAKkuD,CAAAA,MAAM,CAAC9sD,EAAE,KAAK,IAAI,CAACw0D,OAAO,IAAI51D,IAAAA,CAAKouD,MAAM,CAAChtD,EAAE,KAAK,IAAI,CAACw0D,OAAO,CAAA;EAC/Gj3D,YAAAA,IAAAA,CAAK02D,IAAI,GAAGA,IAAAA;EAEZQ,YAAAA,OAAAA,CAAQlvD,IAAI,CAAChI,IAAAA,CAAAA;EACbm3D,YAAAA,SAAAA,CAAUnvD,IAAI,CAAChI,IAAAA,CAAAA;EACjB,SAAA,CAAA;EAEAm3D,QAAAA,SAAAA,CAAU/tD,IAAI,CAAC,CAACC,CAAAA,EAAGZ,CAAMY,GAAAA,CAAAA,CAAEwtD,KAAK,CAACj6D,MAAM,GAAG6L,CAAEouD,CAAAA,KAAK,CAACj6D,MAAM,CAAA;EAExD,QAAA,MAAMw6D,cAAc,EAAE;EACtB,QAAA,IAAIC,aAAgB,GAAA,CAAA;UAEpBF,SAAU56D,CAAAA,OAAO,CAAC2U,CAAAA,CAAAA,GAAAA;cAChB,MAAMomD,SAAAA,GAAYpmD,EAAEzO,EAAE;EAEtByO,YAAAA,CAAAA,CAAE2lD,KAAK,GAAG3lD,CAAE2lD,CAAAA,KAAK,CAAC/6D,MAAM,CAAC46D,CAAAA,IAAAA,GAAQ,CAACQ,OAAAA,CAAQj7D,QAAQ,CAACy6D,KAAKnH,MAAM,CAAA,IAAKmH,IAAKjH,CAAAA,MAAM,CAAChtD,EAAE,KAAK60D,SAAAA,IACrD,CAACJ,OAAQj7D,CAAAA,QAAQ,CAACy6D,IAAAA,CAAKjH,MAAM,CAAKiH,IAAAA,IAAAA,CAAKnH,MAAM,CAAC9sD,EAAE,KAAK60D,SAAAA,CAAAA;EAEtFD,YAAAA,aAAAA,IAAiBnmD,CAAE2lD,CAAAA,KAAK,CAACj6D,MAAM,IAAI,CAAA;EAEnCsU,YAAAA,CAAAA,CAAE2lD,KAAK,CAACt6D,OAAO,CAACm6D,CAAAA,IAAAA,GAAAA;EACd,gBAAA,MAAM,EAACnH,MAAM,EAAEE,MAAM,EAAC,GAAGiH,IAAAA;EACzB,gBAAA,MAAMa,KAAQ9H,GAAAA,MAAAA,CAAOhtD,EAAE,KAAK60D,YAAY/H,MAASE,GAAAA,MAAAA;EACjDyH,gBAAAA,OAAAA,CAAQlvD,IAAI,CAACuvD,KAAAA,CAAAA;EACf,aAAA,CAAA;EACF,SAAA,CAAA;UAEA,MAAMjD,GAAAA,GAAM95D,IAAK+3B,CAAAA,EAAE,GAAG,CAAA;EACtB,QAAA,IAAIna,MAAS,GAAA,CAAA;UAEb++C,SAAU56D,CAAAA,OAAO,CAAC,CAAC2U,CAAG5S,EAAAA,CAAAA,GAAAA;EACpB,YAAA,MAAMm1D,QAAWviD,GAAAA,CAAAA,CAAE2lD,KAAK,CAACj6D,MAAM,IAAI,CAAA;cACnC,MAAM+iB,KAAAA,GAAQ20C,MAAM+C,aAAgB5D,GAAAA,QAAAA;EAEpC,YAAA,IAAIn1D,MAAM,CAAG,EAAA;EACX8Z,gBAAAA,MAAAA,IAAUuH,KAAQ,GAAA,CAAA;EACpB;EAEA,YAAA,MAAMhX,KAAQyP,GAAAA,MAAAA,GAASuH,KAAQ,GAAA,CAAA,GAAI20C,GAAM,GAAA,CAAA;EAEzCpjD,YAAAA,CAAAA,CAAEokD,OAAO,GAAG3sD,KAAAA;EACZuI,YAAAA,CAAAA,CAAErO,CAAC,GAAGb,KAAAA,GAAQ,IAAI+0D,WAAcv8D,GAAAA,IAAAA,CAAKg4B,GAAG,CAAC7pB,KAAAA,CAAAA;EACzCuI,YAAAA,CAAAA,CAAEpO,CAAC,GAAGb,MAAAA,GAAS,IAAI80D,WAAcv8D,GAAAA,IAAAA,CAAK83B,GAAG,CAAC3pB,KAAAA,CAAAA;cAE1CyP,MAAUuH,IAAAA,KAAAA;EAEVzO,YAAAA,CAAAA,CAAE2lD,KAAK,CAACt6D,OAAO,CAAC,CAACm6D,IAAMp4D,EAAAA,CAAAA,GAAAA;EACrB,gBAAA,MAAM0B,IAAO02D,GAAAA,IAAAA,CAAKnH,MAAM,CAAC9sD,EAAE,KAAKyO,CAAEzO,CAAAA,EAAE,GAAGi0D,IAAAA,CAAKjH,MAAM,GAAGiH,KAAKnH,MAAM;EAChE,gBAAA,MAAMh1D,IAAI+5D,GAAM+C,GAAAA,aAAAA;EAChB,gBAAA,MAAMhuD,IAAIV,KAAQpO,GAAAA,CAAAA,GAAIk5D,WAAW,CAAIl5D,GAAAA,CAAAA,GAAI,IAAIA,CAAI+D,GAAAA,CAAAA;EAEjD0B,gBAAAA,IAAAA,CAAKs1D,OAAO,GAAGjsD,CAAAA;EACfrJ,gBAAAA,IAAAA,CAAK6C,CAAC,GAAGb,KAAAA,GAAQ,IAAIg1D,aAAgBx8D,GAAAA,IAAAA,CAAKg4B,GAAG,CAACnpB,CAAAA,CAAAA;EAC9CrJ,gBAAAA,IAAAA,CAAK8C,CAAC,GAAGb,MAAAA,GAAS,IAAI+0D,aAAgBx8D,GAAAA,IAAAA,CAAK83B,GAAG,CAACjpB,CAAAA,CAAAA;EAE/C+tD,gBAAAA,WAAAA,CAAYpvD,IAAI,CAAChI,IAAAA,CAAAA;EACnB,aAAA,CAAA;EACF,SAAA,CAAA;EAEA,QAAA,MAAMw3D,kBAAkBV,SAAY,GAAA,CAAA;EACpC,QAAA,MAAMW,oBAAoBX,SAAY,GAAA,CAAA;UAEtC,IAAIY,UAAAA,GAAaF,kBAAkB,CAAI,GAAA,CAAA;UACvC,IAAIA,eAAAA,GAAkB,CAAI,GAAA,CAAA,GAAI,CAAG,EAAA;EAC/BE,YAAAA,UAAAA,GAAa7zD,WAAI,CAAA;kBAAC2zD,eAAkB,GAAA,CAAA;EAAG,gBAAA;EAAE,aAAA,CAAA;EAC3C;UAEA,IAAIG,YAAAA,GAAeF,oBAAoB,CAAI,GAAA,CAAA;UAC3C,IAAIA,iBAAAA,GAAoB,CAAI,GAAA,CAAA,GAAI,CAAG,EAAA;EACjCE,YAAAA,YAAAA,GAAe9zD,WAAI,CAAA;kBAAC4zD,iBAAoB,GAAA,CAAA;EAAG,gBAAA;EAAE,aAAA,CAAA;EAC/C;UAEA,IAAIE,YAAAA,GAAeb,YAAY,EAAI,EAAA;EACjCa,YAAAA,YAAAA,GAAeb,SAAY,GAAA,EAAA;EAC7B;UAEA,IAAIa,YAAAA,GAAeD,UAAcC,IAAAA,YAAAA,GAAe,EAAI,EAAA;EAClDA,YAAAA,YAAAA,GAAeD,UAAa,GAAA,GAAA;EAC9B;UACA,IAAIA,UAAAA,GAAaC,eAAe,GAAK,EAAA;EACnCD,YAAAA,UAAAA,GAAaC,YAAe,GAAA,GAAA;EAC9B;UAEAD,UAAal9D,GAAAA,IAAAA,CAAKC,KAAK,CAACi9D,UAAAA,CAAAA;UACxBC,YAAen9D,GAAAA,IAAAA,CAAKC,KAAK,CAACk9D,YAAAA,CAAAA;UAE1B,IAAIC,QAAAA;UAEJ,IAAI,IAAI,CAAChsC,KAAK,EAAE;EACd,YAAA,MAAM1V,SAAS1H,cAAO/P,CAAAA,IAAAA,EAAMnE,CAAAA,CAAAA,GAAKA,EAAE0J,IAAI,CAAA;EAEvC,YAAA,IAAIkS,MAAM,CAAC,CAAA,CAAE,KAAKA,MAAM,CAAC,EAAE,EAAE;kBAC3BA,MAAM,CAAC,EAAE,GAAG,CAAA;EACd;EAEA0hD,YAAAA,QAAAA,GAAW5hD,kBAAOC,WAAW,EAAA,CAC1BC,MAAM,CAACA,MAAAA,CAAAA,CACPk+C,UAAU,CAAC;EAAC,gBAAA,CAAA;kBAAGvwD,WAAI,CAAA;EAAC6zD,oBAAAA,UAAAA;EAAYC,oBAAAA;EAAa,iBAAA;EAAE,aAAA,CAAA;cAElD,MAAMhzC,GAAAA,GAAM+B,OAAO1iB,IAAI;cACvB0iB,MAAO5e,CAAAA,CAAC,GAAG8vD,QAASjzC,CAAAA,GAAAA,CAAAA;WAEjB,MAAA;EACHizC,YAAAA,QAAAA,GAAW5hD,iBAAOC,CAAAA,WAAW,EAC1BC,CAAAA,MAAM,CAAC;EAAC,gBAAA,CAAA;EAAG,gBAAA;EAAE,aAAA,CAAA,CACbk+C,UAAU,CAAC;EAACsD,gBAAAA,UAAAA;EAAYC,gBAAAA;EAAa,aAAA,CAAA;EAC1C;UAEAP,WAAY76D,CAAAA,OAAO,CAAChC,CAAAA,CAAAA,GAAAA;EAClBA,YAAAA,CAAAA,CAAEs9D,IAAI,GAAG,CAAA;EACT,YAAA,MAAMlzC,MAAM,IAAI,CAACiH,KAAK,GAAGrxB,CAAAA,CAAEyJ,IAAI,GAAG,CAAA;EAClCzJ,YAAAA,CAAAA,CAAEuN,CAAC,GAAG,IAAI,CAAC6uC,QAAQ,GAAGvjC,WAAI,CAAA;EAAC,gBAAA,IAAI,CAACujC,QAAQ;kBAAEihB,QAASjzC,CAAAA,GAAAA;EAAK,aAAA,CAAA,GAAI,IAAI,CAAC+xB,QAAQ,GAAG7yC,WAAI,CAAA;EAAC,gBAAA,IAAI,CAAC6yC,QAAQ;kBAAEkhB,QAASjzC,CAAAA,GAAAA;EAAK,aAAA,CAAA,GAAIizC,QAASjzC,CAAAA,GAAAA,CAAAA;EAC7H,SAAA,CAAA;UAEAwyC,SAAU56D,CAAAA,OAAO,CAAC2U,CAAAA,CAAAA,GAAAA;EAChBA,YAAAA,CAAAA,CAAE2mD,IAAI,GAAG,CAAA;EACT,YAAA,MAAMlzC,MAAM,IAAI,CAACiH,KAAK,GAAG1a,CAAAA,CAAElN,IAAI,GAAG,CAAA;EAClCkN,YAAAA,CAAAA,CAAEpJ,CAAC,GAAG,IAAI,CAAC6uC,QAAQ,GAAGvjC,WAAI,CAAA;EAAC,gBAAA,IAAI,CAACujC,QAAQ;kBAAEihB,QAASjzC,CAAAA,GAAAA;EAAK,aAAA,CAAA,GAAI,IAAI,CAAC+xB,QAAQ,GAAG7yC,WAAI,CAAA;EAAC,gBAAA,IAAI,CAAC6yC,QAAQ;kBAAEkhB,QAASjzC,CAAAA,GAAAA;EAAK,aAAA,CAAA,GAAIizC,QAASjzC,CAAAA,GAAAA,CAAAA;EAC7H,SAAA,CAAA;UAEAkqC,KAAQ,GAAA;EAACnoC,YAAAA;EAAO,SAAA,CAACjrB,MAAM,CAAC07D,SAAW17D,CAAAA,CAAAA,MAAM,CAAC27D,WAAAA,CAAAA;UAE1CD,SAAU56D,CAAAA,OAAO,CAAC2U,CAAAA,CAAAA,GAAAA;EAChB,YAAA,MAAMulD,KAAQ,GAAA;EAAC,gBAAA,QAAA;EAAU,gBAAA;EAAS,aAAA;cAClC,MAAM,EAACC,IAAI,EAAC,GAAGxlD,CAAAA;cAEfulD,KAAMl6D,CAAAA,OAAO,CAACyD,CAAAA,IAAAA,GAAAA;EACZ02D,gBAAAA,IAAI,CAAC12D,IAAAA,CAAK,GAAG6uD,KAAAA,CAAM9tC,IAAI,CAACtK,CAAAA,CAAKA,GAAAA,CAAAA,CAAEhU,EAAE,KAAKi0D,IAAI,CAAC12D,IAAAA,CAAK,CAACyC,EAAE,CAAA;EACrD,aAAA,CAAA;EAEAo0D,YAAAA,KAAAA,CAAM7uD,IAAI,CAAC0uD,IAAAA,CAAAA;EAEXE,YAAAA,OAAO,CAAC1lD,CAAEzO,CAAAA,EAAE,CAAC,CAAClG,OAAO,CAACm6D,CAAAA,IAAAA,GAAAA;EACpB,gBAAA,MAAM12D,IAAO02D,GAAAA,IAAAA,CAAKnH,MAAM,CAAC9sD,EAAE,KAAKyO,CAAEzO,CAAAA,EAAE,GAAGi0D,IAAAA,CAAKjH,MAAM,GAAGiH,KAAKnH,MAAM;EAEhE,gBAAA,IAAIvvD,IAAKyC,CAAAA,EAAE,KAAKikB,MAAAA,CAAOjkB,EAAE,EAAE;sBACzB,IAAIgtD,MAAAA,GAAS2H,WAAYr2C,CAAAA,IAAI,CAACxmB,CAAAA,IAAKA,CAAEkI,CAAAA,EAAE,KAAKzC,IAAAA,CAAKyC,EAAE,CAAA;EAEnD,oBAAA,IAAI,CAACgtD,MAAQ,EAAA;0BACXA,MAAS0H,GAAAA,SAAAA,CAAUp2C,IAAI,CAACxmB,CAAAA,IAAKA,CAAEkI,CAAAA,EAAE,KAAKzC,IAAAA,CAAKyC,EAAE,CAAA;EAC/C;EAEA,oBAAA,IAAIgtD,MAAQ,EAAA;EACViH,wBAAAA,IAAAA,CAAKoB,MAAM,GAAG,IAAA;EAEd,wBAAA,MAAMC,UAAU/1D,KAAQ,GAAA,CAAA;EACxB,wBAAA,MAAMg2D,UAAU/1D,MAAS,GAAA,CAAA;EACzB,wBAAA,MAAMg2D,aAAalB,WAAc,GAACC,CAAAA,aAAAA,GAAgBD,WAAU,IAAK,GAAA;EAEjE,wBAAA,MAAMN,KAAQ,GAAA;EAAC,4BAAA,QAAA;EAAU,4BAAA;EAAS,yBAAA;0BAElCA,KAAMl6D,CAAAA,OAAO,CAAC,CAACyD,IAAM1B,EAAAA,CAAAA,GAAAA;EACnBo4D,4BAAAA,IAAI,CAAC,CAAG12D,EAAAA,IAAAA,CAAK,CAAC,CAAC,CAAC,GAAG02D,IAAI,CAAC12D,KAAK,CAAC6C,CAAC,GAAGrI,IAAKg4B,CAAAA,GAAG,CAACkkC,IAAI,CAAC12D,KAAK,CAAC63D,IAAI,KAAK,CAAA,GAAInB,IAAI,CAAC12D,IAAAA,CAAK,CAACs1D,OAAO,GAAG96D,KAAK+3B,EAAE,GAAGmkC,IAAI,CAAC12D,IAAAA,CAAK,CAACs1D,OAAO,CAAA,GAAIoB,IAAI,CAAC12D,IAAAA,CAAK,CAAC8H,CAAC;EACpI4uD,4BAAAA,IAAI,CAAC,CAAG12D,EAAAA,IAAAA,CAAK,CAAC,CAAC,CAAC,GAAG02D,IAAI,CAAC12D,KAAK,CAAC8C,CAAC,GAAGtI,IAAK83B,CAAAA,GAAG,CAACokC,IAAI,CAAC12D,KAAK,CAAC63D,IAAI,KAAK,CAAA,GAAInB,IAAI,CAAC12D,IAAAA,CAAK,CAACs1D,OAAO,GAAG96D,KAAK+3B,EAAE,GAAGmkC,IAAI,CAAC12D,IAAAA,CAAK,CAACs1D,OAAO,CAAA,GAAIoB,IAAI,CAAC12D,IAAAA,CAAK,CAAC8H,CAAC;EACpI4uD,4BAAAA,IAAI,CAAC,CAAG12D,EAAAA,IAAAA,CAAK,OAAO,CAAC,CAAC,GAAG+3D,OAAAA,GAAUE,UAAaz9D,GAAAA,IAAAA,CAAKg4B,GAAG,CAACkkC,IAAI,CAAC12D,IAAAA,CAAK,CAACs1D,OAAO,CAAA;EAC3EoB,4BAAAA,IAAI,CAAC,CAAG12D,EAAAA,IAAAA,CAAK,OAAO,CAAC,CAAC,GAAGg4D,OAAAA,GAAUC,UAAaz9D,GAAAA,IAAAA,CAAK83B,GAAG,CAACokC,IAAI,CAAC12D,IAAAA,CAAK,CAACs1D,OAAO,CAAA;EAE3EoB,4BAAAA,IAAI,CAAC12D,IAAAA,CAAK,GAAG6uD,KAAAA,CAAM9tC,IAAI,CAACtK,CAAAA,CAAKA,GAAAA,CAAAA,CAAEhU,EAAE,KAAKi0D,IAAI,CAAC12D,IAAAA,CAAK,CAACyC,EAAE,CAAA;EAEnD,4BAAA,IAAIi0D,IAAI,CAAC12D,IAAK,CAAA,CAAC62D,KAAK,KAAKx8D,SAAWq8D,EAAAA,IAAI,CAAC12D,IAAAA,CAAK,CAAC62D,KAAK,GAAG,EAAC;8BAExD,MAAMqB,KAAAA,GAAQ55D,CAAM,KAAA,CAAA,GAAIo4D,IAAKjH,CAAAA,MAAM,CAAChtD,EAAE,GAAGi0D,IAAAA,CAAKnH,MAAM,CAAC9sD,EAAE;8BAEvD,IAAIi0D,IAAI,CAAC12D,IAAK,CAAA,CAACyC,EAAE,KAAKyO,CAAAA,CAAEzO,EAAE,EAAE;EAC1Bi0D,gCAAAA,IAAI,CAAC12D,IAAK,CAAA,CAAC62D,KAAK,CAACqB,MAAM,GAAG;EACxBvvD,oCAAAA,KAAAA,EAAOuI,CAAEokD,CAAAA,OAAO,GAAG96D,IAAAA,CAAK+3B,EAAE;EAC1BiiC,oCAAAA,MAAAA,EAAQsC,SAAY,GAAA;EACtB,iCAAA;+BAEG,MAAA;EACHJ,gCAAAA,IAAI,CAAC12D,IAAK,CAAA,CAAC62D,KAAK,CAACqB,MAAM,GAAG;EACxBvvD,oCAAAA,KAAAA,EAAO8mD,OAAO6F,OAAO;EACrBd,oCAAAA,MAAAA,EAAQsC,SAAY,GAAA;EACtB,iCAAA;EACF;EACF,yBAAA,CAAA;EAEAD,wBAAAA,KAAAA,CAAM7uD,IAAI,CAAC0uD,IAAAA,CAAAA;EACb;EACF;EACF,aAAA,CAAA;EACF,SAAA,CAAA;UAEA7H,KAAMtyD,CAAAA,OAAO,CAACyD,CAAAA,IAAAA,GAAAA;EAEZ,YAAA,IAAIA,KAAKyC,EAAE,KAAK,IAAI,CAACw0D,OAAO,EAAE;EAC5B,gBAAA,MAAMxpD,WAAW,IAAI,CAACjQ,YAAY,CAACkL,WAAW,CAAC+E,QAAQ,IAAI,IAAI,CAACjQ,YAAY,CAACkL,WAAW,CAAC+E,QAAQ,CAACzN,IAAS,CAAA,IAAA,EAAA;EAC3G,gBAAA,MAAMgf,aAAavR,QAAW,GAAA,GAAA;EAC9B,gBAAA,MAAMxL,SAAS+c,UAAa,GAAA,CAAA;EAC5B,gBAAA,MAAMtR,OAAU,GAAA,CAAA;kBAChB,MAAM1L,KAAAA,GAAQ80D,SAAY92D,GAAAA,IAAAA,CAAK8H,CAAC;kBAEhC,IAAIa,KAAAA,GAAQ3I,KAAKs1D,OAAO,IAAI,GAAM96D,GAAAA,IAAAA,CAAK+3B,EAAE,CAAD;kBACxC,IAAI1vB,CAAAA,GAAI7C,IAAK8H,CAAAA,CAAC,GAAG4F,OAAAA;EACjB,gBAAA,IAAIb,UAAa,GAAA,OAAA;EAEjB,gBAAA,IAAIlE,KAAQ,GAAA,GAAOA,IAAAA,KAAAA,GAAQ,EAAI,EAAA;EAC7B9F,oBAAAA,CAAAA,GAAI,CAAC7C,IAAAA,CAAK8H,CAAC,GAAG9F,KAAQ0L,GAAAA,OAAAA;sBACtBb,UAAa,GAAA,KAAA;sBACblE,KAAS,IAAA,GAAA;EACX;EAEA3I,gBAAAA,IAAAA,CAAKoM,WAAW,GAAG;EACjBvJ,oBAAAA,CAAAA;EACAC,oBAAAA,CAAAA,EAAG,CAACkc,UAAa,GAAA,CAAA;EACjBhd,oBAAAA,KAAAA;EACAC,oBAAAA;EACF,iBAAA;EAEAjC,gBAAAA,IAAAA,CAAKuF,MAAM,GAAGoD,KAAAA;EACd3I,gBAAAA,IAAAA,CAAK6M,UAAU,GAAGA,UAAAA;eAEf,MAAA;EACH7M,gBAAAA,IAAAA,CAAKoM,WAAW,GAAG;EACjBvJ,oBAAAA,CAAAA,EAAG,CAACk0D,WAAc,GAAA,CAAA;EAClBj0D,oBAAAA,CAAAA,EAAG,CAACi0D,WAAc,GAAA,CAAA;sBAClB/0D,KAAO+0D,EAAAA,WAAAA;sBACP90D,MAAQ80D,EAAAA;EACV,iBAAA;EACF;EACF,SAAA,CAAA;EAEA,QAAA,IAAI,CAACrH,WAAW,GAAGN,MAAM54C,MAAM,CAAC,CAAC1b,GAAKR,EAAAA,CAAAA,GAAAA;EACpC,YAAA,IAAI,CAACQ,GAAG,CAACR,CAAEi1D,CAAAA,MAAM,CAAC9sD,EAAE,CAAC,EAAE3H,GAAG,CAACR,CAAEi1D,CAAAA,MAAM,CAAC9sD,EAAE,CAAC,GAAG,EAAE;cAC5C3H,GAAG,CAACR,CAAEi1D,CAAAA,MAAM,CAAC9sD,EAAE,CAAC,CAACuF,IAAI,CAAC1N,CAAAA,CAAEm1D,MAAM,CAAA;EAC9B,YAAA,IAAI,CAAC30D,GAAG,CAACR,CAAEm1D,CAAAA,MAAM,CAAChtD,EAAE,CAAC,EAAE3H,GAAG,CAACR,CAAEm1D,CAAAA,MAAM,CAAChtD,EAAE,CAAC,GAAG,EAAE;cAC5C3H,GAAG,CAACR,CAAEm1D,CAAAA,MAAM,CAAChtD,EAAE,CAAC,CAACuF,IAAI,CAAC1N,CAAAA,CAAEi1D,MAAM,CAAA;cAC9B,OAAOz0D,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;EAEJ,QAAA,MAAM82D,eAAepjD,cAAO4gD,CAAAA,KAAAA,EAAO90D,CAAAA,CAAAA,GAAKA,EAAE0J,IAAI,CAAA;EAC9C,QAAA,IAAI4tD,YAAY,CAAC,CAAA,CAAE,KAAKA,YAAY,CAAC,EAAE,EAAE;EACvC,YAAA,MAAM4C,SAAS3wD,WAAIgrD,CAAAA,KAAAA,EAAOv0D,CAAAA,CAAAA,GAAKA,EAAEwN,CAAC,CAAA;EAClC,YAAA,MAAM+pD,WAAc77C,GAAAA,iBAAM,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC87C,cAAc,CAAC/mD,MAAM,CAAC,CAAGC,CAAAA,CAAAA,WAAW,EAAK,CAAA,EAAA,IAAI,CAAC8mD,cAAc,CAAC7mD,KAAK,CAAC,CAAA,CAAA,CAAA,CAAI,CAAC,EAAA,CAC7GiL,MAAM,CAAC07C,YACPz7C,CAAAA,CAAAA,KAAK,CAAC;EAAC,gBAAA,IAAI,CAAC47C,YAAY;EAAEyC,gBAAAA;EAAO,aAAA,CAAA;cACpCpF,KAAM7yD,CAAAA,OAAO,CAAC8E,CAAAA,IAAAA,GAAAA;EACZA,gBAAAA,IAAAA,CAAK2C,IAAI,GAAG6tD,WAAYxwD,CAAAA,IAAAA,CAAK2C,IAAI,CAAA;EACnC,aAAA,CAAA;EACF;UAEA,MAAMguD,UAAAA,GAAal0D,UAAWa,CAAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAACnB,YAAY,EAAE,MAAQ,EAAA,MAAA,CAAA;EACpE,QAAA,OAAOw0D,WAAW/0D,EAAE;UAEpB,IAAI,CAAC0pB,OAAO,CAAC3e,IAAI,CAAC,IAAIoJ,IAAW,EAAA,CAC9BjV,MAAM,CAAC61D,UACPplD,CAAAA,CAAAA,WAAW,CAACtS,CAAAA,CAAKA,GAAAA,CAAAA,CAAE0J,IAAI,CAAA,CACvBvB,EAAE,CAACnI,CAAAA,CAAAA,GAAK,CAAGA,EAAAA,CAAAA,CAAEi1D,MAAM,CAAC9sD,EAAE,CAAC,CAAC,EAAEnI,CAAEm1D,CAAAA,MAAM,CAAChtD,EAAE,CAAE,CAAA,CAAA,CACvCnI,CAAC,CAACA,CAAAA,CAAAA,GAAKA,CAAEw9D,CAAAA,MAAM,GAAG,CAAC,CAAC,EAAEx9D,CAAE69D,CAAAA,OAAO,CAAC,CAAC,EAAE79D,CAAAA,CAAE89D,OAAO,CAAC,CAAC,EAAE99D,CAAE+9D,CAAAA,aAAa,CAAC,CAAC,EAAE/9D,CAAEg+D,CAAAA,aAAa,CAAC,CAAC,EAAEh+D,CAAAA,CAAEi+D,aAAa,CAAC,CAAC,EAAEj+D,CAAEk+D,CAAAA,aAAa,CAAC,CAAC,EAAEl+D,CAAAA,CAAEm+D,OAAO,CAAC,CAAC,EAAEn+D,CAAEo+D,CAAAA,OAAO,CAAE,CAAA,GAAG,CAAC,CAAC,EAAEp+D,CAAAA,CAAEi1D,MAAM,CAAC1sD,CAAC,CAAC,CAAC,EAAEvI,CAAEi1D,CAAAA,MAAM,CAACzsD,CAAC,CAAC,CAAC,EAAExI,CAAAA,CAAEm1D,MAAM,CAAC5sD,CAAC,CAAC,CAAC,EAAEvI,CAAEm1D,CAAAA,MAAM,CAAC3sD,CAAC,CAAE,CAAA,CAAA,CACjNrE,IAAI,CAACo4D,KACLn3D,CAAAA,CAAAA,MAAM,CAACqE,QAAAA,CAAK,sBAAwB,EAAA;cAAC5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;EAAEvB,YAAAA,QAAAA;cAAUmC,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cAAGjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;WAAI/rB,CAAAA,CAAAA,IAAI,IACnHT,MAAM,EAAA,CAAA;EAET,QAAA,MAAMsB,OAAO,IAAI;EAEjB,QAAA,MAAMtD,WAAc,GAAA;EAClB4O,YAAAA,KAAAA,EAAO7R,CAAAA,CAAKu0D,GAAAA,KAAAA,CAAMjyD,MAAM,IAAI,IAAI,CAACqrC,WAAW,IAAK,IAAI,CAAC/gC,MAAM,IAAI,IAAI,CAACA,MAAM,CAAC5M,CAAM,CAAA,IAAA,IAAI,CAACqM,OAAO,IAAI,IAAI,CAACA,OAAO,CAACrM,CAAAA,CAAAA,GAAM,IAAI,CAAC8kC,UAAU,CAAC9kC,CAAAA,CAAEmE,IAAI,IAAInE,CAAAA,CAAE0F,IAAI,EAAE1F,CAAAA,CAAEgE,CAAC,CAAI,GAAA,KAAA;cAC9J8N,WAAa9R,EAAAA,CAAAA,CAAKA,GAAAA,CAAAA,CAAE8R,WAAW;cAC/B1D,WAAa,EAAA;EACX6E,gBAAAA,SAAAA,EAAWjT,CAAAA,CAAKA,GAAAA,CAAAA,CAAEmI,EAAE,KAAK,IAAI,CAACw0D,OAAO,GAAGn5D,UAAAA,CAAWa,IAAI,CAACkC,IAAAA,CAAAA,CAAMA,KAAKrD,YAAY,EAAE,SAASlD,CAAEH,CAAAA,GAAG,CAAEuO,CAAAA,WAAW,CAAC6E,SAAS,CAACjT,CAAKgrD,CAAAA,GAAAA,kBAAAA,CAAaxnD,WAAWa,IAAI,CAACkC,IAAMA,CAAAA,CAAAA,IAAAA,CAAKrD,YAAY,EAAE,OAAA,EAASlD,EAAEH,GAAG,CAAA,CAAE6L,IAAI,CAAC1L,CAAAA,CAAAA,CAAAA;EACvM0pB,gBAAAA,UAAAA,EAAY1pB,CAAAA,CAAKA,GAAAA,CAAAA,CAAEmI,EAAE,KAAK,IAAI,CAACw0D,OAAO;kBACtCvpD,OAAS,EAAA,CAAA;kBACTb,UAAYvS,EAAAA,CAAAA,IAAK20D,UAAU,CAAC30D,EAAEmI,EAAE,CAAC,CAACoK,UAAU,IAAI/O,UAAAA,CAAWa,IAAI,CAACkC,IAAAA,CAAAA,CAAMA,IAAKrD,CAAAA,YAAY,EAAE,OAAA,EAASlD,EAAEH,GAAG,CAAA,CAAEuO,WAAW,CAACmE,UAAU;kBAC/HI,aAAe3S,EAAAA,CAAAA,IAAKA,CAAEmI,CAAAA,EAAE,KAAK,IAAI,CAACw0D,OAAO,GAAG,QAAW,GAAA;EACzD,aAAA;cACA1xD,MAAQjL,EAAAA,CAAAA,IAAK20D,UAAU,CAAC30D,EAAEmI,EAAE,CAAC,CAAC8C,MAAM,IAAI,CAAA;EACxC7F,YAAAA,MAAAA,EAAQqE,SAAK,sBAAwB,EAAA;kBAAC5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;EAAEvB,gBAAAA,QAAAA;kBAAUmC,KAAO,EAAA;EAAC0rB,oBAAAA;EAAS,iBAAA;kBAAGjrB,MAAQ,EAAA;EAACirB,oBAAAA;EAAS;EAAC,aAAA,CAAA,CAAG/rB,IAAI;EACtH,SAAA;EAEAhC,QAAAA,iBAAAA,EAAAA,CAAO7D,GAAG,CAACG,CAAAA,CAAAA,GAAKA,CAAEqpB,CAAAA,KAAK,CAAEpV,CAAAA,OAAO,CAACsgD,KAAAA,CAAAA,CAAOtyD,OAAO,CAACjC,CAAAA,CAAAA,GAAAA;EAC9C,YAAA,IAAI,CAACqsB,OAAO,CAAC3e,IAAI,CAAC,IAAIoJ,MAAM,CAAC9W,CAAAA,CAAEH,GAAG,CAAC,EAAA,CAChCgC,MAAM,CAAC2B,WAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACnB,YAAY,EAAE,OAAA,EAASlD,EAAEH,GAAG,CAAA,CAAA,CAC9DgC,MAAM,CAACoB,aACPkB,IAAI,CAACnE,CAAEiJ,CAAAA,MAAM,EACbhE,MAAM,EAAA,CAAA;EACX,SAAA,CAAA;EAEA,QAAA,OAAO,IAAI;EAEb;EAEA;;;;;QAMAmnB,MAAAA,CAAOtqB,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACq6D,OAAO,GAAG76D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC66D,OAAO;EACnE;EAEA;;;;;QAMAlrD,KAAAA,CAAM3P,CAAC,EAAE;UACP,IAAI,CAAC8K,MAAM,GAAG9K,CAAAA;UAEd,IAAI,CAACuqB,OAAO,CAACpqB,OAAO,CAAChC,CAAAA,CAAAA,GAAKA,CAAEwR,CAAAA,KAAK,CAAC3P,CAAAA,CAAAA,CAAAA;UAClC,IAAI,IAAI,CAACgkC,OAAO,EAAE,IAAI,CAACnT,YAAY,CAAClhB,KAAK,CAAC3P,CAAAA,CAAAA;EAE1C,QAAA,OAAO,IAAI;EACb;EAEA;;;;;;;;;;;EAWA,KACAgzD,KAAMhzD,CAAAA,CAAC,EAAEc,CAAC,EAAE;UACV,IAAIP,SAAAA,CAAUC,MAAM,EAAE;EACpB2vC,YAAAA,eAAAA,CAAW5tC,IAAI,CAAC,IAAI,CAAA,CAAEvC,GAAGc,CAAG,EAAA,OAAA,CAAA;EAC5B,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACmyD,MAAM;EACpB;EAEA;;;;;OAMA4C,QAAAA,CAAS71D,CAAC,EAAE;EACV,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAAC4yD,SAAS,GAAG,OAAOpzD,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAACozD,SAAS;EAC/G;EAEA;;;;;OAMA0C,WAAAA,CAAY91D,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACm1D,YAAY,GAAG31D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC21D,YAAY;EAC7E;EAEA;;;;;OAMAI,aAAAA,CAAc/1D,CAAC,EAAE;EACf,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACk1D,cAAc,GAAG11D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC01D,cAAc;EACjF;EAEA;;;;;OAMAM,WAAAA,CAAYh2D,CAAC,EAAE;EACb,QAAA,IAAI,CAACO,SAAUC,CAAAA,MAAM,EAAE,OAAO,IAAI,CAAC+xD,YAAY;EAC/C,QAAA,IAAI,EAAEvyD,CAAa8C,YAAAA,KAAI,GAAI9C,CAAI,GAAA;EAACA,YAAAA;EAAE,SAAA;EAClC,QAAA,OAAO,IAAI,CAACuyD,YAAY,GAAGvyD,CAAE6C,CAAAA,GAAG,CAACzC,CAAAA,CAAAA,GAAAA;cAC/B,IAAI,OAAOA,CAAM,KAAA,UAAA,EAAY,OAAOA,CAAAA;EAC/B,iBAAA;EACH,gBAAA,IAAI,CAAC,IAAI,CAACkjC,KAAK,CAACljC,EAAE,EAAE;EAClB,oBAAA,IAAI,CAACkjC,KAAK,CAACljC,CAAE,CAAA,GAAG,CAAC6M,CAAG8D,EAAAA,CAAAA,GAAAA;0BAClB,MAAM1Q,CAAAA,GAAIyC,MAAM8pB,IAAI,CAAC,IAAID,GAAI1f,CAAAA,CAAAA,CAAEpK,GAAG,CAACkO,CAAAA,CAAAA,CAAAA,CAAAA;EACnC,wBAAA,OAAO1Q,EAAEG,MAAM,KAAK,IAAIH,CAAC,CAAC,EAAE,GAAGA,CAAAA;EACjC,qBAAA;EACF;EACA,gBAAA,OAAOsG,QAASvG,CAAAA,CAAAA,CAAAA;EAClB;EACF,SAAA,CAAA,EAAI,IAAI;EACV;EAEA;;;;;;;;EAQA,KACAqyD,KAAMzyD,CAAAA,CAAC,EAAEc,CAAC,EAAE;UACV,IAAIP,SAAAA,CAAUC,MAAM,EAAE;EACpB2vC,YAAAA,eAAAA,CAAW5tC,IAAI,CAAC,IAAI,CAAA,CAAEvC,GAAGc,CAAG,EAAA,OAAA,CAAA;EAC5B,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAAC4xD,MAAM;EACpB;EAEA;;;;;OAMA9qD,IAAAA,CAAK5H,CAAC,EAAE;UACN,OAAOO,SAAAA,CAAUC,MAAM,IAAI,IAAI,CAACgvB,KAAK,GAAG,OAAOxvB,CAAAA,KAAM,cAAc,CAACA,CAAAA,GAAIA,IAAI2G,QAAS3G,CAAAA,CAAAA,CAAAA,EAAI,IAAI,IAAI,IAAI,CAACwvB,KAAK;EAC7G;EAEA;;;;;OAMAg4B,OAAAA,CAAQxnD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC85C,QAAQ,GAAGt6C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACs6C,QAAQ;EACrE;EAEA;;;;;OAMAmN,OAAAA,CAAQznD,CAAC,EAAE;EACT,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+5C,QAAQ,GAAGv6C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACu6C,QAAQ;EACrE;EAEA;;;;;OAMAmN,SAAAA,CAAU1nD,CAAC,EAAE;EACX,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC65C,UAAU,GAAGr6C,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACq6C,UAAU;EACzE;EAnmBA;;;;EAIA,KACAh5C,WAAc,EAAA;UAEZ,KAAK,EAAA;UACL,IAAI,CAAC4xD,MAAM,GAAG,EAAE;UAChB,IAAI,CAACG,SAAS,GAAGnwD,QAAS,CAAA,CAAA,CAAA;UAC1B,IAAI,CAAC0yD,YAAY,GAAG,CAAA;UACpB,IAAI,CAACD,cAAc,GAAG,MAAA;UACtB,IAAI,CAAC1pB,cAAc,GAAG,KAAA;UACtB,IAAI,CAAC0mB,MAAM,GAAG,EAAE;EAChB,QAAA,IAAI,CAACjyD,GAAG,CAACk0C,UAAU,GAAG,IAAO,EAAA;EAC7B,QAAA,IAAI,CAACl0C,GAAG,CAAC,kBAAA,CAAmB,GAAG,IAAA;cAC7B,IAAI,CAACkP,KAAK,CAAC,KAAA,CAAA;EACb,SAAA;EACA,QAAA,MAAMumD,gBAAmB,GAAA,IAAI,CAACz1D,GAAG,CAAC,iBAAkB,CAAA;UACpD,IAAI,CAACA,GAAG,CAAC,iBAAA,CAAkB,GAAG,CAACvC,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,GAAAA;cACtCwzD,gBAAiBh4D,CAAAA,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;cAC1B,IAAI,IAAI,CAAC6yD,MAAM,IAAI,IAAI,CAACA,MAAM,KAAKr3D,CAAEmI,CAAAA,EAAE,EAAE;kBACvC,IAAI,CAACsJ,KAAK,CAAC,KAAA,CAAA;kBACX,IAAI,CAAClP,GAAG,CAACk0C,UAAU,CAACpyC,IAAI,CAAC,IAAI,CAAA,CAAErE,CAAGgE,EAAAA,CAAAA,EAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;kBAExC,IAAI,CAAC6yD,MAAM,GAAGt3D,SAAAA;eAEX,MAAA;kBACH,MAAMoI,EAAAA,GAAK,IAAI,CAACksD,YAAY,IAAI,IAAI,CAACA,YAAY,CAAC,IAAI,CAAC9uB,UAAU,CAAC,CAACvlC,CAAGgE,EAAAA,CAAAA,CAAAA,GAAK,IAAI,CAACqwD,YAAY,CAAC,IAAI,CAAC9uB,UAAU,CAAC,CAACvlC,GAAGgE,CAAK,CAAA,GAAA,IAAI,CAAC8B,GAAG,CAAC9F,GAAGgE,CAC5H8wD,CAAAA,EAAAA,KAAAA,GAAQ,IAAI,CAACM,WAAW,CAACjtD,EAAG,CAAA,EAC5BzC,OAAO,IAAI,CAACkvD,WAAW,CAACzsD,EAAG,CAAA;EAEjC,gBAAA,MAAMijC,SAAY,GAAA;EAAC1lC,oBAAAA,IAAAA,CAAKyC;EAAG,iBAAA;EAC3B,gBAAA,MAAM63C,OAAU,GAAA;sBAACt6C,IAAK6C,CAAAA,CAAC,GAAG7C,IAAAA,CAAK8H,CAAC;sBAAE9H,IAAK6C,CAAAA,CAAC,GAAG7C,IAAAA,CAAK8H;EAAE,iBAAA,EAC5C0yC,OAAU,GAAA;sBAACx6C,IAAK8C,CAAAA,CAAC,GAAG9C,IAAAA,CAAK8H,CAAC;sBAAE9H,IAAK8C,CAAAA,CAAC,GAAG9C,IAAAA,CAAK8H;EAAE,iBAAA;kBAElDsnD,KAAM7yD,CAAAA,OAAO,CAACiM,CAAAA,CAAAA,GAAAA;sBACZk9B,SAAU19B,CAAAA,IAAI,CAACQ,CAAAA,CAAE/F,EAAE,CAAA;EACnB,oBAAA,IAAI+F,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC,GAAGwyC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAG9xC,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC;EAClD,oBAAA,IAAIU,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC,GAAGwyC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAG9xC,EAAE3F,CAAC,GAAG2F,EAAEV,CAAC;EAClD,oBAAA,IAAIU,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC,GAAG0yC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAGhyC,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC;EAClD,oBAAA,IAAIU,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC,GAAG0yC,OAAO,CAAC,CAAA,CAAE,EAAEA,OAAO,CAAC,CAAE,CAAA,GAAGhyC,EAAE1F,CAAC,GAAG0F,EAAEV,CAAC;EACpD,iBAAA,CAAA;EAEA,gBAAA,IAAI,CAACiE,KAAK,CAAC,CAACT,CAAGzI,EAAAA,CAAAA,GAAAA;sBACb,IAAIyI,CAAAA,CAAEikD,MAAM,IAAIjkD,CAAAA,CAAEmkD,MAAM,EAAE,OAAOnkD,EAAEikD,MAAM,CAAC9sD,EAAE,KAAKzC,IAAAA,CAAKyC,EAAE,IAAI6I,CAAAA,CAAEmkD,MAAM,CAAChtD,EAAE,KAAKzC,IAAAA,CAAKyC,EAAE;EAC9E,yBAAA,OAAOijC,SAAUzpC,CAAAA,QAAQ,CAAC,IAAI,CAAC2jC,IAAI,CAACt0B,CAAAA,EAAGzI,CAAE,CAAA,CAAC,IAAI,CAACg9B,UAAU,CAAC,CAAA;EACjE,iBAAA,CAAA;EACF;EACF,SAAA;EACA,QAAA,IAAI,CAAChjC,GAAG,CAAC,aAAA,CAAc,GAAGvC,CAAAA,CAAAA,GAAAA;EACxB,YAAA,IAAI,CAAC28D,OAAO,GAAG38D,CAAAA,CAAEmI,EAAE;;;;cAInB,IAAI,CAAC4V,OAAO,GAAG;kBAACwC,MAAQ,EAAA,CAAA;kBAAGC,IAAM,EAAA,CAAA;kBAAGF,KAAO,EAAA,CAAA;kBAAGD,GAAK,EAAA;EAAC,aAAA;cACpD,IAAI,CAACN,QAAQ,GAAG;kBAACQ,MAAQ,EAAA,CAAA;kBAAGC,IAAM,EAAA,CAAA;kBAAGF,KAAO,EAAA,CAAA;kBAAGD,GAAK,EAAA;EAAC,aAAA;EACrD,YAAA,IAAI,CAAC6tB,KAAK,EAAA;EACZ,SAAA;UACA,IAAI,CAACmO,QAAQ,GAAG,CAAA;UAChB,IAAI,CAACF,UAAU,GAAG,MAAA;UAClB,IAAI,CAACj8B,MAAM,GAAGnb,QAAS,CAAA,QAAA,CAAA;EACvB,QAAA,IAAI,CAAC7B,YAAY,GAAGd,WAAO,IAAI,CAACc,YAAY,EAAE;EAC5CmO,YAAAA,SAAAA,EAAW,CAACrR,CAAGgE,EAAAA,CAAAA,GAAAA;EACb,gBAAA,MAAMi0D,SAAY,GAAA,IAAI,CAAC3mC,KAAK,GAAG,CAAC,EAAE,EAAE,IAAI,CAACA,KAAK,CAACtxB,CAAAA,EAAGgE,IAAI,GAAG,EAAA;kBACzD,OAAO,CAAA,EAAG,IAAI,CAAC8gC,UAAU,CAAC9kC,CAAGgE,EAAAA,CAAAA,CAAAA,CAAAA,EAAKi0D,SAAU,CAAA,CAAC,CAAC;EAChD,aAAA;cACA7pD,WAAa,EAAA;kBACXxK,QAAU,EAAA,CAAA;kBACV20B,OAAS,EAAA,CAAA;kBACT7O,UAAY,EAAA,IAAA;kBACZs5B,YAAc,EAAA,CAAA;kBACdzwC,UAAY,EAAA,QAAA;kBACZI,aAAe,EAAA;EACjB,aAAA;cACA6H,IAAM,EAAA;kBACJ9O,IAAM,EAAA,MAAA;kBACNmG,KAAO,EAAA,KAAA;kBACPtG,MAAQ,EAAA,MAAA;kBACR+G,WAAa,EAAA;EACf;EACF,SAAA,CAAA;EAEF;EAkhBF;;EC9mBA,MAAM+rD,YAAe,GAAA;MACnBjyC,MAAQkyC,EAAAA,qBAAAA;MACRC,OAASC,EAAAA,sBAAAA;MACTh+C,IAAMi+C,EAAAA,mBAAAA;MACNn+C,KAAOo+C,EAAAA;EACT,CAAA;EAce,MAAMC,MAAelyB,SAAAA,GAAAA,CAAAA;EA4ElC;;;OAIAyB,KAAAA,CAAMhpC,QAAQ,EAAE;EACd,QAAA,KAAK,CAACgpC,KAAMhpC,CAAAA,QAAAA,CAAAA;EAEZ,QAAA,MAAMyC,MAAS,GAAA,IAAI,CAACvB,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,EAC9D7Y,KAAAA,GAAQ,IAAI,CAACxB,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;EAElE,QAAA,MAAMk0C,SAAS5vD,KAAM87B,CAAAA,OAAO,CAAC,IAAI,CAAC8zB,MAAM,CACpC,GAAA,IAAI,CAACA,MAAM,GACX,IAAI,CAACO,MAAM,CAAC74C,MAAM,CAAC,CAAC0iD,GAAK5+D,EAAAA,CAAAA,GAAAA;EACzB,YAAA,IAAI,CAAC4+D,GAAIj9D,CAAAA,QAAQ,CAAC3B,CAAC,CAAC,IAAI,CAAC6+D,YAAY,CAAC,CAAGD,EAAAA,GAAAA,CAAIlxD,IAAI,CAAC1N,CAAC,CAAC,IAAI,CAAC6+D,YAAY,CAAC,CAAA;EACtE,YAAA,IAAI,CAACD,GAAIj9D,CAAAA,QAAQ,CAAC3B,CAAC,CAAC,IAAI,CAAC8+D,YAAY,CAAC,CAAGF,EAAAA,GAAAA,CAAIlxD,IAAI,CAAC1N,CAAC,CAAC,IAAI,CAAC8+D,YAAY,CAAC,CAAA;cACtE,OAAOF,GAAAA;EACT,SAAA,EAAG,EAAE,CAAEj6D,CAAAA,GAAG,CAACwD,CAAAA,MAAO;EAACA,gBAAAA;eAAE,CAAA,CAAA;EAEvB,QAAA,MAAMosD,QAAQC,MACX7vD,CAAAA,GAAG,CAAC,CAACwX,CAAAA,EAAGnY,KAAO;kBACdC,UAAY,EAAA,IAAA;kBACZE,IAAMgY,EAAAA,CAAAA;EACNnY,gBAAAA,CAAAA;EACAmE,gBAAAA,EAAAA,EAAI,IAAI,CAAC42D,OAAO,CAAC5iD,CAAGnY,EAAAA,CAAAA,CAAAA;kBACpB0B,IAAMyW,EAAAA,CAAAA;kBACNkN,KAAO,EAAA;eACT,CAAA,CAAA;UAEF,MAAMsrC,UAAAA,GAAa,IAAI,CAACC,WAAW,GAAGL,MAAMr4C,MAAM,CAAC,CAAC1b,GAAAA,EAAKR,CAAGgE,EAAAA,CAAAA,GAAAA;EAC1DxD,YAAAA,GAAG,CAACR,CAAAA,CAAEmI,EAAE,CAAC,GAAGnE,CAAAA;cACZ,OAAOxD,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;UAEJ,MAAMs0D,KAAAA,GAAQ,IAAI,CAACC,MAAM,CAACpwD,GAAG,CAAC,CAACoC,IAAM/C,EAAAA,CAAAA,GAAAA;EACnC,YAAA,MAAMm4D,KAAQ,GAAA;EAAC,gBAAA,IAAI,CAAC0C,YAAY;EAAE,gBAAA,IAAI,CAACC;EAAa,aAAA;EACpD,YAAA,MAAME,UAAa7C,GAAAA,KAAAA,CAAMjgD,MAAM,CAAC,CAACmgD,MAAQ/vB,EAAAA,IAAAA,GAAAA;kBACvC+vB,MAAM,CAAC/vB,KAAK,GAAGqoB,UAAU,CAAC5tD,IAAI,CAACulC,KAAK,CAAC;kBACrC,OAAO+vB,MAAAA;EACT,aAAA,EAAG,EAAC,CAAA;cACJ,OAAO;EACLpH,gBAAAA,MAAAA,EAAQ+J,UAAU,CAAC,IAAI,CAACH,YAAY,CAAC;EACrC1J,gBAAAA,MAAAA,EAAQ6J,UAAU,CAAC,IAAI,CAACF,YAAY,CAAC;EACrCh6D,gBAAAA,KAAAA,EAAO,IAAI,CAACkoB,MAAM,CAACjmB,IAAM/C,EAAAA,CAAAA;EAC3B,aAAA;EACF,SAAA,CAAA;EAEA,QAAA,IAAI,CAACoxD,WAAW,GAAGN,MAAM54C,MAAM,CAAC,CAAC1b,GAAKR,EAAAA,CAAAA,GAAAA;EACpC,YAAA,IAAI,CAACQ,GAAG,CAACR,CAAAA,CAAEi1D,MAAM,CAAC,EAAEz0D,GAAG,CAACR,CAAAA,CAAEi1D,MAAM,CAAC,GAAG,EAAE;cACtCz0D,GAAG,CAACR,EAAEi1D,MAAM,CAAC,CAACvnD,IAAI,CAAC1N,EAAEm1D,MAAM,CAAA;EAC3B,YAAA,IAAI,CAAC30D,GAAG,CAACR,CAAAA,CAAEm1D,MAAM,CAAC,EAAE30D,GAAG,CAACR,CAAAA,CAAEm1D,MAAM,CAAC,GAAG,EAAE;cACtC30D,GAAG,CAACR,EAAEm1D,MAAM,CAAC,CAACznD,IAAI,CAAC1N,EAAEi1D,MAAM,CAAA;cAC3B,OAAOz0D,GAAAA;EACT,SAAA,EAAG,EAAC,CAAA;EAEJ,QAAA,MAAMixB,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC;EAExE,QAAA,IAAI,CAAC4+C,OAAO,CACTC,SAAS,CAAC,IAAI,CAACC,UAAU,CACzBC,CAAAA,WAAW,CAAC,IAAI,CAACC,YAAY,CAC7BC,CAAAA,SAAS,CAAC,IAAI,CAACC,UAAU,CACzBhL,CAAAA,KAAK,CAACA,KAAAA,CAAAA,CACNO,KAAK,CAACA,KACNprD,CAAAA,CAAAA,IAAI,CAAC;EAAChC,YAAAA,KAAAA;EAAOC,YAAAA;EAAO,SAAA,CAAA,EAAA;UAEvB,IAAI,CAAC0kB,OAAO,CAAC3e,IAAI,CACf,IAAI8M,IAAAA,EAAAA,CACD3Y,MAAM,CAAC,IAAI,CAACqB,YAAY,CAACsX,IAAI,CAAA,CAC7BrW,IAAI,CAAC2wD,KACL90D,CAAAA,CAAAA,CAAC,CAAC,IAAI,CAACwQ,KAAK,CACZpL,CAAAA,MAAM,CACLqE,QAAAA,CAAK,gBAAkB,EAAA;cACrB5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;cACpBY,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cACjBjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;WACjB/rB,CAAAA,CAAAA,IAAI,IAERT,MAAM,EAAA,CAAA;EAEXvB,QAAAA,iBAAAA,EAAAA,CACG7D,GAAG,CAACG,CAAAA,CAAAA,GAAKA,CAAEqpB,CAAAA,KAAK,CAChBpV,CAAAA,OAAO,CAACsgD,KAAAA,CAAAA,CACRtyD,OAAO,CAACjC,CAAAA,CAAAA,GAAAA;EACP,YAAA,IAAI,CAACqsB,OAAO,CAAC3e,IAAI,CACf,IAAIoJ,MAAM,CAAC9W,CAAAA,CAAEH,GAAG,CAAC,EACdsE,CAAAA,IAAI,CAACnE,CAAEiJ,CAAAA,MAAM,CACbtB,CAAAA,MAAM,CAAC3H,CAAAA,CAAKA,GAAAA,CAAAA,CAAE2U,EAAE,GAAG3U,CAAAA,CAAE0U,EAAE,CAAA,CACvBhN,KAAK,CAAC1H,CAAAA,CAAAA,GAAKA,EAAEyU,EAAE,GAAGzU,CAAEwU,CAAAA,EAAE,CACtBjM,CAAAA,CAAC,CAACvI,CAAAA,IAAK,CAACA,CAAEyU,CAAAA,EAAE,GAAGzU,CAAAA,CAAEwU,EAAC,IAAK,CACvBhM,CAAAA,CAAAA,CAAC,CAACxI,CAAAA,CAAK,GAACA,CAAAA,CAAAA,CAAE2U,EAAE,GAAG3U,CAAAA,CAAE0U,EAAC,IAAK,CAAA,CAAA,CACvBtP,MAAM,CACLqE,SAAK,uBAAyB,EAAA;kBAC5B5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;kBACpBY,KAAO,EAAA;EAAC0rB,oBAAAA;EAAS,iBAAA;kBACjBjrB,MAAQ,EAAA;EAACirB,oBAAAA;EAAS;EACpB,aAAA,CAAA,CAAG/rB,IAAI,EAER7D,CAAAA,CAAAA,MAAM,CAAC2B,UAAAA,CAAWa,IAAI,CAAC,IAAI,CAAE,CAAA,IAAI,CAACnB,YAAY,EAAE,SAASlD,CAAEH,CAAAA,GAAG,GAC9DoF,MAAM,EAAA,CAAA;EAEb,SAAA,CAAA;EACF,QAAA,OAAO,IAAI;EACb;EAEA;;;;;QAMAwM,KAAAA,CAAM3P,CAAC,EAAE;UACP,IAAI,CAAC8K,MAAM,GAAG9K,CAAAA;UACd,IAAI,CAACuqB,OAAO,CAACpqB,OAAO,CAAChC,CAAAA,CAAAA,GAAKA,CAAEwR,CAAAA,KAAK,CAAC3P,CAAAA,CAAAA,CAAAA;UAClC,IAAI,IAAI,CAACgkC,OAAO,EAAE,IAAI,CAACnT,YAAY,CAAClhB,KAAK,CAAC3P,CAAAA,CAAAA;EAE1C,QAAA,OAAO,IAAI;EACb;EAEA;;;;;;;;EAQA,KACAgzD,KAAMhzD,CAAAA,CAAC,EAAEc,CAAC,EAAE;UACV,IAAIP,SAAAA,CAAUC,MAAM,EAAE;EACpB2vC,YAAAA,eAAAA,CAAW5tC,IAAI,CAAC,IAAI,CAAA,CAAEvC,GAAGc,CAAG,EAAA,OAAA,CAAA;EAC5B,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAACmyD,MAAM;EACpB;EAEA;;;;;OAMAyK,WAAAA,CAAY19D,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACu8D,YAAY,GAAG/8D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+8D,YAAY;EAC7E;EAEA;;;;;OAMAY,WAAAA,CAAY39D,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACw8D,YAAY,GAAGh9D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACg9D,YAAY;EAC7E;EAEA;;;;;OAMAI,SAAAA,CAAUp9D,CAAC,EAAE;UACX,OAAOO,SAAAA,CAAUC,MAAM,IAClB,IAAI,CAAC68D,UAAU,GAAG,OAAOr9D,CAAAA,KAAM,aAAaA,CAAIu8D,GAAAA,YAAY,CAACv8D,CAAE,CAAA,EAAE,IAAI,IACtE,IAAI,CAACq9D,UAAU;EACrB;EAEA;;;;;OAMAO,MAAAA,CAAO59D,CAAC,EAAE;EACR,QAAA,OAAOO,UAAUC,MAAM,IAClB,IAAI,CAACy8D,OAAO,GAAG,OAAOj9D,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAC/D,IAAI,CAACi9D,OAAO;EAClB;EAEA;;;;;;;EAOA,KACAxK,KAAMzyD,CAAAA,CAAC,EAAEc,CAAC,EAAE;UACV,IAAIP,SAAAA,CAAUC,MAAM,EAAE;EACpB2vC,YAAAA,eAAAA,CAAW5tC,IAAI,CAAC,IAAI,CAAA,CAAEvC,GAAGc,CAAG,EAAA,OAAA,CAAA;EAC5B,YAAA,OAAO,IAAI;EACb;UACA,OAAO,IAAI,CAAC4xD,MAAM;EACpB;EAEA;;;;;OAMA4K,WAAAA,CAAYt9D,CAAC,EAAE;EACb,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC+8D,YAAY,GAAGv9D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACu9D,YAAY;EAC7E;EAGA;;;;;OAMAC,SAAAA,CAAUx9D,CAAC,EAAE;EACX,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACi9D,UAAU,GAAGz9D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACy9D,UAAU;EACzE;EAEA;;;;;;;;OASAz6D,KAAAA,CAAMhD,CAAC,EAAE;EAEP,QAAA,OAAOO,UAAUC,MAAM,IAClB,IAAI,CAAC0qB,MAAM,GAAG,OAAOlrB,MAAM,UAAaA,GAAAA,CAAAA,GAAI2G,SAAS3G,CAAI,CAAA,EAAA,IAAI,IAC9D,IAAI,CAACkrB,MAAM;EACjB;EA/SA;;;;EAIA,KACA7pB,WAAc,EAAA;UACZ,KAAK,EAAA;UACL,IAAI,CAAC47D,OAAO,GAAGt2D,QAAS,CAAA,IAAA,CAAA;UACxB,IAAI,CAACssD,MAAM,GAAGtsD,QAAS,CAAA,OAAA,CAAA;UACvB,IAAI,CAACo2D,YAAY,GAAG,QAAA;UACpB,IAAI,CAACC,YAAY,GAAG,QAAA;UACpB,IAAI,CAAChxB,cAAc,GAAG,KAAA;UACtB,IAAI,CAAC0mB,MAAM,GAAG/rD,QAAS,CAAA,OAAA,CAAA;EACvB,QAAA,IAAI,CAAC02D,UAAU,GAAGd,YAAAA,CAAaE,OAAO;UACtC,IAAI,CAACc,YAAY,GAAG,CAAA;UACpB,IAAI,CAACE,UAAU,GAAG,EAAA;EAClB,QAAA,IAAI,CAACh9D,GAAG,CAACk0C,UAAU,GAAG,IAAO,EAAA;EAC7B,QAAA,IAAI,CAACl0C,GAAG,CAAC,kBAAA,CAAmB,GAAG,IAAA;cAC7B,IAAI,CAACkP,KAAK,CAAC,KAAA,CAAA;EACb,SAAA;EACA,QAAA,MAAMumD,gBAAmB,GAAA,IAAI,CAACz1D,GAAG,CAAC,iBAAkB,CAAA;UACpD,IAAI,CAACA,GAAG,CAAC,iBAAA,CAAkB,GAAG,CAACvC,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,GAAAA;cACtCwzD,gBAAiBh4D,CAAAA,CAAAA,EAAGgE,GAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;cAC1B,IAAI,IAAI,CAAC6yD,MAAM,IAAI,IAAI,CAACA,MAAM,KAAKr3D,CAAEmI,CAAAA,EAAE,EAAE;kBACvC,IAAI,CAACsJ,KAAK,CAAC,KAAA,CAAA;kBACX,IAAI,CAAClP,GAAG,CAACk0C,UAAU,CAACpyC,IAAI,CAAC,IAAI,CAAA,CAAErE,CAAGgE,EAAAA,CAAAA,EAAGuE,CAAG/D,EAAAA,KAAAA,CAAAA;kBAExC,IAAI,CAAC6yD,MAAM,GAAGt3D,SAAAA;eAEX,MAAA;kBACH,MAAMoI,EAAAA,GAAK,IAAI,CAAC42D,OAAO,CAAC/+D,GAAGgE,CACrB0B,CAAAA,EAAAA,IAAAA,GAAO,IAAI,CAACkvD,WAAW,CAACzsD,GAAG,EAC3BwsD,UAAAA,GAAavzD,MAAO2H,CAAAA,IAAI,CAAC,IAAI,CAAC6rD,WAAW,CAAE14C,CAAAA,MAAM,CAAC,CAAC0iD,GAAKtyB,EAAAA,IAAAA,GAAAA;EACtDsyB,oBAAAA,GAAG,CAAC,IAAI,CAAChK,WAAW,CAACtoB,IAAAA,CAAK,CAAC,GAAG,CAAC3rB,KAAAA,CAAM2rB,IAAQyuB,CAAAA,GAAAA,QAAAA,CAASzuB,MAAM,EAAMA,CAAAA,GAAAA,IAAAA;sBAClE,OAAOsyB,GAAAA;EACT,iBAAA,EAAG,EAAC,CAAA;EAEV,gBAAA,MAAM9J,KAAQ,GAAA,IAAI,CAACM,WAAW,CAAC1vD,IAAK,CAAA;EACpC,gBAAA,MAAM0lC,SAAY,GAAA;EAACjjC,oBAAAA;EAAG,iBAAA;kBAEtB2sD,KAAM7yD,CAAAA,OAAO,CAACiM,CAAAA,CAAAA,GAAAA;EACZk9B,oBAAAA,SAAAA,CAAU19B,IAAI,CAACinD,UAAU,CAACzmD,CAAE,CAAA,CAAA;EAC9B,iBAAA,CAAA;EAEA,gBAAA,IAAI,CAACuD,KAAK,CAAC,CAACT,CAAGzI,EAAAA,CAAAA,GAAAA;EACb,oBAAA,IAAIyI,CAAEikD,CAAAA,MAAM,IAAIjkD,CAAAA,CAAEmkD,MAAM,EAAE;0BACxB,OAAOnkD,CAAAA,CAAEikD,MAAM,CAAC9sD,EAAE,KAAKA,MAAM6I,CAAEmkD,CAAAA,MAAM,CAAChtD,EAAE,KAAKA,EAAAA;uBAE1C,MAAA;EACH,wBAAA,OAAOijC,UAAUzpC,QAAQ,CAAC,IAAI,CAACo9D,OAAO,CAAC/tD,CAAGzI,EAAAA,CAAAA,CAAAA,CAAAA;EAC5C;EACF,iBAAA,CAAA;EACF;EACF,SAAA;UACA,IAAI,CAACiI,KAAK,GAAGmvD,6BAAAA,EAAAA;UACb,IAAI,CAACV,OAAO,GAAGW,eAAAA,EAAAA;UACf,IAAI,CAAC1/C,MAAM,GAAGnb,QAAS,CAAA,MAAA,CAAA;EACvB,QAAA,IAAI,CAAC7B,YAAY,GAAGd,WAAO,IAAI,CAACc,YAAY,EAAE;cAC5CsX,IAAM,EAAA;kBACJ9O,IAAM,EAAA,MAAA;kBACNgG,UAAY,EAAA;EACV,oBAAA,cAAA,EAAgB1R,CAAAA,CAAAA,GAAKE,IAAK4Y,CAAAA,GAAG,CAAC,CAAA,EAAG5Y,IAAKsV,CAAAA,GAAG,CAACxV,CAAAA,CAAEi1D,MAAM,CAACtgD,EAAE,GAAG3U,CAAEi1D,CAAAA,MAAM,CAACvgD,EAAE,CAAK1U,IAAAA,CAAE8E,CAAAA,KAAK,GAAG9E,CAAAA,CAAEi1D,MAAM,CAACnwD,KAAI,CAAK,GAAA,CAAA;EACtG,iBAAA;kBACA+M,KAAO,EAAA,KAAA;kBACPtG,MAAQ,EAAA,SAAA;kBACR8G,aAAe,EAAA,GAAA;EACfC,gBAAAA,WAAAA,EAAatS,CAAAA,CAAAA,GAAKE,IAAK4Y,CAAAA,GAAG,CAAC,CAAA,EAAG5Y,IAAKsV,CAAAA,GAAG,CAACxV,CAAAA,CAAEi1D,MAAM,CAACtgD,EAAE,GAAG3U,CAAEi1D,CAAAA,MAAM,CAACvgD,EAAE,CAAK1U,IAAAA,CAAE8E,CAAAA,KAAK,GAAG9E,CAAAA,CAAEi1D,MAAM,CAACnwD,KAAI,CAAK,GAAA,CAAA;EAEnG,aAAA;EACA8Q,YAAAA,IAAAA,EAAM;EACR,SAAA,CAAA;UACA,IAAI,CAACoX,MAAM,GAAGjoB,QAAS,CAAA,CAAA,CAAA;EACzB;EAwOF;;ECrUe,MAAM86D,WAAoB3U,SAAAA,QAAAA,CAAAA;EAEvC;;;;EAIA,KACA/nD,WAAc,EAAA;UAEZ,KAAK,EAAA;UACL,IAAI,CAACw0C,QAAQ,GAAG,IAAA;EAElB;EAEF;;ECRe,MAAMmoB,IAAarzB,SAAAA,GAAAA,CAAAA;EAkChC;;;OAIAyB,KAAAA,CAAMhpC,QAAQ,EAAE;EAEd,QAAA,KAAK,CAACgpC,KAAMhpC,CAAAA,QAAAA,CAAAA;UAEZ,MAAMyC,MAAAA,GAAS,IAAI,CAACuP,OAAO,KAAK,UACtB,GAAA,IAAI,CAAC9Q,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,GACrD,IAAI,CAACra,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK,EACxDE,IAAAA,GAAO,IAAI,CAACtJ,OAAO,KAAK,UAAA,GAAa,MAAS,GAAA,KAAA,EAC9C3Q,OAAO,IAAI,EACXkrB,SAAY,GAAA,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC,EAClE3Y,KAAAA,GAAQ,IAAI,CAACwP,OAAO,KAAK,YAAA,GACrB,IAAI,CAAC9Q,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC,MAAM,GACrD,IAAI,CAACra,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;EAE9D,QAAA,MAAMy/C,WAAW,IAAI,CAACC,SAAS,GAAG,IAAI,CAACC,KAAK,CACzCC,UAAU,CAAC,IAAI,CAACC,WAAW,CAAA,CAC3Bz2D,IAAI,CAAC;EAAChC,YAAAA,KAAAA;EAAOC,YAAAA;EAAO,SAAA,CAAA,CACnB8wD,qBAAU,CAAA;cACR54D,GAAK,EAAA,MAAA;EACLoJ,YAAAA,MAAAA,EAAQvF,SAAK,CAAA,IAAI,CAAC0pC,aAAa,EAAE,IAAI,CAAC9C,QAAQ,CAAC35B,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC40B,UAAU,GAAG,CAAA,CAAA;EAC5E,SAAA,EAAGvlC,CAAAA,CAAAA,GAAKA,CAAEH,CAAAA,GAAG,IAAIG,CAAEiJ,CAAAA,MAAM,GAAGjJ,CAAAA,CAAEiJ,MAAM,GAAG,IAAA,CAAA,CAAM6F,IAAI,CAAC,IAAI,CAACD,KAAK,CAE7D8pD,CAAAA,CAAAA,WAAW,EACXn3D,CAAAA,MAAM,CAACxB,CAAAA,IAAKA,CAAE6qC,CAAAA,KAAK,IAAI,IAAI,CAACP,QAAQ,CAAChoC,MAAM,IAAItC,EAAE6C,MAAM,CAAA;EAE1D;;;SAIA,SAASu9D,kBAAkBC,MAAM,EAAA;EAC/B,YAAA,OAAO55D,WAAM45D,MAAOp3D,CAAAA,MAAM,CAACtE,GAAG,CAACuJ,CAAAA,CAAKA,GAAAA,CAAAA,CAAErO,GAAG,IAAIqO,EAAEjF,MAAM,GAAGm3D,kBAAkBlyD,CAAKA,CAAAA,GAAAA,CAAAA,CAAAA,EAAI3H,KAAK6+B,KAAK,CAAA;EAC/F;UAEA26B,QAAS99D,CAAAA,OAAO,CAAC,CAACjC,CAAGgE,EAAAA,CAAAA,GAAAA;EACnB,YAAA,IAAIhE,CAAEmE,CAAAA,IAAI,CAACtE,GAAG,IAAIG,CAAEmE,CAAAA,IAAI,CAAC8E,MAAM,EAAEjJ,CAAEmE,CAAAA,IAAI,GAAGi8D,iBAAAA,CAAkBpgE,EAAEmE,IAAI,CAAA;EAClEnE,YAAAA,CAAAA,CAAEiE,UAAU,GAAG,IAAA;EACfjE,YAAAA,CAAAA,CAAEgE,CAAC,GAAGA,CAAAA;EACR,SAAA,CAAA;EAEA,QAAA,IAAIwJ,CAAI,GAAA,IAAI,CAACtK,YAAY,CAACsK,CAAC;EAC3B,QAAA,IAAI,OAAOA,CAAAA,KAAM,UAAYA,EAAAA,CAAAA,GAAIzI,QAASyI,CAAAA,CAAAA,CAAAA;EAC1C,QAAA,MAAM8yD,WAAcxnD,GAAAA,WAAAA,CAAIinD,QAAU//D,EAAAA,CAAAA,IAAKA,CAAE6qC,CAAAA,KAAK,KAAK,CAAA,GAAIr9B,EAAExN,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAI,GAAA,CAAA,CAAA;EACxE,QAAA,MAAMu8D,UAAaznD,GAAAA,WAAAA,CAAIinD,QAAU//D,EAAAA,CAAAA,IAAKA,CAAEm5D,CAAAA,QAAQ,GAAG,CAAA,GAAI3rD,CAAExN,CAAAA,CAAAA,CAAEmE,IAAI,EAAEnE,EAAEgE,CAAC,CAAA,CAAA;EAEpE,QAAA,MAAM0yD,UAAUxiD,cAAO6rD,CAAAA,QAAAA,EAAU//D,CAAAA,CAAAA,GAAKA,EAAEwI,CAAC,CAAA;UACzC,IAAI,CAACg4D,YAAY,GAAGj3D,WAAI,CAAA;EACtB,YAAA,IAAI,CAAC2N,OAAO,KAAK,UAAA,GAAa,EAAK,GAAA,GAAA;EAClCw/C,YAAAA,CAAAA,OAAO,CAAC,CAAE,CAAA,GAAG4J,cAAcC,UAAS,KAAM,IAAI,CAACj2B,QAAQ,CAAChoC,MAAM,GAAG,CAAA;EACnE,SAAA,CAAA;UAED,IAAI,CAACm+D,YAAY,GAAG/8D,SAAAA,CAAKq8D,UAAU//D,CAAAA,CAAAA,GAAKA,EAAE6qC,KAAK,CAAA,CAC5ClmC,GAAG,CAAC3E,CAAAA,IAAKA,CAAEiJ,CAAAA,MAAM,CAACiT,MAAM,CAAC,CAAC3F,GAAAA,EAAKpU,CAAG6B,EAAAA,CAAAA,GAAAA;EACjC,gBAAA,MAAMkuB,OAAOluB,CAAIhE,GAAAA,CAAAA,CAAEiJ,MAAM,CAAC3G,MAAM,GAAG,CAAA,GAAItC,CAAEiJ,CAAAA,MAAM,CAACjF,CAAI,GAAA,CAAA,CAAE,CAACuE,CAAC,GAAGb,KAAQ,GAAA,IAAI,CAACqW,OAAO,CAACyC,IAAK,CAAA,EAC/EqF,IAAO7hB,GAAAA,CAAAA,GAAIhE,EAAEiJ,MAAM,CAACjF,CAAI,GAAA,CAAA,CAAE,CAACuE,CAAC,GAAG,IAAI,CAACwV,OAAO,CAACyC,IAAK,CAAA;EACvD,gBAAA,OAAOjX,WAAI,CAAA;EAACgN,oBAAAA,GAAAA;EAAK2b,oBAAAA,IAAAA,GAAO/vB,EAAEoG,CAAC;EAAEpG,oBAAAA,CAAAA,CAAEoG,CAAC,GAAGsd;EAAK,iBAAA,CAAA;eACvCne,EAAAA,KAAAA,CAAAA,CAAAA;EAEL,QAAA,MAAMixC,SAASh9B,kBACZC,EAAAA,CAAAA,MAAM,CAAC86C,OAAAA,CAAAA,CACP76C,KAAK,CAAC;cAACykD,WAAc,GAAA,IAAI,CAACE,YAAY;cAAE74D,MAAS44D,GAAAA,UAAAA,GAAa,IAAI,CAACC;EAAa,SAAA,CAAA;UAEnFT,QAAS99D,CAAAA,OAAO,CAACjC,CAAAA,CAAAA,GAAAA;cACf,MAAMqqB,GAAAA,GAAMsuB,MAAO34C,CAAAA,CAAAA,CAAEwI,CAAC,CAAA;EACtB,YAAA,IAAI,IAAI,CAAC0O,OAAO,KAAK,YAAc,EAAA;kBACjClX,CAAEwI,CAAAA,CAAC,GAAGxI,CAAAA,CAAEuI,CAAC;EACTvI,gBAAAA,CAAAA,CAAEuI,CAAC,GAAG8hB,GAAAA;eAEHrqB,MAAAA,CAAAA,CAAEwI,CAAC,GAAG6hB,GAAAA;EACb,SAAA,CAAA;EAEA,QAAA,MAAMq2C,UAAa,GAAA;cAAC79D,MAAQ,EAAA,IAAI,CAACsC,OAAO;cAAEY,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cAAGjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;EAAC,SAAA;EAEjF,QAAA,IAAI,CAACpF,OAAO,CAAC3e,IAAI,CAAC,IAAI8M,IACnBrW,EAAAA,CAAAA,IAAI,CAAC47D,QAAAA,CAASv+D,MAAM,CAACxB,CAAAA,IAAKA,CAAE6qC,CAAAA,KAAK,GAAG,CACpCzlC,CAAAA,CAAAA,CAAAA,MAAM,CAACqE,QAAAA,CAAK,uBAAuBi3D,UAAYh7D,CAAAA,CAAAA,IAAI,IACnD7D,MAAM,CAAC2B,WAAWa,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACnB,YAAY,EAAE,OAAS,EAAA,MAAA,CAAA,CAAA,CACzDrB,MAAM,CAAC;EACN7B,YAAAA,CAAAA,EAAGA,CAAAA,CAAAA,GAAAA;EAED,gBAAA,IAAIwN,CAAI,GAAA,IAAI,CAACtK,YAAY,CAACsK,CAAC;kBAE3B,IAAI,OAAOA,MAAM,UAAYA,EAAAA,CAAAA,GAAIA,EAAExN,CAAEmE,CAAAA,IAAI,EAAEnE,CAAAA,CAAEgE,CAAC,CAAA;kBAE9C,MAAM28D,EAAAA,GAAK3gE,CAAE6C,CAAAA,MAAM,CAAC0F,CAAC,GAAGvI,CAAEuI,CAAAA,CAAC,IAAI,IAAI,CAAC2O,OAAO,KAAK,UAAA,GAAa,CAAI1J,GAAAA,CAAAA,CAC3DozD,EAAAA,EAAAA,GAAK5gE,EAAE6C,MAAM,CAAC2F,CAAC,GAAGxI,CAAEwI,CAAAA,CAAC,IAAI,IAAI,CAAC0O,OAAO,KAAK,UAAA,GAAa1J,IAAI,CAAA,CAAA,EAC3DjF,CAAI,GAAA,IAAI,CAAC2O,OAAO,KAAK,UAAa,GAAA,CAAA,GAAI,CAAC1J,CAAAA,EACvChF,CAAI,GAAA,IAAI,CAAC0O,OAAO,KAAK,UAAa,GAAA,CAAC1J,CAAI,GAAA,CAAA;EAE7C,gBAAA,OAAO,IAAI,CAAC0J,OAAO,KAAK,aACpB,CAAC,CAAC,EAAE3O,CAAAA,CAAE,CAAC,EAAEC,CAAAA,CAAE,CAAC,EAAED,EAAE,CAAC,EAAE,CAACC,IAAIo4D,EAAC,IAAK,CAAE,CAAA,CAAC,EAAED,EAAG,CAAA,CAAC,EAAGn4D,CAAAA,CAAIo4D,GAAAA,EAAC,IAAK,CAAA,CAAE,CAAC,EAAED,EAAAA,CAAG,CAAC,EAAEC,IAAI,GACnE,CAAC,CAAC,EAAEr4D,EAAE,CAAC,EAAEC,CAAE,CAAA,CAAC,EAAE,CAACD,CAAIo4D,GAAAA,EAAC,IAAK,CAAE,CAAA,CAAC,EAAEn4D,CAAAA,CAAE,CAAC,EAAGD,CAAAA,CAAAA,GAAIo4D,EAAC,IAAK,CAAA,CAAE,CAAC,EAAEC,GAAG,CAAC,EAAED,EAAG,CAAA,CAAC,EAAEC,EAAI,CAAA,CAAA;EAEzE,aAAA;cACAz4D,EAAI,EAAA,CAACnI,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACshC,IAAI,CAACtlC,CAAAA,EAAGgE,CAAG2S,CAAAA,CAAAA,IAAI,CAAC,GAAA;EACrC,SAAA,CAAA,CACC1R,MAAM,EAAA,CAAA;EAET,QAAA,IAAI,CAAConB,OAAO,CAAC3e,IAAI,CAAC,IAAIgI,MACnBvR,EAAAA,CAAAA,IAAI,CAAC47D,QAAAA,CAAAA,CACL36D,MAAM,CAACqE,SAAK,sBAAwBi3D,EAAAA,UAAAA,CAAAA,CAAYh7D,IAAI,EAAA,CAAA,CACpD7D,MAAM,CAAC2B,UAAWa,CAAAA,IAAI,CAAC,IAAI,CAAA,CAAE,IAAI,CAACnB,YAAY,EAAE,OAAS,EAAA,QAAA,CAAA,CAAA,CACzDrB,MAAM,CAAC;cACNsG,EAAI,EAAA,CAACnI,CAAGgE,EAAAA,CAAAA,GAAM,IAAI,CAACshC,IAAI,CAACtlC,CAAAA,EAAGgE,CAAG2S,CAAAA,CAAAA,IAAI,CAAC,GAAA,CAAA;EACnC9E,YAAAA,KAAAA,EAAO,CAAC7R,CAAGgE,EAAAA,CAAAA,GAAAA;kBACT,IAAI,IAAI,CAAC+J,MAAM,EAAE,OAAO,IAAI,CAACA,MAAM,CAAC/N,CAAEmE,CAAAA,IAAI,EAAEH,CAAAA,CAAAA;kBAC5C,MAAMwvC,GAAAA,GAAM,IAAI,CAAClO,IAAI,CAACtlC,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG2M,KAAK,CAAC,CAAG3Q,EAAAA,CAAAA,CAAE6qC,KAAK,CAAA;EAC5C,gBAAA,OAAO2I,GAAG,CAACA,GAAIlxC,CAAAA,MAAM,GAAG,CAAE,CAAA;EAC5B,aAAA;cACA8L,WAAa,EAAA;kBACXmE,UAAYvS,EAAAA,CAAAA,CAAK,GAAA,IAAI,CAACkX,OAAO,KAAK,UAAa,GAAA,QAAA,GAC7ClX,CAAEmE,CAAAA,IAAI,CAACg1D,QAAQ,IAAIn5D,CAAEmE,CAAAA,IAAI,CAAC0mC,KAAK,KAAK,IAAI,CAACP,QAAQ,CAAChoC,MAAM,GAAG,KAAQ,GAAA,OAAA;EACrEqQ,gBAAAA,aAAAA,EAAe3S,CAAAA,CAAAA,GAAK,IAAI,CAACkX,OAAO,KAAK,UAAA,GAAalX,CAAEmE,CAAAA,IAAI,CAAC0mC,KAAK,KAAK,CAAA,GAAI,WAAW,KAAQ,GAAA;EAC5F,aAAA;cACAj5B,OAAS,EAAA,CAAC5R,GAAGgE,CAAG/D,EAAAA,CAAAA,GAAAA;EAEd,gBAAA,MAAM+Q,CAAI,GAAA,IAAI,CAACwvD,YAAY,EACrB/qD,CAAAA,GAAI,IAAI,CAACgrD,YAAY,CAACzgE,CAAE6qC,CAAAA,KAAK,GAAG,CAAE,CAAA;kBAExC,OAAO;sBACLnjC,KAAO,EAAA,IAAI,CAACwP,OAAO,KAAK,aAAazB,CAAIxV,GAAAA,CAAAA,CAAEuN,CAAC,GAAG,CAAIiI,GAAAA,CAAAA;sBACnD9N,MAAQ,EAAA,IAAI,CAACuP,OAAO,KAAK,eAAelG,CAAI/Q,GAAAA,CAAAA,CAAEuN,CAAC,GAAG,CAAIwD,GAAAA,CAAAA;EACtDzI,oBAAAA,CAAAA,EAAG,IAAI,CAAC2O,OAAO,KAAK,UAAa,GAAA,CAACzB,CAAI,GAAA,CAAA,GAAIzV,CAAEm5D,CAAAA,QAAQ,IAAIn5D,CAAAA,CAAE6qC,KAAK,KAAK,IAAI,CAACP,QAAQ,CAAChoC,MAAM,GAAG,EAAErC,CAAEuN,CAAAA,CAAC,GAAGiI,CAAAA,CAAK,GAAA,CAACxV,EAAEuN,CAAC;EAC5GhF,oBAAAA,CAAAA,EAAG,IAAI,CAAC0O,OAAO,KAAK,eAAe,CAAClG,CAAAA,GAAI,CAAIhR,GAAAA,CAAAA,CAAEm5D,QAAQ,IAAIn5D,CAAE6qC,CAAAA,KAAK,KAAK,IAAI,CAACP,QAAQ,CAAChoC,MAAM,GAAG,EAAErC,EAAEuN,CAAC,GAAG,IAAI,CAACgzD,YAAW,CAAK,GAAA,CAACvgE,EAAEuN;EAC/H,iBAAA;EAEF,aAAA;cACAsE,WAAa,EAAA,CAAC9R,GAAGgE,CAAG/D,EAAAA,CAAAA,GAAAA;kBAElB,MAAM+Q,CAAAA,GAAI,IAAI,CAACwvD,YAAY,EACrB74D,MAAS,GAAA,IAAI,CAACuP,OAAO,KAAK,aAAa,QAAW,GAAA,OAAA,EAClDzB,IAAI,IAAI,CAACgrD,YAAY,CAACzgE,CAAAA,CAAE6qC,KAAK,GAAG,CAAA,CAAE,EAClCnjC,KAAQ,GAAA,IAAI,CAACwP,OAAO,KAAK,aAAa,OAAU,GAAA,QAAA,EAChD3O,IAAI,IAAI,CAAC2O,OAAO,KAAK,UAAA,GAAa,MAAM,GACxC1O,EAAAA,CAAAA,GAAI,IAAI,CAAC0O,OAAO,KAAK,UAAA,GAAa,GAAM,GAAA,GAAA;kBAE9C,OAAO;EACL,oBAAA,CAACxP,QAAQ+N,CAAAA;EACT,oBAAA,CAAC9N,SAASqJ,CAAAA;sBACV,CAACzI,CAAAA,GAAI,CAACkN,CAAI,GAAA,CAAA;sBACV,CAACjN,CAAAA,GAAIxI,CAAEm5D,CAAAA,QAAQ,IAAIn5D,CAAE6qC,CAAAA,KAAK,KAAK,IAAI,CAACP,QAAQ,CAAChoC,MAAM,GAAG,EAAErC,CAAAA,CAAEuN,CAAC,GAAGwD,CAAAA,CAAK/Q,GAAAA,CAAAA,CAAEuN;EACvE,iBAAA;EAEF;EACF,SAAA,CAAA,CACCvI,MAAM,EAAA,CAAA;EAET,QAAA,OAAO,IAAI;EAEb;EAEA;;;;OAKAgS,MAAAA,CAAOnV,CAAC,EAAE;EACR,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC4U,OAAO,GAAGpV,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACoV,OAAO;EACnE;EAEA;;;;;;;;;;;OAYAgpD,UAAAA,CAAWp+D,CAAC,EAAE;EACZ,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAAC69D,WAAW,GAAGr+D,CAAAA,EAAG,IAAG,IAAK,IAAI,CAACq+D,WAAW;EAC3E;EAjNA;;;;EAIA,KACAh9D,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAAC+T,OAAO,GAAG,UAAA;EACf,QAAA,IAAI,CAACipD,WAAW,GAAG,CAACpxD,CAAGZ,EAAAA,CAAAA,GAAMY,CAAElM,CAAAA,MAAM,KAAKsL,CAAAA,CAAEtL,MAAM,GAAG,CAAI,GAAA,CAAA;UAEzD,IAAI,CAACqd,MAAM,GAAGnb,QAAS,CAAA,QAAA,CAAA;EACvB,QAAA,IAAI,CAAC7B,YAAY,GAAGd,WAAO,IAAI,CAACc,YAAY,EAAE;cAC5CmO,SAAW,EAAA,CAACrR,CAAGgE,EAAAA,CAAAA,GAAO,IAAI,CAACg8D,SAAS,GAAG,CAAG,EAAA,IAAI,CAACA,SAAS,CAACh8D,CAAAA,CAAE,CAAC6mC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC/F,UAAU,CAAC9kC,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG,CAAC,CAAC,GAAG,EAAA;cACjGoK,WAAa,EAAA;kBACX6E,SAAW,EAAA;EACb,aAAA;cACAuH,IAAM,EAAA;kBACJ9O,IAAM,EAAA,MAAA;kBACNH,MAAQ,EAAA,MAAA;kBACR+G,WAAa,EAAA;EACf,aAAA;EACA9E,YAAAA,CAAAA,EAAGzI,QAAS,CAAA,CAAA,CAAA;EACZ2C,YAAAA,KAAAA,EAAO3C,QAAS,CAAA,EAAA,CAAA;EAChB4C,YAAAA,MAAAA,EAAQ5C,QAAS,CAAA,EAAA;EACnB,SAAA,CAAA;UAEA,IAAI,CAACk7D,KAAK,GAAGzyB,gBAAAA,EAAAA;EAEf;EAqLF;;ECjOA,MAAMqzB,WAAc,GAAA;EAACC,mBAAAA,yBAAAA;EAAeC,iBAAAA,uBAAAA;EAAaC,kBAAAA,wBAAAA;EAAcC,sBAAAA,4BAAAA;EAAkBC,qBAAAA,2BAAAA;EAAiBC,uBAAAA;EAAiB,CAAA;EAcpG,MAAMC,OAAgB30B,SAAAA,GAAAA,CAAAA;EAqDnC;;;;OAKAyB,KAAAA,CAAMhpC,QAAQ,EAAE;EAEd,QAAA,KAAK,CAACgpC,KAAMhpC,CAAAA,QAAAA,CAAAA;EAEZ,QAAA,IAAImzD,UAAa30D,GAAAA,iBAAAA,EAAAA;EACjB,QAAA,IAAK,IAAIM,CAAI,GAAA,CAAA,EAAGA,CAAK,IAAA,IAAI,CAACuhC,UAAU,EAAEvhC,CAAKq0D,EAAAA,CAAAA,UAAAA,CAAWx4D,GAAG,CAAC,IAAI,CAACyqC,QAAQ,CAACtmC,CAAE,CAAA,CAAA;EAC1Eq0D,QAAAA,UAAAA,GAAaA,UAAWpkD,CAAAA,OAAO,CAAC,IAAI,CAACm5B,aAAa,CAAA;EAElD,QAAA,MAAMi0B,QAAW,GAAA,IAAI,CAACC,QAAQ,CAC3BluD,OAAO,CAAC,IAAI,CAAColD,cAAc,CAC3B9uD,CAAAA,IAAI,CAAC;EACJ,YAAA,IAAI,CAACxD,MAAM,GAAG,IAAI,CAAC6X,OAAO,CAACyC,IAAI,GAAG,IAAI,CAACzC,OAAO,CAACuC,KAAK;EACpD,YAAA,IAAI,CAACla,OAAO,GAAG,IAAI,CAAC2X,OAAO,CAACsC,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACwC;EAChD,SAAA,CAAA,CACAgxC,IAAI,CAAC,IAAI,CAACgQ,KAAK,EAAE9I,qBAAU,CAAA;cAACxvD,MAAQovD,EAAAA;EAAU,SAAA,EAAGr4D,CAAAA,CAAAA,GAAKA,CAAEiJ,CAAAA,MAAM,EAAEwN,GAAG,CAAC,IAAI,CAACiiD,IAAI,CAAE5pD,CAAAA,IAAI,CAAC,IAAI,CAACD,KAAK,CAAA,CAAA;EAEjG,QAAA,MAAMgJ,SAAY,GAAA,EAAE,EAAEtR,IAAAA,GAAO,IAAI;EAEjC;;;;SAKA,SAASi7D,cAAcrI,QAAQ,EAAA;EAC7B,YAAA,IAAK,IAAIn1D,CAAI,GAAA,CAAA,EAAGA,IAAIm1D,QAAS72D,CAAAA,MAAM,EAAE0B,CAAK,EAAA,CAAA;kBACxC,MAAM0B,IAAAA,GAAOyzD,QAAQ,CAACn1D,CAAE,CAAA;kBACxB,IAAI0B,IAAAA,CAAKmlC,KAAK,IAAItkC,IAAAA,CAAKg/B,UAAU,EAAEi8B,aAAAA,CAAc97D,KAAKyzD,QAAQ,CAAA;EACzD,qBAAA;sBACH,MAAMjgD,KAAAA,GAAQxT,KAAKvB,IAAI,CAAC8E,MAAM,CAAC3G,MAAM,KAAK,CAAIiE,GAAAA,IAAAA,CAAK6mC,aAAa,CAAC1rC,OAAO,CAACgE,IAAKvB,CAAAA,IAAI,CAAC8E,MAAM,CAAC,EAAE,CAAIlJ,GAAAA,SAAAA;EAChG2F,oBAAAA,IAAAA,CAAKzB,UAAU,GAAG,IAAA;EAClByB,oBAAAA,IAAAA,CAAKyC,EAAE,GAAGzC,IAAKvB,CAAAA,IAAI,CAACtE,GAAG;EACvB6F,oBAAAA,IAAAA,CAAK1B,CAAC,GAAGkV,KAAQ,GAAA,KAAKA,KAAQnZ,GAAAA,SAAAA;sBAC9B2F,IAAKvB,CAAAA,IAAI,GAAGsC,UAAMf,CAAAA,IAAAA,CAAKvB,IAAI,CAAC8E,MAAM,EAAE1C,IAAAA,CAAK6+B,KAAK,CAAA;EAC9C1/B,oBAAAA,IAAAA,CAAK6C,CAAC,GAAG7C,IAAK8O,CAAAA,EAAE,GAAI9O,CAAAA,IAAAA,CAAK+O,EAAE,GAAG/O,IAAK8O,CAAAA,EAAE,IAAI,CAAA;EACzC9O,oBAAAA,IAAAA,CAAK8C,CAAC,GAAG9C,IAAKgP,CAAAA,EAAE,GAAIhP,CAAAA,IAAAA,CAAKiP,EAAE,GAAGjP,IAAKgP,CAAAA,EAAE,IAAI,CAAA;EACzCmD,oBAAAA,SAAAA,CAAUnK,IAAI,CAAChI,IAAAA,CAAAA;EACjB;EACF;EACF;EACA,QAAA,IAAI27D,QAASlI,CAAAA,QAAQ,EAAEqI,aAAAA,CAAcH,SAASlI,QAAQ,CAAA;EAEtD,QAAA,IAAI,CAACsI,SAAS,GAAG5pD,SAAAA,CAAU/I,IAAI,CAAC,IAAI,CAACD,KAAK,EAAElK,GAAG,CAAC3E,CAAAA,CAAAA,GAAKA,EAAEmE,IAAI,CAAA;UAC3D,MAAMkjC,KAAAA,GAAQg6B,SAASv8D,KAAK;UAC5B+S,SAAU5V,CAAAA,OAAO,CAACjC,CAAAA,CAAAA,GAAAA;cAChBA,CAAE0hE,CAAAA,KAAK,GAAG,IAAI,CAAChJ,IAAI,CAAC14D,CAAAA,CAAEmE,IAAI,EAAEnE,CAAEgE,CAAAA,CAAC,CAAIqjC,GAAAA,KAAAA;EACrC,SAAA,CAAA;EAEA,QAAA,MAAM5V,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC1T,OAAO,CAACyC,IAAI,CAAC,EAAE,EAAE,IAAI,CAACzC,OAAO,CAACsC,GAAG,CAAC,CAAC,CAAC;UACxE,MAAMjG,UAAAA,GAAa5W,UAAWa,CAAAA,IAAI,CAAC,IAAI,EAAE,IAAI,CAACnB,YAAY,EAAE,OAAS,EAAA,MAAA,CAAA;EACrE,QAAA,MAAMo1B,OAAUle,GAAAA,UAAAA,CAAWhM,WAAW,CAACkqB,OAAO;EAC9C,QAAA,MAAMC,OAAUne,GAAAA,UAAAA,CAAWhM,WAAW,CAACmqB,OAAO;EAC9C,QAAA,MAAMnlB,OAAUgH,GAAAA,UAAAA,CAAWhM,WAAW,CAACgF,OAAO;EAE9C,QAAA,IAAI,CAACiZ,OAAO,CAAC3e,IAAI,CAAC,IAAIkI,IACnBzR,EAAAA,CAAAA,IAAI,CAAC0T,SAAAA,CAAAA,CACLhG,KAAK,CAAC7R,CAAAA,CAAK,GAAA;EACV,gBAAA,IAAI,CAAC8kC,UAAU,CAAC9kC,EAAEmE,IAAI,EAAEnE,EAAEgE,CAAC,CAAA;kBAC3B,CAAGyd,EAAAA,uBAAAA,CAAiBzhB,CAAE0hE,CAAAA,KAAK,GAAG,GAAA,EAAK,IAAI,CAACj/D,OAAO,CAAE,CAAA,CAAC;eACnD,CACA2C,CAAAA,MAAM,CAACqE,QAAAA,CAAK,kBAAoB,EAAA;cAC/B5G,MAAQ,EAAA,IAAI,CAACsC,OAAO;cACpBY,KAAO,EAAA;EAAC0rB,gBAAAA;EAAS,aAAA;cACjBjrB,MAAQ,EAAA;EAACirB,gBAAAA;EAAS;WACjB/rB,CAAAA,CAAAA,IAAI,EACN7D,CAAAA,CAAAA,MAAM,CAAC;EACN8F,YAAAA,MAAAA,EAAQ3H,CAAAA,CAAKA,GAAAA,CAAAA,CAAE2U,EAAE,GAAG3U,EAAE0U,EAAE;cACxB5C,WAAa,EAAA,CAAC9R,GAAGgE,CAAG/D,EAAAA,CAAAA,GAAAA;kBAClB,MAAM+Q,CAAAA,GAAI/Q,EAAE0H,MAAM;kBAClB,IAAIg6D,EAAAA,GAAKzhE,IAAKqJ,CAAAA,GAAG,CAAC+uB,OAAAA,EAAS,CAACtnB,CAAAA,GAAIoC,OAAU,GAAA,CAAA,IAAK,GAAA,CAAA;kBAC/C,IAAIuuD,EAAAA,GAAKppC,SAASopC,EAAK,GAAA,CAAA;kBACvB,OAAO;EACL,oBAAA;EAACj6D,wBAAAA,KAAAA,EAAOzH,EAAEyH,KAAK;EAAEC,wBAAAA,MAAAA,EAAQqJ,CAAI2wD,GAAAA,EAAAA;0BAAIp5D,CAAG,EAAA,CAACtI,CAAEyH,CAAAA,KAAK,GAAG,CAAA;EAAGc,wBAAAA,CAAAA,EAAG,CAACwI,CAAI,GAAA;EAAC,qBAAA;EAC3D,oBAAA;EAACtJ,wBAAAA,KAAAA,EAAOzH,EAAEyH,KAAK;EAAEC,wBAAAA,MAAAA,EAAQg6D,KAAKvuD,OAAU,GAAA,CAAA;0BAAG7K,CAAG,EAAA,CAACtI,CAAEyH,CAAAA,KAAK,GAAG,CAAA;0BAAGc,CAAGwI,EAAAA,CAAAA,GAAI,CAAI2wD,GAAAA,EAAAA,GAAKvuD,OAAU,GAAA;EAAC;EACxF,iBAAA;EACH,aAAA;cACAhF,WAAa,EAAA;kBACXmE,UAAY,EAAA,CAACvS,GAAGgE,CAAGuE,EAAAA,CAAAA,GAAAA;EACjB,oBAAA,IAAIsO,MAAMhU,MAAS0F,GAAAA,CAAAA;sBACnB,MAAO,OAAOsO,IAAS,KAAA,WAAA,IAAehU,MAAQ,CAAA;EAC5C,wBAAA,IAAI,OAAOA,MAAOqL,CAAAA,CAAC,KAAK,WAAa2I,EAAAA,IAAAA,GAAOhU,OAAOqL,CAAC;EACpDrL,wBAAAA,MAAAA,GAASA,OAAOqB,gBAAgB;EAClC;EACA,oBAAA,OAAO2S,OAAO,QAAW,GAAA,OAAA;EAC3B,iBAAA;kBACAlE,aAAe,EAAA,CAAC3S,GAAGgE,CAAGuE,EAAAA,CAAAA,GAAAA;EACpB,oBAAA,IAAIsO,MAAMhU,MAAS0F,GAAAA,CAAAA;sBACnB,MAAO,OAAOsO,IAAS,KAAA,WAAA,IAAehU,MAAQ,CAAA;EAC5C,wBAAA,IAAI,OAAOA,MAAOqL,CAAAA,CAAC,KAAK,WAAa2I,EAAAA,IAAAA,GAAOhU,OAAOqL,CAAC;EACpDrL,wBAAAA,MAAAA,GAASA,OAAOqB,gBAAgB;EAClC;EACA,oBAAA,OAAO2S,OAAO,QAAW,GAAA,KAAA;EAC3B;EACF,aAAA;EACAnP,YAAAA,KAAAA,EAAO1H,CAAAA,CAAKA,GAAAA,CAAAA,CAAEyU,EAAE,GAAGzU,EAAEwU;WAEtB3S,CAAAA,CAAAA,MAAM,CAACuY,UAAAA,CAAAA,CACPnV,MAAM,EAAA,CAAA;EAET,QAAA,OAAO,IAAI;EAEb;EAEA;;;;QAKAwoC,kBAAAA,CAAmBtpC,MAAI,EAAE;UACvB,MAAMstC,IAAAA,GAAO,IAAI,CAACrM,KAAK;UACvB,MAAMw8B,SAAAA,GAAY,IAAI,CAACr8B,UAAU;UACjC,MAAMyN,OAAAA,GAAU,IAAI,CAAC1I,QAAQ;UAC7B,MAAMmK,SAAAA,GAAY,IAAI,CAAC1H,UAAU;UACjC,MAAM4H,YAAAA,GAAe,IAAI,CAACC,aAAa;UAEvC,MAAMitB,QAAAA,GAAWprD,YAAItS,MAAMwwC,EAAAA,YAAAA,CAAAA;EAE3B,QAAA,IAAIF,aAAaE,YAAc,EAAA;EAC7B,YAAA,OAAOmtB,iBAAiB39D,MAAM,EAAA,CAAA,CAAA;EAChC;EAEA;;;;;;EAMC,QACD,SAAS29D,gBAAAA,CAAiBC,UAAU,EAAEl3B,KAAK,EAAA;EACzC,YAAA,IAAIA,QAAQ+2B,SAAW,EAAA;EACrB,gBAAA,OAAOl+D,iBACJ7D,EAAAA,CAAAA,GAAG,CAACmzC,OAAO,CAACnI,KAAAA,CAAM,CAClB52B,CAAAA,OAAO,CAAC8tD,UAAAA,CAAAA,CACR7lD,MAAM,CAAC,CAAC8lD,IAAMC,EAAAA,IAAAA,GAAAA;EACb,oBAAA,MAAMC,aAAgBJ,GAAAA,gBAAAA,CAAiBG,IAAKh5D,CAAAA,MAAM,EAAE4hC,KAAQ,GAAA,CAAA,CAAA;sBAC5D,OAAOm3B,IAAAA,CAAK7gE,MAAM,CAAC+gE,aAAAA,CAAAA;EACrB,iBAAA,EAAG,EAAE,CAAA;EACT;EAEA,YAAA,IAAIr3B,UAAU+2B,SAAW,EAAA;kBACvB,MAAMO,gBAAAA,GAAmBjiE,KAAKqJ,GAAG,CAAC,GAAGrJ,IAAK4Y,CAAAA,GAAG,CAAC,CAAA,EAAG27B,SAAUstB,CAAAA,UAAAA,CAAAA,CAAAA,CAAAA;EAE3D,gBAAA,IAAI,CAACrtB,QAAAA,CAASytB,gBAAqBxhD,CAAAA,IAAAA,KAAAA,CAAMwhD,mBAAmB,OAAO,IAAA;EAEnE,gBAAA,MAAMC,eAAe,EAAE;kBACvB,MAAMC,cAAAA,GAAiBN,WAAWpxD,KAAK,EAAA;EACvC,gBAAA,MAAM2xD,iBAAiBH,gBAAmBN,GAAAA,QAAAA;kBAE1C,IAAI1lD,CAAAA,GAAIkmD,eAAe//D,MAAM;EAC7B,gBAAA,MAAO6Z,CAAK,EAAA,CAAA;sBACV,MAAM7O,KAAAA,GAAQ+0D,cAAc,CAAClmD,CAAE,CAAA;sBAC/B,IAAIw4B,YAAAA,CAAarnC,SAASg1D,cAAgB,EAAA;0BACxC,MAAMppD,KAAAA,GAAQmpD,cAAe3gE,CAAAA,OAAO,CAAC4L,KAAAA,CAAAA;0BACrC+0D,cAAevjD,CAAAA,MAAM,CAAC5F,KAAO,EAAA,CAAA,CAAA;EAC7BkpD,wBAAAA,YAAAA,CAAa10D,IAAI,CAACJ,KAAAA,CAAAA;EACpB;EACF;kBAEA,IAAI80D,YAAAA,CAAa9/D,MAAM,GAAG,CAAG,EAAA;sBAC3B,MAAMigE,UAAAA,GAAa97D,WAAM27D,YAAc3wB,EAAAA,IAAAA,CAAAA;EACvC8wB,oBAAAA,UAAAA,CAAW11B,cAAc,GAAG,IAAA;EAC5B01B,oBAAAA,UAAAA,CAAWx1B,UAAU,GAAGo1B,gBAAAA;EACxBE,oBAAAA,cAAAA,CAAe30D,IAAI,CAAC60D,UAAAA,CAAAA;EACtB;kBAEA,OAAOF,cAAAA;EACT;EAEA,YAAA,MAAM,IAAIG,KAAM,CAAA,qDAAA,CAAA;EAClB;UAEA,OAAOr+D,MAAAA;EACT;EAEA;;;;OAKA20D,aAAAA,CAAch3D,CAAC,EAAE;EACf,QAAA,OAAOO,UAAUC,MAAM,IAAI,IAAI,CAACk2D,cAAc,GAAG,OAAO12D,MAAM,UAAaA,GAAAA,CAAAA,GAAIiD,SAASjD,CAAI,CAAA,EAAA,IAAI,IAAI,IAAI,CAAC02D,cAAc;EACzH;EAEA;;;;;;;;OASA1pD,IAAAA,CAAKhN,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAAI,IAAI,CAACuM,KAAK,GAAG/M,CAAAA,EAAG,IAAG,IAAK,IAAI,CAAC+M,KAAK;EAC/D;EAEA;;;;;;;;OASA4H,GAAAA,CAAI3U,CAAC,EAAE;UACL,IAAIO,SAAAA,CAAUC,MAAM,EAAE;EACpB,YAAA,IAAI,CAACo2D,IAAI,GAAG,OAAO52D,CAAM,KAAA,UAAA,GAAaA,IAAI2G,QAAS3G,CAAAA,CAAAA,CAAAA;EACnD,YAAA,IAAI,CAAC8yC,aAAa,GAAG,IAAI,CAAC8jB,IAAI;EAC9B,YAAA,OAAO,IAAI;WAER,MAAA,OAAO,IAAI,CAACA,IAAI;EACvB;EAEA;;;;;;OAOAnH,IAAAA,CAAKzvD,CAAC,EAAE;EACN,QAAA,OAAOO,SAAUC,CAAAA,MAAM,IAClB,IAAI,CAACi/D,KAAK,GAAG,OAAOz/D,MAAM,QACzB++D,GAAAA,WAAW,CAAC,CAAC,OAAO,EAAE/+D,CAAAA,CAAE2O,MAAM,CAAC,GAAGC,WAAW,EAAA,CAAA,EAAK5O,CAAE6O,CAAAA,KAAK,CAAC,CAAI,CAAA,CAAA,CAAA,CAAC,IAAIuwD,2BAAAA,GACnEp/D,GAAG,IAAG,IACR,IAAI,CAACy/D,KAAK;EAChB;EA1RA;;;;EAIA,KACAp+D,WAAc,EAAA;UAEZ,KAAK,EAAA;UAEL,IAAI,CAACq1D,cAAc,GAAG,CAAA;UAEtB,MAAMpN,aAAAA,GAAgB,IAAI,CAACtlB,OAAO;EAClC,QAAA,IAAI,CAACA,OAAO,GAAG,CAACjkC,MAAQ6C,EAAAA,GAAAA,GAAAA;cACtB,IAAIA,GAAAA,CAAIpC,MAAM,KAAK,IAAI,CAAC8qC,aAAa,CAAC9qC,MAAM,EAAE,OAAO,KAAA;EACrD,YAAA,OAAO8oD,aAAc/mD,CAAAA,IAAI,CAAC,IAAI,EAAExC,MAAQ6C,EAAAA,GAAAA,CAAAA;EAC1C,SAAA;EACA,QAAA,IAAI,CAAC2gC,WAAW,GAAG,CAACt2B,GAAGZ,CAAM,GAAA,IAAI,CAACuqD,IAAI,CAACvqD,CAAAA,CAAAA,GAAK,IAAI,CAACuqD,IAAI,CAAC3pD,CAAAA,CAAAA;UACtD,IAAI,CAACm9B,cAAc,GAAG9pC,UAAAA,CAAO,EAAI,EAAA,IAAI,CAAC8pC,cAAc,EAAE;EACpD9I,YAAAA,KAAAA,EAAO;EACT,SAAA,CAAA;UACA,IAAI,CAAClgC,YAAY,GAAGd,UAAAA,CAAO,EAAI,EAAA,IAAI,CAACc,YAAY,EAAE;EAChDmO,YAAAA,SAAAA,EAAW,CAACrR,CAAGgE,EAAAA,CAAAA,GAAAA;EACb,gBAAA,MAAMy+D,OAAO,IAAI,CAAChB,SAAS,GAAG,GAAG,IAAI,CAACA,SAAS,CAAC//D,OAAO,CAAC1B,CAAAA,CAAAA,GAAK,CAAE,CAAA,EAAE,CAAC,GAAG,EAAA;EACrE,gBAAA,OAAO,GAAGyiE,IAAO,CAAA,EAAA,IAAI,CAAC39B,UAAU,CAAC9kC,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG,EAAE,EAAE,IAAI,CAAC00D,IAAI,CAAC14D,CAAGgE,EAAAA,CAAAA,CAAAA,CAAG,CAAC,CAAC;EAC/D,aAAA;cACAoK,WAAa,EAAA;kBACXkqB,OAAS,EAAA,EAAA;kBACTC,OAAS,EAAA,CAAA;kBACT7O,UAAY,EAAA,IAAA;kBACZtW,OAAS,EAAA;EACX;EACF,SAAA,CAAA;EACA,QAAA,IAAI,CAACvE,KAAK,GAAG,CAACE,CAAGZ,EAAAA,CAAAA,GAAAA;EACf,YAAA,MAAMu0D,OAAOC,YAAa5zD,CAAAA,CAAAA,CAAAA;EAC1B,YAAA,MAAM6zD,OAAOD,YAAax0D,CAAAA,CAAAA,CAAAA;EAC1B,YAAA,OAAOu0D,IAAQ,IAAA,CAACE,IAAO,GAAA,CAAA,GAAI,CAACF,IAAAA,IAAQE,IAAO,GAAA,EAAKz0D,GAAAA,CAAAA,CAAErJ,KAAK,GAAGiK,EAAEjK,KAAK;EACnE,SAAA;UACA,IAAI,CAAC4zD,IAAI,GAAGjwD,QAAS,CAAA,OAAA,CAAA;EACrB,QAAA,IAAI,CAACmsC,aAAa,GAAG,IAAI,CAAC8jB,IAAI;UAC9B,IAAI,CAAC6I,KAAK,GAAGL,2BAAAA;UACb,IAAI,CAACj1B,cAAc,GAAG7pC,UAAAA,CAAO,EAAI,EAAA,IAAI,CAAC6pC,cAAc,EAAE;cACpD7I,KAAO,EAAA;EACL,gBAAA;sBAAC,IAAM,IAAI,CAACpgC,UAAU,CAAC,OAAA,CAAA;EAAU,oBAAA,CAAChD,CAAGgE,EAAAA,CAAAA,EAAGuE,CAAM,GAAA,CAAA,EAAGkZ,wBAAiBlZ,CAAEm5D,CAAAA,KAAK,GAAG,GAAA,EAAK,IAAI,CAACj/D,OAAO,CAAA,CAAE,CAAC;EAAE;EACnG;EACH,SAAA,CAAA;EACA,QAAA,IAAI,CAAC6+D,QAAQ,GAAGuB,mBAAAA,EAAAA,CAAUtmD,KAAK,CAAC,IAAA,CAAA;EAEhC,QAAA,MAAMomD,eAAeV,CAAAA,IAAAA,GAAQA,KAAK9I,QAAQ,IAAI8I,KAAK9I,QAAQ,CAAC72D,MAAM,KAAK,CAAA,IAAK2/D,KAAK9I,QAAQ,CAAC,EAAE,CAACh1D,IAAI,CAAC0oC,cAAc;EAElH;EA2OF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}