Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/ilovecveti.ru/bitrix/js/pull/queuemanager/dist/ |
Upload File : |
{"version":3,"file":"queuemanager.js","sources":["../src/queue.js","../src/queuemanager.js"],"sourcesContent":["import { Type } from 'main.core';\nimport { ActionItem, Callbacks, Options, QueueItem } from './queuetype';\n\nconst LOAD_ITEMS_DELAY = 5000;\nconst MAX_PENDING_ITEMS = 30;\n\nexport default class Queue\n{\n\t#queue: Map<string, ActionItem> = new Map();\n\t#isProgress: boolean = false;\n\t#isFreeze: boolean = false;\n\t#loadItemsTimer: ?number = null;\n\t#callbacks: Callbacks;\n\t#loadItemsDelay: number = LOAD_ITEMS_DELAY;\n\t#maxPendingItems: number = MAX_PENDING_ITEMS;\n\n\tconstructor(options: Options)\n\t{\n\t\tif (Type.isPlainObject(options.callbacks))\n\t\t{\n\t\t\tthis.#callbacks = options.callbacks;\n\t\t}\n\n\t\tif (Type.isNumber(options.loadItemsDelay))\n\t\t{\n\t\t\tthis.#loadItemsDelay = options.loadItemsDelay;\n\t\t}\n\n\t\tif (Type.isNumber(options.maxPendingItems))\n\t\t{\n\t\t\tthis.#maxPendingItems = options.maxPendingItems;\n\t\t}\n\t}\n\n\tloadItem(ignoreProgressStatus: boolean = false, ignoreDelay: boolean = false): void\n\t{\n\t\tif (this.#loadItemsTimer && !ignoreDelay)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#loadItemsTimer = setTimeout(\n\t\t\t() => this.loadItemHandler(ignoreProgressStatus),\n\t\t\tignoreDelay ? 0 : this.#loadItemsDelay,\n\t\t);\n\t}\n\n\tloadItemHandler(ignoreProgressStatus: boolean = false): void\n\t{\n\t\tif (this.#isExecuteInProgress(ignoreProgressStatus) || this.#isInaccessibleQueue())\n\t\t{\n\t\t\tthis.#loadItemsTimer = null;\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst items = this.getAllAsArray();\n\t\tthis.#queue.clear();\n\n\t\tif (!Type.isArrayFilled(items))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tlet promise = null;\n\t\tconst { onBeforeExecute } = this.#callbacks;\n\t\tif (Type.isFunction(onBeforeExecute))\n\t\t{\n\t\t\t// eslint-disable-next-line no-promise-executor-return\n\t\t\tpromise = new Promise((resolve) => onBeforeExecute(items).then(resolve));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tpromise = Promise.resolve();\n\t\t}\n\n\t\t// eslint-disable-next-line promise/catch-or-return\n\t\tpromise.then(() => this.process(items));\n\t}\n\n\t#isExecuteInProgress(ignoreProgressStatus: boolean): boolean\n\t{\n\t\treturn (this.#isProgress && !ignoreProgressStatus);\n\t}\n\n\t#isInaccessibleQueue(): boolean\n\t{\n\t\treturn (document.hidden || this.isOverflow() || this.#isFrozen());\n\t}\n\n\tprocess(items: QueueItem[]): void\n\t{\n\t\tthis.#isProgress = true;\n\n\t\tconst { onExecute } = this.#callbacks;\n\t\tif (Type.isFunction(onExecute))\n\t\t{\n\t\t\tonExecute(items)\n\t\t\t\t.then(this.loadNextOnSuccess.bind(this), this.doNothingOnError.bind(this))\n\t\t\t\t.catch(() => console.error('error'))\n\t\t\t;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.loadNextOnSuccess();\n\t\t}\n\t}\n\n\tloadNextOnSuccess(): void\n\t{\n\t\tthis.#loadItemsTimer = null;\n\t\tif (!this.isEmpty())\n\t\t{\n\t\t\tthis.loadItem(true);\n\t\t}\n\n\t\tthis.#isProgress = false;\n\t}\n\n\tdoNothingOnError(): void\n\t{\n\t\tthis.#loadItemsTimer = null;\n\t}\n\n\tpush(id: string, item: ActionItem): Queue\n\t{\n\t\tif (this.has(id))\n\t\t{\n\t\t\tthis.delete(id);\n\t\t}\n\n\t\tthis.#queue.set(id, item);\n\n\t\treturn this;\n\t}\n\n\tgetAllAsArray(): QueueItem[]\n\t{\n\t\treturn Array.from(\n\t\t\tthis.#queue,\n\t\t\t([id, data]) => ({ id, data }),\n\t\t);\n\t}\n\n\tdelete(id: string): void\n\t{\n\t\tthis.#queue.delete(id);\n\t}\n\n\thas(id: string): boolean\n\t{\n\t\treturn this.#queue.has(id);\n\t}\n\n\tclear(): void\n\t{\n\t\tthis.#queue.clear();\n\t}\n\n\tisOverflow(): boolean\n\t{\n\t\treturn (this.#queue.size > this.#maxPendingItems);\n\t}\n\n\tisEmpty(): boolean\n\t{\n\t\treturn (this.#queue.size === 0);\n\t}\n\n\tfreeze(): void\n\t{\n\t\tthis.#isFreeze = true;\n\t}\n\n\tunfreeze(): void\n\t{\n\t\tthis.#isFreeze = false;\n\t}\n\n\t#isFrozen(): boolean\n\t{\n\t\treturn this.#isFreeze;\n\t}\n\n\tgetLoadItemsDelay(): number\n\t{\n\t\treturn this.#loadItemsDelay;\n\t}\n}\n","import { Event, Loc, Text, Type } from 'main.core';\nimport { BaseEvent, EventEmitter } from 'main.core.events';\nimport { UI } from 'ui.notification';\nimport Queue from './queue';\nimport { Options, PullData } from './queuemanagertype';\n\nexport default class QueueManager\n{\n\t#options: Options;\n\t#queue: Queue;\n\t#notifier: BX.UI.Notification.Balloon;\n\t#openedSlidersCount: Number;\n\n\tstatic eventIds: Set<string> = new Set();\n\n\tstatic registerRandomEventId(prefix: string = null): string\n\t{\n\t\tlet eventId = Text.getRandom(12);\n\t\tif (Type.isStringFilled(prefix))\n\t\t{\n\t\t\teventId = `${prefix}-${eventId}`;\n\t\t}\n\n\t\tthis.registerEventId(eventId);\n\n\t\treturn eventId;\n\t}\n\n\tstatic registerEventId(eventId: string): void\n\t{\n\t\tthis.eventIds.add(eventId);\n\t}\n\n\tconstructor(options: Options)\n\t{\n\t\tthis.#options = options;\n\n\t\tconst { config, callbacks } = options;\n\n\t\tthis.#queue = new Queue({\n\t\t\tloadItemsDelay: config?.loadItemsDelay,\n\t\t\tmaxPendingItems: config?.maxPendingItems,\n\t\t\tcallbacks: {\n\t\t\t\tonBeforeExecute: callbacks.onBeforeQueueExecute,\n\t\t\t\tonExecute: callbacks.onQueueExecute,\n\t\t\t},\n\t\t});\n\t\tthis.#openedSlidersCount = 0;\n\n\t\tthis.initEventEmitter();\n\n\t\tconst { moduleId, userId } = options;\n\t\tif (Type.isStringFilled(moduleId) && userId > 0)\n\t\t{\n\t\t\tEvent.ready(() => this.init());\n\t\t}\n\t}\n\n\tinitEventEmitter(): void\n\t{\n\t\tthis.eventEmitter = new EventEmitter();\n\t\tthis.eventEmitter.setEventNamespace('BX.Pull.QueueManager');\n\t}\n\n\tinit(): void\n\t{\n\t\tif (!BX.PULL)\n\t\t{\n\t\t\tconsole.error('BX.PULL is not initialized');\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.subscribe();\n\t\tthis.bindEvents();\n\t}\n\n\tsubscribe(): void\n\t{\n\t\tconst { moduleId, pullTag } = this.#options;\n\n\t\tBX.PULL.subscribe({\n\t\t\tmoduleId,\n\t\t\tcallback: (data) => this.onPullSubscribeCallback(data),\n\t\t});\n\n\t\tif (Type.isStringFilled(pullTag))\n\t\t{\n\t\t\tBX.PULL.extendWatch(pullTag);\n\t\t}\n\t}\n\n\tbindEvents(): void\n\t{\n\t\tif (Type.isPlainObject(this.#options.events))\n\t\t{\n\t\t\tfor (const [eventName, callback] of Object.entries(this.#options.events))\n\t\t\t{\n\t\t\t\tif (Type.isFunction(callback))\n\t\t\t\t{\n\t\t\t\t\tthis.eventEmitter.subscribe(eventName, (event) => callback(event));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tEvent.bind(document, 'visibilitychange', () => this.onDocumentVisibilityChange());\n\n\t\tEventEmitter.subscribe('SidePanel.Slider:onOpen', () => {\n\t\t\tthis.#openedSlidersCount++;\n\t\t\tthis.#queue.freeze();\n\t\t});\n\n\t\tEventEmitter.subscribe('SidePanel.Slider:onClose', () => {\n\t\t\tthis.#openedSlidersCount--;\n\t\t\tif (this.#openedSlidersCount <= 0)\n\t\t\t{\n\t\t\t\tthis.#openedSlidersCount = 0;\n\t\t\t\tthis.#queue.unfreeze();\n\t\t\t\tthis.onTabActivated();\n\t\t\t}\n\t\t});\n\t}\n\n\tonDocumentVisibilityChange(): void\n\t{\n\t\tif (!document.hidden)\n\t\t{\n\t\t\tthis.onTabActivated();\n\t\t}\n\t}\n\n\tonPullSubscribeCallback(pullData: PullData): void\n\t{\n\t\tconst { pullTag } = this.#options;\n\t\tlet { additionalPullTags } = this.#options;\n\n\t\tif (!Type.isArray(additionalPullTags))\n\t\t{\n\t\t\tadditionalPullTags = [];\n\t\t}\n\n\t\tif (\n\t\t\tType.isStringFilled(pullTag)\n\t\t\t&& pullData.command !== pullTag\n\t\t\t&& !additionalPullTags.includes(pullTag)\n\t\t)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst event = new BaseEvent({\n\t\t\tdata: {\n\t\t\t\tpullData,\n\t\t\t\tqueueItems: this.#queue.getAllAsArray(),\n\t\t\t\toptions: this.#options,\n\t\t\t\tpromises: [],\n\t\t\t},\n\t\t});\n\t\tthis.eventEmitter.emit('onBeforePull', event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst { params } = pullData;\n\n\t\tif (!Type.isStringFilled(params.eventName))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (QueueManager.eventIds.has(params.eventId))\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.#queue.isOverflow())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.eventEmitter.emit('onPull', event);\n\t\tif (event.isDefaultPrevented())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tvoid Promise\n\t\t\t.all(event.data.promises)\n\t\t\t.then((values) => {\n\t\t\t\tif (!Type.isArrayFilled(values))\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvalues.forEach((item) => {\n\t\t\t\t\tconst { data } = item;\n\t\t\t\t\tthis.#queue.push(`${data.id}_${params.eventName}`, data);\n\t\t\t\t});\n\n\t\t\t\tthis.#queue.loadItem(false, params.ignoreDelay || false);\n\t\t\t})\n\t\t;\n\t}\n\n\tshowOutdatedDataDialog(): void\n\t{\n\t\tif (this.#hasManyOpenSliders())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst sliderInstance = this.#getSliderInstance();\n\t\tif (sliderInstance)\n\t\t{\n\t\t\tEventEmitter.subscribe(\n\t\t\t\tsliderInstance,\n\t\t\t\t'SidePanel.Slider:onClose',\n\t\t\t\tthis.#createAndShowNotify.bind(this),\n\t\t\t);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.#createAndShowNotify();\n\t\t}\n\t}\n\n\t#hasManyOpenSliders(): boolean\n\t{\n\t\treturn (top.BX && top.BX.SidePanel && top.BX.SidePanel.Instance.getOpenSlidersCount() > 1);\n\t}\n\n\t#getSliderInstance(): BX.SidePanel.Slider | null\n\t{\n\t\tif (top.BX && top.BX.SidePanel)\n\t\t{\n\t\t\tconst slider = top.BX.SidePanel.Instance.getTopSlider();\n\t\t\tif (slider && slider.isOpen())\n\t\t\t{\n\t\t\t\treturn slider;\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t#createAndShowNotify(): void\n\t{\n\t\tconst showOutdatedDataDialog = this.#options.config?.showOutdatedDataDialog;\n\t\tconst { onReload } = this.#options.callbacks;\n\t\tif (\n\t\t\t(Type.isBoolean(showOutdatedDataDialog) && showOutdatedDataDialog === false)\n\t\t\t|| !Type.isFunction(onReload)\n\t\t)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.#notifier)\n\t\t{\n\t\t\tif (\n\t\t\t\tthis.#notifier.getState() === BX.UI.Notification.State.OPENING\n\t\t\t\t|| this.#notifier.getState() === BX.UI.Notification.State.OPEN\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.#notifier.show();\n\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#notifier = UI.Notification.Center.notify({\n\t\t\tcontent: Loc.getMessage('PULL_QUEUEMANAGER_NOTIFY_OUTDATED_DATA'),\n\t\t\tcloseButton: false,\n\t\t\tautoHide: false,\n\t\t\tactions: [{\n\t\t\t\ttitle: Loc.getMessage('PULL_QUEUEMANAGER_RELOAD'),\n\t\t\t\tevents: {\n\t\t\t\t\tclick: (event, balloon) => {\n\t\t\t\t\t\tballoon.close();\n\t\t\t\t\t\tonReload();\n\t\t\t\t\t\tthis.#queue.clear();\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t}],\n\t\t});\n\t}\n\n\tonTabActivated(): void\n\t{\n\t\tif (this.#queue.isOverflow())\n\t\t{\n\t\t\tthis.showOutdatedDataDialog();\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (!this.#queue.isEmpty())\n\t\t{\n\t\t\tthis.#queue.loadItem();\n\t\t}\n\t}\n\n\thasInQueue(id: number): boolean\n\t{\n\t\treturn this.#queue.has(id);\n\t}\n\n\tdeleteFromQueue(id: number): void\n\t{\n\t\tthis.#queue.delete(id);\n\t}\n\n\tgetLoadItemsDelay(): number\n\t{\n\t\treturn this.#queue.getLoadItemsDelay();\n\t}\n}\n"],"names":["LOAD_ITEMS_DELAY","MAX_PENDING_ITEMS","Queue","options","Map","Type","isPlainObject","callbacks","isNumber","loadItemsDelay","maxPendingItems","ignoreProgressStatus","ignoreDelay","setTimeout","loadItemHandler","items","getAllAsArray","clear","isArrayFilled","promise","onBeforeExecute","isFunction","Promise","resolve","then","process","onExecute","loadNextOnSuccess","bind","doNothingOnError","console","error","isEmpty","loadItem","id","item","has","set","Array","from","data","size","document","hidden","isOverflow","QueueManager","prefix","eventId","Text","getRandom","isStringFilled","registerEventId","eventIds","add","_classPrivateMethodInitSpec","_classPrivateFieldInitSpec","config","onBeforeQueueExecute","onQueueExecute","initEventEmitter","moduleId","userId","Event","ready","init","eventEmitter","EventEmitter","setEventNamespace","BX","PULL","subscribe","bindEvents","pullTag","callback","onPullSubscribeCallback","extendWatch","events","eventName","event","Object","entries","onDocumentVisibilityChange","freeze","unfreeze","onTabActivated","pullData","additionalPullTags","isArray","command","includes","BaseEvent","queueItems","promises","emit","isDefaultPrevented","params","all","values","forEach","push","sliderInstance","_classPrivateMethodGet","showOutdatedDataDialog","getLoadItemsDelay","top","SidePanel","Instance","getOpenSlidersCount","slider","getTopSlider","isOpen","onReload","isBoolean","getState","UI","Notification","State","OPENING","OPEN","show","Center","notify","content","Loc","getMessage","closeButton","autoHide","actions","title","click","balloon","close","Set"],"mappings":";;;;;;;;;AAAA,CAGA,IAAMA,gBAAgB,GAAG,IAAI;CAC7B,IAAMC,iBAAiB,GAAG,EAAE;CAAC;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA,IAERC,KAAK;GAUzB,eAAYC,OAAgB,EAC5B;KAAA;KAAA;KAAA;KAAA;KAAA;OAAA;OAAA,OATkC,IAAIC,GAAG;;KAAE;OAAA;OAAA,OACpB;;KAAK;OAAA;OAAA,OACP;;KAAK;OAAA;OAAA,OACC;;KAAI;OAAA;OAAA;;KAAA;OAAA;OAAA,OAELJ;;KAAgB;OAAA;OAAA,OACfC;;KAI1B,IAAII,cAAI,CAACC,aAAa,CAACH,OAAO,CAACI,SAAS,CAAC,EACzC;OACC,sCAAI,cAAcJ,OAAO,CAACI,SAAS;;KAGpC,IAAIF,cAAI,CAACG,QAAQ,CAACL,OAAO,CAACM,cAAc,CAAC,EACzC;OACC,sCAAI,mBAAmBN,OAAO,CAACM,cAAc;;KAG9C,IAAIJ,cAAI,CAACG,QAAQ,CAACL,OAAO,CAACO,eAAe,CAAC,EAC1C;OACC,sCAAI,oBAAoBP,OAAO,CAACO,eAAe;;;GAEhD;KAAA;KAAA,2BAGD;OAAA;OAAA,IADSC,oBAA6B,uEAAG,KAAK;OAAA,IAAEC,WAAoB,uEAAG,KAAK;OAE3E,IAAI,sCAAI,sBAAoB,CAACA,WAAW,EACxC;SACC;;OAGD,sCAAI,mBAAmBC,UAAU,CAChC;SAAA,OAAM,KAAI,CAACC,eAAe,CAACH,oBAAoB,CAAC;UAChDC,WAAW,GAAG,CAAC,qCAAG,IAAI,kBAAgB,CACtC;;;KACD;KAAA,kCAGD;OAAA;OAAA,IADgBD,oBAA6B,uEAAG,KAAK;OAEpD,IAAI,2BAAI,oDAAJ,IAAI,EAAsBA,oBAAoB,4BAAK,IAAI,oDAAJ,IAAI,CAAuB,EAClF;SACC,sCAAI,mBAAmB,IAAI;SAE3B;;OAGD,IAAMI,KAAK,GAAG,IAAI,CAACC,aAAa,EAAE;OAClC,sCAAI,UAAQC,KAAK,EAAE;OAEnB,IAAI,CAACZ,cAAI,CAACa,aAAa,CAACH,KAAK,CAAC,EAC9B;SACC;;OAGD,IAAII,OAAO,GAAG,IAAI;OAClB,8DAA4B,IAAI;SAAxBC,eAAe,yBAAfA,eAAe;OACvB,IAAIf,cAAI,CAACgB,UAAU,CAACD,eAAe,CAAC,EACpC;;SAECD,OAAO,GAAG,IAAIG,OAAO,CAAC,UAACC,OAAO;WAAA,OAAKH,eAAe,CAACL,KAAK,CAAC,CAACS,IAAI,CAACD,OAAO,CAAC;WAAC;QACxE,MAED;SACCJ,OAAO,GAAGG,OAAO,CAACC,OAAO,EAAE;;;;OAI5BJ,OAAO,CAACK,IAAI,CAAC;SAAA,OAAM,MAAI,CAACC,OAAO,CAACV,KAAK,CAAC;SAAC;;;KACvC;KAAA,wBAYOA,KAAkB,EAC1B;OACC,sCAAI,eAAe,IAAI;OAEvB,+DAAsB,IAAI;SAAlBW,SAAS,0BAATA,SAAS;OACjB,IAAIrB,cAAI,CAACgB,UAAU,CAACK,SAAS,CAAC,EAC9B;SACCA,SAAS,CAACX,KAAK,CAAC,CACdS,IAAI,CAAC,IAAI,CAACG,iBAAiB,CAACC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAACC,gBAAgB,CAACD,IAAI,CAAC,IAAI,CAAC,CAAC,SACpE,CAAC;WAAA,OAAME,OAAO,CAACC,KAAK,CAAC,OAAO,CAAC;WAAC;QAErC,MAED;SACC,IAAI,CAACJ,iBAAiB,EAAE;;;;KAEzB;KAAA,oCAGD;OACC,sCAAI,mBAAmB,IAAI;OAC3B,IAAI,CAAC,IAAI,CAACK,OAAO,EAAE,EACnB;SACC,IAAI,CAACC,QAAQ,CAAC,IAAI,CAAC;;OAGpB,sCAAI,eAAe,KAAK;;;KACxB;KAAA,mCAGD;OACC,sCAAI,mBAAmB,IAAI;;;KAC3B;KAAA,qBAEIC,EAAU,EAAEC,IAAgB,EACjC;OACC,IAAI,IAAI,CAACC,GAAG,CAACF,EAAE,CAAC,EAChB;SACC,IAAI,UAAO,CAACA,EAAE,CAAC;;OAGhB,sCAAI,UAAQG,GAAG,CAACH,EAAE,EAAEC,IAAI,CAAC;OAEzB,OAAO,IAAI;;;KACX;KAAA,gCAGD;OACC,OAAOG,KAAK,CAACC,IAAI,mCAChB,IAAI,WACJ;SAAA;WAAEL,EAAE;WAAEM,IAAI;SAAA,OAAO;WAAEN,EAAE,EAAFA,EAAE;WAAEM,IAAI,EAAJA;UAAM;QAAC,CAC9B;;;KACD;KAAA,wBAEMN,EAAU,EACjB;OACC,sCAAI,mBAAc,CAACA,EAAE,CAAC;;;KACtB;KAAA,oBAEGA,EAAU,EACd;OACC,OAAO,sCAAI,UAAQE,GAAG,CAACF,EAAE,CAAC;;;KAC1B;KAAA,wBAGD;OACC,sCAAI,UAAQjB,KAAK,EAAE;;;KACnB;KAAA,6BAGD;OACC,OAAQ,sCAAI,UAAQwB,IAAI,qCAAG,IAAI,mBAAiB;;;KAChD;KAAA,0BAGD;OACC,OAAQ,sCAAI,UAAQA,IAAI,KAAK,CAAC;;;KAC9B;KAAA,yBAGD;OACC,sCAAI,aAAa,IAAI;;;KACrB;KAAA,2BAGD;OACC,sCAAI,aAAa,KAAK;;;KACtB;KAAA,oCAQD;OACC,yCAAO,IAAI;;;GACX;CAAA;CAAA,+BA3GoB9B,oBAA6B,EAClD;GACC,OAAQ,sCAAI,kBAAgB,CAACA,oBAAoB;CAClD;CAAC,iCAGD;GACC,OAAQ+B,QAAQ,CAACC,MAAM,IAAI,IAAI,CAACC,UAAU,EAAE,2BAAI,IAAI,8BAAJ,IAAI,CAAY;CACjE;CAAC,sBA4FD;GACC,yCAAO,IAAI;CACZ;;;;;;ACtLD,CAIuD;CAAA;CAAA;CAAA;CAAA;CAAA;CAAA;AAAA,KAElCC,YAAY;GAAA;KAAA;KAAA,wCAUhC;OAAA,IAD6BC,MAAc,uEAAG,IAAI;OAEjD,IAAIC,OAAO,GAAGC,cAAI,CAACC,SAAS,CAAC,EAAE,CAAC;OAChC,IAAI5C,cAAI,CAAC6C,cAAc,CAACJ,MAAM,CAAC,EAC/B;SACCC,OAAO,aAAMD,MAAM,cAAIC,OAAO,CAAE;;OAGjC,IAAI,CAACI,eAAe,CAACJ,OAAO,CAAC;OAE7B,OAAOA,OAAO;;;KACd;KAAA,gCAEsBA,OAAe,EACtC;OACC,IAAI,CAACK,QAAQ,CAACC,GAAG,CAACN,OAAO,CAAC;;;GAG3B,sBAAY5C,OAAgB,EAC5B;KAAA;KAAA;KAAAmD;KAAAA;KAAAA;KAAAC;OAAA;OAAA;;KAAAA;OAAA;OAAA;;KAAAA;OAAA;OAAA;;KAAAA;OAAA;OAAA;;KACC,sCAAI,YAAYpD,OAAO;KAEvB,IAAQqD,MAAM,GAAgBrD,OAAO,CAA7BqD,MAAM;OAAEjD,SAAS,GAAKJ,OAAO,CAArBI,SAAS;KAEzB,sCAAI,YAAU,IAAIL,KAAK,CAAC;OACvBO,cAAc,EAAE+C,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE/C,cAAc;OACtCC,eAAe,EAAE8C,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAE9C,eAAe;OACxCH,SAAS,EAAE;SACVa,eAAe,EAAEb,SAAS,CAACkD,oBAAoB;SAC/C/B,SAAS,EAAEnB,SAAS,CAACmD;;MAEtB,CAAC;KACF,sCAAI,uBAAuB,CAAC;KAE5B,IAAI,CAACC,gBAAgB,EAAE;KAEvB,IAAQC,QAAQ,GAAazD,OAAO,CAA5ByD,QAAQ;OAAEC,MAAM,GAAK1D,OAAO,CAAlB0D,MAAM;KACxB,IAAIxD,cAAI,CAAC6C,cAAc,CAACU,QAAQ,CAAC,IAAIC,MAAM,GAAG,CAAC,EAC/C;OACCC,eAAK,CAACC,KAAK,CAAC;SAAA,OAAM,KAAI,CAACC,IAAI,EAAE;SAAC;;;GAE/B;KAAA;KAAA,mCAGD;OACC,IAAI,CAACC,YAAY,GAAG,IAAIC,6BAAY,EAAE;OACtC,IAAI,CAACD,YAAY,CAACE,iBAAiB,CAAC,sBAAsB,CAAC;;;KAC3D;KAAA,uBAGD;OACC,IAAI,CAACC,EAAE,CAACC,IAAI,EACZ;SACCvC,OAAO,CAACC,KAAK,CAAC,4BAA4B,CAAC;SAE3C;;OAGD,IAAI,CAACuC,SAAS,EAAE;OAChB,IAAI,CAACC,UAAU,EAAE;;;KACjB;KAAA,4BAGD;OAAA;OACC,8DAA8B,IAAI;SAA1BX,QAAQ,yBAARA,QAAQ;SAAEY,OAAO,yBAAPA,OAAO;OAEzBJ,EAAE,CAACC,IAAI,CAACC,SAAS,CAAC;SACjBV,QAAQ,EAARA,QAAQ;SACRa,QAAQ,EAAE,kBAACjC,IAAI;WAAA,OAAK,MAAI,CAACkC,uBAAuB,CAAClC,IAAI,CAAC;;QACtD,CAAC;OAEF,IAAInC,cAAI,CAAC6C,cAAc,CAACsB,OAAO,CAAC,EAChC;SACCJ,EAAE,CAACC,IAAI,CAACM,WAAW,CAACH,OAAO,CAAC;;;;KAE7B;KAAA,6BAGD;OAAA;OACC,IAAInE,cAAI,CAACC,aAAa,CAAC,sCAAI,YAAUsE,MAAM,CAAC,EAC5C;SAAA,6BAEC;WADK;aAAOC,SAAS;aAAEJ,QAAQ;WAE9B,IAAIpE,cAAI,CAACgB,UAAU,CAACoD,QAAQ,CAAC,EAC7B;aACC,MAAI,CAACR,YAAY,CAACK,SAAS,CAACO,SAAS,EAAE,UAACC,KAAK;eAAA,OAAKL,QAAQ,CAACK,KAAK,CAAC;eAAC;;UAEnE;SAND,mCAAoCC,MAAM,CAACC,OAAO,CAAC,sCAAI,YAAUJ,MAAM,CAAC;WAAA;;;OASzEd,eAAK,CAAClC,IAAI,CAACc,QAAQ,EAAE,kBAAkB,EAAE;SAAA,OAAM,MAAI,CAACuC,0BAA0B,EAAE;SAAC;OAEjFf,6BAAY,CAACI,SAAS,CAAC,yBAAyB,EAAE,YAAM;SAAA;SACvD,wCAAI,kFAAJ,MAAI;SACJ,wCAAI,YAAQY,MAAM,EAAE;QACpB,CAAC;OAEFhB,6BAAY,CAACI,SAAS,CAAC,0BAA0B,EAAE,YAAM;SAAA;SACxD,wCAAI,mFAAJ,MAAI;SACJ,IAAI,wCAAI,0BAAwB,CAAC,EACjC;WACC,wCAAI,uBAAuB,CAAC;WAC5B,wCAAI,YAAQa,QAAQ,EAAE;WACtB,MAAI,CAACC,cAAc,EAAE;;QAEtB,CAAC;;;KACF;KAAA,6CAGD;OACC,IAAI,CAAC1C,QAAQ,CAACC,MAAM,EACpB;SACC,IAAI,CAACyC,cAAc,EAAE;;;;KAEtB;KAAA,wCAEuBC,QAAkB,EAC1C;OAAA;OACC,+DAAoB,IAAI;SAAhBb,OAAO,0BAAPA,OAAO;OACf,+DAA6B,IAAI;SAA3Bc,kBAAkB,0BAAlBA,kBAAkB;OAExB,IAAI,CAACjF,cAAI,CAACkF,OAAO,CAACD,kBAAkB,CAAC,EACrC;SACCA,kBAAkB,GAAG,EAAE;;OAGxB,IACCjF,cAAI,CAAC6C,cAAc,CAACsB,OAAO,CAAC,IACzBa,QAAQ,CAACG,OAAO,KAAKhB,OAAO,IAC5B,CAACc,kBAAkB,CAACG,QAAQ,CAACjB,OAAO,CAAC,EAEzC;SACC;;OAGD,IAAMM,KAAK,GAAG,IAAIY,0BAAS,CAAC;SAC3BlD,IAAI,EAAE;WACL6C,QAAQ,EAARA,QAAQ;WACRM,UAAU,EAAE,sCAAI,YAAQ3E,aAAa,EAAE;WACvCb,OAAO,oCAAE,IAAI,WAAS;WACtByF,QAAQ,EAAE;;QAEX,CAAC;OACF,IAAI,CAAC3B,YAAY,CAAC4B,IAAI,CAAC,cAAc,EAAEf,KAAK,CAAC;OAC7C,IAAIA,KAAK,CAACgB,kBAAkB,EAAE,EAC9B;SACC;;OAGD,IAAQC,MAAM,GAAKV,QAAQ,CAAnBU,MAAM;OAEd,IAAI,CAAC1F,cAAI,CAAC6C,cAAc,CAAC6C,MAAM,CAAClB,SAAS,CAAC,EAC1C;SACC;;OAGD,IAAIhC,YAAY,CAACO,QAAQ,CAAChB,GAAG,CAAC2D,MAAM,CAAChD,OAAO,CAAC,EAC7C;SACC;;OAGD,IAAI,sCAAI,YAAQH,UAAU,EAAE,EAC5B;SACC;;OAGD,IAAI,CAACqB,YAAY,CAAC4B,IAAI,CAAC,QAAQ,EAAEf,KAAK,CAAC;OACvC,IAAIA,KAAK,CAACgB,kBAAkB,EAAE,EAC9B;SACC;;OAGD,KAAKxE,OAAO,CACV0E,GAAG,CAAClB,KAAK,CAACtC,IAAI,CAACoD,QAAQ,CAAC,CACxBpE,IAAI,CAAC,UAACyE,MAAM,EAAK;SACjB,IAAI,CAAC5F,cAAI,CAACa,aAAa,CAAC+E,MAAM,CAAC,EAC/B;WACC;;SAGDA,MAAM,CAACC,OAAO,CAAC,UAAC/D,IAAI,EAAK;WACxB,IAAQK,IAAI,GAAKL,IAAI,CAAbK,IAAI;WACZ,wCAAI,YAAQ2D,IAAI,WAAI3D,IAAI,CAACN,EAAE,cAAI6D,MAAM,CAAClB,SAAS,GAAIrC,IAAI,CAAC;UACxD,CAAC;SAEF,wCAAI,YAAQP,QAAQ,CAAC,KAAK,EAAE8D,MAAM,CAACnF,WAAW,IAAI,KAAK,CAAC;QACxD,CAAC;;;KAEH;KAAA,yCAGD;OACC,6BAAI,IAAI,kDAAJ,IAAI,GACR;SACC;;OAGD,IAAMwF,cAAc,4BAAG,IAAI,gDAAJ,IAAI,CAAqB;OAChD,IAAIA,cAAc,EAClB;SACClC,6BAAY,CAACI,SAAS,CACrB8B,cAAc,EACd,0BAA0B,EAC1BC,6BAAI,+CAAsBzE,IAAI,CAAC,IAAI,CAAC,CACpC;QACD,MAED;SACCyE,6BAAI,oDAAJ,IAAI;;;;KAEL;KAAA,iCAkED;OACC,IAAI,sCAAI,YAAQzD,UAAU,EAAE,EAC5B;SACC,IAAI,CAAC0D,sBAAsB,EAAE;SAE7B;;OAGD,IAAI,CAAC,sCAAI,YAAQtE,OAAO,EAAE,EAC1B;SACC,sCAAI,YAAQC,QAAQ,EAAE;;;;KAEvB;KAAA,2BAEUC,EAAU,EACrB;OACC,OAAO,sCAAI,YAAQE,GAAG,CAACF,EAAE,CAAC;;;KAC1B;KAAA,gCAEeA,EAAU,EAC1B;OACC,sCAAI,qBAAc,CAACA,EAAE,CAAC;;;KACtB;KAAA,oCAGD;OACC,OAAO,sCAAI,YAAQqE,iBAAiB,EAAE;;;GACtC;CAAA;CAAA,gCA1FD;GACC,OAAQC,GAAG,CAACpC,EAAE,IAAIoC,GAAG,CAACpC,EAAE,CAACqC,SAAS,IAAID,GAAG,CAACpC,EAAE,CAACqC,SAAS,CAACC,QAAQ,CAACC,mBAAmB,EAAE,GAAG,CAAC;CAC1F;CAAC,+BAGD;GACC,IAAIH,GAAG,CAACpC,EAAE,IAAIoC,GAAG,CAACpC,EAAE,CAACqC,SAAS,EAC9B;KACC,IAAMG,MAAM,GAAGJ,GAAG,CAACpC,EAAE,CAACqC,SAAS,CAACC,QAAQ,CAACG,YAAY,EAAE;KACvD,IAAID,MAAM,IAAIA,MAAM,CAACE,MAAM,EAAE,EAC7B;OACC,OAAOF,MAAM;;;GAIf,OAAO,IAAI;CACZ;CAAC,iCAGD;GAAA;KAAA;GACC,IAAMN,sBAAsB,6BAAG,sCAAI,YAAU9C,MAAM,2DAApB,uBAAsB8C,sBAAsB;GAC3E,IAAQS,QAAQ,GAAK,sCAAI,YAAUxG,SAAS,CAApCwG,QAAQ;GAChB,IACE1G,cAAI,CAAC2G,SAAS,CAACV,sBAAsB,CAAC,IAAIA,sBAAsB,KAAK,KAAK,IACxE,CAACjG,cAAI,CAACgB,UAAU,CAAC0F,QAAQ,CAAC,EAE9B;KACC;;GAGD,sCAAI,IAAI,cACR;KACC,IACC,sCAAI,aAAWE,QAAQ,EAAE,KAAK7C,EAAE,CAAC8C,EAAE,CAACC,YAAY,CAACC,KAAK,CAACC,OAAO,IAC3D,sCAAI,aAAWJ,QAAQ,EAAE,KAAK7C,EAAE,CAAC8C,EAAE,CAACC,YAAY,CAACC,KAAK,CAACE,IAAI,EAE/D;OACC;;KAGD,sCAAI,aAAWC,IAAI,EAAE;KAErB;;GAGD,sCAAI,aAAaL,kBAAE,CAACC,YAAY,CAACK,MAAM,CAACC,MAAM,CAAC;KAC9CC,OAAO,EAAEC,aAAG,CAACC,UAAU,CAAC,wCAAwC,CAAC;KACjEC,WAAW,EAAE,KAAK;KAClBC,QAAQ,EAAE,KAAK;KACfC,OAAO,EAAE,CAAC;OACTC,KAAK,EAAEL,aAAG,CAACC,UAAU,CAAC,0BAA0B,CAAC;OACjDhD,MAAM,EAAE;SACPqD,KAAK,EAAE,eAACnD,KAAK,EAAEoD,OAAO,EAAK;WAC1BA,OAAO,CAACC,KAAK,EAAE;WACfpB,QAAQ,EAAE;WACV,wCAAI,YAAQ9F,KAAK,EAAE;;;MAGrB;IACD,CAAC;CACH;CAAC,4BA1RmB4B,YAAY,cAOD,IAAIuF,GAAG,EAAE;;;;;;;;"}