{"version":3,"file":"chunk-foundation.reveal-90758947-esm.js","sources":["node_modules/foundation-sites/js/foundation.reveal.js"],"sourcesContent":["import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Reveal module.\n * @module foundation.reveal\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion if using animations\n */\n\nclass Reveal extends Plugin {\n /**\n * Creates a new instance of Reveal.\n * @class\n * @name Reveal\n * @param {jQuery} element - jQuery object to use for the modal.\n * @param {Object} options - optional parameters.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Reveal.defaults, this.$element.data(), options);\n this.className = 'Reveal'; // ie9 back compat\n this._init();\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n Keyboard.register('Reveal', {\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the modal by adding the overlay and close buttons, (if selected).\n * @private\n */\n _init() {\n MediaQuery._init();\n this.id = this.$element.attr('id');\n this.isActive = false;\n this.cached = {mq: MediaQuery.current};\n\n this.$anchor = $(`[data-open=\"${this.id}\"]`).length ? $(`[data-open=\"${this.id}\"]`) : $(`[data-toggle=\"${this.id}\"]`);\n this.$anchor.attr({\n 'aria-controls': this.id,\n 'aria-haspopup': 'dialog',\n 'tabindex': 0\n });\n\n if (this.options.fullScreen || this.$element.hasClass('full')) {\n this.options.fullScreen = true;\n this.options.overlay = false;\n }\n if (this.options.overlay && !this.$overlay) {\n this.$overlay = this._makeOverlay(this.id);\n }\n\n this.$element.attr({\n 'role': 'dialog',\n 'aria-hidden': true,\n 'data-yeti-box': this.id,\n 'data-resize': this.id\n });\n\n if(this.$overlay) {\n this.$element.detach().appendTo(this.$overlay);\n } else {\n this.$element.detach().appendTo($(this.options.appendTo));\n this.$element.addClass('without-overlay');\n }\n this._events();\n if (this.options.deepLink && window.location.hash === ( `#${this.id}`)) {\n this.onLoadListener = onLoad($(window), () => this.open());\n }\n }\n\n /**\n * Creates an overlay div to display behind the modal.\n * @private\n */\n _makeOverlay() {\n var additionalOverlayClasses = '';\n\n if (this.options.additionalOverlayClasses) {\n additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;\n }\n\n return $('
')\n .addClass('reveal-overlay' + additionalOverlayClasses)\n .appendTo(this.options.appendTo);\n }\n\n /**\n * Updates position of modal\n * TODO: Figure out if we actually need to cache these values or if it doesn't matter\n * @private\n */\n _updatePosition() {\n var width = this.$element.outerWidth();\n var outerWidth = $(window).width();\n var height = this.$element.outerHeight();\n var outerHeight = $(window).height();\n var left, top = null;\n if (this.options.hOffset === 'auto') {\n left = parseInt((outerWidth - width) / 2, 10);\n } else {\n left = parseInt(this.options.hOffset, 10);\n }\n if (this.options.vOffset === 'auto') {\n if (height > outerHeight) {\n top = parseInt(Math.min(100, outerHeight / 10), 10);\n } else {\n top = parseInt((outerHeight - height) / 4, 10);\n }\n } else if (this.options.vOffset !== null) {\n top = parseInt(this.options.vOffset, 10);\n }\n\n if (top !== null) {\n this.$element.css({top: top + 'px'});\n }\n\n // only worry about left if we don't have an overlay or we have a horizontal offset,\n // otherwise we're perfectly in the middle\n if (!this.$overlay || (this.options.hOffset !== 'auto')) {\n this.$element.css({left: left + 'px'});\n this.$element.css({margin: '0px'});\n }\n\n }\n\n /**\n * Adds event handlers for the modal.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': (event, $element) => {\n if ((event.target === _this.$element[0]) ||\n ($(event.target).parents('[data-closable]')[0] === $element)) { // only close reveal when it's explicitly called\n return this.close.apply(this);\n }\n },\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': function() {\n _this._updatePosition();\n }\n });\n\n if (this.options.closeOnClick && this.options.overlay) {\n this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) {\n return;\n }\n _this.close();\n });\n }\n if (this.options.deepLink) {\n $(window).on(`hashchange.zf.reveal:${this.id}`, this._handleState.bind(this));\n }\n }\n\n /**\n * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.\n * @private\n */\n _handleState() {\n if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); }\n else{ this.close(); }\n }\n\n /**\n * Disables the scroll when Reveal is shown to prevent the background from shifting\n * @param {number} scrollTop - Scroll to visually apply, window current scroll by default\n */\n _disableScroll(scrollTop) {\n scrollTop = scrollTop || $(window).scrollTop();\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", -scrollTop);\n }\n }\n\n /**\n * Reenables the scroll when Reveal closes\n * @param {number} scrollTop - Scroll to restore, html \"top\" property by default (as set by `_disableScroll`)\n */\n _enableScroll(scrollTop) {\n scrollTop = scrollTop || parseInt($(\"html\").css(\"top\"), 10);\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", \"\");\n $(window).scrollTop(-scrollTop);\n }\n }\n\n\n /**\n * Opens the modal controlled by `this.$anchor`, and closes all others by default.\n * @function\n * @fires Reveal#closeme\n * @fires Reveal#open\n */\n open() {\n // either update or replace browser history\n const hash = `#${this.id}`;\n if (this.options.deepLink && window.location.hash !== hash) {\n\n if (window.history.pushState) {\n if (this.options.updateHistory) {\n window.history.pushState({}, '', hash);\n } else {\n window.history.replaceState({}, '', hash);\n }\n } else {\n window.location.hash = hash;\n }\n }\n\n // Remember anchor that opened it to set focus back later, have general anchors as fallback\n this.$activeAnchor = $(document.activeElement).is(this.$anchor) ? $(document.activeElement) : this.$anchor;\n\n this.isActive = true;\n\n // Make elements invisible, but remove display: none so we can get size and positioning\n this.$element\n .css({ 'visibility': 'hidden' })\n .show()\n .scrollTop(0);\n if (this.options.overlay) {\n this.$overlay.css({'visibility': 'hidden'}).show();\n }\n\n this._updatePosition();\n\n this.$element\n .hide()\n .css({ 'visibility': '' });\n\n if(this.$overlay) {\n this.$overlay.css({'visibility': ''}).hide();\n if(this.$element.hasClass('fast')) {\n this.$overlay.addClass('fast');\n } else if (this.$element.hasClass('slow')) {\n this.$overlay.addClass('slow');\n }\n }\n\n\n if (!this.options.multipleOpened) {\n /**\n * Fires immediately before the modal opens.\n * Closes any other modals that are currently open\n * @event Reveal#closeme\n */\n this.$element.trigger('closeme.zf.reveal', this.id);\n }\n\n if ($('.reveal:visible').length === 0) {\n this._disableScroll();\n }\n\n var _this = this;\n\n // Motion UI method of reveal\n if (this.options.animationIn) {\n function afterAnimation(){\n _this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n _this._addGlobalClasses();\n Keyboard.trapFocus(_this.$element);\n }\n if (this.options.overlay) {\n Motion.animateIn(this.$overlay, 'fade-in');\n }\n Motion.animateIn(this.$element, this.options.animationIn, () => {\n if(this.$element) { // protect against object having been removed\n this.focusableElements = Keyboard.findFocusable(this.$element);\n afterAnimation();\n }\n });\n }\n // jQuery method of reveal\n else {\n if (this.options.overlay) {\n this.$overlay.show(0);\n }\n this.$element.show(this.options.showDelay);\n }\n\n // handle accessibility\n this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n Keyboard.trapFocus(this.$element);\n\n this._addGlobalClasses();\n\n this._addGlobalListeners();\n\n /**\n * Fires when the modal has successfully opened.\n * @event Reveal#open\n */\n this.$element.trigger('open.zf.reveal');\n }\n\n /**\n * Adds classes and listeners on document required by open modals.\n *\n * The following classes are added and updated:\n * - `.is-reveal-open` - Prevents the scroll on document\n * - `.zf-has-scroll` - Displays a disabled scrollbar on document if required like if the\n * scroll was not disabled. This prevent a \"shift\" of the page content due\n * the scrollbar disappearing when the modal opens.\n *\n * @private\n */\n _addGlobalClasses() {\n const updateScrollbarClass = () => {\n $('html').toggleClass('zf-has-scroll', !!($(document).height() > $(window).height()));\n };\n\n this.$element.on('resizeme.zf.trigger.revealScrollbarListener', () => updateScrollbarClass());\n updateScrollbarClass();\n $('html').addClass('is-reveal-open');\n }\n\n /**\n * Removes classes and listeners on document that were required by open modals.\n * @private\n */\n _removeGlobalClasses() {\n this.$element.off('resizeme.zf.trigger.revealScrollbarListener');\n $('html').removeClass('is-reveal-open');\n $('html').removeClass('zf-has-scroll');\n }\n\n /**\n * Adds extra event handlers for the body and window if necessary.\n * @private\n */\n _addGlobalListeners() {\n var _this = this;\n if(!this.$element) { return; } // If we're in the middle of cleanup, don't freak out\n this.focusableElements = Keyboard.findFocusable(this.$element);\n\n if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {\n $('body').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) { return; }\n _this.close();\n });\n }\n\n if (this.options.closeOnEsc) {\n $(window).on('keydown.zf.reveal', function(e) {\n Keyboard.handleKey(e, 'Reveal', {\n close: function() {\n if (_this.options.closeOnEsc) {\n _this.close();\n }\n }\n });\n });\n }\n }\n\n /**\n * Closes the modal.\n * @function\n * @fires Reveal#closed\n */\n close() {\n if (!this.isActive || !this.$element.is(':visible')) {\n return false;\n }\n var _this = this;\n\n // Motion UI method of hiding\n if (this.options.animationOut) {\n if (this.options.overlay) {\n Motion.animateOut(this.$overlay, 'fade-out');\n }\n\n Motion.animateOut(this.$element, this.options.animationOut, finishUp);\n }\n // jQuery method of hiding\n else {\n this.$element.hide(this.options.hideDelay);\n\n if (this.options.overlay) {\n this.$overlay.hide(0, finishUp);\n }\n else {\n finishUp();\n }\n }\n\n // Conditionals to remove extra event listeners added on open\n if (this.options.closeOnEsc) {\n $(window).off('keydown.zf.reveal');\n }\n\n if (!this.options.overlay && this.options.closeOnClick) {\n $('body').off('click.zf.dropdown tap.zf.dropdown');\n }\n\n this.$element.off('keydown.zf.reveal');\n\n function finishUp() {\n\n // Get the current top before the modal is closed and restore the scroll after.\n // TODO: use component properties instead of HTML properties\n // See https://github.com/foundation/foundation-sites/pull/10786\n var scrollTop = parseInt($(\"html\").css(\"top\"), 10);\n\n if ($('.reveal:visible').length === 0) {\n _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n\n Keyboard.releaseFocus(_this.$element);\n\n _this.$element.attr('aria-hidden', true);\n\n if ($('.reveal:visible').length === 0) {\n _this._enableScroll(scrollTop);\n }\n\n /**\n * Fires when the modal is done closing.\n * @event Reveal#closed\n */\n _this.$element.trigger('closed.zf.reveal');\n }\n\n /**\n * Resets the modal content\n * This prevents a running video to keep going in the background\n */\n if (this.options.resetOnClose) {\n this.$element.html(this.$element.html());\n }\n\n this.isActive = false;\n // If deepLink and we did not switched to an other modal...\n if (_this.options.deepLink && window.location.hash === `#${this.id}`) {\n // Remove the history hash\n if (window.history.replaceState) {\n const urlWithoutHash = window.location.pathname + window.location.search;\n if (this.options.updateHistory) {\n window.history.pushState({}, '', urlWithoutHash); // remove the hash\n } else {\n window.history.replaceState('', document.title, urlWithoutHash);\n }\n } else {\n window.location.hash = '';\n }\n }\n\n this.$activeAnchor.focus();\n }\n\n /**\n * Toggles the open/closed state of a modal.\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.close();\n } else {\n this.open();\n }\n };\n\n /**\n * Destroys an instance of a modal.\n * @function\n */\n _destroy() {\n if (this.options.overlay) {\n this.$element.appendTo($(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()\n this.$overlay.hide().off().remove();\n }\n this.$element.hide().off();\n this.$anchor.off('.zf');\n $(window).off(`.zf.reveal:${this.id}`)\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n\n if ($('.reveal:visible').length === 0) {\n this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n };\n}\n\nReveal.defaults = {\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationIn: '',\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationOut: '',\n /**\n * Time, in ms, to delay the opening of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n showDelay: 0,\n /**\n * Time, in ms, to delay the closing of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n hideDelay: 0,\n /**\n * Allows a click on the body/overlay to close the modal.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allows the modal to close if the user presses the `ESCAPE` key.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnEsc: true,\n /**\n * If true, allows multiple modals to be displayed at once.\n * @option\n * @type {boolean}\n * @default false\n */\n multipleOpened: false,\n /**\n * Distance, in pixels, the modal should push down from the top of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n vOffset: 'auto',\n /**\n * Distance, in pixels, the modal should push in from the side of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n hOffset: 'auto',\n /**\n * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.\n * @option\n * @type {boolean}\n * @default false\n */\n fullScreen: false,\n /**\n * Allows the modal to generate an overlay div, which will cover the view when modal opens.\n * @option\n * @type {boolean}\n * @default true\n */\n overlay: true,\n /**\n * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.\n * @option\n * @type {boolean}\n * @default false\n */\n resetOnClose: false,\n /**\n * Link the location hash to the modal.\n * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, update the browser history with the open modal\n * @option\n * @default false\n */\n updateHistory: false,\n /**\n * Allows the modal to append to custom div.\n * @option\n * @type {string}\n * @default \"body\"\n */\n appendTo: \"body\",\n /**\n * Allows adding additional class names to the reveal overlay.\n * @option\n * @type {string}\n * @default ''\n */\n additionalOverlayClasses: ''\n};\n\nexport {Reveal};\n"],"names":["Reveal","Plugin","_setup","element","options","$element","$","extend","defaults","data","className","_init","Touch","init","Triggers","Keyboard","register","MediaQuery","id","attr","isActive","cached","mq","current","$anchor","length","fullScreen","hasClass","overlay","$overlay","_makeOverlay","detach","appendTo","addClass","_events","deepLink","window","location","hash","onLoadListener","onLoad","open","additionalOverlayClasses","_updatePosition","width","outerWidth","height","outerHeight","left","top","hOffset","parseInt","vOffset","Math","min","css","margin","_this","on","bind","close.zf.trigger","event","target","parents","close","apply","toggle","closeOnClick","off","e","contains","document","_handleState","_disableScroll","scrollTop","_enableScroll","history","pushState","updateHistory","replaceState","$activeAnchor","activeElement","is","show","hide","multipleOpened","trigger","animationIn","afterAnimation","focus","_addGlobalClasses","trapFocus","Motion","animateIn","focusableElements","findFocusable","showDelay","_addGlobalListeners","updateScrollbarClass","toggleClass","_removeGlobalClasses","removeClass","closeOnEsc","handleKey","animationOut","animateOut","finishUp","hideDelay","releaseFocus","resetOnClose","html","urlWithoutHash","pathname","search","title","_destroy","remove"],"mappings":";;;;;;;;;AASA;;;;;;;;;;AAUA,MAAMA,MAAM,SAASC,MAAM,CAAC;;;;;;;;EAQ1BC,MAAMA,CAACC,OAAO,EAAEC,OAAO,EAAE;IACvB,IAAI,CAACC,QAAQ,GAAGF,OAAO;IACvB,IAAI,CAACC,OAAO,GAAGE,MAAC,CAACC,MAAM,CAAC,EAAE,EAAEP,MAAM,CAACQ,QAAQ,EAAE,IAAI,CAACH,QAAQ,CAACI,IAAI,EAAE,EAAEL,OAAO,CAAC;IAC3E,IAAI,CAACM,SAAS,GAAG,QAAQ,CAAC;IAC1B,IAAI,CAACC,KAAK,EAAE;;;IAGZC,KAAK,CAACC,IAAI,CAACP,MAAC,CAAC;IACbQ,QAAQ,CAACD,IAAI,CAACP,MAAC,CAAC;IAEhBS,QAAQ,CAACC,QAAQ,CAAC,QAAQ,EAAE;MAC1B,QAAQ,EAAE;KACX,CAAC;;;;;;;EAOJL,KAAKA,GAAG;IACNM,UAAU,CAACN,KAAK,EAAE;IAClB,IAAI,CAACO,EAAE,GAAG,IAAI,CAACb,QAAQ,CAACc,IAAI,CAAC,IAAI,CAAC;IAClC,IAAI,CAACC,QAAQ,GAAG,KAAK;IACrB,IAAI,CAACC,MAAM,GAAG;MAACC,EAAE,EAAEL,UAAU,CAACM;KAAQ;IAEtC,IAAI,CAACC,OAAO,GAAGlB,MAAC,CAAE,eAAc,IAAI,CAACY,EAAG,IAAG,CAAC,CAACO,MAAM,GAAGnB,MAAC,CAAE,eAAc,IAAI,CAACY,EAAG,IAAG,CAAC,GAAGZ,MAAC,CAAE,iBAAgB,IAAI,CAACY,EAAG,IAAG,CAAC;IACrH,IAAI,CAACM,OAAO,CAACL,IAAI,CAAC;MAChB,eAAe,EAAE,IAAI,CAACD,EAAE;MACxB,eAAe,EAAE,QAAQ;MACzB,UAAU,EAAE;KACb,CAAC;IAEF,IAAI,IAAI,CAACd,OAAO,CAACsB,UAAU,IAAI,IAAI,CAACrB,QAAQ,CAACsB,QAAQ,CAAC,MAAM,CAAC,EAAE;MAC7D,IAAI,CAACvB,OAAO,CAACsB,UAAU,GAAG,IAAI;MAC9B,IAAI,CAACtB,OAAO,CAACwB,OAAO,GAAG,KAAK;;IAE9B,IAAI,IAAI,CAACxB,OAAO,CAACwB,OAAO,IAAI,CAAC,IAAI,CAACC,QAAQ,EAAE;MAC1C,IAAI,CAACA,QAAQ,GAAG,IAAI,CAACC,YAAY,CAAC,IAAI,CAACZ,EAAE,CAAC;;IAG5C,IAAI,CAACb,QAAQ,CAACc,IAAI,CAAC;MACf,MAAM,EAAE,QAAQ;MAChB,aAAa,EAAE,IAAI;MACnB,eAAe,EAAE,IAAI,CAACD,EAAE;MACxB,aAAa,EAAE,IAAI,CAACA;KACvB,CAAC;IAEF,IAAG,IAAI,CAACW,QAAQ,EAAE;MAChB,IAAI,CAACxB,QAAQ,CAAC0B,MAAM,EAAE,CAACC,QAAQ,CAAC,IAAI,CAACH,QAAQ,CAAC;KAC/C,MAAM;MACL,IAAI,CAACxB,QAAQ,CAAC0B,MAAM,EAAE,CAACC,QAAQ,CAAC1B,MAAC,CAAC,IAAI,CAACF,OAAO,CAAC4B,QAAQ,CAAC,CAAC;MACzD,IAAI,CAAC3B,QAAQ,CAAC4B,QAAQ,CAAC,iBAAiB,CAAC;;IAE3C,IAAI,CAACC,OAAO,EAAE;IACd,IAAI,IAAI,CAAC9B,OAAO,CAAC+B,QAAQ,IAAIC,MAAM,CAACC,QAAQ,CAACC,IAAI,KAAQ,IAAG,IAAI,CAACpB,EAAG,EAAE,EAAE;MACtE,IAAI,CAACqB,cAAc,GAAGC,MAAM,CAAClC,MAAC,CAAC8B,MAAM,CAAC,EAAE,MAAM,IAAI,CAACK,IAAI,EAAE,CAAC;;;;;;;;EAQ9DX,YAAYA,GAAG;IACb,IAAIY,wBAAwB,GAAG,EAAE;IAEjC,IAAI,IAAI,CAACtC,OAAO,CAACsC,wBAAwB,EAAE;MACzCA,wBAAwB,GAAG,GAAG,GAAG,IAAI,CAACtC,OAAO,CAACsC,wBAAwB;;IAGxE,OAAOpC,MAAC,CAAC,aAAa,CAAC,CACpB2B,QAAQ,CAAC,gBAAgB,GAAGS,wBAAwB,CAAC,CACrDV,QAAQ,CAAC,IAAI,CAAC5B,OAAO,CAAC4B,QAAQ,CAAC;;;;;;;;EAQpCW,eAAeA,GAAG;IAChB,IAAIC,KAAK,GAAG,IAAI,CAACvC,QAAQ,CAACwC,UAAU,EAAE;IACtC,IAAIA,UAAU,GAAGvC,MAAC,CAAC8B,MAAM,CAAC,CAACQ,KAAK,EAAE;IAClC,IAAIE,MAAM,GAAG,IAAI,CAACzC,QAAQ,CAAC0C,WAAW,EAAE;IACxC,IAAIA,WAAW,GAAGzC,MAAC,CAAC8B,MAAM,CAAC,CAACU,MAAM,EAAE;IACpC,IAAIE,IAAI;MAAEC,GAAG,GAAG,IAAI;IACpB,IAAI,IAAI,CAAC7C,OAAO,CAAC8C,OAAO,KAAK,MAAM,EAAE;MACnCF,IAAI,GAAGG,QAAQ,CAAC,CAACN,UAAU,GAAGD,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;KAC9C,MAAM;MACLI,IAAI,GAAGG,QAAQ,CAAC,IAAI,CAAC/C,OAAO,CAAC8C,OAAO,EAAE,EAAE,CAAC;;IAE3C,IAAI,IAAI,CAAC9C,OAAO,CAACgD,OAAO,KAAK,MAAM,EAAE;MACnC,IAAIN,MAAM,GAAGC,WAAW,EAAE;QACxBE,GAAG,GAAGE,QAAQ,CAACE,IAAI,CAACC,GAAG,CAAC,GAAG,EAAEP,WAAW,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;OACpD,MAAM;QACLE,GAAG,GAAGE,QAAQ,CAAC,CAACJ,WAAW,GAAGD,MAAM,IAAI,CAAC,EAAE,EAAE,CAAC;;KAEjD,MAAM,IAAI,IAAI,CAAC1C,OAAO,CAACgD,OAAO,KAAK,IAAI,EAAE;MACxCH,GAAG,GAAGE,QAAQ,CAAC,IAAI,CAAC/C,OAAO,CAACgD,OAAO,EAAE,EAAE,CAAC;;IAG1C,IAAIH,GAAG,KAAK,IAAI,EAAE;MAChB,IAAI,CAAC5C,QAAQ,CAACkD,GAAG,CAAC;QAACN,GAAG,EAAEA,GAAG,GAAG;OAAK,CAAC;;;;;IAKtC,IAAI,CAAC,IAAI,CAACpB,QAAQ,IAAK,IAAI,CAACzB,OAAO,CAAC8C,OAAO,KAAK,MAAO,EAAE;MACvD,IAAI,CAAC7C,QAAQ,CAACkD,GAAG,CAAC;QAACP,IAAI,EAAEA,IAAI,GAAG;OAAK,CAAC;MACtC,IAAI,CAAC3C,QAAQ,CAACkD,GAAG,CAAC;QAACC,MAAM,EAAE;OAAM,CAAC;;;;;;;;EAStCtB,OAAOA,GAAG;IACR,IAAIuB,KAAK,GAAG,IAAI;IAEhB,IAAI,CAACpD,QAAQ,CAACqD,EAAE,CAAC;MACf,iBAAiB,EAAE,IAAI,CAACjB,IAAI,CAACkB,IAAI,CAAC,IAAI,CAAC;MACvC,kBAAkB,EAAEC,CAACC,KAAK,EAAExD,QAAQ,KAAK;QACvC,IAAKwD,KAAK,CAACC,MAAM,KAAKL,KAAK,CAACpD,QAAQ,CAAC,CAAC,CAAC,IAClCC,MAAC,CAACuD,KAAK,CAACC,MAAM,CAAC,CAACC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK1D,QAAS,EAAE;;UAChE,OAAO,IAAI,CAAC2D,KAAK,CAACC,KAAK,CAAC,IAAI,CAAC;;OAEhC;MACD,mBAAmB,EAAE,IAAI,CAACC,MAAM,CAACP,IAAI,CAAC,IAAI,CAAC;MAC3C,qBAAqB,EAAE,YAAW;QAChCF,KAAK,CAACd,eAAe,EAAE;;KAE1B,CAAC;IAEF,IAAI,IAAI,CAACvC,OAAO,CAAC+D,YAAY,IAAI,IAAI,CAAC/D,OAAO,CAACwB,OAAO,EAAE;MACrD,IAAI,CAACC,QAAQ,CAACuC,GAAG,CAAC,YAAY,CAAC,CAACV,EAAE,CAAC,mCAAmC,EAAE,UAASW,CAAC,EAAE;QAClF,IAAIA,CAAC,CAACP,MAAM,KAAKL,KAAK,CAACpD,QAAQ,CAAC,CAAC,CAAC,IAChCC,MAAC,CAACgE,QAAQ,CAACb,KAAK,CAACpD,QAAQ,CAAC,CAAC,CAAC,EAAEgE,CAAC,CAACP,MAAM,CAAC,IACrC,CAACxD,MAAC,CAACgE,QAAQ,CAACC,QAAQ,EAAEF,CAAC,CAACP,MAAM,CAAC,EAAE;UAC/B;;QAENL,KAAK,CAACO,KAAK,EAAE;OACd,CAAC;;IAEJ,IAAI,IAAI,CAAC5D,OAAO,CAAC+B,QAAQ,EAAE;MACzB7B,MAAC,CAAC8B,MAAM,CAAC,CAACsB,EAAE,CAAE,wBAAuB,IAAI,CAACxC,EAAG,EAAC,EAAE,IAAI,CAACsD,YAAY,CAACb,IAAI,CAAC,IAAI,CAAC,CAAC;;;;;;;;EAQjFa,YAAYA,GAAG;IACb,IAAGpC,MAAM,CAACC,QAAQ,CAACC,IAAI,KAAO,GAAG,GAAG,IAAI,CAACpB,EAAG,IAAI,CAAC,IAAI,CAACE,QAAQ,EAAC;MAAE,IAAI,CAACqB,IAAI,EAAE;KAAG,MAC3E;MAAE,IAAI,CAACuB,KAAK,EAAE;;;;;;;;EAOpBS,cAAcA,CAACC,SAAS,EAAE;IACxBA,SAAS,GAAGA,SAAS,IAAIpE,MAAC,CAAC8B,MAAM,CAAC,CAACsC,SAAS,EAAE;IAC9C,IAAIpE,MAAC,CAACiE,QAAQ,CAAC,CAACzB,MAAM,EAAE,GAAGxC,MAAC,CAAC8B,MAAM,CAAC,CAACU,MAAM,EAAE,EAAE;MAC7CxC,MAAC,CAAC,MAAM,CAAC,CACNiD,GAAG,CAAC,KAAK,EAAE,CAACmB,SAAS,CAAC;;;;;;;;EAQ7BC,aAAaA,CAACD,SAAS,EAAE;IACvBA,SAAS,GAAGA,SAAS,IAAIvB,QAAQ,CAAC7C,MAAC,CAAC,MAAM,CAAC,CAACiD,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC3D,IAAIjD,MAAC,CAACiE,QAAQ,CAAC,CAACzB,MAAM,EAAE,GAAGxC,MAAC,CAAC8B,MAAM,CAAC,CAACU,MAAM,EAAE,EAAE;MAC7CxC,MAAC,CAAC,MAAM,CAAC,CACNiD,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;MACjBjD,MAAC,CAAC8B,MAAM,CAAC,CAACsC,SAAS,CAAC,CAACA,SAAS,CAAC;;;;;;;;;;EAWnCjC,IAAIA,GAAG;;IAEL,MAAMH,IAAI,GAAI,IAAG,IAAI,CAACpB,EAAG,EAAC;IAC1B,IAAI,IAAI,CAACd,OAAO,CAAC+B,QAAQ,IAAIC,MAAM,CAACC,QAAQ,CAACC,IAAI,KAAKA,IAAI,EAAE;MAE1D,IAAIF,MAAM,CAACwC,OAAO,CAACC,SAAS,EAAE;QAC5B,IAAI,IAAI,CAACzE,OAAO,CAAC0E,aAAa,EAAE;UAC9B1C,MAAM,CAACwC,OAAO,CAACC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAEvC,IAAI,CAAC;SACvC,MAAM;UACLF,MAAM,CAACwC,OAAO,CAACG,YAAY,CAAC,EAAE,EAAE,EAAE,EAAEzC,IAAI,CAAC;;OAE5C,MAAM;QACLF,MAAM,CAACC,QAAQ,CAACC,IAAI,GAAGA,IAAI;;;;;IAK/B,IAAI,CAAC0C,aAAa,GAAG1E,MAAC,CAACiE,QAAQ,CAACU,aAAa,CAAC,CAACC,EAAE,CAAC,IAAI,CAAC1D,OAAO,CAAC,GAAGlB,MAAC,CAACiE,QAAQ,CAACU,aAAa,CAAC,GAAG,IAAI,CAACzD,OAAO;IAE1G,IAAI,CAACJ,QAAQ,GAAG,IAAI;;;IAGpB,IAAI,CAACf,QAAQ,CACRkD,GAAG,CAAC;MAAE,YAAY,EAAE;KAAU,CAAC,CAC/B4B,IAAI,EAAE,CACNT,SAAS,CAAC,CAAC,CAAC;IACjB,IAAI,IAAI,CAACtE,OAAO,CAACwB,OAAO,EAAE;MACxB,IAAI,CAACC,QAAQ,CAAC0B,GAAG,CAAC;QAAC,YAAY,EAAE;OAAS,CAAC,CAAC4B,IAAI,EAAE;;IAGpD,IAAI,CAACxC,eAAe,EAAE;IAEtB,IAAI,CAACtC,QAAQ,CACV+E,IAAI,EAAE,CACN7B,GAAG,CAAC;MAAE,YAAY,EAAE;KAAI,CAAC;IAE5B,IAAG,IAAI,CAAC1B,QAAQ,EAAE;MAChB,IAAI,CAACA,QAAQ,CAAC0B,GAAG,CAAC;QAAC,YAAY,EAAE;OAAG,CAAC,CAAC6B,IAAI,EAAE;MAC5C,IAAG,IAAI,CAAC/E,QAAQ,CAACsB,QAAQ,CAAC,MAAM,CAAC,EAAE;QACjC,IAAI,CAACE,QAAQ,CAACI,QAAQ,CAAC,MAAM,CAAC;OAC/B,MAAM,IAAI,IAAI,CAAC5B,QAAQ,CAACsB,QAAQ,CAAC,MAAM,CAAC,EAAE;QACzC,IAAI,CAACE,QAAQ,CAACI,QAAQ,CAAC,MAAM,CAAC;;;IAKlC,IAAI,CAAC,IAAI,CAAC7B,OAAO,CAACiF,cAAc,EAAE;;;;;;MAMhC,IAAI,CAAChF,QAAQ,CAACiF,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAACpE,EAAE,CAAC;;IAGrD,IAAIZ,MAAC,CAAC,iBAAiB,CAAC,CAACmB,MAAM,KAAK,CAAC,EAAE;MACrC,IAAI,CAACgD,cAAc,EAAE;;IAGvB,IAAIhB,KAAK,GAAG,IAAI;;;IAGhB,IAAI,IAAI,CAACrD,OAAO,CAACmF,WAAW,EAAE;MAC5B,SAASC,cAAcA,GAAE;QACvB/B,KAAK,CAACpD,QAAQ,CACXc,IAAI,CAAC;UACJ,aAAa,EAAE,KAAK;UACpB,UAAU,EAAE,CAAC;SACd,CAAC,CACDsE,KAAK,EAAE;QACVhC,KAAK,CAACiC,iBAAiB,EAAE;QACzB3E,QAAQ,CAAC4E,SAAS,CAAClC,KAAK,CAACpD,QAAQ,CAAC;;MAEpC,IAAI,IAAI,CAACD,OAAO,CAACwB,OAAO,EAAE;QACxBgE,MAAM,CAACC,SAAS,CAAC,IAAI,CAAChE,QAAQ,EAAE,SAAS,CAAC;;MAE5C+D,MAAM,CAACC,SAAS,CAAC,IAAI,CAACxF,QAAQ,EAAE,IAAI,CAACD,OAAO,CAACmF,WAAW,EAAE,MAAM;QAC9D,IAAG,IAAI,CAAClF,QAAQ,EAAE;;UAChB,IAAI,CAACyF,iBAAiB,GAAG/E,QAAQ,CAACgF,aAAa,CAAC,IAAI,CAAC1F,QAAQ,CAAC;UAC9DmF,cAAc,EAAE;;OAEnB,CAAC;;;SAGC;MACH,IAAI,IAAI,CAACpF,OAAO,CAACwB,OAAO,EAAE;QACxB,IAAI,CAACC,QAAQ,CAACsD,IAAI,CAAC,CAAC,CAAC;;MAEvB,IAAI,CAAC9E,QAAQ,CAAC8E,IAAI,CAAC,IAAI,CAAC/E,OAAO,CAAC4F,SAAS,CAAC;;;;IAI5C,IAAI,CAAC3F,QAAQ,CACVc,IAAI,CAAC;MACJ,aAAa,EAAE,KAAK;MACpB,UAAU,EAAE,CAAC;KACd,CAAC,CACDsE,KAAK,EAAE;IACV1E,QAAQ,CAAC4E,SAAS,CAAC,IAAI,CAACtF,QAAQ,CAAC;IAEjC,IAAI,CAACqF,iBAAiB,EAAE;IAExB,IAAI,CAACO,mBAAmB,EAAE;;;;;;IAM1B,IAAI,CAAC5F,QAAQ,CAACiF,OAAO,CAAC,gBAAgB,CAAC;;;;;;;;;;;;;;EAczCI,iBAAiBA,GAAG;IAClB,MAAMQ,oBAAoB,GAAGA,MAAM;MACjC5F,MAAC,CAAC,MAAM,CAAC,CAAC6F,WAAW,CAAC,eAAe,EAAE,CAAC,EAAE7F,MAAC,CAACiE,QAAQ,CAAC,CAACzB,MAAM,EAAE,GAAGxC,MAAC,CAAC8B,MAAM,CAAC,CAACU,MAAM,EAAE,CAAC,CAAC;KACtF;IAED,IAAI,CAACzC,QAAQ,CAACqD,EAAE,CAAC,6CAA6C,EAAE,MAAMwC,oBAAoB,EAAE,CAAC;IAC7FA,oBAAoB,EAAE;IACtB5F,MAAC,CAAC,MAAM,CAAC,CAAC2B,QAAQ,CAAC,gBAAgB,CAAC;;;;;;;EAOtCmE,oBAAoBA,GAAG;IACrB,IAAI,CAAC/F,QAAQ,CAAC+D,GAAG,CAAC,6CAA6C,CAAC;IAChE9D,MAAC,CAAC,MAAM,CAAC,CAAC+F,WAAW,CAAC,gBAAgB,CAAC;IACvC/F,MAAC,CAAC,MAAM,CAAC,CAAC+F,WAAW,CAAC,eAAe,CAAC;;;;;;;EAOxCJ,mBAAmBA,GAAG;IACpB,IAAIxC,KAAK,GAAG,IAAI;IAChB,IAAG,CAAC,IAAI,CAACpD,QAAQ,EAAE;MAAE;KAAS;IAC9B,IAAI,CAACyF,iBAAiB,GAAG/E,QAAQ,CAACgF,aAAa,CAAC,IAAI,CAAC1F,QAAQ,CAAC;IAE9D,IAAI,CAAC,IAAI,CAACD,OAAO,CAACwB,OAAO,IAAI,IAAI,CAACxB,OAAO,CAAC+D,YAAY,IAAI,CAAC,IAAI,CAAC/D,OAAO,CAACsB,UAAU,EAAE;MAClFpB,MAAC,CAAC,MAAM,CAAC,CAACoD,EAAE,CAAC,mCAAmC,EAAE,UAASW,CAAC,EAAE;QAC5D,IAAIA,CAAC,CAACP,MAAM,KAAKL,KAAK,CAACpD,QAAQ,CAAC,CAAC,CAAC,IAChCC,MAAC,CAACgE,QAAQ,CAACb,KAAK,CAACpD,QAAQ,CAAC,CAAC,CAAC,EAAEgE,CAAC,CAACP,MAAM,CAAC,IACrC,CAACxD,MAAC,CAACgE,QAAQ,CAACC,QAAQ,EAAEF,CAAC,CAACP,MAAM,CAAC,EAAE;UAAE;;QACvCL,KAAK,CAACO,KAAK,EAAE;OACd,CAAC;;IAGJ,IAAI,IAAI,CAAC5D,OAAO,CAACkG,UAAU,EAAE;MAC3BhG,MAAC,CAAC8B,MAAM,CAAC,CAACsB,EAAE,CAAC,mBAAmB,EAAE,UAASW,CAAC,EAAE;QAC5CtD,QAAQ,CAACwF,SAAS,CAAClC,CAAC,EAAE,QAAQ,EAAE;UAC9BL,KAAK,EAAE,YAAW;YAChB,IAAIP,KAAK,CAACrD,OAAO,CAACkG,UAAU,EAAE;cAC5B7C,KAAK,CAACO,KAAK,EAAE;;;SAGlB,CAAC;OACH,CAAC;;;;;;;;;EASNA,KAAKA,GAAG;IACN,IAAI,CAAC,IAAI,CAAC5C,QAAQ,IAAI,CAAC,IAAI,CAACf,QAAQ,CAAC6E,EAAE,CAAC,UAAU,CAAC,EAAE;MACnD,OAAO,KAAK;;IAEd,IAAIzB,KAAK,GAAG,IAAI;;;IAGhB,IAAI,IAAI,CAACrD,OAAO,CAACoG,YAAY,EAAE;MAC7B,IAAI,IAAI,CAACpG,OAAO,CAACwB,OAAO,EAAE;QACxBgE,MAAM,CAACa,UAAU,CAAC,IAAI,CAAC5E,QAAQ,EAAE,UAAU,CAAC;;MAG9C+D,MAAM,CAACa,UAAU,CAAC,IAAI,CAACpG,QAAQ,EAAE,IAAI,CAACD,OAAO,CAACoG,YAAY,EAAEE,QAAQ,CAAC;;;SAGlE;MACH,IAAI,CAACrG,QAAQ,CAAC+E,IAAI,CAAC,IAAI,CAAChF,OAAO,CAACuG,SAAS,CAAC;MAE1C,IAAI,IAAI,CAACvG,OAAO,CAACwB,OAAO,EAAE;QACxB,IAAI,CAACC,QAAQ,CAACuD,IAAI,CAAC,CAAC,EAAEsB,QAAQ,CAAC;OAChC,MACI;QACHA,QAAQ,EAAE;;;;;IAKd,IAAI,IAAI,CAACtG,OAAO,CAACkG,UAAU,EAAE;MAC3BhG,MAAC,CAAC8B,MAAM,CAAC,CAACgC,GAAG,CAAC,mBAAmB,CAAC;;IAGpC,IAAI,CAAC,IAAI,CAAChE,OAAO,CAACwB,OAAO,IAAI,IAAI,CAACxB,OAAO,CAAC+D,YAAY,EAAE;MACtD7D,MAAC,CAAC,MAAM,CAAC,CAAC8D,GAAG,CAAC,mCAAmC,CAAC;;IAGpD,IAAI,CAAC/D,QAAQ,CAAC+D,GAAG,CAAC,mBAAmB,CAAC;IAEtC,SAASsC,QAAQA,GAAG;;;;MAKlB,IAAIhC,SAAS,GAAGvB,QAAQ,CAAC7C,MAAC,CAAC,MAAM,CAAC,CAACiD,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;MAElD,IAAIjD,MAAC,CAAC,iBAAiB,CAAC,CAACmB,MAAM,KAAM,CAAC,EAAE;QACtCgC,KAAK,CAAC2C,oBAAoB,EAAE,CAAC;;MAG/BrF,QAAQ,CAAC6F,YAAY,CAACnD,KAAK,CAACpD,QAAQ,CAAC;MAErCoD,KAAK,CAACpD,QAAQ,CAACc,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC;MAExC,IAAIb,MAAC,CAAC,iBAAiB,CAAC,CAACmB,MAAM,KAAM,CAAC,EAAE;QACtCgC,KAAK,CAACkB,aAAa,CAACD,SAAS,CAAC;;;;;;;MAOhCjB,KAAK,CAACpD,QAAQ,CAACiF,OAAO,CAAC,kBAAkB,CAAC;;;;;;;IAO5C,IAAI,IAAI,CAAClF,OAAO,CAACyG,YAAY,EAAE;MAC7B,IAAI,CAACxG,QAAQ,CAACyG,IAAI,CAAC,IAAI,CAACzG,QAAQ,CAACyG,IAAI,EAAE,CAAC;;IAG1C,IAAI,CAAC1F,QAAQ,GAAG,KAAK;;IAErB,IAAIqC,KAAK,CAACrD,OAAO,CAAC+B,QAAQ,IAAIC,MAAM,CAACC,QAAQ,CAACC,IAAI,KAAM,IAAG,IAAI,CAACpB,EAAG,EAAC,EAAE;;MAEpE,IAAIkB,MAAM,CAACwC,OAAO,CAACG,YAAY,EAAE;QAC/B,MAAMgC,cAAc,GAAG3E,MAAM,CAACC,QAAQ,CAAC2E,QAAQ,GAAG5E,MAAM,CAACC,QAAQ,CAAC4E,MAAM;QACxE,IAAI,IAAI,CAAC7G,OAAO,CAAC0E,aAAa,EAAE;UAC9B1C,MAAM,CAACwC,OAAO,CAACC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAEkC,cAAc,CAAC,CAAC;SAClD,MAAM;UACL3E,MAAM,CAACwC,OAAO,CAACG,YAAY,CAAC,EAAE,EAAER,QAAQ,CAAC2C,KAAK,EAAEH,cAAc,CAAC;;OAElE,MAAM;QACL3E,MAAM,CAACC,QAAQ,CAACC,IAAI,GAAG,EAAE;;;IAI7B,IAAI,CAAC0C,aAAa,CAACS,KAAK,EAAE;;;;;;;EAO5BvB,MAAMA,GAAG;IACP,IAAI,IAAI,CAAC9C,QAAQ,EAAE;MACjB,IAAI,CAAC4C,KAAK,EAAE;KACb,MAAM;MACL,IAAI,CAACvB,IAAI,EAAE;;;;;;;EAQf0E,QAAQA,GAAG;IACT,IAAI,IAAI,CAAC/G,OAAO,CAACwB,OAAO,EAAE;MACxB,IAAI,CAACvB,QAAQ,CAAC2B,QAAQ,CAAC1B,MAAC,CAAC,IAAI,CAACF,OAAO,CAAC4B,QAAQ,CAAC,CAAC,CAAC;MACjD,IAAI,CAACH,QAAQ,CAACuD,IAAI,EAAE,CAAChB,GAAG,EAAE,CAACgD,MAAM,EAAE;;IAErC,IAAI,CAAC/G,QAAQ,CAAC+E,IAAI,EAAE,CAAChB,GAAG,EAAE;IAC1B,IAAI,CAAC5C,OAAO,CAAC4C,GAAG,CAAC,KAAK,CAAC;IACvB9D,MAAC,CAAC8B,MAAM,CAAC,CAACgC,GAAG,CAAE,cAAa,IAAI,CAAClD,EAAG,EAAC,CAAC;IACtC,IAAI,IAAI,CAACqB,cAAc,EAAEjC,MAAC,CAAC8B,MAAM,CAAC,CAACgC,GAAG,CAAC,IAAI,CAAC7B,cAAc,CAAC;IAE3D,IAAIjC,MAAC,CAAC,iBAAiB,CAAC,CAACmB,MAAM,KAAM,CAAC,EAAE;MACtC,IAAI,CAAC2E,oBAAoB,EAAE,CAAC;;;;AAKlCpG,MAAM,CAACQ,QAAQ,GAAG;;;;;;;EAOhB+E,WAAW,EAAE,EAAE;;;;;;;EAOfiB,YAAY,EAAE,EAAE;;;;;;;EAOhBR,SAAS,EAAE,CAAC;;;;;;;EAOZW,SAAS,EAAE,CAAC;;;;;;;EAOZxC,YAAY,EAAE,IAAI;;;;;;;EAOlBmC,UAAU,EAAE,IAAI;;;;;;;EAOhBjB,cAAc,EAAE,KAAK;;;;;;;EAOrBjC,OAAO,EAAE,MAAM;;;;;;;EAOfF,OAAO,EAAE,MAAM;;;;;;;EAOfxB,UAAU,EAAE,KAAK;;;;;;;EAOjBE,OAAO,EAAE,IAAI;;;;;;;EAObiF,YAAY,EAAE,KAAK;;;;;;;;EAQnB1E,QAAQ,EAAE,KAAK;;;;;;EAMf2C,aAAa,EAAE,KAAK;;;;;;;EAOpB9C,QAAQ,EAAE,MAAM;;;;;;;EAOhBU,wBAAwB,EAAE;CAC3B;;;;"}